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
-
.assert_type(obj, type) ⇒ Object
type assertion.
-
.make_parser(x) ⇒ Object
ensure x is a parser.
-
.try_skip_pattern(p) ⇒ Object
try to convert Pattern -> SkipPattern.
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 |