Module: Hamlit::Concerns::Whitespace
- Included in:
- Hamlit::Compilers::Strip, Parsers::Tag
- Defined in:
- lib/hamlit/concerns/whitespace.rb
Instance Method Summary collapse
- #parse_whitespace_removal(scanner) ⇒ Object
-
#remove_first_space!(exps) ⇒ Object
‘<` removes spaces inside script or silent script recursively.
- #remove_last_space!(exps) ⇒ Object
Instance Method Details
#parse_whitespace_removal(scanner) ⇒ Object
10 11 12 13 14 15 16 17 18 19 |
# File 'lib/hamlit/concerns/whitespace.rb', line 10 def parse_whitespace_removal(scanner) if scanner.match?(/</) inner_removal = parse_inner_removal(scanner) parse_outer_removal(scanner) else parse_outer_removal(scanner) inner_removal = parse_inner_removal(scanner) end inner_removal end |
#remove_first_space!(exps) ⇒ Object
‘<` removes spaces inside script or silent script recursively.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/hamlit/concerns/whitespace.rb', line 22 def remove_first_space!(exps) deleted = false exps.delete_if do |exp| name, *args = exp case name when :static break if args != ["\n"] deleted = true next true when :code next false when :newline next false when :haml # recursive call for script remove_last_space!(exp) if args.first == :script when :multi break if exp == :multi # to flatten multi remove_last_space!(exp) end break end # recursive call for silent script remove_last_space!(exps) if deleted end |
#remove_last_space!(exps) ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/hamlit/concerns/whitespace.rb', line 51 def remove_last_space!(exps) exps.reverse! remove_first_space!(exps) ensure exps.reverse! exps end |