Sha256: f96027b8b0aafd85dc216dd9ea877ec590ca9dac96dc1b9b38d22d7fe07a5814

Contents?: true

Size: 638 Bytes

Versions: 2

Compression:

Stored size: 638 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 >> code >> (right_curly_bracket | any.absent?)
      end

      rule(:template) { (text_part.as(:text) | code_part.as(:code)).repeat(1) }

      root(:template)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
template-ruby-0.2.0 lib/template/parser/template.rb
template-ruby-0.1.0 lib/template/parser/template.rb