si 0.1.4 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: e3d6c6cb24a8ed364c310019d4ad39af6f6bdc0c9ffeba7915854ef72a3de125
4
+ data.tar.gz: e67d999cd37a2f6d2cfb0c05994bb43d447e18bbc0e3aa9f0ee953f026772007
5
+ SHA512:
6
+ metadata.gz: c379c44a26d41a4d9e80448f6e9ced1b24723b9bb7b9300b2a71ec244c97c7fe98ea428e607c395d5940ea7b5a70f6b96a81cc0e0f770aa743c46b7c78fbe94a
7
+ data.tar.gz: d447b4d285805e5947d2f03caec9764f6547aebaa1b7feeacbe2f416a954e32f30559a9d8a55867a9aa3559c6f0ff318561ec742ff6d24e60f6054d5d483f177
@@ -0,0 +1,33 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+ pull_request:
7
+ branches: [master]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+
13
+ strategy:
14
+ matrix:
15
+ ruby: ['2.6', '2.7', '3.0', '3.1', '3.2']
16
+
17
+ steps:
18
+ - uses: actions/checkout@v3
19
+
20
+ - name: Set up Ruby
21
+ uses: ruby/setup-ruby@v1
22
+ with:
23
+ ruby-version: ${{ matrix.ruby }}
24
+ bundler-cache: true
25
+
26
+ - name: Update the RubyGems system software
27
+ run: gem update --system
28
+
29
+ - name: Update Bundler
30
+ run: bundle update --bundler
31
+
32
+ - name: Install dependencies
33
+ run: bundle install
data/.gitignore CHANGED
@@ -3,7 +3,6 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
- Gemfile.lock
7
6
  InstalledFiles
8
7
  _yardoc
9
8
  coverage
data/Gemfile CHANGED
@@ -2,3 +2,6 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in si.gemspec
4
4
  gemspec
5
+
6
+ gem 'test-unit', '~> 3.6', '>= 3.6.1'
7
+ gem 'rake', '~> 13.0', '>= 13.0.6'
data/Gemfile.lock ADDED
@@ -0,0 +1,23 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ si (0.1.4)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ power_assert (2.0.3)
10
+ rake (13.0.6)
11
+ test-unit (3.6.1)
12
+ power_assert
13
+
14
+ PLATFORMS
15
+ ruby
16
+
17
+ DEPENDENCIES
18
+ rake (~> 13.0, >= 13.0.6)
19
+ si!
20
+ test-unit (~> 3.6, >= 3.6.1)
21
+
22
+ BUNDLED WITH
23
+ 2.4.10
data/README.md CHANGED
@@ -45,10 +45,12 @@ require 'si'
45
45
 
46
46
  #### Options
47
47
 
48
- - `:length` Number of digits. (default: 3)
49
- - `:base` For [binary prefix](http://en.wikipedia.org/wiki/Binary_prefix), set this to 1024 instead of default 1000.
50
- - `:min_exp` Default: -8, down to <strong>y</strong>octo
51
- - `:max_exp` Default: 8, up to <strong>Y</strong>otta
48
+ | Option | Default | Description |
49
+ |------------|---------|-----------------------------------------------------------------------------------------------------------|
50
+ | `:length` | 3 | Number of digits |
51
+ | `:base` | 1000 | For [binary prefix](http://en.wikipedia.org/wiki/Binary_prefix), set this to 1024 instead of default 1000 |
52
+ | `:min_exp` | -8 | Down to <strong>y</strong>octo |
53
+ | `:max_exp` | 8 | Up to <strong>Y</strong>otta |
52
54
 
53
55
  ```ruby
54
56
  9876543210000.si(:length => 5) # '9.8765T'
data/lib/si/module.rb CHANGED
@@ -1,13 +1,13 @@
1
1
  module SI
2
2
  class << self
3
3
  def convert num, options = {}
4
- options = { :length => options } if options.is_a?(Fixnum)
4
+ options = { :length => options } if options.is_a?(Numeric)
5
5
  options = DEFAULT.merge(options)
6
6
  length,
7
7
  min_exp,
8
8
  max_exp = options.values_at(:length, :min_exp, :max_exp)
9
9
  raise ArgumentError.new("Invalid length") if length < 2
10
- return num.is_a?(Fixnum) ? '0' : "0.#{'0' * (length - 1)}" if num == 0
10
+ return num.is_a?(Float) ? "0.#{'0' * (length - 1)}" : '0' if num == 0
11
11
 
12
12
  base = options[:base].to_f
13
13
  minus = num < 0 ? '-' : ''
@@ -18,7 +18,7 @@ module SI
18
18
  if nump >= denom || exp == min_exp
19
19
  val = nump / denom
20
20
  val = SI.round val, [length - val.to_i.to_s.length, 0].max
21
- val = val.to_i if exp == 0 && num.is_a?(Fixnum)
21
+ val = val.to_i if exp == 0 && !num.is_a?(Float)
22
22
  val = val.to_s.ljust(length + 1, '0') if val.is_a?(Float)
23
23
 
24
24
  return "#{minus}#{val}#{PREFIXES[exp]}"
data/lib/si/patch.rb CHANGED
@@ -1,15 +1,13 @@
1
- class Float
2
- include SI
3
- end
1
+ original_verbosity = $VERBOSE
4
2
 
5
- class Fixnum
6
- include SI
7
- end
3
+ $VERBOSE = nil
8
4
 
9
- class Bignum
10
- include SI
11
- end
5
+ ['Float', 'Fixnum', 'Bignum', 'Rational', 'Integer'].each do |const|
6
+ next unless Object.const_defined?(const)
12
7
 
13
- class Rational
14
- include SI
8
+ Object.const_get(const).class_eval do
9
+ include SI
10
+ end
15
11
  end
12
+
13
+ $VERBOSE = original_verbosity
data/lib/si/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module SI
2
- VERSION = "0.1.4"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: si
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
5
- prerelease:
4
+ version: 0.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Junegunn Choi
9
- autorequire:
8
+ autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-12-03 00:00:00.000000000 Z
11
+ date: 2023-08-26 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description: Formats a number with SI prefix
15
14
  email:
@@ -18,8 +17,10 @@ executables: []
18
17
  extensions: []
19
18
  extra_rdoc_files: []
20
19
  files:
21
- - .gitignore
20
+ - ".github/workflows/ruby.yml"
21
+ - ".gitignore"
22
22
  - Gemfile
23
+ - Gemfile.lock
23
24
  - LICENSE
24
25
  - README.md
25
26
  - Rakefile
@@ -33,28 +34,25 @@ files:
33
34
  - test/test_si.rb
34
35
  homepage: https://github.com/junegunn/si
35
36
  licenses: []
36
- post_install_message:
37
+ metadata: {}
38
+ post_install_message:
37
39
  rdoc_options: []
38
40
  require_paths:
39
41
  - lib
40
42
  required_ruby_version: !ruby/object:Gem::Requirement
41
- none: false
42
43
  requirements:
43
- - - ! '>='
44
+ - - ">="
44
45
  - !ruby/object:Gem::Version
45
46
  version: '0'
46
47
  required_rubygems_version: !ruby/object:Gem::Requirement
47
- none: false
48
48
  requirements:
49
- - - ! '>='
49
+ - - ">="
50
50
  - !ruby/object:Gem::Version
51
51
  version: '0'
52
52
  requirements: []
53
- rubyforge_project:
54
- rubygems_version: 1.8.24
55
- signing_key:
56
- specification_version: 3
53
+ rubygems_version: 3.4.6
54
+ signing_key:
55
+ specification_version: 4
57
56
  summary: Formats a number with SI prefix (metric prefix)
58
57
  test_files:
59
58
  - test/test_si.rb
60
- has_rdoc: