rpl 0.7.0 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rpl/interpreter.rb +1 -1
- data/lib/rpl/types/numeric.rb +18 -18
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ff0848386c5c242db5ffa51c193b38bbe23ab804b86fffd98614b348f16ee9a1
|
4
|
+
data.tar.gz: bbec29eeac4eec84b794163577a90356999fe85bcff33a21e5865b219e3a9275
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e268a26bfe5f2b181158e90f8d41ea05248cbf84d493396c94caca595b542f3e6bb56e0d9fd550484fd6b9cd2887d7108e8afb0e6b7aaf40af4fdc8381078ed0
|
7
|
+
data.tar.gz: ac11e2c62ed98124a409f20bca9a9ffb0b463e3fa2a0a4295f3da25f97197c0dc5fe8e116f029951bc9706a2d0adbd4843608a8fe3c4baa43aa0538718b4069f
|
data/lib/rpl/interpreter.rb
CHANGED
data/lib/rpl/types/numeric.rb
CHANGED
@@ -38,26 +38,27 @@ module Types
|
|
38
38
|
@value = BigDecimal( value, @@precision )
|
39
39
|
when String
|
40
40
|
begin
|
41
|
-
@value = BigDecimal( value )
|
41
|
+
@value = BigDecimal( value, @@precision )
|
42
42
|
rescue ArgumentError
|
43
43
|
case value
|
44
44
|
when /^0x[0-9a-f]+$/
|
45
45
|
@base = 16
|
46
|
-
@value = /^0x(?<value>[0-9a-f]+)$/.match( value )['value'].to_i( @base )
|
46
|
+
@value = BigDecimal( /^0x(?<value>[0-9a-f]+)$/.match( value )['value'].to_i( @base ), @@precision )
|
47
47
|
when /^0o[0-7]+$/
|
48
48
|
@base = 8
|
49
|
-
@value = /^0o(?<value>[0-7]+)$/.match( value )['value'].to_i( @base )
|
49
|
+
@value = BigDecimal( /^0o(?<value>[0-7]+)$/.match( value )['value'].to_i( @base ), @@precision )
|
50
50
|
when /^0b[0-1]+$/
|
51
51
|
@base = 2
|
52
|
-
@value = /^0b(?<value>[0-1]+)$/.match( value )['value'].to_i( @base )
|
52
|
+
@value = BigDecimal( /^0b(?<value>[0-1]+)$/.match( value )['value'].to_i( @base ), @@precision )
|
53
53
|
when '∞'
|
54
54
|
@value = BigDecimal('+Infinity')
|
55
55
|
when '-∞'
|
56
56
|
@value = BigDecimal('-Infinity')
|
57
57
|
else
|
58
58
|
matches = /(?<base>[0-9]+)b(?<value>[0-9a-z]+)/.match( value )
|
59
|
+
|
59
60
|
@base = matches['base'].to_i
|
60
|
-
@value = matches['value'].to_i( @base )
|
61
|
+
@value = BigDecimal( matches['value'].to_i( @base ), @@precision )
|
61
62
|
end
|
62
63
|
end
|
63
64
|
end
|
@@ -74,21 +75,20 @@ module Types
|
|
74
75
|
when 16
|
75
76
|
'0x'
|
76
77
|
else
|
77
|
-
"
|
78
|
+
"#{@base}b"
|
78
79
|
end
|
79
80
|
|
80
|
-
if @value.infinite?
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
end
|
81
|
+
suffix = if @value.infinite?
|
82
|
+
@value.infinite?.positive? ? '∞' : '-∞'
|
83
|
+
elsif @value.nan?
|
84
|
+
'<NaN>'
|
85
|
+
elsif @base != 10
|
86
|
+
@value.to_i.to_s( @base )
|
87
|
+
elsif @value.integer?
|
88
|
+
@value.to_i
|
89
|
+
else
|
90
|
+
@value.to_s( 'F' )
|
91
|
+
end
|
92
92
|
|
93
93
|
"#{prefix}#{suffix}"
|
94
94
|
end
|