haml_parser 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +11 -1
- data/.travis.yml +3 -3
- data/CHANGELOG.md +3 -0
- data/Gemfile +1 -0
- data/Rakefile +1 -0
- data/bin/console +1 -0
- data/exe/haml_parser +1 -0
- data/haml_parser.gemspec +1 -0
- data/lib/haml_parser.rb +1 -0
- data/lib/haml_parser/ast.rb +1 -0
- data/lib/haml_parser/cli.rb +1 -0
- data/lib/haml_parser/element_parser.rb +7 -10
- data/lib/haml_parser/error.rb +1 -0
- data/lib/haml_parser/filter_parser.rb +7 -8
- data/lib/haml_parser/indent_tracker.rb +2 -1
- data/lib/haml_parser/line_parser.rb +1 -0
- data/lib/haml_parser/parser.rb +6 -3
- data/lib/haml_parser/ruby_multiline.rb +1 -0
- data/lib/haml_parser/script_parser.rb +5 -6
- data/lib/haml_parser/utils.rb +1 -0
- data/lib/haml_parser/version.rb +2 -1
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 7419fb3e0cafc26ec4b25af1bbc614a22befe953
         | 
| 4 | 
            +
              data.tar.gz: 8446c4f6c9535169f187f482ed012af5c324ce4b
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 6b59ff50da183f5ca981d745d38d2224c438374fc9e99acfd8d7e231541056292c54648e5d4682781c6bfa5bdbf0464227a4969c96ca130f6f872a809dbf52de
         | 
| 7 | 
            +
              data.tar.gz: ec69c79bbdca9b31d33350e662562e1fa7ad8362fe3a0e077500aa600cbe7782fd8f4be11df655b562b14906e4cdbf7d73ac6de325b0e9adc3ee9c58cc01a559
         | 
    
        data/.rubocop.yml
    CHANGED
    
    | @@ -1,5 +1,9 @@ | |
| 1 1 | 
             
            inherit_from: .rubocop_todo.yml
         | 
| 2 2 |  | 
| 3 | 
            +
            AllCops:
         | 
| 4 | 
            +
              DisplayCopNames: true
         | 
| 5 | 
            +
              TargetRubyVersion: 2.3
         | 
| 6 | 
            +
             | 
| 3 7 | 
             
            Style/BarePercentLiterals:
         | 
| 4 8 | 
             
              EnforcedStyle: percent_q
         | 
| 5 9 |  | 
| @@ -35,7 +39,10 @@ Style/Tab: | |
| 35 39 | 
             
              Exclude:
         | 
| 36 40 | 
             
                - 'spec/indent_spec.rb'
         | 
| 37 41 |  | 
| 38 | 
            -
            Style/ | 
| 42 | 
            +
            Style/TrailingCommaInLiteral:
         | 
| 43 | 
            +
              Enabled: false
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            Style/TrailingCommaInArguments:
         | 
| 39 46 | 
             
              Enabled: false
         | 
| 40 47 |  | 
| 41 48 | 
             
            Style/TrailingWhitespace:
         | 
| @@ -44,3 +51,6 @@ Style/TrailingWhitespace: | |
| 44 51 |  | 
| 45 52 | 
             
            Style/UnneededPercentQ:
         | 
| 46 53 | 
             
              Enabled: false  # buggy
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            Performance/RedundantBlockCall:
         | 
| 56 | 
            +
              Enabled: false
         | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/Gemfile
    CHANGED
    
    
    
        data/Rakefile
    CHANGED
    
    
    
        data/bin/console
    CHANGED
    
    
    
        data/exe/haml_parser
    CHANGED
    
    
    
        data/haml_parser.gemspec
    CHANGED
    
    
    
        data/lib/haml_parser.rb
    CHANGED
    
    
    
        data/lib/haml_parser/ast.rb
    CHANGED
    
    
    
        data/lib/haml_parser/cli.rb
    CHANGED
    
    
| @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 1 2 | 
             
            require 'strscan'
         | 
| 2 3 | 
             
            require_relative 'ast'
         | 
| 3 4 | 
             
            require_relative 'error'
         | 
| @@ -99,12 +100,10 @@ module HamlParser | |
| 99 100 | 
             
                    if depth == 0
         | 
| 100 101 | 
             
                      attr = s.pre_match + s.matched
         | 
| 101 102 | 
             
                      return [attr[1, attr.size - 2], s.rest]
         | 
| 103 | 
            +
                    elsif /,\s*\z/ === text && @line_parser.has_next?
         | 
| 104 | 
            +
                      text << "\n" << @line_parser.next_line
         | 
| 102 105 | 
             
                    else
         | 
| 103 | 
            -
                       | 
| 104 | 
            -
                        text << "\n" << @line_parser.next_line
         | 
| 105 | 
            -
                      else
         | 
| 106 | 
            -
                        syntax_error!('Unmatched brace')
         | 
| 107 | 
            -
                      end
         | 
| 106 | 
            +
                      syntax_error!('Unmatched brace')
         | 
| 108 107 | 
             
                    end
         | 
| 109 108 | 
             
                  end
         | 
| 110 109 | 
             
                end
         | 
| @@ -120,12 +119,10 @@ module HamlParser | |
| 120 119 | 
             
                    if depth == 0
         | 
| 121 120 | 
             
                      t = s.string.byteslice(pre_pos...s.pos - 1)
         | 
| 122 121 | 
             
                      return [parse_new_attribute_list(t), s.rest]
         | 
| 122 | 
            +
                    elsif @line_parser.has_next?
         | 
| 123 | 
            +
                      text << "\n" << @line_parser.next_line
         | 
| 123 124 | 
             
                    else
         | 
| 124 | 
            -
                       | 
| 125 | 
            -
                        text << "\n" << @line_parser.next_line
         | 
| 126 | 
            -
                      else
         | 
| 127 | 
            -
                        syntax_error!('Unmatched paren')
         | 
| 128 | 
            -
                      end
         | 
| 125 | 
            +
                      syntax_error!('Unmatched paren')
         | 
| 129 126 | 
             
                    end
         | 
| 130 127 | 
             
                  end
         | 
| 131 128 | 
             
                end
         | 
    
        data/lib/haml_parser/error.rb
    CHANGED
    
    
| @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 1 2 | 
             
            require_relative 'ast'
         | 
| 2 3 |  | 
| 3 4 | 
             
            module HamlParser
         | 
| @@ -35,15 +36,13 @@ module HamlParser | |
| 35 36 | 
             
                      @ast = nil
         | 
| 36 37 | 
             
                      return ast
         | 
| 37 38 | 
             
                    end
         | 
| 39 | 
            +
                  elsif indent_level > @indent_tracker.current_level
         | 
| 40 | 
            +
                    # Start filter
         | 
| 41 | 
            +
                    @indent_level = indent_level
         | 
| 38 42 | 
             
                  else
         | 
| 39 | 
            -
                     | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
                    else
         | 
| 43 | 
            -
                      # Empty filter
         | 
| 44 | 
            -
                      @ast = nil
         | 
| 45 | 
            -
                      return nil
         | 
| 46 | 
            -
                    end
         | 
| 43 | 
            +
                    # Empty filter
         | 
| 44 | 
            +
                    @ast = nil
         | 
| 45 | 
            +
                    return nil
         | 
| 47 46 | 
             
                  end
         | 
| 48 47 |  | 
| 49 48 | 
             
                  text = line[@indent_level..-1]
         | 
| @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 1 2 | 
             
            require_relative 'error'
         | 
| 2 3 |  | 
| 3 4 | 
             
            module HamlParser
         | 
| @@ -36,7 +37,7 @@ module HamlParser | |
| 36 37 | 
             
                end
         | 
| 37 38 |  | 
| 38 39 | 
             
                def process(line, lineno)
         | 
| 39 | 
            -
                  if line | 
| 40 | 
            +
                  if line.start_with?("\t")
         | 
| 40 41 | 
             
                    raise HardTabNotAllowed.new(lineno)
         | 
| 41 42 | 
             
                  end
         | 
| 42 43 | 
             
                  indent, text = split(line)
         | 
    
        data/lib/haml_parser/parser.rb
    CHANGED
    
    | @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 1 2 | 
             
            require_relative 'ast'
         | 
| 2 3 | 
             
            require_relative 'element_parser'
         | 
| 3 4 | 
             
            require_relative 'error'
         | 
| @@ -180,6 +181,8 @@ module HamlParser | |
| 180 181 | 
             
                    syntax_error!('nesting within plain text is illegal')
         | 
| 181 182 | 
             
                  when Ast::Doctype
         | 
| 182 183 | 
             
                    syntax_error!('nesting within a header command is illegal')
         | 
| 184 | 
            +
                  when nil
         | 
| 185 | 
            +
                    syntax_error!('Indenting at the beginning of the document is illegal')
         | 
| 183 186 | 
             
                  end
         | 
| 184 187 | 
             
                  @ast.children = empty_lines
         | 
| 185 188 | 
             
                  if @ast.is_a?(Ast::Element) && @ast.self_closing
         | 
| @@ -202,8 +205,8 @@ module HamlParser | |
| 202 205 | 
             
                  nil
         | 
| 203 206 | 
             
                end
         | 
| 204 207 |  | 
| 205 | 
            -
                MID_BLOCK_KEYWORDS = %w[else elsif rescue ensure end when]
         | 
| 206 | 
            -
                START_BLOCK_KEYWORDS = %w[if begin case unless]
         | 
| 208 | 
            +
                MID_BLOCK_KEYWORDS = %w[else elsif rescue ensure end when].freeze
         | 
| 209 | 
            +
                START_BLOCK_KEYWORDS = %w[if begin case unless].freeze
         | 
| 207 210 | 
             
                # Try to parse assignments to block starters as best as possible
         | 
| 208 211 | 
             
                START_BLOCK_KEYWORD_REGEX = /(?:\w+(?:,\s*\w+)*\s*=\s*)?(#{Regexp.union(START_BLOCK_KEYWORDS)})/
         | 
| 209 212 | 
             
                BLOCK_KEYWORD_REGEX = /^-?\s*(?:(#{Regexp.union(MID_BLOCK_KEYWORDS)})|#{START_BLOCK_KEYWORD_REGEX.source})\b/
         | 
| @@ -224,7 +227,7 @@ module HamlParser | |
| 224 227 | 
             
                    node.filename = @line_parser.filename
         | 
| 225 228 | 
             
                    node.lineno = @line_parser.lineno
         | 
| 226 229 | 
             
                    if block
         | 
| 227 | 
            -
                       | 
| 230 | 
            +
                      yield(node)
         | 
| 228 231 | 
             
                    end
         | 
| 229 232 | 
             
                  end
         | 
| 230 233 | 
             
                end
         | 
| @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 1 2 | 
             
            require_relative 'ast'
         | 
| 2 3 | 
             
            require_relative 'error'
         | 
| 3 4 | 
             
            require_relative 'ruby_multiline'
         | 
| @@ -39,10 +40,9 @@ module HamlParser | |
| 39 40 | 
             
                end
         | 
| 40 41 |  | 
| 41 42 | 
             
                def parse_sanitized(text)
         | 
| 42 | 
            -
                   | 
| 43 | 
            -
                  when text.start_with?('&==')
         | 
| 43 | 
            +
                  if text.start_with?('&==')
         | 
| 44 44 | 
             
                    create_node(Ast::Text) { |t| t.text = text[3..-1].lstrip }
         | 
| 45 | 
            -
                   | 
| 45 | 
            +
                  elsif text[1] == '=' || text[1] == '~'
         | 
| 46 46 | 
             
                    node = create_node(Ast::Script)
         | 
| 47 47 | 
             
                    script = text[2..-1].lstrip
         | 
| 48 48 | 
             
                    if script.empty?
         | 
| @@ -57,13 +57,12 @@ module HamlParser | |
| 57 57 | 
             
                end
         | 
| 58 58 |  | 
| 59 59 | 
             
                def parse_unescape(text)
         | 
| 60 | 
            -
                   | 
| 61 | 
            -
                  when text.start_with?('!==')
         | 
| 60 | 
            +
                  if text.start_with?('!==')
         | 
| 62 61 | 
             
                    create_node(Ast::Text) do |t|
         | 
| 63 62 | 
             
                      t.text = text[3..-1].lstrip
         | 
| 64 63 | 
             
                      t.escape_html = false
         | 
| 65 64 | 
             
                    end
         | 
| 66 | 
            -
                   | 
| 65 | 
            +
                  elsif text[1] == '=' || text[1] == '~'
         | 
| 67 66 | 
             
                    node = create_node(Ast::Script)
         | 
| 68 67 | 
             
                    node.escape_html = false
         | 
| 69 68 | 
             
                    script = text[2..-1].lstrip
         | 
    
        data/lib/haml_parser/utils.rb
    CHANGED
    
    
    
        data/lib/haml_parser/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: haml_parser
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.4. | 
| 4 | 
            +
              version: 0.4.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Kohei Suzuki
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2016-07-02 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: benchmark-ips
         | 
| @@ -191,7 +191,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 191 191 | 
             
                  version: '0'
         | 
| 192 192 | 
             
            requirements: []
         | 
| 193 193 | 
             
            rubyforge_project: 
         | 
| 194 | 
            -
            rubygems_version: 2. | 
| 194 | 
            +
            rubygems_version: 2.6.6
         | 
| 195 195 | 
             
            signing_key: 
         | 
| 196 196 | 
             
            specification_version: 4
         | 
| 197 197 | 
             
            summary: Parser of Haml template language
         |