active_object 1.0.0 → 1.0.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
  SHA1:
3
- metadata.gz: e96a453245ef6274f0070ee0d457422545066a47
4
- data.tar.gz: 68e653784fb298f7aa5a01580b82ca50f3bbd702
3
+ metadata.gz: b8f47131a26b6c89bb04924a24a230950889b374
4
+ data.tar.gz: 7b59b34890364117fdabeecf0c05dcabad9d506f
5
5
  SHA512:
6
- metadata.gz: 85e2b171390a237569eac7564ae034a71c1d66f09eae85fefcbc82ec2487a0a605f55028216f500f9d501451996a7f050482c4fce65068716e91341a34653881
7
- data.tar.gz: 1a137f2100d5cc3fd5e4cf9d821864ec1fd081de1307248737fde159696be859e86be9f1fe227a8ee0337016fa081fa2ba7a7d606b1722d3eed3daeb06325805
6
+ metadata.gz: 3eb7ed5a3fd09b9cbc858b5c93081e32a04bd6a2bcbf439fb315dc9ded6cc536577b87bd2170b0317f0274b02386c7e7fb812ea03ddfe217e695bf30e3936c9c
7
+ data.tar.gz: 7c1233af1cf71e538cc5cb62d9120e785faf52a94013074adc22df8af1caf62c6b9eb172e486d6c392a464c7b187b9b9101bf977a48d7c6be3793c109ee99c50
data/README.md CHANGED
@@ -833,6 +833,21 @@ h.slice!(:a, :b) #=> { c: 3, d: 4 }
833
833
  80.to_byte(:megabyte, :gigabyte) #=> 0.078125 #GB
834
834
  ```
835
835
 
836
+ ####To Currency:####
837
+ `to_currency` converts a number to currency string.
838
+
839
+ **Options**
840
+ * precision: 2
841
+ * unit: "$"
842
+
843
+ ```ruby
844
+ 3.to_currency #=> "$3.00"
845
+ 3.1.to_currency #=> "$3.10"
846
+ 3.11.to_currency #=> "$3.11"
847
+ 3.11111.to_currency #=> "$3.11"
848
+ 3.to_currency(unit: "@") #=> "@3.00"
849
+ ```
850
+
836
851
  ####To Length:####
837
852
  `to_length` converts a length from one unit to another unit.
838
853
 
@@ -861,6 +876,21 @@ h.slice!(:a, :b) #=> { c: 3, d: 4 }
861
876
  3.5.to_nearest_value([3.0, 3.3, 3.6, 3.9]) #=> 3.6
862
877
  ```
863
878
 
879
+ ####To Percantage:####
880
+ `to_percentage` converts a number to percentage string.
881
+
882
+ **Options**
883
+ * precision: 2
884
+ * unit: "%"
885
+
886
+ ```ruby
887
+ 3.to_percentage #=> "3.00%"
888
+ 3.1.to_percentage #=> "3.10%"
889
+ 3.11.to_percentage #=> "3.11%"
890
+ 3.11111.to_percentage #=> "3.11%"
891
+ 3.to_percentage(unit: "@") #=> "3.00@"
892
+ ```
893
+
864
894
  ####To Temperature:####
865
895
  `to_temperature` converts a temperature from one unit to another unit.
866
896
 
@@ -5,7 +5,8 @@ class Hash
5
5
  valid_keys.flatten!
6
6
  each_key do |k|
7
7
  unless valid_keys.include?(k)
8
- raise ArgumentError, "Unknown key: #{k.inspect}. Valid keys are: #{valid_keys.map(&:inspect).join(', ')}"
8
+ raise ArgumentError,
9
+ "Unknown key: #{k.inspect}. Valid keys are: #{valid_keys.map(&:inspect).join(', ')}"
9
10
  end
10
11
  end
11
12
  end
@@ -363,6 +363,12 @@ class Numeric
363
363
  to_f * 1.send(from) / 1.send(to)
364
364
  end
365
365
 
366
+ def to_currency(options={})
367
+ unit = options.fetch(:unit, "$")
368
+
369
+ "#{unit}#{pad_precision(options.only(:precision))}"
370
+ end
371
+
366
372
  def to_length(from, to)
367
373
  valid_keys = [
368
374
  :meter, :meters,
@@ -455,6 +461,12 @@ class Numeric
455
461
  value
456
462
  end
457
463
 
464
+ def to_percentage(options={})
465
+ unit = options.fetch(:unit, "%")
466
+
467
+ "#{pad_precision(options.only(:precision))}#{unit}"
468
+ end
469
+
458
470
  def to_temperature(from, to)
459
471
  valid_keys = [:celsius, :fahrenheit, :kelvin]
460
472
 
@@ -1,3 +1,3 @@
1
1
  module ActiveObject
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
@@ -427,6 +427,32 @@ describe Numeric do
427
427
  end
428
428
  end
429
429
 
430
+ describe "#to_currency" do
431
+ it "to be $3.00" do
432
+ expect(3.to_currency).to eq("$3.00")
433
+ end
434
+
435
+ it "to be $3.10" do
436
+ expect(3.1.to_currency).to eq("$3.10")
437
+ end
438
+
439
+ it "to be $3.11" do
440
+ expect(3.11.to_currency).to eq("$3.11")
441
+ end
442
+
443
+ it "to be @3.11" do
444
+ expect(3.11.to_currency(unit: "@")).to eq("@3.11")
445
+ end
446
+
447
+ it "to be $3.00000" do
448
+ expect(3.to_currency(precision: 5)).to eq("$3.00000")
449
+ end
450
+
451
+ it "to be $3.11" do
452
+ expect(3.11111.to_currency).to eq("$3.11")
453
+ end
454
+ end
455
+
430
456
  describe "#to_length" do
431
457
  it "to be 1" do
432
458
  expect(1.to_length(:millimeter, :millimeter)).to eq(1)
@@ -513,6 +539,32 @@ describe Numeric do
513
539
  end
514
540
  end
515
541
 
542
+ describe "#to_percentage" do
543
+ it "to be 3.00%" do
544
+ expect(3.to_percentage).to eq("3.00%")
545
+ end
546
+
547
+ it "to be 3.10%" do
548
+ expect(3.1.to_percentage).to eq("3.10%")
549
+ end
550
+
551
+ it "to be 3.11%" do
552
+ expect(3.11.to_percentage).to eq("3.11%")
553
+ end
554
+
555
+ it "to be 3.11@" do
556
+ expect(3.11.to_percentage(unit: "@")).to eq("3.11@")
557
+ end
558
+
559
+ it "to be 3.00000%" do
560
+ expect(3.to_percentage(precision: 5)).to eq("3.00000%")
561
+ end
562
+
563
+ it "to be 3.11%" do
564
+ expect(3.11111.to_percentage).to eq("3.11%")
565
+ end
566
+ end
567
+
516
568
  describe "#to_temperature" do
517
569
  it "to be 212" do
518
570
  expect(100.to_temperature(:celsius, :fahrenheit)).to eq(212)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_object
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Gomez