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 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