Module: Rsec

Defined in:
lib/rsec.rb,
lib/rsec/utils.rb,
lib/rsec/parser.rb,
lib/rsec/helpers.rb,
lib/rsec/parsers/seq.rb,
lib/rsec/parsers/join.rb,
lib/rsec/parsers/misc.rb,
lib/rsec/parsers/prim.rb,
lib/rsec/parsers/repeat.rb

Overview

:nodoc

Defined Under Namespace

Modules: Helpers, Parser, Prim Classes: Binary, Branch, Cached, Eof, Fail, Inner, Join, JoinEven, JoinOdd, Lazy, LookAhead, Map, Maybe, NegativeLookAhead, OneOf, OneOf_, PDouble, PInt, PInt32, PInt64, PUnsignedInt32, PUnsignedInt64, ParseContext, Pattern, RepeatAtLeastN, RepeatN, RepeatRange, Seq, SeqOne, SeqOne_, Seq_, SkipPattern, SkipUntilPattern, SyntaxError, Unary, Unbox, UntilPattern

Constant Summary collapse

TO_PARSER_METHOD =
:r
VERSION =
'1.0.0'
INVALID =

the invalid token

Object.new
Helper =

robust

Helpers

Class Method Summary collapse

Class Method Details

.assert_type(obj, type) ⇒ Object

type assertion



410
411
412
# File 'lib/rsec/helpers.rb', line 410

def Rsec.assert_type obj, type
  (raise TypeError, "#{obj} should be a #{type}") unless (obj.is_a? type)
end

.make_parser(x) ⇒ Object

ensure x is a parser



402
403
404
405
406
407
# File 'lib/rsec/helpers.rb', line 402

def Rsec.make_parser x
  return x if x.is_a?(Parser)
  x = x.send(TO_PARSER_METHOD) if x.respond_to?(TO_PARSER_METHOD)
  Rsec.assert_type x, Parser
  x
end

.try_skip_pattern(p) ⇒ Object

try to convert Pattern -> SkipPattern



415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
# File 'lib/rsec/helpers.rb', line 415

def Rsec.try_skip_pattern p
  # for C-ext
  if Rsec.const_defined?(:FixString) and p.is_a?(FixString)
    return SkipPattern[/#{Regexp.escape p.some}/]
  end

  case p
  when Pattern
    SkipPattern[p.some]
  when UntilPattern
    SkipUntilPattern[p.some]
  else
    p
  end
end