Method: Parser::Parser#parse
- Defined in:
- lib/parser/parser.rb
#parse ⇒ Array<Parser::Comment>
TODO:
Rewrite to use StringScanner#intelligent_skip_until
Recursivly parses the given input and thereby ignores strings and regular- expressions.
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/parser/parser.rb', line 112 def parse() @scanner.skip /\s/ @scanner.skip_until /#{M_START}|#{S_START}|#{NON_COMMENT_PATTERNS.keys.join('|')}|$/ found = @scanner.matched if found.match M_START parse_comment_until(M_END) elsif found.match S_START parse_comment_until(S_END) else matched_pattern = NON_COMMENT_PATTERNS.detect do |start_pattern, end_pattern| found.match start_pattern end @scanner.skip_escaping_until matched_pattern.last unless matched_pattern.nil? end if @scanner.eos? return @comments else parse end end |