Module: Kaiseki::Parseable

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

Instance Method Summary collapse

Instance Method Details

#&(other) ⇒ Object



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

def & other
	SequenceParser.new self, other
end

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



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

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

#and?Boolean

Returns:

  • (Boolean)


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

def and?
	AndPredicate.new self
end

#cast(to_class) ⇒ Object



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

def cast to_class
	CastResult.new self, to_class
end

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



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

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

#mergeObject



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

def merge
	MergeResult.new self
end

#not!Object



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

def not!
	NotPredicate.new self
end

#one_or_moreObject



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

def one_or_more
	repeat 1
end

#optionalObject



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

def optional
	repeat 0, 1
end

#override(options) ⇒ Object



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

def override options
	OverrideResult.new self, options
end

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



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

def parse stream, options = {}
	stream = stream.to_stream
	stream.lock do
		parse! stream, options
	end
end

#predicate?Boolean

Returns:

  • (Boolean)


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

def predicate?
	false
end

#protect(&block) ⇒ Object



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

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

#repeat(min, max = nil) ⇒ Object



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

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

#set(*vars) ⇒ Object



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

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

#skipObject



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

def skip
	SkipPredicate.new self
end

#tag_error(name) ⇒ Object



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

def tag_error name
	ErrorTag.new self, name
end

#tag_result(name) ⇒ Object



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

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



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

def validate validators
	ValidateResult.new self, validators
end

#zero_or_moreObject



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

def zero_or_more
	repeat 0
end

#|(other) ⇒ Object



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

def | other
	ChoiceParser.new self, other
end