parsecs 0.2.18 → 0.2.19

Sign up to get free protection for your applications and to get access to all the features.
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