basic_temperature 0.1.0 → 0.2.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: abc9f2d631494075604ae36162102c4aff070974a2bd391a198ac7f95cd4e23c
4
- data.tar.gz: 22459a3590a5af282596f6d4bb819a96e6442b6ebfd739274de9e02221c2d96d
3
+ metadata.gz: 7b20510122a2cac35b771c18843e418c0441e926b421f0f10ae316385af7529d
4
+ data.tar.gz: 697c43df7e678d701d1052fd872a3cf0afaffd5eeec666d9ae90927f9f693e0d
5
5
  SHA512:
6
- metadata.gz: f1a4b929508305ce833ae0ad9bda5fc4e4b1c539fa20041a2914e7f8e2e3d6239e9ab28daa90ff9c9bf7caa1f6d66a7a7b666b8c65280b397fa46ebeaff9afef
7
- data.tar.gz: 642cf6da0c1acf3b375a6cf02c4cad7251a67f08c31762dead3d75c91ee014ae8c9d31d7d4a21d54c23151247c940986ae69c657c3fa432257eceb08e791e91e
6
+ metadata.gz: faf2b656ce8787e1a891dd2784e825b5ac2d42238915ad1f4636bce69fe92cddfb5b7c51fe89aa7a0dbe348606dbf6796efc435f331194efa78e6213f9927717
7
+ data.tar.gz: f813145375bd5823ad63fb3e11aed3fbf3a6bbb9e3c6a9eb600ec7b6264f0c63c98b3d4a23b02b53878ebeaa80237a2b11d14de194c5d7acade689dbf3c07e0a
data/.gitignore CHANGED
@@ -9,3 +9,6 @@
9
9
 
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
+
13
+ # Hide `byebug` history
14
+ .byebug_history
data/.rubocop.yml ADDED
@@ -0,0 +1,13 @@
1
+ AllCops:
2
+ Exclude:
3
+ - .git/**/*
4
+ - bin/**/*
5
+ - pkg/**/*
6
+ - spec/**/*
7
+ - vendor/bundle/**/*
8
+
9
+ Layout/LineLength:
10
+ Max: 110
11
+
12
+ Style/RedundantSelf:
13
+ Enabled: No
data/.travis.yml CHANGED
@@ -1,6 +1,19 @@
1
1
  ---
2
2
  language: ruby
3
+
3
4
  cache: bundler
5
+
6
+ before_install:
7
+ - yes | gem update --system --force
8
+ - gem install bundler -v 2.1.2
9
+
4
10
  rvm:
11
+ - 2.3.0
12
+ - 2.4.0
13
+ - 2.5.0
14
+ - 2.6.0
5
15
  - 2.7.0
6
- before_install: gem install bundler -v 2.1.2
16
+
17
+ script:
18
+ - bundle exec rubocop
19
+ - bundle exec rspec
data/CHANGELOG.md CHANGED
@@ -1,2 +1,15 @@
1
+ ## 0.2.1
2
+ ### Features:
3
+ - Spaceship operator <=>
4
+
5
+ ### Tech improvements:
6
+ - [byebug](https://github.com/deivid-rodriguez/byebug) as dev dependency
7
+ - [rspec](https://rspec.info/) as dev dependency
8
+ - [rubocop](https://github.com/rubocop-hq/rubocop) as dev dependency
9
+ - [Travis CI](https://travis-ci.com/) setup
10
+
11
+ ## 0.2.0
12
+ - 'Accidentally' yanked
13
+
1
14
  ## 0.1.0
2
15
  - Initial Release.
data/Gemfile CHANGED
@@ -1,7 +1,6 @@
1
- source "https://rubygems.org"
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in basic_temperature.gemspec
4
6
  gemspec
5
-
6
- gem "rake", "~> 12.0"
7
- gem "rspec", "~> 3.0"
data/Gemfile.lock CHANGED
@@ -1,13 +1,21 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- basic_temperature (0.1.0)
4
+ basic_temperature (0.2.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
+ ast (2.4.0)
10
+ byebug (10.0.2)
9
11
  diff-lcs (1.3)
12
+ jaro_winkler (1.5.4)
13
+ parallel (1.19.1)
14
+ parser (2.7.0.3)
15
+ ast (~> 2.4.0)
16
+ rainbow (3.0.0)
10
17
  rake (12.3.3)
18
+ rexml (3.2.4)
11
19
  rspec (3.9.0)
12
20
  rspec-core (~> 3.9.0)
13
21
  rspec-expectations (~> 3.9.0)
@@ -21,14 +29,26 @@ GEM
21
29
  diff-lcs (>= 1.2.0, < 2.0)
22
30
  rspec-support (~> 3.9.0)
23
31
  rspec-support (3.9.2)
32
+ rubocop (0.80.0)
33
+ jaro_winkler (~> 1.5.1)
34
+ parallel (~> 1.10)
35
+ parser (>= 2.7.0.1)
36
+ rainbow (>= 2.2.2, < 4.0)
37
+ rexml
38
+ ruby-progressbar (~> 1.7)
39
+ unicode-display_width (>= 1.4.0, < 1.7)
40
+ ruby-progressbar (1.10.1)
41
+ unicode-display_width (1.6.1)
24
42
 
25
43
  PLATFORMS
26
44
  ruby
27
45
 
28
46
  DEPENDENCIES
29
47
  basic_temperature!
48
+ byebug (~> 10.0)
30
49
  rake (~> 12.0)
31
50
  rspec (~> 3.0)
51
+ rubocop (~> 0.80.0)
32
52
 
33
53
  BUNDLED WITH
34
54
  2.1.2
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
3
5
 
4
6
  RSpec::Core::RakeTask.new(:spec)
5
7
 
6
- task :default => :spec
8
+ task default: :spec
@@ -1,26 +1,39 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'lib/basic_temperature/version'
2
4
 
3
5
  Gem::Specification.new do |spec|
4
- spec.name = "basic_temperature"
5
- spec.version = BasicTemperature::VERSION
6
- spec.authors = ["Marian Kostyk"]
7
- spec.email = ["mariankostyk13895@gmail.com"]
6
+ spec.name = 'basic_temperature'
7
+ spec.version = BasicTemperature::VERSION
8
+
9
+ spec.authors = ['Marian Kostyk']
10
+ spec.email = ['mariankostyk13895@gmail.com']
11
+
12
+ spec.summary = 'Value object for basic temperature operations.'
13
+ spec.description =
14
+ 'Value object for basic temperature operations like ' \
15
+ 'conversions from Celcius to Fahrenhait or Kelvin etc.'
8
16
 
9
- spec.summary = %q{Value object for basic temperature operations.}
10
- spec.description = %q{Value object for basic temperature operations like conversions from Celcius to Fahrenhait or Kelvin etc.}
11
- spec.homepage = "https://github.com/marian13/basic_temperature"
12
- spec.license = "MIT"
13
- spec.required_ruby_version = Gem::Requirement.new(">= 2.0.0")
17
+ spec.homepage = 'https://github.com/marian13/basic_temperature'
14
18
 
15
- spec.metadata["homepage_uri"] = spec.homepage
16
- spec.metadata["source_code_uri"] = spec.homepage
17
- spec.metadata["changelog_uri"] = "#{spec.homepage}/CHANGELOG.md"
19
+ spec.license = 'MIT'
20
+
21
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.3.0')
22
+
23
+ spec.metadata['homepage_uri'] = spec.homepage
24
+ spec.metadata['source_code_uri'] = spec.homepage
25
+ spec.metadata['changelog_uri'] = "#{spec.homepage}/CHANGELOG.md"
18
26
 
19
27
  # Specify which files should be added to the gem when it is released.
20
28
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
21
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
29
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
22
30
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
23
31
  end
24
32
 
25
- spec.require_paths = ["lib"]
33
+ spec.require_paths = ['lib']
34
+
35
+ spec.add_development_dependency 'byebug', '~> 10.0'
36
+ spec.add_development_dependency 'rake', '~> 12.0'
37
+ spec.add_development_dependency 'rspec', '~> 3.0'
38
+ spec.add_development_dependency 'rubocop', '~> 0.80.0'
26
39
  end
@@ -1,10 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'basic_temperature/version'
2
4
 
5
+ # Value Object for basic temperature operations like conversions from Celcius to Fahrenhait or Kelvin etc.
6
+ # rubocop:disable Metrics/ClassLength
3
7
  class BasicTemperature
4
8
  class InitializationArgumentsError < StandardError; end
5
9
  class InvalidDegreesError < StandardError; end
6
10
  class InvalidScaleError < StandardError; end
7
- class InvalidAddendError < StandardError; end
11
+ class InvalidOtherError < StandardError; end
8
12
  class CoersionError < StandardError; end
9
13
 
10
14
  SCALES =
@@ -13,7 +17,6 @@ class BasicTemperature
13
17
  FAHRENHEIT = 'fahrenheit',
14
18
  KELVIN = 'kelvin'
15
19
  ]
16
- .map(&:freeze)
17
20
  .freeze
18
21
 
19
22
  attr_reader :degrees, :scale
@@ -24,18 +27,22 @@ class BasicTemperature
24
27
 
25
28
  if keyword_arguments.any?
26
29
  initialize_via_keywords_arguments(keyword_arguments)
27
- elsif positional_arguments.any?
30
+ else # positional_arguments.any?
28
31
  initialize_via_positional_arguments(positional_arguments)
29
32
  end
30
33
  end
31
34
 
35
+ # rubocop:disable Naming/AccessorMethodName
32
36
  def set_degrees(degrees)
33
37
  BasicTemperature.new(degrees, scale)
34
38
  end
39
+ # rubocop:enable Naming/AccessorMethodName
35
40
 
41
+ # rubocop:disable Naming/AccessorMethodName
36
42
  def set_scale(scale)
37
43
  self.to_scale(scale)
38
44
  end
45
+ # rubocop:enable Naming/AccessorMethodName
39
46
 
40
47
  def to_scale(scale)
41
48
  case cast_scale(scale)
@@ -98,28 +105,28 @@ class BasicTemperature
98
105
  @to_kelvin = BasicTemperature.new(degrees, KELVIN)
99
106
  end
100
107
 
101
- def ==(other_temperature)
102
- return false unless other_temperature.instance_of?(BasicTemperature)
108
+ def ==(other)
109
+ return false unless other.instance_of?(BasicTemperature)
103
110
 
104
- self.degrees == other_temperature.degrees && self.scale == other_temperature.scale
111
+ self.degrees == other.degrees && self.scale == other.scale
105
112
  end
106
113
 
107
- def +(addend)
114
+ def +(other)
108
115
  degrees, scale =
109
- case addend
116
+ case other
110
117
  when Numeric
111
- [self.degrees + addend, self.scale]
118
+ [self.degrees + other, self.scale]
112
119
  when BasicTemperature
113
- [self.to_scale(addend.scale).degrees + addend.degrees, addend.scale]
120
+ [self.to_scale(other.scale).degrees + other.degrees, other.scale]
114
121
  else
115
- raise_invalid_addend_error(addend)
122
+ raise_invalid_other_error(other)
116
123
  end
117
124
 
118
125
  BasicTemperature.new(degrees, scale)
119
126
  end
120
127
 
121
- def -(subtrahend)
122
- self + (-subtrahend)
128
+ def -(other)
129
+ self + -other
123
130
  end
124
131
 
125
132
  def -@
@@ -136,6 +143,12 @@ class BasicTemperature
136
143
  "#{degrees.to_i} #{scale.capitalize}"
137
144
  end
138
145
 
146
+ def <=>(other)
147
+ return unless other.instance_of?(BasicTemperature)
148
+
149
+ self.to_scale(other.scale).degrees <=> other.degrees
150
+ end
151
+
139
152
  private
140
153
 
141
154
  def initialize_via_positional_arguments(positional_arguments)
@@ -173,9 +186,7 @@ class BasicTemperature
173
186
  end
174
187
 
175
188
  def assert_numeric_or_temperature!(numeric_or_temperature)
176
- if numeric_or_temperature.is_a?(Numeric) || numeric_or_temperature.instance_of?(BasicTemperature)
177
- return
178
- end
189
+ return if numeric_or_temperature.is_a?(Numeric) || numeric_or_temperature.instance_of?(BasicTemperature)
179
190
 
180
191
  raise_coersion_error(numeric_or_temperature)
181
192
  end
@@ -199,16 +210,17 @@ class BasicTemperature
199
210
  def raise_invalid_scale_error
200
211
  message =
201
212
  'scale has invalid value, ' \
202
- "valid values are #{SCALES.map { |scale| "'#{scale}'"}.join(', ')}."
213
+ "valid values are #{SCALES.map { |scale| "'#{scale}'" }.join(', ')}."
203
214
 
204
215
  raise InvalidScaleError, message
205
216
  end
206
217
 
207
- def raise_invalid_addend_error(addend)
208
- raise InvalidAddendError, "`#{addend}` is neither Numeric nor Temperature."
218
+ def raise_invalid_other_error(other)
219
+ raise InvalidOtherError, "`#{other}` is neither Numeric nor Temperature."
209
220
  end
210
221
 
211
222
  def raise_coersion_error(object)
212
223
  raise CoersionError, "#{object} is neither Numeric nor Temperature."
213
224
  end
214
225
  end
226
+ # rubocop:enable Metrics/ClassLength
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class BasicTemperature
2
- VERSION = '0.1.0'.freeze
3
- end
4
+ VERSION = '0.2.1'
5
+ end
metadata CHANGED
@@ -1,15 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: basic_temperature
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marian Kostyk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-14 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2020-02-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: byebug
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '10.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '10.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '12.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '12.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.80.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.80.0
13
69
  description: Value object for basic temperature operations like conversions from Celcius
14
70
  to Fahrenhait or Kelvin etc.
15
71
  email:
@@ -20,6 +76,7 @@ extra_rdoc_files: []
20
76
  files:
21
77
  - ".gitignore"
22
78
  - ".rspec"
79
+ - ".rubocop.yml"
23
80
  - ".travis.yml"
24
81
  - CHANGELOG.md
25
82
  - Gemfile
@@ -47,7 +104,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
47
104
  requirements:
48
105
  - - ">="
49
106
  - !ruby/object:Gem::Version
50
- version: 2.0.0
107
+ version: 2.3.0
51
108
  required_rubygems_version: !ruby/object:Gem::Requirement
52
109
  requirements:
53
110
  - - ">="