raabro 0.9.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,6 +5,8 @@
5
5
  # Sat Sep 19 21:12:35 JST 2015
6
6
  #
7
7
 
8
+ require 'pp'
9
+
8
10
  require 'raabro'
9
11
 
10
12
  #
@@ -12,4 +14,59 @@ require 'raabro'
12
14
 
13
15
  def ta(i); Raabro.str(nil, i, 'ta'); end
14
16
  def to(i); Raabro.str(nil, i, 'to'); end
17
+ def tu(i); Raabro.str(nil, i, 'tu'); end
18
+
19
+ def to_plus(input); Raabro.rep(:tos, input, :to, 1); end
20
+
21
+ def nta(i); Raabro.str('the-ta', i, 'ta'); end
22
+
23
+ def cha(i); Raabro.rex(nil, i, /\A[a-z]/); end
24
+ def com(i); Raabro.str(nil, i, ','); end
25
+
26
+ def lt(i); Raabro.str(nil, i, '<'); end
27
+ def gt(i); Raabro.str(nil, i, '>'); end
28
+
29
+ def onex(i); Raabro.str(:onex, i, 'x'); end
30
+ def twox(i); Raabro.str(:twox, i, 'xx'); end
31
+
32
+
33
+ #
34
+ # test modules
35
+
36
+ module Sample; end
37
+
38
+ module Sample::Cal include Raabro
39
+
40
+ def sp(i); rex(nil, i, /\s+/); end
41
+
42
+ def num(i); rex(:num, i, /-?[0-9]+/); end
43
+ def op(i); rex(:op, i, /[+\-*\/]/); end
44
+ def item(i); alt(:item, i, :num, :op); end
45
+
46
+ def suite(i); jseq(nil, i, :item, :sp); end
47
+
48
+ # entry point
49
+
50
+ def parse(input)
51
+
52
+ all(nil, Raabro::Input.new(input, :prune => true), :suite)
53
+ end
54
+ end
55
+
56
+ module Sample::Arith include Raabro
57
+
58
+ def number(i); rex(:number, i, /-?[0-9]+\s*/); end
59
+ def plus(i); rex(:plus, i, /\+\s*/); end
60
+ def minus(i); rex(:minus, i, /-\s*/); end
61
+
62
+ def addition(i); seq(:addition, i, :number, :plus, :op_or_num); end
63
+ def substraction(i); seq(:substraction, i, :number, :minus, :op_or_num); end
64
+
65
+ def op_or_num(i); alt(nil, i, :addition, :substraction, :number); end
66
+
67
+ def parse(input)
68
+
69
+ all(nil, Raabro::Input.new(input, prune: true), :op_or_num)
70
+ end
71
+ end
15
72
 
@@ -10,63 +10,67 @@ require 'spec_helper'
10
10
 
11
11
  describe Raabro do
12
12
 
13
- before :each do
14
-
15
- @input = Raabro::Input.new('toto')
16
- end
17
-
18
13
  describe '.str' do
19
14
 
20
15
  it 'returns a tree with result == 0 in case of failure' do
21
16
 
22
- t = Raabro.str(nil, @input, 'nada')
17
+ i = Raabro::Input.new('toto')
18
+
19
+ t = Raabro.str(nil, i, 'nada')
23
20
 
24
21
  expect(t.to_a).to eq(
25
22
  [ nil, 0, 0, 0, nil, :str, [] ]
26
23
  )
27
- expect(@input.offset).to eq(0)
24
+ expect(i.offset).to eq(0)
28
25
  end
29
26
 
30
27
  it "returns a tree with result == 1 in case of success" do
31
28
 
32
- t = Raabro.str(nil, @input, 'toto')
29
+ i = Raabro::Input.new('toto')
30
+
31
+ t = Raabro.str(nil, i, 'toto')
33
32
 
34
33
  expect(t.to_a).to eq(
35
34
  [ nil, 1, 0, 4, nil, :str, [] ]
36
35
  )
37
- expect(@input.offset).to eq(4)
36
+ expect(i.offset).to eq(4)
38
37
  end
39
38
 
40
39
  it "names the result if there is a name" do
41
40
 
42
- t = Raabro.str(:x, @input, 'toto')
41
+ i = Raabro::Input.new('toto')
42
+
43
+ t = Raabro.str(:x, i, 'toto')
43
44
 
44
45
  expect(t.to_a).to eq(
45
46
  [ :x, 1, 0, 4, nil, :str, [] ]
46
47
  )
47
- expect(@input.offset).to eq(4)
48
+ expect(i.offset).to eq(4)
48
49
  end
49
50
 
50
51
  it "names in case of failure as well" do
51
52
 
52
- t = Raabro.str(:y, @input, 'nada')
53
+ i = Raabro::Input.new('toto')
54
+
55
+ t = Raabro.str(:y, i, 'nada')
53
56
 
54
57
  expect(t.to_a).to eq(
55
58
  [ :y, 0, 0, 0, nil, :str, [] ]
56
59
  )
57
- expect(@input.offset).to eq(0)
60
+ expect(i.offset).to eq(0)
58
61
  end
59
62
 
60
63
  it "accepts an empty input" do
61
64
 
62
- @input.offset = 4
65
+ i = Raabro::Input.new('toto')
66
+ i.offset = 4
63
67
 
64
- t = Raabro.str(nil, @input, 'nada')
68
+ t = Raabro.str(nil, i, 'nada')
65
69
 
66
70
  expect(t.to_a).to eq(
67
71
  [ nil, 0, 4, 0, nil, :str, [] ]
68
72
  )
69
- expect(@input.offset).to eq(4)
73
+ expect(i.offset).to eq(4)
70
74
  end
71
75
  end
72
76
  end
@@ -0,0 +1,47 @@
1
+
2
+ #
3
+ # specifying raabro
4
+ #
5
+ # Tue Sep 22 07:55:52 JST 2015
6
+ #
7
+
8
+ require 'spec_helper'
9
+
10
+
11
+ describe Raabro::Tree do
12
+
13
+ describe '.lookup' do
14
+
15
+ it 'returns the first node with the given name' do
16
+
17
+ t = Sample::Cal.parse('4 5 6 + 1 2 3 * +')
18
+
19
+ expect(
20
+ t.lookup('item').to_a(:leaves)
21
+ ).to eq(
22
+ [ :item, 1, 0, 1, nil, :alt, [
23
+ [ :num, 1, 0, 1, nil, :rex, '4' ]
24
+ ] ]
25
+ )
26
+ end
27
+ end
28
+
29
+ describe '.gather' do
30
+
31
+ it 'returns all the nodes with a given name' do
32
+
33
+ t = Sample::Cal.parse('4 5 6 + 1 2 3 * +')
34
+
35
+ expect(
36
+ t.gather('op').collect { |n| n.to_a(:leaves) }
37
+ ).to eq(
38
+ [
39
+ [ :op, 1, 6, 1, nil, :rex, '+' ],
40
+ [ :op, 1, 14, 1, nil, :rex, '*' ],
41
+ [ :op, 1, 16, 1, nil, :rex, '+' ]
42
+ ]
43
+ )
44
+ end
45
+ end
46
+ end
47
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: raabro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-09-20 00:00:00.000000000 Z
12
+ date: 2015-09-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -52,13 +52,20 @@ extra_rdoc_files: []
52
52
  files:
53
53
  - Rakefile
54
54
  - lib/raabro.rb
55
+ - spec/all_spec.rb
55
56
  - spec/alt_spec.rb
57
+ - spec/eseq_spec.rb
58
+ - spec/jseq_spec.rb
59
+ - spec/ren_spec.rb
56
60
  - spec/rep_spec.rb
57
61
  - spec/rex_spec.rb
62
+ - spec/sample_xel_spec.rb
58
63
  - spec/seq_spec.rb
59
64
  - spec/spec_helper.rb
60
65
  - spec/str_spec.rb
66
+ - spec/tree_spec.rb
61
67
  - raabro.gemspec
68
+ - CHANGELOG.txt
62
69
  - LICENSE.txt
63
70
  - README.md
64
71
  homepage: http://github.com/jmettraux/rufus-scheduler