ruva 1.0.1 → 1.0.2

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.
data/lib/ruva/util.rb ADDED
@@ -0,0 +1,28 @@
1
+ module Ruva
2
+ module Util
3
+ # This module provides functionality to perform deep method/attribute calls
4
+ # on an object with a given string, such as 'this.is.a.deep.call'.
5
+ module DeepCall
6
+ def self.init_deep_call call_string, candidate
7
+ deep_call(get_call_stack(call_string), to_open_struct(candidate))
8
+ end
9
+
10
+ def self.deep_call call_stack, candidate
11
+ candidate = candidate.instance_eval(call_stack.pop)
12
+ if (call_stack.size > 0)
13
+ candidate = to_open_struct(candidate)
14
+ return deep_call(call_stack, candidate)
15
+ end
16
+ candidate
17
+ end
18
+
19
+ def self.get_call_stack call_string
20
+ call_string.split(".").reverse
21
+ end
22
+
23
+ def self.to_open_struct candidate
24
+ candidate.is_a?(Hash) ? OpenStruct.new(candidate) : candidate
25
+ end
26
+ end
27
+ end
28
+ end
data/lib/ruva/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ruva
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.2"
3
3
  end
data/ruva.gemspec CHANGED
@@ -6,8 +6,8 @@ Gem::Specification.new do |gem|
6
6
  gem.version = Ruva::VERSION
7
7
 
8
8
  gem.authors = ["Samuel Mueller"]
9
- gem.email = ["mueller.samu@gmail.com"]
10
- gem.description = %q{A library to write plain text conditions.}
9
+ gem.email = [""]
10
+ gem.description = %q{Write text conditions.}
11
11
  gem.summary = gem.description
12
12
  gem.homepage = "https://github.com/ssmm/ruva"
13
13
 
@@ -15,9 +15,9 @@ Gem::Specification.new do |gem|
15
15
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
16
16
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
17
17
  gem.require_paths = ["lib"]
18
-
18
+
19
19
  gem.add_dependency "citrus", "~> 2.4.1"
20
20
  gem.add_dependency "indentation-parser"
21
-
21
+
22
22
  gem.add_development_dependency "rspec", "~> 2.6"
23
23
  end
@@ -1,4 +1,4 @@
1
- require 'ruva/expression'
1
+ require 'ruva'
2
2
  require 'helpers/expression_helper'
3
3
 
4
4
  RSpec.configure do |c|
@@ -14,10 +14,10 @@ describe Ruva do
14
14
  test_expression "age is 23 or 24 or 25", {:age => 24}, true
15
15
 
16
16
  test_expression "age is between 18 and 28", {:age => 23}, true
17
-
17
+
18
18
  test_expression "age is between 18 and 28", {:age => 28}, true
19
19
  test_expression "age is between 18 and 28", {:age => 18}, true
20
-
20
+
21
21
  test_expression "age is between 18 and 28", {:age => 50}, false
22
22
  test_expression "age is between 18 and 28", {:age => 17}, false
23
23
  end
@@ -44,39 +44,39 @@ describe Ruva do
44
44
  it "handles numerics" do
45
45
  test_expression "age is greater than 23", {:age => 24}, true
46
46
  test_expression "age is greater than 23", {:age => 23}, false
47
-
47
+
48
48
  test_expression "age is less than 23", {:age => 22}, true
49
49
  test_expression "age is less than 23", {:age => 23}, false
50
-
50
+
51
51
  test_expression "age is greater than or equal to 23", {:age => 23}, true
52
52
  test_expression "age is greater than or equal to 23", {:age => 22}, false
53
-
53
+
54
54
  test_expression "age is less than or equal to 23", {:age => 23}, true
55
55
  test_expression "age is less than or equal to 23", {:age => 24}, false
56
56
 
57
57
  test_expression "age is 23 or more", {:age => 23}, true
58
58
  test_expression "age is 23 or more", {:age => 22}, false
59
59
  test_expression "age is 23 or more", {:age => 24}, true
60
-
60
+
61
61
  test_expression "age is 23 or less", {:age => 23}, true
62
62
  test_expression "age is 23 or less", {:age => 24}, false
63
63
  test_expression "age is 23 or less", {:age => 22}, true
64
64
  end
65
-
66
- it "handles strings" do
65
+
66
+ it "handles strings" do
67
67
  test_expression "name is greater than samuel", {:name => "simon"}, true
68
68
  test_expression "name is greater than samuel", {:name => "samantha"}, false
69
-
69
+
70
70
  test_expression "name is less than samuel", {:name => "lisa"}, true
71
71
  test_expression "name is less than samuel", {:name => "samuel l jackson"}, false
72
-
72
+
73
73
  test_expression "name is greater than or equal to samuel", {:name => "samuel"}, true
74
74
  test_expression "name is greater than or equal to samuel", {:name => "samantha"}, false
75
-
75
+
76
76
  test_expression "name is less than or equal to samuel", {:name => "samuel"}, true
77
77
  test_expression "name is less than or equal to samuel", {:name => "samuel l jackson"}, false
78
78
  end
79
-
79
+
80
80
  it "handes dates" do
81
81
  test_expression "date is greater than 01.01.2011", {:date => Date.parse("1.1.2012")}, true
82
82
  test_expression "date is greater than 01.01.2011", {:date => Date.parse("1.1.2010")}, false
@@ -91,21 +91,21 @@ describe Ruva do
91
91
  test_expression "date is less than or equal to 01.01.2011", {:date => Date.parse("1.1.2012")}, false
92
92
  end
93
93
  end
94
-
94
+
95
95
  describe "matches expressions" do
96
96
  it "handles strings" do
97
97
  test_expression "name matches sam", {:name => "samuel"}, true
98
98
  test_expression "name matches am", {:name => "samuel"}, true
99
99
  test_expression "name matches uel", {:name => "samuel"}, true
100
-
100
+
101
101
  test_expression "name matches xyz", {:name => "samuel"}, false
102
-
102
+
103
103
  test_expression "name matches /^samuel$/", {:name => "samuel"}, true
104
104
  test_expression "name matches /^samuel$/", {:name => "samuel "}, false
105
-
105
+
106
106
  test_expression "name matches /daniel|jonas/", {:name => "daniel"}, true
107
107
  test_expression "name matches /daniel|jonas/", {:name => "jonas"}, true
108
-
108
+
109
109
  test_expression 'name matches /regex\/with escaping/', {:name => "regex/with escaping"}, true
110
110
  test_expression "name matches /regex\\/with escaping/", {:name => "regex/with escaping"}, true
111
111
  end
@@ -148,7 +148,6 @@ describe Ruva do
148
148
  {:third => 3}
149
149
  ]}
150
150
  obj.map = map
151
- puts obj
152
151
  test_expression "map.list[1].second is 2", obj, true
153
152
  end
154
153
  end
@@ -1,23 +1,23 @@
1
- require 'ruva'
1
+ # require 'ruva'
2
2
 
3
- describe Ruva do
4
- it "turns a hash into an ostruct" do
5
- person = OpenStruct.new
6
- person.name = "sam"
7
- person.age = 23
8
- hash = {
9
- :this => {
10
- :ostruct => person,
11
- :is => {
12
- :a => {
13
- :test => "works!"
14
- }
15
- }
16
- }
17
- }
18
- ostruct = Ruva.hash_to_ostruct hash
19
- ostruct.this.is.a.test.should eq "works!"
20
- ostruct.this.ostruct.name.should eq "sam"
21
- ostruct.this.ostruct.age.should eq 23
22
- end
23
- end
3
+ # describe Ruva do
4
+ # it "turns a hash into an ostruct" do
5
+ # person = OpenStruct.new
6
+ # person.name = "sam"
7
+ # person.age = 23
8
+ # hash = {
9
+ # :this => {
10
+ # :ostruct => person,
11
+ # :is => {
12
+ # :a => {
13
+ # :test => "works!"
14
+ # }
15
+ # }
16
+ # }
17
+ # }
18
+ # ostruct = Ruva.hash_to_ostruct hash
19
+ # ostruct.this.is.a.test.should eq "works!"
20
+ # ostruct.this.ostruct.name.should eq "sam"
21
+ # ostruct.this.ostruct.age.should eq 23
22
+ # end
23
+ # end
@@ -1,6 +1,6 @@
1
1
  module ExpressionHelper
2
2
  def test_expression expression, input, expected
3
- spec = RuvaExpression.parse(expression)
3
+ spec = Ruva::Expression::RuvaExpression.parse(expression)
4
4
  result = spec.evaluate input
5
5
  result.should be expected
6
6
  end
data/spec/util_spec.rb ADDED
@@ -0,0 +1,7 @@
1
+ require 'ruva'
2
+
3
+ describe Ruva do
4
+ it "evaluates deep object calls" do
5
+
6
+ end
7
+ end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruva
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
5
- prerelease:
4
+ version: 1.0.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Samuel Mueller
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-09-13 00:00:00.000000000 Z
11
+ date: 2013-05-23 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: citrus
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
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
@@ -30,23 +27,20 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: indentation-parser
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
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
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rspec
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,14 +48,13 @@ dependencies:
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
54
  version: '2.6'
62
- description: A library to write plain text conditions.
55
+ description: Write text conditions.
63
56
  email:
64
- - mueller.samu@gmail.com
57
+ - ''
65
58
  executables: []
66
59
  extensions: []
67
60
  extra_rdoc_files: []
@@ -73,15 +66,14 @@ files:
73
66
  - README.md
74
67
  - Rakefile
75
68
  - lib/ruva.rb
76
- - lib/ruva/expression.rb
77
69
  - lib/ruva/expression/equal_greater_less.rb
78
70
  - lib/ruva/expression/expression_leaf_spec.rb
79
71
  - lib/ruva/expression/identifier_comparable.rb
80
72
  - lib/ruva/expression/is_between.rb
81
73
  - lib/ruva/expression/matches.rb
82
74
  - lib/ruva/expression/ruva_expression.citrus
83
- - lib/ruva/specification.rb
84
75
  - lib/ruva/specification/specification.rb
76
+ - lib/ruva/util.rb
85
77
  - lib/ruva/version.rb
86
78
  - ruva.gemspec
87
79
  - spec/conditions/simple_condition.ruva
@@ -91,30 +83,30 @@ files:
91
83
  - spec/inline_ruva_spec.rb
92
84
  - spec/normalize_indentation_spec.rb
93
85
  - spec/ruva_spec.rb
86
+ - spec/util_spec.rb
94
87
  homepage: https://github.com/ssmm/ruva
95
88
  licenses: []
89
+ metadata: {}
96
90
  post_install_message:
97
91
  rdoc_options: []
98
92
  require_paths:
99
93
  - lib
100
94
  required_ruby_version: !ruby/object:Gem::Requirement
101
- none: false
102
95
  requirements:
103
- - - ! '>='
96
+ - - '>='
104
97
  - !ruby/object:Gem::Version
105
98
  version: '0'
106
99
  required_rubygems_version: !ruby/object:Gem::Requirement
107
- none: false
108
100
  requirements:
109
- - - ! '>='
101
+ - - '>='
110
102
  - !ruby/object:Gem::Version
111
103
  version: '0'
112
104
  requirements: []
113
105
  rubyforge_project:
114
- rubygems_version: 1.8.24
106
+ rubygems_version: 2.0.3
115
107
  signing_key:
116
- specification_version: 3
117
- summary: A library to write plain text conditions.
108
+ specification_version: 4
109
+ summary: Write text conditions.
118
110
  test_files:
119
111
  - spec/conditions/simple_condition.ruva
120
112
  - spec/expression_spec.rb
@@ -123,3 +115,4 @@ test_files:
123
115
  - spec/inline_ruva_spec.rb
124
116
  - spec/normalize_indentation_spec.rb
125
117
  - spec/ruva_spec.rb
118
+ - spec/util_spec.rb
@@ -1,17 +0,0 @@
1
- require 'citrus'
2
- require 'ostruct'
3
- require 'ruva/specification'
4
- require 'ruva/expression/expression_leaf_spec'
5
- require 'ruva/expression/equal_greater_less'
6
- require 'ruva/expression/identifier_comparable'
7
- require 'ruva/expression/is_between'
8
- require 'ruva/expression/matches'
9
-
10
- Citrus.require 'ruva/expression/ruva_expression'
11
-
12
- module RuvaExpression
13
- def self.parse expression
14
- result = super expression
15
- result.value
16
- end
17
- end
@@ -1 +0,0 @@
1
- require 'ruva/specification/specification'