kaiseki 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/lib/kaiseki.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Kaiseki
2
- VERSION = '1.0.3'
2
+ VERSION = '1.0.4'
3
3
  file_path = File.dirname __FILE__
4
4
 
5
5
  #load basic kaiseki classes
data/lib/node.rb CHANGED
@@ -54,6 +54,10 @@ module Kaiseki
54
54
  Class.new(self).bind args, options
55
55
  end
56
56
 
57
+ def default
58
+ subclass [:result], :arity => {:result => 0}
59
+ end
60
+
57
61
  def bind args, options = {}
58
62
  args.must_be Array
59
63
  raise "can't bind parent NodeClass" if self == Node
data/lib/parseable.rb CHANGED
@@ -56,7 +56,7 @@ module Kaiseki
56
56
  CastResult.new self, to_class
57
57
  end
58
58
 
59
- def filter node = Node.subclass([:result], :arity => {:result => 0}), &block
59
+ def filter node = Node.default, &block
60
60
  FilterResult.new self, node, &block
61
61
  end
62
62
 
data/lib/result_filter.rb CHANGED
@@ -2,7 +2,7 @@ module Kaiseki
2
2
  class FilterResult < PackageParser
3
3
  attr_reader :node, :block
4
4
 
5
- def initialize expected, node = Node.subclass([:result], :arity => {:result => 0}), &block
5
+ def initialize expected, node = Node.default, &block
6
6
  super expected
7
7
  @node = node
8
8
  @block = block
data/lib/rule.rb CHANGED
@@ -60,7 +60,9 @@ module Kaiseki
60
60
 
61
61
  def filter node = @name, &block
62
62
  if @parseable
63
- @grammar.nodes[@name] ||= Node.subclass([:result], :arity => {:result => 0})
63
+ unless @grammar.nodes.key? @name
64
+ @grammar.nodes[@name] = Node.default
65
+ end
64
66
  @parseable = @parseable.filter node, &block
65
67
  else
66
68
  raise "parseable for rule #{@name.inspect} undefined"
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 0
8
- - 3
9
- version: 1.0.3
8
+ - 4
9
+ version: 1.0.4
10
10
  platform: ruby
11
11
  authors:
12
12
  - William Hamilton-Levi