Linux premium155.web-hosting.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
LiteSpeed
: 162.0.235.200 | : 18.188.119.67
Cant Read [ /etc/named.conf ]
7.4.33
varifktc
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
opt /
alt /
ruby33 /
share /
ruby /
syntax_suggest /
[ HOME SHELL ]
Name
Size
Permission
Action
capture
[ DIR ]
drwxr-xr-x
api.rb
6.07
KB
-rw-r--r--
around_block_scan.rb
6.9
KB
-rw-r--r--
block_expand.rb
4.87
KB
-rw-r--r--
capture_code_context.rb
6.67
KB
-rw-r--r--
clean_document.rb
8.73
KB
-rw-r--r--
cli.rb
3.12
KB
-rw-r--r--
code_block.rb
2.13
KB
-rw-r--r--
code_frontier.rb
5.61
KB
-rw-r--r--
code_line.rb
6.62
KB
-rw-r--r--
code_search.rb
3.81
KB
-rw-r--r--
core_ext.rb
3.02
KB
-rw-r--r--
display_code_with_line_numbers...
1.77
KB
-rw-r--r--
display_invalid_blocks.rb
1.75
KB
-rw-r--r--
explain_syntax.rb
2.69
KB
-rw-r--r--
left_right_lex_count.rb
4.06
KB
-rw-r--r--
lex_all.rb
1.66
KB
-rw-r--r--
lex_value.rb
1.5
KB
-rw-r--r--
parse_blocks_from_indent_line....
1.5
KB
-rw-r--r--
pathname_from_message.rb
1.42
KB
-rw-r--r--
priority_engulf_queue.rb
1.26
KB
-rw-r--r--
priority_queue.rb
2
KB
-rw-r--r--
ripper_errors.rb
960
B
-rw-r--r--
scan_history.rb
2.92
KB
-rw-r--r--
unvisited_lines.rb
705
B
-rw-r--r--
version.rb
76
B
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : capture_code_context.rb
# frozen_string_literal: true module SyntaxSuggest module Capture end end require_relative "capture/falling_indent_lines" require_relative "capture/before_after_keyword_ends" module SyntaxSuggest # Turns a "invalid block(s)" into useful context # # There are three main phases in the algorithm: # # 1. Sanitize/format input source # 2. Search for invalid blocks # 3. Format invalid blocks into something meaninful # # This class handles the third part. # # The algorithm is very good at capturing all of a syntax # error in a single block in number 2, however the results # can contain ambiguities. Humans are good at pattern matching # and filtering and can mentally remove extraneous data, but # they can't add extra data that's not present. # # In the case of known ambiguious cases, this class adds context # back to the ambiguitiy so the programmer has full information. # # Beyond handling these ambiguities, it also captures surrounding # code context information: # # puts block.to_s # => "def bark" # # context = CaptureCodeContext.new( # blocks: block, # code_lines: code_lines # ) # # lines = context.call.map(&:original) # puts lines.join # # => # class Dog # def bark # end # class CaptureCodeContext attr_reader :code_lines def initialize(blocks:, code_lines:) @blocks = Array(blocks) @code_lines = code_lines @visible_lines = @blocks.map(&:visible_lines).flatten @lines_to_output = @visible_lines.dup end def call @blocks.each do |block| capture_first_kw_end_same_indent(block) capture_last_end_same_indent(block) capture_before_after_kws(block) capture_falling_indent(block) end sorted_lines end def sorted_lines @lines_to_output.select!(&:not_empty?) @lines_to_output.uniq! @lines_to_output.sort! @lines_to_output end # Shows the context around code provided by "falling" indentation # # Converts: # # it "foo" do # # into: # # class OH # def hello # it "foo" do # end # end # def capture_falling_indent(block) Capture::FallingIndentLines.new( block: block, code_lines: @code_lines ).call do |line| @lines_to_output << line end end # Shows surrounding kw/end pairs # # The purpose of showing these extra pairs is due to cases # of ambiguity when only one visible line is matched. # # For example: # # 1 class Dog # 2 def bark # 4 def eat # 5 end # 6 end # # In this case either line 2 could be missing an `end` or # line 4 was an extra line added by mistake (it happens). # # When we detect the above problem it shows the issue # as only being on line 2 # # 2 def bark # # Showing "neighbor" keyword pairs gives extra context: # # 2 def bark # 4 def eat # 5 end # def capture_before_after_kws(block) return unless block.visible_lines.count == 1 around_lines = Capture::BeforeAfterKeywordEnds.new( code_lines: @code_lines, block: block ).call around_lines -= block.lines @lines_to_output.concat(around_lines) end # When there is an invalid block with a keyword # missing an end right before another end, # it is unclear where which keyword is missing the # end # # Take this example: # # class Dog # 1 # def bark # 2 # puts "woof" # 3 # end # 4 # # However due to https://github.com/ruby/syntax_suggest/issues/32 # the problem line will be identified as: # # > class Dog # 1 # # Because lines 2, 3, and 4 are technically valid code and are expanded # first, deemed valid, and hidden. We need to un-hide the matching end # line 4. Also work backwards and if there's a mis-matched keyword, show it # too def capture_last_end_same_indent(block) return if block.visible_lines.length != 1 return unless block.visible_lines.first.is_kw? visible_line = block.visible_lines.first lines = @code_lines[visible_line.index..block.lines.last.index] # Find first end with same indent # (this would return line 4) # # end # 4 matching_end = lines.detect { |line| line.indent == block.current_indent && line.is_end? } return unless matching_end @lines_to_output << matching_end # Work backwards from the end to # see if there are mis-matched # keyword/end pairs # # Return the first mis-matched keyword # this would find line 2 # # def bark # 2 # puts "woof" # 3 # end # 4 end_count = 0 kw_count = 0 kw_line = @code_lines[visible_line.index..matching_end.index].reverse.detect do |line| end_count += 1 if line.is_end? kw_count += 1 if line.is_kw? !kw_count.zero? && kw_count >= end_count end return unless kw_line @lines_to_output << kw_line end # The logical inverse of `capture_last_end_same_indent` # # When there is an invalid block with an `end` # missing a keyword right after another `end`, # it is unclear where which end is missing the # keyword. # # Take this example: # # class Dog # 1 # puts "woof" # 2 # end # 3 # end # 4 # # the problem line will be identified as: # # > end # 4 # # This happens because lines 1, 2, and 3 are technically valid code and are expanded # first, deemed valid, and hidden. We need to un-hide the matching keyword on # line 1. Also work backwards and if there's a mis-matched end, show it # too def capture_first_kw_end_same_indent(block) return if block.visible_lines.length != 1 return unless block.visible_lines.first.is_end? visible_line = block.visible_lines.first lines = @code_lines[block.lines.first.index..visible_line.index] matching_kw = lines.reverse.detect { |line| line.indent == block.current_indent && line.is_kw? } return unless matching_kw @lines_to_output << matching_kw kw_count = 0 end_count = 0 orphan_end = @code_lines[matching_kw.index..visible_line.index].detect do |line| kw_count += 1 if line.is_kw? end_count += 1 if line.is_end? end_count >= kw_count end return unless orphan_end @lines_to_output << orphan_end end end end
Close