inox_converter 0.1.0 → 1.0.0

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
  SHA1:
3
- metadata.gz: 16c52be56598052d91b9bcb1b3730e2f7ac4a5f6
4
- data.tar.gz: 3a76a8d1b4a74fe6a5093f8d22da03921631de5e
3
+ metadata.gz: 273f9f20df4e38caf13c755db9e3f094f26fc3f1
4
+ data.tar.gz: 110bd04f470dcd16ca8482d5831a2cdbb94438ac
5
5
  SHA512:
6
- metadata.gz: 4968bcd70923e21f9fb5191ac676fc9959dcd45ee4e5dc110621751350d18495660e1e6990fc94226d525ec429f81c2eb6668fb420e957f92e7d9bceba3b6dc0
7
- data.tar.gz: f0ac1b1744afdac693e83386e171d892d54b25811eee43e65a8ca2683a9db05fae1d98d6ae64d7b1738e81a4b1176fc9edae1896c438f0165729c32986e90d44
6
+ metadata.gz: daa289f93d854c4e79fefcf369d32a90bb55743b1bdb786352a0d21996a6c442ea343fa5f58846bbf90f5c32eca7679935c2a8b64be42ba30105fbedc4578c2a
7
+ data.tar.gz: 8f111944841c32c2f6ef6108a0244fec4583634da5806a1494a70474956812015700997c9f6141a684ab412a091a86796a6b4d2b033e252234bde38e7b7a1c27
data/README.md CHANGED
@@ -1,8 +1,14 @@
1
1
  # InoxConverter
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/inox_converter`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ [![Build Status](https://travis-ci.org/vinisilvacar/InoxConverter.svg?branch=master)](https://travis-ci.org/vinisilvacar/InoxConverter)
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
5
+ [![Gem Version](https://badge.fury.io/rb/inox_converter.svg)](https://badge.fury.io/rb/inox_converter)
6
+
7
+ Hi! Welcome to Inox Converter official page!
8
+ Our gem is created to work like a 'swiss army knife' for Ruby developers, bringing a easy and reliable way to convert some formats and units that commonly appear during the developing process.
9
+ You can: convert area, currency, length, mass, volume and format time and date.
10
+ You want to use one unit that doesn't exist in our gem? You can add that unit too!
11
+ And more... As a framework you can extend our gem and create your own convertions type.
6
12
 
7
13
  ## Installation
8
14
 
@@ -22,7 +28,55 @@ Or install it yourself as:
22
28
 
23
29
  ## Usage
24
30
 
25
- TODO: Write usage instructions here
31
+ To make a conversion:
32
+
33
+ <i>
34
+ - valueToConvert: the value you want to convert
35
+ - firstUnit: actual unit -> string
36
+ - secondUnit: the unit you want to convert to -> string
37
+ </i>
38
+
39
+ - InoxConverter.convertCurrency(valueToConvert, firstUnit, secondUnit)
40
+ - InoxConverter.convertLenght(valueToConvert, firstUnit, secondUnit)
41
+ - InoxConverter.convertVolume(valueToConvert, firstUnit, secondUnit)
42
+ - InoxConverter.convertArea(valueToConvert, firstUnit, secondUnit)
43
+ - InoxConverter.convertMass(valueToConvert, firstUnit, secondUnit)
44
+ - InoxConverter.convertTime(valueToConvert, firstUnit, secondUnit)
45
+
46
+ Example:
47
+ ```ruby
48
+ InoxConverter.convertLenght(10, 'meter', 'kilometer')
49
+ ```
50
+
51
+ To add a unit:
52
+
53
+ <i>
54
+ - newUnit: name of the new unit to be added -> string
55
+ - newRate: reason between new unit and base unit
56
+ </i>
57
+
58
+ - InoxConverter.addLenghtUnit(newUnit, newRate)
59
+ - InoxConverter.addVolumeUnit(newUnit, newRate)
60
+ - InoxConverter.addAreaUnit(newUnit, newRate)
61
+ - InoxConverter.addMassUnit(newUnit, newRate)
62
+ - InoxConverter.addTimeUnit(newUnit, newRate)
63
+ - InoxConverter.addDateFormat(newFormat, newRate)
64
+ - InoxConverter.addTimeFormat(newFormat, newRate)
65
+
66
+ If you want to add a lenght unit called MyUnit that is ten times greater than the base unit of lenght (meter), you should to this:
67
+ ```ruby
68
+ InoxConverter.addLenghtUnit('MyUnit', 10)
69
+ ```
70
+
71
+
72
+ ### Base units:
73
+
74
+ - Area: squared meter
75
+ - Currency: dollar
76
+ - Length: meter
77
+ - Mass: gram
78
+ - Time: second
79
+ - Volume: liter
26
80
 
27
81
  ## Development
28
82
 
@@ -55,23 +55,56 @@ module Api
55
55
  end
56
56
  end
57
57
 
58
+ def validate_currency_unit(currency)
59
+ if @data == false || return_hash_currency(currency) == false
60
+ return false
61
+ else
62
+ return true
63
+ end
64
+ end
65
+
66
+ def validate_usd_unit(usd)
67
+ if usd == "USD"
68
+ return true;
69
+ else
70
+ return false
71
+ end
72
+ end
73
+
58
74
  #Template of execution sequence of the methods and return @hash
59
- def dictionary_api(firstUnit, secondUnit)
75
+ def dictionary_api
60
76
  consume_api
61
- treat_data
62
- data_validate_api(firstUnit, secondUnit)
63
-
77
+ treat_data
64
78
  end
65
79
 
80
+
66
81
  #new metodo for convert currency
67
82
  def convert_currency(valueToConvert, firstUnit, secondUnit)
68
-
69
- if dictionary_api(firstUnit, secondUnit) == false
70
- return 0
71
- else
72
- finalValue = (valueToConvert / @hash[firstUnit]) * @hash[secondUnit]
73
- return finalValue
74
- end
83
+ dictionary_api
84
+ if validate_usd_unit(firstUnit) && validate_usd_unit(secondUnit)
85
+ return valueToConvert
86
+ elsif validate_usd_unit(firstUnit) && validate_usd_unit(secondUnit) == false
87
+ if validate_currency_unit(secondUnit)
88
+ finalValue = valueToConvert * @hash[secondUnit]
89
+ return finalValue
90
+ else
91
+ return 0
92
+ end
93
+ elsif validate_usd_unit(firstUnit) == false && validate_usd_unit(secondUnit)
94
+ if validate_currency_unit(firstUnit)
95
+ finalValue = valueToConvert / @hash[firstUnit]
96
+ return finalValue
97
+ else
98
+ return 0
99
+ end
100
+ else
101
+ if data_validate_api(firstUnit, secondUnit)
102
+ finalValue = (valueToConvert / @hash[firstUnit]) * @hash[secondUnit]
103
+ return finalValue
104
+ else
105
+ return 0
106
+ end
107
+ end
75
108
  end
76
109
  end
77
110
  end
@@ -11,7 +11,7 @@ module InoxConverter
11
11
  "square metre" => 1,
12
12
  "square meter" => 1,
13
13
  "m2" => 1,
14
- "square centimeter"=> 10**-4,
14
+ "square centimeter"=> 10**-4,
15
15
  "square centimetre"=> 10**-4,
16
16
  "cm2"=> 10**-4,
17
17
  "square mile" => 2.59**6,
@@ -11,13 +11,24 @@ module InoxConverter
11
11
 
12
12
  # Template to convert
13
13
  def convert(valueToConvert, firstUnit, secondUnit)
14
- #First Step
14
+ # First Step
15
15
  finalValue = valueToConvert.round(10)
16
- #Second Step
17
- finalValue *= getInDictionary(firstUnit).round(10)
18
- #Third step
19
- finalValue /= getInDictionary(secondUnit).round(10)
20
- #Fourth step
16
+
17
+ # Second Step
18
+ firstUnitResultant = getInDictionary(firstUnit)
19
+ if firstUnitResultant.nil?
20
+ raise NotImplementedError.new("#{firstUnit} isn't recognized by InoxConverter")
21
+ end
22
+ finalValue *= firstUnitResultant.round(10)
23
+
24
+ # Third step
25
+ secondUnitResultant = getInDictionary(secondUnit)
26
+ if secondUnitResultant.nil?
27
+ raise NotImplementedError.new("#{secondUnit} isn't recognized by InoxConverter")
28
+ end
29
+ finalValue /= secondUnitResultant.round(10)
30
+
31
+ # Fourth step
21
32
  return finalValue.round(10)
22
33
  end
23
34
 
@@ -25,11 +36,6 @@ module InoxConverter
25
36
  return @dictionary[unit]
26
37
  end
27
38
 
28
- def addUnitInDictionary(newUnit, newRate)
29
- # Non-optional implementation
30
- raise NotImplementedError.new("Convert method not implemented")
31
- end
32
-
33
39
  def initDictionary
34
40
  raise NotImplementedError.new("Dictionary not initialize")
35
41
  end
@@ -1,3 +1,3 @@
1
1
  module InoxConverter
2
- VERSION = "0.1.0"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -5,7 +5,8 @@ module InoxConverter
5
5
  def initDictionary
6
6
  @dictionary = Hash.new
7
7
  @dictionary = {
8
- "cubicmetre" => 1000,
8
+ "cubic_metre" => 1000,
9
+ "cubic_meter" => 1000,
9
10
  "m3" => 1000,
10
11
  "decaliter" => 10,
11
12
  "dal" => 10,
@@ -15,6 +15,10 @@ module InoxConverter
15
15
  # Facade
16
16
  # Conversion methods
17
17
 
18
+ def self.hi
19
+ puts "Hi, you are using InoxConverter!"
20
+ end
21
+
18
22
  def self.convertDateFormat(dateToConvert, desiredFormat)
19
23
  puts "Date Formater"
20
24
  self.newDateFormatInstance
@@ -68,6 +72,8 @@ module InoxConverter
68
72
 
69
73
 
70
74
  # Add unit methods
75
+ # newUnit: name of the new unit to be added
76
+ # newRate: reason between new unit and base unit
71
77
 
72
78
  def self.addLenghtUnit(newUnit, newRate)
73
79
  self.newLenghtInstance
metadata CHANGED
@@ -1,14 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inox_converter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucas Andrade
8
+ - Júlio Xavier
9
+ - Gesiel Freitas
10
+ - Jhonatan Alves
11
+ - Nicácio Neto
12
+ - Vinícius Carvalho
8
13
  autorequire:
9
14
  bindir: exe
10
15
  cert_chain: []
11
- date: 2017-06-19 00:00:00.000000000 Z
16
+ date: 2017-06-22 00:00:00.000000000 Z
12
17
  dependencies:
13
18
  - !ruby/object:Gem::Dependency
14
19
  name: bundler
@@ -38,9 +43,25 @@ dependencies:
38
43
  - - "~>"
39
44
  - !ruby/object:Gem::Version
40
45
  version: '10.0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: activesupport
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '4.2'
53
+ type: :runtime
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '4.2'
41
60
  description: Convert currency, temperature, lenght...
42
61
  email:
43
62
  - lucasandradeunb@gmail.com
63
+ - julioxavierr@gmail.com
64
+ - gesiel.was.f@gmail.com
44
65
  executables: []
45
66
  extensions: []
46
67
  extra_rdoc_files: []
@@ -59,7 +80,7 @@ files:
59
80
  - lib/inox_converter/time_format.rb
60
81
  - lib/inox_converter/version.rb
61
82
  - lib/inox_converter/volume.rb
62
- homepage: ''
83
+ homepage: https://rubygems.org/gems/inox_converter
63
84
  licenses:
64
85
  - MIT
65
86
  metadata: {}