Module: Kaiseki::Parseable

Included in:
BasicParser, EOFParser, ListParser, RepeatParser, Proc, Regexp, String, Symbol
Defined in:
lib/parseable.rb

Instance Method Summary collapse

Instance Method Details

#&(other) ⇒ Object



29
30
31
# File 'lib/parseable.rb', line 29

def & other
  SequenceParser.new self, other
end

#action(node = Node.default, &block) ⇒ Object



85
86
87
# File 'lib/parseable.rb', line 85

def action node = Node.default, &block
  ActionResult.new self, node, &block
end

#and?Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/parseable.rb', line 57

def and?
  AndPredicate.new self
end

#cast(to_class) ⇒ Object



77
78
79
# File 'lib/parseable.rb', line 77

def cast to_class
  CastResult.new self, to_class
end

#filter(node = Node.default, &block) ⇒ Object



81
82
83
# File 'lib/parseable.rb', line 81

def filter node = Node.default, &block
  FilterResult.new self, node, &block
end

#list(delimiter = ',') ⇒ Object



53
54
55
# File 'lib/parseable.rb', line 53

def list delimiter = ','
  ListParser.new self, delimiter
end

#mergeObject



73
74
75
# File 'lib/parseable.rb', line 73

def merge
  MergeResult.new self
end

#not!Object



61
62
63
# File 'lib/parseable.rb', line 61

def not!
  NotPredicate.new self
end

#one_or_moreObject



49
50
51
# File 'lib/parseable.rb', line 49

def one_or_more
  repeat 1
end

#optionalObject



41
42
43
# File 'lib/parseable.rb', line 41

def optional
  repeat 0, 1
end

#override(options) ⇒ Object



69
70
71
# File 'lib/parseable.rb', line 69

def override options
  OverrideResult.new self, options
end

#parse(stream, options = {}) ⇒ Object



7
8
9
10
11
12
13
# File 'lib/parseable.rb', line 7

def parse stream, options = {}
  options[:global] ||= {}
  stream = stream.to_stream
  stream.lock do
    parse! stream, options
  end
end

#predicate?Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/parseable.rb', line 15

def predicate?
  false
end

#protect(&block) ⇒ Object



19
20
21
22
23
24
25
26
27
# File 'lib/parseable.rb', line 19

def protect &block
  catch :ParseSuccess do
    catch :SkipSuccess do
      block.call
      throw :ParseSuccess
    end
    raise RuntimeError, "#{self} must not catch a SkipSuccess"
  end
end

#repeat(min, max = nil) ⇒ Object



37
38
39
# File 'lib/parseable.rb', line 37

def repeat min, max = nil
  RepeatParser.new self, min, max
end

#set(*vars) ⇒ Object



93
94
95
# File 'lib/parseable.rb', line 93

def set *vars
  SetVar.new self, *vars
end

#skipObject



65
66
67
# File 'lib/parseable.rb', line 65

def skip
  SkipPredicate.new self
end

#tag_error(name) ⇒ Object



101
102
103
# File 'lib/parseable.rb', line 101

def tag_error name
  ErrorTag.new self, name
end

#tag_result(name) ⇒ Object



97
98
99
# File 'lib/parseable.rb', line 97

def tag_result name
  ResultTag.new self, name
end

#to_parseableObject



3
4
5
# File 'lib/parseable.rb', line 3

def to_parseable
  self
end

#validate(validators) ⇒ Object



89
90
91
# File 'lib/parseable.rb', line 89

def validate validators
  ValidateResult.new self, validators
end

#zero_or_moreObject



45
46
47
# File 'lib/parseable.rb', line 45

def zero_or_more
  repeat 0
end

#|(other) ⇒ Object



33
34
35
# File 'lib/parseable.rb', line 33

def | other
  ChoiceParser.new self, other
end