class CodeScanner
Attributes
scan_array[R]
Public Class Methods
array_range()
click to toggle source
# File lib/models/utils/codescanner.rb, line 48 def self.array_range find_begin_range return false unless find_end_range @scan_array[@begin_scan+1..@end_scan-1].join end
find_begin_range()
click to toggle source
# File lib/models/utils/codescanner.rb, line 22 def self.find_begin_range @scan_array.each_with_index do |line, index| if line.include?('<snip>') || line.include?('<$>') find_title(index) @line = index+1 strip_snip_tag(index) return @begin_scan = index end end return false end
find_end_range()
click to toggle source
# File lib/models/utils/codescanner.rb, line 34 def self.find_end_range @scan_array.each_with_index do |line, index| if line.include?('<snip>') || line.include?('<$>') #mismatch before closing tag return false end if line.include?('</snip>') || line.include?('</$>') strip_snip_tag(index) index return @end_scan = index end end return false end
find_title(index)
click to toggle source
# File lib/models/utils/codescanner.rb, line 61 def self.find_title(index) matches = @scan_array[index].match(/(<snip>|<\$>)(.+)/) if matches @title = matches[2].strip.chomp('-->') end @title end
run(scan_array, filename)
click to toggle source
# File lib/models/utils/codescanner.rb, line 9 def self.run(scan_array, filename) @scan_array = scan_array while @scan_array.join.include?('<snip>') || @scan_array.join.include?('<$>') code = array_range if code Snippet.new(code: code, title: @title, line: @line, filename: filename) else return {filename: filename, line: @line} #in case of mismatch end end return nil end
strip_snip_tag(index)
click to toggle source
# File lib/models/utils/codescanner.rb, line 54 def self.strip_snip_tag(index) @scan_array[index].sub!(/<snip>/,'<*snip*>') @scan_array[index].sub!(/<\/snip>/,'</*snip*>') @scan_array[index].sub!(/<\$>/,'<*$*>') @scan_array[index].sub!(/<\/\$>/,'</*$*>') end