ruva 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
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'