eqn 1.3.1 → 1.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dcea04f191cf70d2f6248b5d46ed239e67993062
4
- data.tar.gz: 0cde20afa46cfcabd29a11240eeb47b082a93cb3
3
+ metadata.gz: 1719c42c8c6c2969cbc5bc1895317205b233a23b
4
+ data.tar.gz: c3917e3e216c4c5cb6738886d505bde0f2ab73b6
5
5
  SHA512:
6
- metadata.gz: b0d4e68fae317102d84ebfd8bbd920dbb60e04826764a7f9a7ca5c813d169f1a734a4e26f62878923c58932a521268ddcef52f176de060cb535ebf9442aaf6c9
7
- data.tar.gz: 3535a6c2ebaa09fb57f1c082e2e691b57d582755939df737853ba5d6dc90182b6b94d0345f59d246a314dbd0dec8be1f103d5129c8e0255305f6c08ef67403d5
6
+ metadata.gz: 7bc8f654be594c43376da76c350026ffc6be2078047b334aa8d5ab3fad3b04e5d86bab77f9a7d6d9a6ea7c895eeb8dd314173260d5982132a7cfd1d288a13de1
7
+ data.tar.gz: 28202b1fa04f0ee38140bf772699b68dd2643e8f3f8506fe38f693baf294ae82533219379b87c91b117003fd33bd76f7e5ffbd996e887dee9b0d28438f49a20a
data/.rubocop.yml CHANGED
@@ -3,6 +3,8 @@ AllCops:
3
3
  - db/**/*
4
4
  - vendor/**/*
5
5
 
6
+ AbcSize:
7
+ Enabled: False
6
8
  BlockNesting:
7
9
  Max: 4
8
10
  ClassLength:
data/README.md CHANGED
@@ -70,21 +70,21 @@ For example, `if(5 > 3, 1, 2)` would evaluate to `1`.
70
70
 
71
71
  **round**
72
72
 
73
- Syntax: `round(number)`
73
+ Syntax: `round(number, [decimals])`
74
74
 
75
- Rounds the number up if the decimal is greater than 0.5 and down otherwise (i.e. "normal" rounding).
75
+ Rounds the number up if the decimal is greater than 0.5 and down otherwise (i.e. "normal" rounding). Optionally, pass a number of decimal places to round to as a second parameter (the default is 0).
76
76
 
77
77
  **roundup**
78
78
 
79
- Syntax: `roundup(number)`
79
+ Syntax: `roundup(number, [decimals])`
80
80
 
81
- Rounds the number up to the next whole integer (i.e. ceiling function)
81
+ Rounds the number up (i.e. ceiling function). Optionally, pass a number of decimal places to round to as a second parameter (the default is 0).
82
82
 
83
83
  **rounddown**
84
84
 
85
- Syntax: `rounddown(number)`
85
+ Syntax: `rounddown(number, [decimals])`
86
86
 
87
- Rounds the number down to the next whole integer (i.e. floor function)
87
+ Rounds the number down (i.e. floor function). Optionally, pass a number of decimal places to round to as a second parameter (the default is 0).
88
88
 
89
89
  ## Development
90
90
 
@@ -10,7 +10,6 @@ module Eqn
10
10
  elements.empty?
11
11
  end
12
12
 
13
- # rubocop:disable Metrics/AbcSize
14
13
  def value
15
14
  if elements.count == 1
16
15
  elements.shift.value
@@ -34,7 +33,6 @@ module Eqn
34
33
  end
35
34
  end
36
35
  end
37
- # rubocop:enable Metrics/AbcSize
38
36
 
39
37
  class ExprGroup < Node
40
38
  def left_associative?
data/lib/eqn/function.rb CHANGED
@@ -16,7 +16,11 @@ module Eqn
16
16
  def value
17
17
  value = elements.shift.value
18
18
  fail ZeroDivisionError if value.is_a?(Float) && (value.abs == Float::INFINITY || value.nan?)
19
- value.round
19
+ if elements.empty?
20
+ value.round
21
+ else
22
+ value.round(elements.shift.value)
23
+ end
20
24
  end
21
25
  end
22
26
 
@@ -24,7 +28,12 @@ module Eqn
24
28
  def value
25
29
  value = elements.shift.value
26
30
  fail ZeroDivisionError if value.is_a?(Float) && (value.abs == Float::INFINITY || value.nan?)
27
- value.ceil
31
+ if elements.empty?
32
+ value.ceil
33
+ else
34
+ decimals = elements.shift.value
35
+ (value * 10**decimals).ceil.to_f / 10**decimals
36
+ end
28
37
  end
29
38
  end
30
39
 
@@ -32,7 +41,12 @@ module Eqn
32
41
  def value
33
42
  value = elements.shift.value
34
43
  fail ZeroDivisionError if value.is_a?(Float) && (value.abs == Float::INFINITY || value.nan?)
35
- value.floor
44
+ if elements.empty?
45
+ value.floor
46
+ else
47
+ decimals = elements.shift.value
48
+ (value * 10**decimals).floor.to_f / 10**decimals
49
+ end
36
50
  end
37
51
  end
38
52
  end
data/lib/eqn/terminal.rb CHANGED
@@ -3,7 +3,6 @@ module Eqn
3
3
  class Node < Treetop::Runtime::SyntaxNode; end
4
4
 
5
5
  class Variable < Node
6
- # rubocop:disable Metrics/AbcSize
7
6
  def value
8
7
  unless Eqn::Calculator.class_variable_get(:@@vars).key? text_value.intern
9
8
  fail NoVariableValueError, "No value given for: #{text_value}"
@@ -13,7 +12,6 @@ module Eqn
13
12
  end
14
13
  Eqn::Calculator.class_variable_get(:@@vars)[text_value.intern]
15
14
  end
16
- # rubocop:enable Metrics/AbcSize
17
15
  end
18
16
 
19
17
  class Digits < Node
data/lib/eqn/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Eqn
2
- VERSION = '1.3.1'
2
+ VERSION = '1.3.2'
3
3
  end
data/lib/eqn.treetop CHANGED
@@ -44,15 +44,19 @@ grammar Eqn
44
44
  end
45
45
 
46
46
  rule round_func
47
- 'round' space? group <Eqn::Function::Round>
47
+ 'round' space? '(' expression round_group? ')' <Eqn::Function::Round>
48
48
  end
49
49
 
50
50
  rule roundup_func
51
- 'roundup' space? group <Eqn::Function::RoundUp>
51
+ 'roundup' space? '(' expression round_group? ')' <Eqn::Function::RoundUp>
52
52
  end
53
53
 
54
54
  rule rounddown_func
55
- 'rounddown' space? group <Eqn::Function::RoundDown>
55
+ 'rounddown' space? '(' expression round_group? ')' <Eqn::Function::RoundDown>
56
+ end
57
+
58
+ rule round_group
59
+ ',' expression <Eqn::Expression>
56
60
  end
57
61
 
58
62
  rule group
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eqn
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zach Schneider
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-10-19 00:00:00.000000000 Z
11
+ date: 2015-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: treetop