bool 1.0.11 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []