Sha256: 97f8145b71968fb6f0d827e779a9e23d15115f044c778852fced9dbded053f77

Contents?: true

Size: 722 Bytes

Versions: 10

Compression:

Stored size: 722 Bytes

Contents

class Template
  class Parser
    class Template < Parslet::Parser
      rule(:code) { ::Code::Parser::Code.new }

      rule(:left_curly_bracket) { str("{") }
      rule(:right_curly_bracket) { str("}") }
      rule(:escape) { str("\\") }

      rule(:text_part) do
        (
          (escape.ignore >> left_curly_bracket) |
            (left_curly_bracket.absent? >> any)
        ).repeat(1)
      end

      rule(:code_part) do
        left_curly_bracket.ignore >> code >>
          (right_curly_bracket.ignore | any.absent?)
      end

      rule(:template) do
        (text_part.as(:text) | code_part.as(:code)).repeat(1) |
          str("").as(:text).repeat(1, 1)
      end

      root(:template)
    end
  end
end

Version data entries

10 entries across 10 versions & 2 rubygems

Version Path
template-ruby-0.4.0 lib/template/parser/template.rb
code-ruby-0.4.0 lib/template/parser/template.rb
template-ruby-0.3.1 lib/template/parser/template.rb
code-ruby-0.3.1 lib/template/parser/template.rb
template-ruby-0.3.0 lib/template/parser/template.rb
code-ruby-0.3.0 lib/template/parser/template.rb
code-ruby-0.2.4 lib/template/parser/template.rb
template-ruby-0.2.4 lib/template/parser/template.rb
template-ruby-0.2.3 lib/template/parser/template.rb
template-ruby-0.2.2 lib/template/parser/template.rb