bool 1.0.11 → 1.0.13

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b7a81fff001d44fe102aece1bc1f9a8b2d269139
4
+ data.tar.gz: 4a42c9872223c8ed8c606313cf72ece4a0134f88
5
+ SHA512:
6
+ metadata.gz: 7504f35d2fa18b75a34f582ff7618515c58a133f6116cd2c8d4117ceb57d43f302502211222ce08112a0ca6383e0387f52c223de99fae54c87f2d4286842326a
7
+ data.tar.gz: 2530972a524ca095e8c06efe1e415114ecca3b5b4bb76e409686549cb4324adcae80eef0c20d649c1b59f1fd4ccdd9e0f408b293fd1bc3b2e0faf5dd299ad423
data/ext/bool_ext/ast.h CHANGED
@@ -57,3 +57,4 @@ Node* create_or(Node* left, Node* right);
57
57
  Node* create_not(Node* other);
58
58
 
59
59
  #endif
60
+
data/ext/bool_ext/ext.c CHANGED
@@ -69,3 +69,4 @@ void Init_bool_ext() {
69
69
 
70
70
  rb_define_singleton_method(mBool, "parse", Bool_parse, 1);
71
71
  }
72
+
@@ -476,7 +476,7 @@ static const yytype_int8 yyrhs[] =
476
476
  /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
477
477
  static const yytype_uint8 yyrline[] =
478
478
  {
479
- 0, 50, 50, 54, 55, 56, 57, 58
479
+ 0, 51, 51, 55, 56, 57, 58, 59
480
480
  };
481
481
  #endif
482
482
 
@@ -533,7 +533,7 @@ static const yytype_int8 yydefgoto[] =
533
533
  static const yytype_int8 yypact[] =
534
534
  {
535
535
  -1, -3, -1, -1, 3, 7, -3, 5, -3, -1,
536
- -1, -3, -3, -3
536
+ -1, -3, -3, 0
537
537
  };
538
538
 
539
539
  /* YYPGOTO[NTERM-NUM]. */
@@ -548,7 +548,7 @@ static const yytype_int8 yypgoto[] =
548
548
  #define YYTABLE_NINF -1
549
549
  static const yytype_uint8 yytable[] =
550
550
  {
551
- 6, 7, 1, 8, 0, 2, 3, 12, 13, 9,
551
+ 6, 7, 1, 8, 9, 2, 3, 12, 13, 9,
552
552
  10, 9, 10, 11
553
553
  };
554
554
 
@@ -558,9 +558,9 @@ static const yytype_uint8 yytable[] =
558
558
  #define yytable_value_is_error(Yytable_value) \
559
559
  YYID (0)
560
560
 
561
- static const yytype_int8 yycheck[] =
561
+ static const yytype_uint8 yycheck[] =
562
562
  {
563
- 2, 3, 3, 0, -1, 6, 7, 9, 10, 4,
563
+ 2, 3, 3, 0, 4, 6, 7, 9, 10, 4,
564
564
  5, 4, 5, 8
565
565
  };
566
566
 
@@ -1504,43 +1504,43 @@ yyreduce:
1504
1504
  switch (yyn)
1505
1505
  {
1506
1506
  case 2:
1507
- /* Line 1807 of yacc.c */
1508
- #line 50 "parser.y"
1507
+ /* Line 1792 of yacc.c */
1508
+ #line 51 "parser.y"
1509
1509
  { *node = (yyvsp[(1) - (1)].node); }
1510
1510
  break;
1511
1511
 
1512
1512
  case 3:
1513
- /* Line 1807 of yacc.c */
1514
- #line 54 "parser.y"
1513
+ /* Line 1792 of yacc.c */
1514
+ #line 55 "parser.y"
1515
1515
  { (yyval.node) = create_var((yyvsp[(1) - (1)].value)); }
1516
1516
  break;
1517
1517
 
1518
1518
  case 4:
1519
- /* Line 1807 of yacc.c */
1520
- #line 55 "parser.y"
1519
+ /* Line 1792 of yacc.c */
1520
+ #line 56 "parser.y"
1521
1521
  { (yyval.node) = create_and((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); }
1522
1522
  break;
1523
1523
 
1524
1524
  case 5:
1525
- /* Line 1807 of yacc.c */
1526
- #line 56 "parser.y"
1525
+ /* Line 1792 of yacc.c */
1526
+ #line 57 "parser.y"
1527
1527
  { (yyval.node) = create_or((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)); }
1528
1528
  break;
1529
1529
 
1530
1530
  case 6:
1531
- /* Line 1807 of yacc.c */
1532
- #line 57 "parser.y"
1531
+ /* Line 1792 of yacc.c */
1532
+ #line 58 "parser.y"
1533
1533
  { (yyval.node) = create_not((yyvsp[(2) - (2)].node)); }
1534
1534
  break;
1535
1535
 
1536
1536
  case 7:
1537
- /* Line 1807 of yacc.c */
1538
- #line 58 "parser.y"
1537
+ /* Line 1792 of yacc.c */
1538
+ #line 59 "parser.y"
1539
1539
  { (yyval.node) = (yyvsp[(2) - (3)].node); }
1540
1540
  break;
1541
1541
 
1542
1542
 
1543
- /* Line 1807 of yacc.c */
1543
+ /* Line 1792 of yacc.c */
1544
1544
  #line 1545 "parser.c"
1545
1545
  default: break;
1546
1546
  }
@@ -1780,6 +1780,6 @@ yyreturn:
1780
1780
 
1781
1781
 
1782
1782
  /* Line 2055 of yacc.c */
1783
- #line 61 "parser.y"
1783
+ #line 62 "parser.y"
1784
1784
 
1785
1785
 
@@ -40,7 +40,7 @@
40
40
  extern int yydebug;
41
41
  #endif
42
42
  /* "%code requires" blocks. */
43
- /* Line 2065 of yacc.c */
43
+ /* Line 2058 of yacc.c */
44
44
  #line 10 "parser.y"
45
45
 
46
46
 
@@ -51,7 +51,7 @@ typedef void* yyscan_t;
51
51
  #endif
52
52
 
53
53
 
54
- /* Line 2065 of yacc.c */
54
+ /* Line 2058 of yacc.c */
55
55
  #line 56 "parser.h"
56
56
 
57
57
  /* Tokens. */
@@ -74,14 +74,14 @@ typedef void* yyscan_t;
74
74
  #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
75
75
  typedef union YYSTYPE
76
76
  {
77
- /* Line 2065 of yacc.c */
77
+ /* Line 2058 of yacc.c */
78
78
  #line 30 "parser.y"
79
79
 
80
80
  char* value;
81
81
  Node* node;
82
82
 
83
83
 
84
- /* Line 2065 of yacc.c */
84
+ /* Line 2058 of yacc.c */
85
85
  #line 86 "parser.h"
86
86
  } YYSTYPE;
87
87
  # define YYSTYPE_IS_TRIVIAL 1
@@ -3,4 +3,5 @@
3
3
 
4
4
  #define UNUSED(x) (void)(x)
5
5
 
6
- #endif
6
+ #endif
7
+
data/lib/bool.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  require 'bool_ext'
4
4
  require 'bool/ast'
5
5
  require 'bool/evaluator'
6
+ require 'bool/renderer'
6
7
 
7
8
  module Bool
8
9
  class SyntaxError < StandardError
data/lib/bool/ast.rb CHANGED
@@ -9,8 +9,8 @@ module Bool
9
9
  @name = name
10
10
  end
11
11
 
12
- def describe_to(visitor, arg)
13
- visitor.var(self, arg)
12
+ def accept(visitor, arg)
13
+ visitor.visit_var(self, arg)
14
14
  end
15
15
  end
16
16
 
@@ -21,8 +21,8 @@ module Bool
21
21
  @left, @right = left, right
22
22
  end
23
23
 
24
- def describe_to(visitor, arg)
25
- visitor.and(self, arg)
24
+ def accept(visitor, arg)
25
+ visitor.visit_and(self, arg)
26
26
  end
27
27
  end
28
28
 
@@ -33,20 +33,20 @@ module Bool
33
33
  @left, @right = left, right
34
34
  end
35
35
 
36
- def describe_to(visitor, arg)
37
- visitor.or(self, arg)
36
+ def accept(visitor, arg)
37
+ visitor.visit_or(self, arg)
38
38
  end
39
39
  end
40
40
 
41
41
  class Not
42
- attr_reader :other
42
+ attr_reader :operand
43
43
 
44
- def initialize(other)
45
- @other = other
44
+ def initialize(operand)
45
+ @operand = operand
46
46
  end
47
47
 
48
- def describe_to(visitor, arg)
49
- visitor.not(self, arg)
48
+ def accept(visitor, arg)
49
+ visitor.visit_not(self, arg)
50
50
  end
51
51
  end
52
52
  end
@@ -8,26 +8,26 @@ module Bool
8
8
  end
9
9
 
10
10
  else
11
- def var(node, vars)
11
+ def visit_var(node, vars)
12
12
  !!vars.index(node.name)
13
13
  end
14
14
 
15
- def and(node, vars)
15
+ def visit_and(node, vars)
16
16
  evaluate(node.left, vars) && evaluate(node.right, vars)
17
17
  end
18
18
 
19
- def or(node, vars)
19
+ def visit_or(node, vars)
20
20
  evaluate(node.left, vars) || evaluate(node.right, vars)
21
21
  end
22
22
 
23
- def not(node, vars)
24
- !evaluate(node.other, vars)
23
+ def visit_not(node, vars)
24
+ !evaluate(node.operand, vars)
25
25
  end
26
26
 
27
- private
27
+ private
28
28
 
29
29
  def evaluate(node, vars)
30
- node.describe_to(self, vars)
30
+ node.accept(self, vars)
31
31
  end
32
32
  end
33
33
  end
@@ -0,0 +1,35 @@
1
+ module Bool
2
+ class Renderer
3
+ if RUBY_PLATFORM =~ /java/
4
+ require 'bool_ext'
5
+
6
+ def self.new
7
+ Java::Bool::Renderer.new
8
+ end
9
+
10
+ else
11
+ def visit_var(node, vars)
12
+ node.name
13
+ end
14
+
15
+ def visit_and(node, vars)
16
+ "(" + render(node.left) + " && " + render(node.right) + ")"
17
+ end
18
+
19
+ def visit_or(node, vars)
20
+ "(" + render(node.left) + " || " + render(node.right) + ")"
21
+ end
22
+
23
+ def visit_not(node, vars)
24
+ "!" + render(node.operand)
25
+ end
26
+
27
+ private
28
+
29
+ def render(node)
30
+ node.accept(self, nil)
31
+ end
32
+ end
33
+ end
34
+ end
35
+
metadata CHANGED
@@ -1,64 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bool
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.11
5
- prerelease:
4
+ version: 1.0.13
6
5
  platform: ruby
7
6
  authors:
8
7
  - Aslak Hellesøy
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-14 00:00:00.000000000 Z
11
+ date: 2013-03-16 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: bundler
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
37
- version: 1.3.0.pre
33
+ version: 1.3.0
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
45
- version: 1.3.0.pre
40
+ version: 1.3.0
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rake-compiler
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
- version: 0.8.2
47
+ version: 0.8.3
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
- version: 0.8.2
54
+ version: 0.8.3
62
55
  description:
63
56
  email:
64
57
  executables: []
@@ -68,44 +61,38 @@ extra_rdoc_files: []
68
61
  files:
69
62
  - lib/bool/ast.rb
70
63
  - lib/bool/evaluator.rb
64
+ - lib/bool/renderer.rb
71
65
  - lib/bool.rb
72
66
  - ext/bool_ext/extconf.rb
73
67
  - ext/bool_ext/ast.c
74
68
  - ext/bool_ext/ext.c
75
69
  - ext/bool_ext/lexer.c
76
70
  - ext/bool_ext/parser.c
71
+ - ext/bool_ext/parser.h
77
72
  - ext/bool_ext/ast.h
78
73
  - ext/bool_ext/lexer.h
79
- - ext/bool_ext/parser.h
80
74
  - ext/bool_ext/unused.h
81
75
  homepage:
82
76
  licenses: []
77
+ metadata: {}
83
78
  post_install_message:
84
79
  rdoc_options: []
85
80
  require_paths:
86
81
  - lib
87
82
  required_ruby_version: !ruby/object:Gem::Requirement
88
- none: false
89
83
  requirements:
90
- - - ! '>='
84
+ - - '>='
91
85
  - !ruby/object:Gem::Version
92
86
  version: '0'
93
- segments:
94
- - 0
95
- hash: -4061533046418235951
96
87
  required_rubygems_version: !ruby/object:Gem::Requirement
97
- none: false
98
88
  requirements:
99
- - - ! '>='
89
+ - - '>='
100
90
  - !ruby/object:Gem::Version
101
91
  version: '0'
102
- segments:
103
- - 0
104
- hash: -4061533046418235951
105
92
  requirements: []
106
93
  rubyforge_project:
107
- rubygems_version: 1.8.24
94
+ rubygems_version: 2.0.0.rc.2
108
95
  signing_key:
109
- specification_version: 3
96
+ specification_version: 4
110
97
  summary: Boolean expression evaluator
111
98
  test_files: []