store_as_int 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/store_as_int/base.rb +30 -5
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: acad5594e8ba1902641c9135c0a778f9d83b21035c113bf001dea7b1074127ab
4
- data.tar.gz: 9a2a071db0e6a75399a40a41ab3db7a873f0a9d2036d23575a35f01262e556eb
3
+ metadata.gz: 22dbf2bdae8fc03aa6f324698da139fef527f583989ddf7665a0c93245858c55
4
+ data.tar.gz: c8d9c7c5d64d21590f690838ad9d3b136459a5268e7399c90a50e101366cd4ec
5
5
  SHA512:
6
- metadata.gz: 1dd70bf6cbf4d8c7d09b68ccef64c694b29a680e4eb15e5ccf125893b7ac9fb9a309e814dc8b34d2bc8608bfe039223758653d936c126798361349d5555ce9e5
7
- data.tar.gz: e13c91cb3a4efbb70e4b8fcc8cb661e32aa146a295465153bb580186e0c4d0fa5434f005c81f7498c9c09ecb7b3eaa9a4174b3036a898984443ab27ded034de7
6
+ metadata.gz: 6cf32d9dfcad73cbe5b9c17306dd0c3ad25f7474d240051618d7fbbb1fb683accc301411d50113eb98505c11f937341a710b9fce6cbb73f83149ad9ca7893753
7
+ data.tar.gz: 708f09372d3adcd06cc50d15b86e47529b5cca07481c7173a9d3e0b9ee4dc15decada51ffee7a08f074f33d97cc3133ee2d2efb441e0cb78e983ce7a7c334b56
@@ -34,7 +34,7 @@ module StoreAsInt
34
34
  end
35
35
 
36
36
  def self.matcher
37
- /^(\-|\+)?(?:#{sym.to_s.size > 0 ? Regexp.quote(sym.to_s) : '[^0-9]'}+)?([0-9]+)(\.[0-9]+)?$/
37
+ /^(\-|\+)?(?:#{sym.to_s.size > 0 ? Regexp.quote(sym.to_s) : '[^0-9]'}*)([0-9]+)(\.[0-9]+)?$/
38
38
  end
39
39
 
40
40
  def self.accuracy
@@ -71,7 +71,10 @@ module StoreAsInt
71
71
  end
72
72
 
73
73
  def kind_of?(klass)
74
- value.kind_of?(klass) || self.class == klass || super(klass)
74
+ value.kind_of?(klass) ||
75
+ self.class == klass ||
76
+ StoreAsInt == klass ||
77
+ super(klass)
75
78
  end
76
79
 
77
80
  def instance_of?(klass)
@@ -115,8 +118,6 @@ module StoreAsInt
115
118
  gsub(/(,|\s)/, '').
116
119
  match(self.class.matcher)[1..-1].join("")
117
120
  rescue NoMethodError
118
- puts $!.message
119
- puts $!.backtrace
120
121
  return self.num = 0
121
122
  end
122
123
  end
@@ -130,7 +131,7 @@ module StoreAsInt
130
131
  end
131
132
 
132
133
  def as_json(*args)
133
- self.num.as_json(*args)
134
+ to_h
134
135
  end
135
136
 
136
137
  def base
@@ -186,10 +187,34 @@ module StoreAsInt
186
187
  to_i/base_float
187
188
  end
188
189
 
190
+ def to_h
191
+ {
192
+ accuracy: accuracy,
193
+ base: base,
194
+ decimal: to_d,
195
+ decimals: decimals,
196
+ float: to_f,
197
+ str: to_s,
198
+ str_format: str_format,
199
+ str_pretty: to_s(true),
200
+ sym: sym,
201
+ value: value,
202
+ }
203
+ end
204
+
189
205
  def to_i
190
206
  self.num.to_i
191
207
  end
192
208
 
209
+ def to_json(*args)
210
+ begin
211
+ self.to_h.to_json
212
+ rescue NoMethodError
213
+ require 'json'
214
+ JSON.unparse(to_h)
215
+ end
216
+ end
217
+
193
218
  def to_s(w_sym = false)
194
219
  begin
195
220
  str_format.call(self, w_sym)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: store_as_int
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sampson Crowley
@@ -40,7 +40,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
40
40
  version: '0'
41
41
  requirements: []
42
42
  rubyforge_project:
43
- rubygems_version: 2.7.7
43
+ rubygems_version: 2.7.6
44
44
  signing_key:
45
45
  specification_version: 4
46
46
  summary: Store values as integers for lossless calculations