eqn 1.4.2 → 1.5.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b233964ecca218e4954b73f14bf5012cf0c7d30d
4
- data.tar.gz: 831f81cb25eefc402de5219089f4403eb1004c1d
3
+ metadata.gz: 3929425e71b09257fcf386a38166a5fcf2adc7e5
4
+ data.tar.gz: 2d47d23b59c716ca5adb87cfdaaa206d3aa5b17f
5
5
  SHA512:
6
- metadata.gz: 7bbf42e68e90df5969c8bfc238c6b59f289a323dfc30ba2705b86271ca77cf87ae25880b5cf3bb41f13b4e8af302c6541e04caa77a6920f762e0b3a64fb844dc
7
- data.tar.gz: dae0c84242de38d1c880f6c629568c3b11a05351fb37cefaa316287a9a7f7123166a8107f7f83e3e9d54b4a278b63c6ac4ea35279c0b171525b0eab79f51ce42
6
+ metadata.gz: 3c74b42add0068a547fa8b547fdb4c7a342067747bde79791e89996816205c2ff1655ca60a53c184f38d6b04cb78b4229a4f079ef8d8c4457a26a8285833fade
7
+ data.tar.gz: da9ae663707fa4b07c41b60b5b87c9c3d82ed8ce530a98d7c87008afd4b81ccaa3974be56ff30c014540717424ab899a8cf45a91a4b3d1c6b27ef31515a209a1
data/.gitignore CHANGED
@@ -2,3 +2,4 @@
2
2
  coverage
3
3
  Gemfile.lock
4
4
  pkg
5
+ gemfiles/*.lock
data/README.md CHANGED
@@ -18,30 +18,40 @@ gem 'eqn'
18
18
 
19
19
  And then execute:
20
20
 
21
- $ bundle
21
+ ```bash
22
+ $ bundle
23
+ ```
22
24
 
23
25
  Or install it yourself as:
24
26
 
25
- $ gem install eqn
27
+ ```bash
28
+ $ gem install eqn
29
+ ```
26
30
 
27
31
  ## Usage
28
32
 
29
33
  To evaluate an equation string, run the following:
30
34
 
31
- $ Eqn::Calculator.calc('1 + 1')
32
- # => 2
35
+ ```ruby
36
+ Eqn::Calculator.calc('1 + 1')
37
+ # => 2
38
+ ```
33
39
 
34
40
  You can also check if an equation is valid:
35
41
 
36
- $ Eqn::Calculator.valid?('1 + 1')
37
- # => true
38
- $ Eqn::Calculator.valid?('1 + / 1')
39
- # => false
42
+ ```ruby
43
+ Eqn::Calculator.valid?('1 + 1')
44
+ # => true
45
+ Eqn::Calculator.valid?('1 + / 1')
46
+ # => false
47
+ ```
40
48
 
41
49
  If you want to peek at how Eqn is parsing an equation, run the following to get the syntax tree:
42
50
 
43
- $ Eqn::Parser.parse('1 + 1')
44
- # => <syntax tree is printed>
51
+ ```ruby
52
+ Eqn::Parser.parse('1 + 1')
53
+ # => <syntax tree is printed>
54
+ ```
45
55
 
46
56
  Eqn follows the standard mathematical order of operations: parentheses, exponentiation, multiplication/division, addition/subtraction. It ignores whitespace, so `1 + 1` === `1+1`. (However, it does not ignore whitespace between two numbers, so `1 1` is invalid.)
47
57
 
@@ -49,36 +59,42 @@ Eqn follows the standard mathematical order of operations: parentheses, exponent
49
59
 
50
60
  Eqn supports dynamically inserting values into an equation. Variables are passed to the calculator method via a hash; variable names may contain any lowercase or uppercase letters. Some examples:
51
61
 
52
- $ Eqn::Calculator.calc('a + 1', a: 1)
53
- # => 2
62
+ ```ruby
63
+ Eqn::Calculator.calc('a + 1', a: 1)
64
+ # => 2
54
65
 
55
- $ Eqn::Calculator.calc('5 * value', value: 2.5)
56
- # => 12.5
66
+ Eqn::Calculator.calc('5 * value', value: 2.5)
67
+ # => 12.5
57
68
 
58
- $ Eqn::Calculator.calc('if(a > 10, b, c)', a: 15, b: 1, c: 0) # see below for function documentation
59
- # => 1
69
+ Eqn::Calculator.calc('if(a > 10, b, c)', a: 15, b: 1, c: 0) # see below for function documentation
70
+ # => 1
71
+ ```
60
72
 
61
73
  If you need distinct equations with variable sets, you can instantiate separate instances:
62
74
 
63
- $ calc = Eqn::Calculator.new('1 + abc', abc: 2.0)
64
- $ calc.calc
65
- # => 3.0
66
- $ calc_two = Eqn::Calculator.new('1 + abc', abc: 5.0)
67
- $ calc_two.calc
68
- # => 6.0
75
+ ```ruby
76
+ calc = Eqn::Calculator.new('1 + abc', abc: 2.0)
77
+ calc.calc
78
+ # => 3.0
79
+ calc_two = Eqn::Calculator.new('1 + abc', abc: 5.0)
80
+ calc_two.calc
81
+ # => 6.0
82
+ ```
69
83
 
70
84
  On calculator instances, variables can be set via key-value syntax, hash syntax, or as a method:
71
85
 
72
- $ calc = Eqn::Calculator.new('1 + abc')
73
- $ calc.set(:abc, 3.0)
74
- $ calc.abc
75
- # => 3.0
76
- $ calc.set(abc: 4.0)
77
- $ calc.abc
78
- # => 4.0
79
- $ calc.abc = 5.0
80
- $ calc.abc
81
- # => 5.0
86
+ ```ruby
87
+ calc = Eqn::Calculator.new('1 + abc')
88
+ calc.set(:abc, 3.0)
89
+ calc.abc
90
+ # => 3.0
91
+ calc.set(abc: 4.0)
92
+ calc.abc
93
+ # => 4.0
94
+ calc.abc = 5.0
95
+ calc.abc
96
+ # => 5.0
97
+ ```
82
98
 
83
99
  ### Functions
84
100
 
@@ -1,8 +1,11 @@
1
1
  # coding: utf-8
2
+
2
3
  lib = File.expand_path('../lib', __FILE__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'eqn/version'
5
6
 
7
+ config_files = %w(.rspec .rubocop.yml .ruby-version Appraisals circle.yml)
8
+
6
9
  Gem::Specification.new do |spec|
7
10
  spec.name = 'eqn'
8
11
  spec.version = Eqn::VERSION
@@ -14,17 +17,18 @@ Gem::Specification.new do |spec|
14
17
  spec.homepage = 'https://github.com/schneidmaster/eqn'
15
18
  spec.license = 'MIT'
16
19
 
17
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
20
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| config_files.include?(f) || f.match(%r{^(spec|gemfiles)/}) }
18
21
  spec.bindir = 'exe'
19
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
23
  spec.require_paths = ['lib']
21
24
 
22
- spec.add_dependency 'treetop', '~> 1.4.14'
25
+ spec.add_dependency 'treetop', '>= 1.2.0'
23
26
 
27
+ spec.add_development_dependency 'appraisal', '~> 2.1.0'
24
28
  spec.add_development_dependency 'bundler', '~> 1.8'
25
29
  spec.add_development_dependency 'codeclimate-test-reporter', '~> 0.4.7'
26
30
  spec.add_development_dependency 'rake', '~> 10.0'
27
- spec.add_development_dependency 'rubocop', '~> 0.31'
31
+ spec.add_development_dependency 'rubocop', '~> 0.42'
28
32
  spec.add_development_dependency 'rspec', '~> 3.2.0'
29
33
  spec.add_development_dependency 'simplecov', '~> 0.10.0'
30
34
  end
@@ -25,6 +25,10 @@ module Eqn
25
25
  end
26
26
  end
27
27
 
28
+ def respond_to_missing?(method)
29
+ %i(calculate calc valid?).include?(method) || method.to_s.match(/^[A-Za-z]+=$/) || (var = method.to_s.match(/^[A-Za-z]+$/).to_s.intern) && @vars.key?(var)
30
+ end
31
+
28
32
  class << self
29
33
  def calculate(data, vars = {})
30
34
  @@vars = vars
@@ -1,3 +1,3 @@
1
1
  module Eqn
2
- VERSION = '1.4.2'.freeze
2
+ VERSION = '1.5.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,29 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eqn
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zach Schneider
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-01 00:00:00.000000000 Z
11
+ date: 2017-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: treetop
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.4.14
19
+ version: 1.2.0
20
20
  type: :runtime
21
21
  prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.2.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: appraisal
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 2.1.0
34
+ type: :development
35
+ prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
38
  - - "~>"
25
39
  - !ruby/object:Gem::Version
26
- version: 1.4.14
40
+ version: 2.1.0
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -72,14 +86,14 @@ dependencies:
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '0.31'
89
+ version: '0.42'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '0.31'
96
+ version: '0.42'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rspec
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -117,9 +131,6 @@ extensions: []
117
131
  extra_rdoc_files: []
118
132
  files:
119
133
  - ".gitignore"
120
- - ".rspec"
121
- - ".rubocop.yml"
122
- - ".ruby-version"
123
134
  - Gemfile
124
135
  - LICENSE.txt
125
136
  - README.md
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format documentation
2
- --color
3
- --require spec_helper
@@ -1,21 +0,0 @@
1
- AllCops:
2
- Exclude:
3
- - db/**/*
4
- - vendor/**/*
5
-
6
- AbcSize:
7
- Enabled: False
8
- BlockNesting:
9
- Max: 4
10
- ClassLength:
11
- Enabled: False
12
- ClassVars:
13
- Enabled: False
14
- CyclomaticComplexity:
15
- Enabled: False
16
- Documentation:
17
- Enabled: false
18
- LineLength:
19
- Max: 175
20
- MethodLength:
21
- Enabled: false
@@ -1 +0,0 @@
1
- 2.3.0