parsecs 0.2.16 → 0.2.17
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 +4 -4
- data/lib/parsec.rb +15 -7
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4695aaa62f4e133872d9221c795666205cc147d91d1c05dcc60b40a938ed540
|
4
|
+
data.tar.gz: c86c2a15be806e8f5a3d6952b94426293214fc325b92a37e556181f48169fdaf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9a0cb09771ea71a24f2d5397935025bc88bbae6757bc6b6c24aeb18646ebea600afacace90a10b32d1dee4dae371ed49b6fd0499456f9fc4009483bfce19f65
|
7
|
+
data.tar.gz: 70b6e172a0e102e4a7678a2e9f3a1860e80cbe06018e66060213b1d47df222527a2daa0bb1d6aab3c22318daf6a2ff42196650513b7b1e267decb53575b32233
|
data/lib/parsec.rb
CHANGED
@@ -6,16 +6,23 @@ module Parsec
|
|
6
6
|
class Parsec
|
7
7
|
using StringToBooleanRefinements
|
8
8
|
|
9
|
-
VERSION = '0.2.
|
9
|
+
VERSION = '0.2.17'.freeze
|
10
10
|
|
11
|
+
# evaluates the equation
|
11
12
|
def self.eval_equation(equation)
|
12
13
|
remove_spaces(equation)
|
13
14
|
|
14
15
|
convert(Libnativemath.native_eval(equation))
|
15
16
|
end
|
16
17
|
|
18
|
+
# returns true or raise an error
|
17
19
|
def self.validate_syntax(equation)
|
18
|
-
validate(Libnativemath.native_eval(equation))
|
20
|
+
validate(Libnativemath.native_eval(equation), true)
|
21
|
+
end
|
22
|
+
|
23
|
+
# returns true or an error string
|
24
|
+
def self.verify_syntax(equation)
|
25
|
+
validate(Libnativemath.native_eval(equation), false)
|
19
26
|
end
|
20
27
|
|
21
28
|
private_class_method
|
@@ -36,19 +43,20 @@ module Parsec
|
|
36
43
|
when 'int' then return ans['value'].to_i
|
37
44
|
when 'float' then return ans['value'].to_f
|
38
45
|
when 'boolean' then return ans['value'].to_bool
|
39
|
-
when 'string' then return
|
46
|
+
when 'string' then return syntax_check(ans['value'])
|
40
47
|
when 'c' then return 'complex number'
|
41
48
|
end
|
42
49
|
end
|
43
50
|
|
44
|
-
def self.
|
45
|
-
raise
|
51
|
+
def self.syntax_check(output)
|
52
|
+
raise SyntaxError, output.sub('Error: ', '') if output.include?('Error')
|
46
53
|
output.delete('\"')
|
47
54
|
end
|
48
55
|
|
49
|
-
def self.validate(ans)
|
56
|
+
def self.validate(ans, raise_error)
|
50
57
|
if (ans['type'] == 'string') && ans['value'].include?('Error: ')
|
51
|
-
raise
|
58
|
+
raise SyntaxError, ans['value'].sub('Error: ', '') if raise_error
|
59
|
+
return ans['value'].sub('Error: ', '')
|
52
60
|
end
|
53
61
|
true
|
54
62
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parsecs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nilton Vasques
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2018-
|
13
|
+
date: 2018-06-02 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: minitest
|