ddfreyne/d-parse

View on GitHub
lib/d-parse/dsl.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

module DParse
  module DSL
    def alt(*ps)
      DParse::Parsers::Alt.new(*ps)
    end

    def any
      DParse::Parsers::Any.new
    end

    def char(c)
      DParse::Parsers::Char.new(c)
    end

    def char_in(cs)
      DParse::Parsers::CharIn.new(cs)
    end

    def char_not(c)
      DParse::Parsers::CharNot.new(c)
    end

    def char_not_in(cs)
      DParse::Parsers::CharNotIn.new(cs)
    end

    def eof
      DParse::Parsers::EOF.new
    end

    def intersperse(a, b)
      DParse::Parsers::Intersperse.new(a, b)
    end

    def except(a, b)
      DParse::Parsers::Except.new(a, b)
    end

    def lazy(&block)
      DParse::Parsers::Lazy.new(&block)
    end

    def opt(p)
      DParse::Parsers::Opt.new(p)
    end

    def describe(p, name)
      DParse::Parsers::Describe.new(p, name)
    end

    def repeat(p)
      DParse::Parsers::Repeat.new(p)
    end

    def repeat0(p)
      repeat(p)
    end

    def repeat1(a)
      seq(a, repeat0(a)).map { |d| [d[0]] + d[1] }
    end

    def seq(*ps)
      DParse::Parsers::Seq.new(*ps)
    end

    def string(s)
      DParse::Parsers::String.new(s)
    end

    def fail
      DParse::Parsers::Fail.new
    end

    def succeed
      DParse::Parsers::Succeed.new
    end

    def whitespace_char
      DParse::Parsers::WhitespaceChar.new
    end
  end
end