r_calc 0.0.2 → 0.0.3
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/.yardopts +5 -0
- data/README.md +30 -14
- data/lib/r_calc/version.rb +1 -1
- data/r_calc.gemspec +5 -5
- data/spec/r_calc_spec.rb +1 -1
- metadata +31 -125
data/README.md
CHANGED
@@ -20,11 +20,8 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
To use this gem, after including this could be minimum of required code to run calculation:
|
22
22
|
|
23
|
-
|
23
|
+
```ruby
|
24
24
|
require 'r_calc'
|
25
|
-
#require 'supermodel'
|
26
|
-
#require 'minitest/spec'
|
27
|
-
#require 'minitest/autorun'
|
28
25
|
|
29
26
|
module RCalcHelpers
|
30
27
|
class Calculator < RCalc::FormulaProcessor
|
@@ -51,19 +48,38 @@ module RCalcHelpers
|
|
51
48
|
end
|
52
49
|
end
|
53
50
|
|
54
|
-
|
51
|
+
end
|
52
|
+
```
|
53
|
+
|
54
|
+
After you customizaed your calculator, next in your code you can inicialize it and use it like below:
|
55
|
+
```ruby
|
56
|
+
# storing [var,values] pair in hash
|
57
|
+
values = Hash.new
|
58
|
+
# make instance of your calculator
|
59
|
+
calc = Calculator.new do |key, val|
|
60
|
+
values[key] = val if val
|
61
|
+
values[key]
|
62
|
+
end
|
55
63
|
|
64
|
+
calc.eval("var1 = 12 * 12")
|
65
|
+
calc.eval("var2 = 100 * 2")
|
56
66
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
67
|
+
puts "total is = #{calc.eval("sum(var1, var2)")}"
|
68
|
+
# output should be:
|
69
|
+
# total is = 344
|
70
|
+
|
71
|
+
```
|
72
|
+
|
73
|
+
Don't worry about eval, it is not evail :) the method is overwriten in parent class and will use lexical parser to build formula bevore execute it. So in case you write:
|
74
|
+
|
75
|
+
```ruby
|
76
|
+
# try to call unix ls command
|
77
|
+
calc.eval("system('ls')")
|
78
|
+
|
79
|
+
```
|
80
|
+
|
81
|
+
It will throw error since token is not recognised. Of course, you can implement custom gramar and include it in your calculator so it reconise system token as some function which assepts numbers and do some neath calculation
|
64
82
|
|
65
|
-
end
|
66
|
-
`
|
67
83
|
|
68
84
|
## Contributing
|
69
85
|
|
data/lib/r_calc/version.rb
CHANGED
data/r_calc.gemspec
CHANGED
@@ -17,10 +17,10 @@ Gem::Specification.new do |gem|
|
|
17
17
|
|
18
18
|
gem.add_development_dependency "rake"
|
19
19
|
gem.add_development_dependency "rspec"
|
20
|
-
gem.add_development_dependency "ZenTest"
|
21
|
-
gem.add_development_dependency "autotest-fsevent"
|
22
|
-
gem.add_development_dependency "autotest-growl"
|
23
|
-
gem.add_development_dependency "minitest"
|
24
|
-
gem.add_development_dependency "minitest-spec"
|
20
|
+
#gem.add_development_dependency "ZenTest"
|
21
|
+
#gem.add_development_dependency "autotest-fsevent"
|
22
|
+
#gem.add_development_dependency "autotest-growl"
|
23
|
+
#gem.add_development_dependency "minitest"
|
24
|
+
#gem.add_development_dependency "minitest-spec"
|
25
25
|
#gem.add_development_dependency "supermodel"
|
26
26
|
end
|
data/spec/r_calc_spec.rb
CHANGED
metadata
CHANGED
@@ -1,152 +1,60 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: r_calc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
4
|
+
version: 0.0.3
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Milan Jaric
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
version_requirements: !ruby/object:Gem::Requirement
|
17
|
-
requirements:
|
18
|
-
- - ">="
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: !binary |-
|
21
|
-
MA==
|
22
|
-
none: false
|
23
16
|
requirement: !ruby/object:Gem::Requirement
|
24
|
-
requirements:
|
25
|
-
- - ">="
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
version: !binary |-
|
28
|
-
MA==
|
29
|
-
none: false
|
30
|
-
prerelease: false
|
31
|
-
type: :development
|
32
|
-
- !ruby/object:Gem::Dependency
|
33
|
-
name: rspec
|
34
|
-
version_requirements: !ruby/object:Gem::Requirement
|
35
|
-
requirements:
|
36
|
-
- - ">="
|
37
|
-
- !ruby/object:Gem::Version
|
38
|
-
version: !binary |-
|
39
|
-
MA==
|
40
17
|
none: false
|
41
|
-
requirement: !ruby/object:Gem::Requirement
|
42
18
|
requirements:
|
43
|
-
- -
|
19
|
+
- - ! '>='
|
44
20
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
46
|
-
MA==
|
47
|
-
none: false
|
48
|
-
prerelease: false
|
21
|
+
version: '0'
|
49
22
|
type: :development
|
50
|
-
- !ruby/object:Gem::Dependency
|
51
|
-
name: ZenTest
|
52
|
-
version_requirements: !ruby/object:Gem::Requirement
|
53
|
-
requirements:
|
54
|
-
- - ">="
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: !binary |-
|
57
|
-
MA==
|
58
|
-
none: false
|
59
|
-
requirement: !ruby/object:Gem::Requirement
|
60
|
-
requirements:
|
61
|
-
- - ">="
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version: !binary |-
|
64
|
-
MA==
|
65
|
-
none: false
|
66
23
|
prerelease: false
|
67
|
-
type: :development
|
68
|
-
- !ruby/object:Gem::Dependency
|
69
|
-
name: autotest-fsevent
|
70
24
|
version_requirements: !ruby/object:Gem::Requirement
|
71
|
-
requirements:
|
72
|
-
- - ">="
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: !binary |-
|
75
|
-
MA==
|
76
25
|
none: false
|
77
|
-
requirement: !ruby/object:Gem::Requirement
|
78
26
|
requirements:
|
79
|
-
- -
|
27
|
+
- - ! '>='
|
80
28
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
82
|
-
MA==
|
83
|
-
none: false
|
84
|
-
prerelease: false
|
85
|
-
type: :development
|
29
|
+
version: '0'
|
86
30
|
- !ruby/object:Gem::Dependency
|
87
|
-
name:
|
88
|
-
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
requirements:
|
90
|
-
- - ">="
|
91
|
-
- !ruby/object:Gem::Version
|
92
|
-
version: !binary |-
|
93
|
-
MA==
|
94
|
-
none: false
|
31
|
+
name: rspec
|
95
32
|
requirement: !ruby/object:Gem::Requirement
|
96
|
-
requirements:
|
97
|
-
- - ">="
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
version: !binary |-
|
100
|
-
MA==
|
101
33
|
none: false
|
102
|
-
prerelease: false
|
103
|
-
type: :development
|
104
|
-
- !ruby/object:Gem::Dependency
|
105
|
-
name: minitest
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
34
|
requirements:
|
108
|
-
- -
|
35
|
+
- - ! '>='
|
109
36
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
111
|
-
MA==
|
112
|
-
none: false
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: !binary |-
|
118
|
-
MA==
|
119
|
-
none: false
|
120
|
-
prerelease: false
|
37
|
+
version: '0'
|
121
38
|
type: :development
|
122
|
-
|
123
|
-
name: minitest-spec
|
39
|
+
prerelease: false
|
124
40
|
version_requirements: !ruby/object:Gem::Requirement
|
125
|
-
requirements:
|
126
|
-
- - ">="
|
127
|
-
- !ruby/object:Gem::Version
|
128
|
-
version: !binary |-
|
129
|
-
MA==
|
130
41
|
none: false
|
131
|
-
requirement: !ruby/object:Gem::Requirement
|
132
42
|
requirements:
|
133
|
-
- -
|
43
|
+
- - ! '>='
|
134
44
|
- !ruby/object:Gem::Version
|
135
|
-
version:
|
136
|
-
|
137
|
-
|
138
|
-
prerelease: false
|
139
|
-
type: :development
|
140
|
-
description: Gem defines basic grammar for formula builder and ability to execute formulas to get it results or sum them.
|
45
|
+
version: '0'
|
46
|
+
description: Gem defines basic grammar for formula builder and ability to execute
|
47
|
+
formulas to get it results or sum them.
|
141
48
|
email:
|
142
49
|
- milan.jaric@gmail.com
|
143
50
|
executables: []
|
144
51
|
extensions: []
|
145
52
|
extra_rdoc_files: []
|
146
53
|
files:
|
147
|
-
-
|
148
|
-
-
|
149
|
-
-
|
54
|
+
- .autotest
|
55
|
+
- .gitignore
|
56
|
+
- .rspec
|
57
|
+
- .yardopts
|
150
58
|
- Gemfile
|
151
59
|
- LICENSE
|
152
60
|
- README.md
|
@@ -178,34 +86,32 @@ files:
|
|
178
86
|
- spec/spec_helper.rb
|
179
87
|
homepage: https://github.com/mjaric/r_calc
|
180
88
|
licenses: []
|
181
|
-
post_install_message:
|
89
|
+
post_install_message:
|
182
90
|
rdoc_options: []
|
183
91
|
require_paths:
|
184
92
|
- lib
|
185
93
|
required_ruby_version: !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
186
95
|
requirements:
|
187
|
-
- -
|
96
|
+
- - ! '>='
|
188
97
|
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
189
99
|
segments:
|
190
100
|
- 0
|
191
|
-
hash:
|
192
|
-
version: !binary |-
|
193
|
-
MA==
|
194
|
-
none: false
|
101
|
+
hash: 4027723592844135316
|
195
102
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
103
|
+
none: false
|
196
104
|
requirements:
|
197
|
-
- -
|
105
|
+
- - ! '>='
|
198
106
|
- !ruby/object:Gem::Version
|
107
|
+
version: '0'
|
199
108
|
segments:
|
200
109
|
- 0
|
201
|
-
hash:
|
202
|
-
version: !binary |-
|
203
|
-
MA==
|
204
|
-
none: false
|
110
|
+
hash: 4027723592844135316
|
205
111
|
requirements: []
|
206
|
-
rubyforge_project:
|
112
|
+
rubyforge_project:
|
207
113
|
rubygems_version: 1.8.25
|
208
|
-
signing_key:
|
114
|
+
signing_key:
|
209
115
|
specification_version: 3
|
210
116
|
summary: Sandboxed formula builder and evaluator (it is not evail ;) )
|
211
117
|
test_files:
|