rpl 0.7.0 → 0.7.1

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: 2cde98587c0d2ec81f1a6a6d9918b8f7b3ffa40c26959a58d97e7f6e6aef6ef3
4
- data.tar.gz: a8aef5c02a2956265a862b3a2530cd972639c60055387adb2dd74c3785a71dc5
3
+ metadata.gz: ff0848386c5c242db5ffa51c193b38bbe23ab804b86fffd98614b348f16ee9a1
4
+ data.tar.gz: bbec29eeac4eec84b794163577a90356999fe85bcff33a21e5865b219e3a9275
5
5
  SHA512:
6
- metadata.gz: 4fc702e52d8c6d8089bb45cc251964056be1758aea579f3a798afcf404468a7ac754de90f2bb5eacc67c5d1f0489c65b3eb6ca0b3d38c3c0f0f8be54961ad44f
7
- data.tar.gz: 83346cce2d900ca261932ceed751e268abc4cab1c5d37da2b198709a1823647d8fefd375f55adbc67b92ee2b3ed3d7c4e28c4fde30c9b8e1f213f275bfdffb7f
6
+ metadata.gz: e268a26bfe5f2b181158e90f8d41ea05248cbf84d493396c94caca595b542f3e6bb56e0d9fd550484fd6b9cd2887d7108e8afb0e6b7aaf40af4fdc8381078ed0
7
+ data.tar.gz: ac11e2c62ed98124a409f20bca9a9ffb0b463e3fa2a0a4295f3da25f97197c0dc5fe8e116f029951bc9706a2d0adbd4843608a8fe3c4baa43aa0538718b4069f
@@ -18,7 +18,7 @@ class Interpreter
18
18
  attr_accessor :precision
19
19
 
20
20
  def initialize( stack = [], dictionary = Rpl::Lang::Dictionary.new )
21
- @version = 0.7
21
+ @version = 0.71
22
22
 
23
23
  @dictionary = dictionary
24
24
  @stack = stack
@@ -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
- "0#{@base}_"
78
+ "#{@base}b"
78
79
  end
79
80
 
80
- if @value.infinite?
81
- suffix = @value.infinite?.positive? ? '∞' : '-∞'
82
- elsif @value.nan?
83
- suffix = '<NaN>'
84
- else
85
- suffix = if @value.to_i == @value
86
- @value.to_i
87
- else
88
- @value.to_s('F')
89
- end
90
- suffix = @value.to_s( @base ) unless @base == 10
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rpl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gwenhael Le Moine