parsecs 0.2.18 → 0.2.19

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
  SHA256:
3
- metadata.gz: d850257e0e5d9d26760ea04e158f9f08e96f1440b8495b0f1dc81973e4b68f23
4
- data.tar.gz: 270303f76489572601d29a3cee954bd7d4c00908bf0bb5eb6cd05ab6f6f3fe4e
3
+ metadata.gz: 2e7b3b272aa00c84d85c8ed2e54564840f6cda8d34865125a7e2b47eb2313946
4
+ data.tar.gz: 9a0eca31231d8dbcd6d5006e0e0c3e1de8d008e4cf5d6891a50af7fd25924c01
5
5
  SHA512:
6
- metadata.gz: 722c0c885e316e152350f47461bd1fae9e4c3dae0ded6f4bb0347c277ebf741cdec076d06492cb004ebf3b47d628eda31ace66dc041710fa7e2c388a6b39b115
7
- data.tar.gz: be27c26f0f36f5c7567fb38170bbf9ba386d0ee7b4af7577d1d3bc16e8f96d120aeb0b265434963ec6da6a3f3142a2f524115911eb2f10f977d770a792b391ac
6
+ metadata.gz: 5e9a252ffde2b57982a3bd68491d144514af414ff7bc5235002b914ecae0a11eff42a95db1acc22b5acb4e81165d6cf80f5f04f1379733f221ae4955c54a5327
7
+ data.tar.gz: b1709ff79e5870d03c1579ec717d5ef9c932838fecbee26cb3e5c132b168e606a35c8a2cd6302ff6aef38062c3708a59abf605a13b3f305bc4ae890d962584f1
@@ -1,5 +1,4 @@
1
1
  /* ext/libnativemath.cpp */
2
- #include <string>
3
2
  #include <iostream>
4
3
  #include <cmath>
5
4
  #include "mpParser.h"
@@ -34,21 +33,16 @@ Value Calc(string input) {
34
33
  return ans;
35
34
  }
36
35
 
37
- string native_direct_eval(string input) {
36
+ string_type native_direct_eval(string_type input) {
38
37
  Value ans = Calc(input);
39
38
  return ans.AsString();
40
39
  }
41
40
 
42
- string native_eval(string input) {
41
+ int native_eval(string input, char *value, char *value_type) {
43
42
  Value ans = Calc(input);
44
- stringstream_type ss;
45
43
 
46
- // Converting to json-like string
47
- ss << _T("{");
48
- ss << _T("\"value\": \"") << ans.AsString() << _T("\"");
49
- ss << _T(", ");
50
- ss << _T("\"type\": \"") << ans.GetType() << _T("\"");
51
- ss << _T("}");
44
+ value_type[0] = ans.GetType();
52
45
 
53
- return ss.str();
46
+ strcpy(value, ans.AsString().c_str());
47
+ return 0;
54
48
  }
@@ -1,3 +1,3 @@
1
1
  /* ext/libnativemath.h */
2
2
  std::string native_direct_eval(std::string input);
3
- std::string native_eval(std::string input);
3
+ int native_eval(std::string input, char *value, char *value_type);
@@ -6,4 +6,28 @@
6
6
  %}
7
7
 
8
8
  extern std::string native_direct_eval(std::string input);
9
- extern std::string native_eval(std::string input);
9
+
10
+ %typemap(in, numinputs=0) (char *value, char *value_type) {
11
+ char a[1000];
12
+ char b;
13
+ $1 = a;
14
+ $2 = &b;
15
+ };
16
+ %typemap(argout) (char *value, char *value_type) {
17
+ if(result == 0) {
18
+ $result = rb_hash_new();
19
+ rb_hash_aset($result, rb_str_new2("value"), rb_str_new2($1));
20
+ switch (*$2) {
21
+ case 'i': rb_hash_aset($result, rb_str_new2("type"), rb_str_new2("int")); break;
22
+ case 'f': rb_hash_aset($result, rb_str_new2("type"), rb_str_new2("float")); break;
23
+ case 's': rb_hash_aset($result, rb_str_new2("type"), rb_str_new2("string")); break;
24
+ case 'b': rb_hash_aset($result, rb_str_new2("type"), rb_str_new2("boolean")); break;
25
+ case 'c': rb_hash_aset($result, rb_str_new2("type"), rb_str_new2("complex")); break;
26
+ case 'm': rb_hash_aset($result, rb_str_new2("type"), rb_str_new2("matrix")); break;
27
+ }
28
+ } else {
29
+ $result = Qfalse;
30
+ }
31
+ }
32
+
33
+ extern int native_eval(std::string input, char *value, char *value_type);
@@ -1,29 +1,28 @@
1
1
  require 'string_to_boolean_refinements'
2
2
  require 'libnativemath'
3
- require 'json'
4
3
 
5
4
  module Parsec
6
5
  # This is the main class responsible to evaluate the equations
7
6
  class Parsec
8
7
  using StringToBooleanRefinements
9
8
 
10
- VERSION = '0.2.18'.freeze
9
+ VERSION = '0.2.19'.freeze
11
10
 
12
11
  # evaluates the equation
13
12
  def self.eval_equation(equation)
14
13
  remove_spaces(equation)
15
14
 
16
- convert(JSON.parse(Libnativemath.native_eval(equation)))
15
+ convert(Libnativemath.native_eval(equation))
17
16
  end
18
17
 
19
18
  # returns true or raise an error
20
19
  def self.validate_syntax(equation)
21
- validate(JSON.parse(Libnativemath.native_eval(equation)), true)
20
+ validate(Libnativemath.native_eval(equation), true)
22
21
  end
23
22
 
24
23
  # returns true or an error string
25
24
  def self.verify_syntax(equation)
26
- validate(JSON.parse(Libnativemath.native_eval(equation)), false)
25
+ validate(Libnativemath.native_eval(equation), false)
27
26
  end
28
27
 
29
28
  private_class_method
@@ -41,12 +40,11 @@ module Parsec
41
40
  end
42
41
 
43
42
  case ans['type']
44
- when 'i' then return ans['value'].to_i
45
- when 'f' then return ans['value'].to_f
46
- when 'b' then return ans['value'].to_bool
47
- when 's' then return error_check(ans['value'])
48
- when 'c' then return 'complex number' # Maybe future implementation
49
- when 'm' then return 'matrix value' # Maybe future implementation
43
+ when 'int' then return ans['value'].to_i
44
+ when 'float' then return ans['value'].to_f
45
+ when 'boolean' then return ans['value'].to_bool
46
+ when 'string' then return error_check(ans['value'])
47
+ when 'c' then return 'complex number'
50
48
  end
51
49
  end
52
50
 
@@ -56,7 +54,7 @@ module Parsec
56
54
  end
57
55
 
58
56
  def self.validate(ans, raise_error)
59
- if (ans['type'] == 's') && ans['value'].include?('Error: ')
57
+ if (ans['type'] == 'string') && ans['value'].include?('Error: ')
60
58
  raise SyntaxError, ans['value'].sub('Error: ', '') if raise_error
61
59
  return ans['value'].sub('Error: ', '')
62
60
  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.18
4
+ version: 0.2.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nilton Vasques
@@ -82,7 +82,7 @@ requirements:
82
82
  - swig
83
83
  - cmake
84
84
  rubyforge_project:
85
- rubygems_version: 2.7.3
85
+ rubygems_version: 2.7.6
86
86
  signing_key:
87
87
  specification_version: 4
88
88
  summary: A gem to evaluate equations using muparserx C++ library