Method: EZML::Util#balance
- Defined in:
- lib/ezml/util.rb
#balance(scanner, start, finish, count = 0) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/ezml/util.rb', line 76 def balance(scanner, start, finish, count = 0) str = ''.dup scanner = StringScanner.new(scanner) unless scanner.is_a? StringScanner regexp = Regexp.new("(.*?)[\\#{start.chr}\\#{finish.chr}]", Regexp::MULTILINE) while scanner.scan(regexp) str << scanner.matched count += 1 if scanner.matched[-1] == start count -= 1 if scanner.matched[-1] == finish return [str.strip, scanner.rest] if count == 0 end end |