resistor 0.2.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 +4 -4
- data/Gemfile +13 -1
- data/README.md +29 -8
- data/Rakefile +7 -0
- data/lib/resistor.rb +9 -2
- data/lib/resistor/basic_resistor.rb +39 -8
- data/lib/resistor/color_code.rb +23 -14
- data/lib/resistor/combined_resistor.rb +14 -0
- data/lib/resistor/version.rb +1 -1
- data/resistor.gemspec +1 -3
- data/spec/basic_resistor_spec.rb +6 -0
- metadata +4 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3a576d33899464a13043e8bc89b37d103a0a7fa1
|
4
|
+
data.tar.gz: cf556ea896a9c2be6273e812036d3c5846a8c12a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01501d32e0c5486bb9b5123da1ad26d7f78a2848908198ae35c82c728137e58bef91e37e549278eacc48c93e8a1eb7c6a18053915ec78e2c87ea5fb323eecc25
|
7
|
+
data.tar.gz: 9c739bd8b568864ddf3689894e3d413204bcf7add187bcca50a1fc59896b72b3aec485041887f0dd7f4c79b9d5e328c61c953dbbb9b92f37f5a0914611c500a5
|
data/Gemfile
CHANGED
@@ -1,4 +1,16 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
|
3
|
+
gem 'rake'
|
4
|
+
gem 'yard'
|
5
|
+
|
6
|
+
group :development do
|
7
|
+
gem 'pry'
|
8
|
+
gem 'pry-doc'
|
9
|
+
gem 'pry-stack_explorer'
|
10
|
+
end
|
11
|
+
|
12
|
+
group :test do
|
13
|
+
gem 'rspec', '>= 3.1'
|
14
|
+
end
|
15
|
+
|
4
16
|
gemspec
|
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# Resistor
|
2
|
+
Resistor is a gem for the resistor unit.
|
2
3
|
|
3
4
|
## Installation
|
4
5
|
|
@@ -18,27 +19,47 @@ Or install it yourself as:
|
|
18
19
|
|
19
20
|
## Usage
|
20
21
|
|
22
|
+
###Resistor Color Code Converter
|
23
|
+
`Resistor::ColorCode.encode` **Converts a resistance value to a color code.**
|
24
|
+
`Resistor::ColorCode.decode` **Converts a color code to a resistance value.**
|
25
|
+
|
21
26
|
```ruby
|
22
27
|
require 'resistor'
|
23
28
|
|
24
|
-
|
25
|
-
|
26
|
-
Resistor::ColorCode.decode([:yellow, :purple, :red, :gold])
|
29
|
+
Resistor::ColorCode.encode(4700)
|
30
|
+
# => [:yellow, :purple, :red, :gold]
|
31
|
+
Resistor::ColorCode.decode([:yellow, :purple, :red, :gold])
|
32
|
+
# => 4700.0
|
33
|
+
```
|
27
34
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
35
|
+
### Combined Resistor Calculator
|
36
|
+
`Resistor::BasicReisistor#+` **Calculates a series combined resistance value.**
|
37
|
+
`Resistor::BasicReisistor#/` **Calculates a parallel combined resistance value.**
|
38
|
+
|
39
|
+
`Resistor.new` is an alias for `Resistor::BasicResistor.new`
|
40
|
+
|
41
|
+
```ruby
|
42
|
+
require 'resistor'
|
32
43
|
|
33
44
|
r1 = Resistor.new(ohm: 20)
|
34
45
|
r2 = Resistor.new(ohm: 30)
|
35
46
|
r3 = Resistor.new(ohm: 4)
|
36
47
|
r4 = Resistor.new(ohm: 8)
|
37
48
|
|
49
|
+
# --[r1]-- --[r4]--
|
50
|
+
# --| |--[r3]--| |--
|
51
|
+
# --[r2]-- --[r4]--
|
38
52
|
r5 = (r1 / r2) + r3 + (r4 / r4)
|
39
53
|
r5.ohm # => 20.0
|
54
|
+
```
|
55
|
+
|
56
|
+
### E Series
|
57
|
+
`Resistor::BasicReisistor#e12?` **Whether or not the resistance value is the E12 series.**
|
58
|
+
`Resistor::BasicReisistor#e24?` **Whether or not the resistance value is the E24 series.**
|
59
|
+
|
60
|
+
```ruby
|
61
|
+
require 'resistor'
|
40
62
|
|
41
|
-
# E Series Checker
|
42
63
|
r1 = Resistor.new(ohm: 4700)
|
43
64
|
r2 = Resistor.new(ohm: 62)
|
44
65
|
|
data/Rakefile
CHANGED
data/lib/resistor.rb
CHANGED
@@ -6,8 +6,15 @@ require "resistor/combined_resistor"
|
|
6
6
|
module Resistor
|
7
7
|
|
8
8
|
class << self
|
9
|
-
|
10
|
-
|
9
|
+
# Alias for Resistor::BasicResistor.new
|
10
|
+
#
|
11
|
+
# @see Resistor::BasicResistor
|
12
|
+
# @return [Resistor::BasicResistor]
|
13
|
+
# @example Create a Resistor::BasicResistor object.
|
14
|
+
# r1 = Resistor.new(ohm: 20)
|
15
|
+
# r2 = Resistor.new(code: ['yellow', 'purple', 'red', 'gold'])
|
16
|
+
def new(options = {})
|
17
|
+
Resistor::BasicResistor.new(options)
|
11
18
|
end
|
12
19
|
end
|
13
20
|
end
|
@@ -3,15 +3,27 @@ module Resistor
|
|
3
3
|
|
4
4
|
attr_reader :ohm, :code, :error_range
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
# Initializes a new BasicResistor object.
|
7
|
+
# Both the ohm and code parameter are optional,
|
8
|
+
# but at least one of them must be supplied.
|
9
|
+
#
|
10
|
+
# @option options [Integer, Float] :ohm(nil) resistance value
|
11
|
+
# @option options [Array<Symbol>, Array<String>] :code(nil) color code
|
12
|
+
# @option options [Integer, Float] :error_range(5.0)
|
13
|
+
# @raise [ArgumentError] The ohm or code parameter must be supplied.
|
14
|
+
# Error raised if neither parameter is supplied.
|
15
|
+
# @return [Resistor::BasicResistor]
|
16
|
+
# def initialize(ohm:nil, code:nil, error_range: 5.0)
|
17
|
+
def initialize(options = {})
|
18
|
+
options[:error_range] ||= 5.0
|
19
|
+
opt = {:error_range => options[:error_range]}
|
20
|
+
if options[:ohm]
|
21
|
+
@ohm = options[:ohm].to_f
|
10
22
|
@code = Resistor::ColorCode.encode(@ohm, opt)
|
11
|
-
@error_range = error_range
|
12
|
-
elsif code
|
13
|
-
raise ArgumentError unless code.is_a? Array
|
14
|
-
@code = code.map(&:to_sym)
|
23
|
+
@error_range = options[:error_range]
|
24
|
+
elsif options[:code]
|
25
|
+
raise ArgumentError unless options[:code].is_a? Array
|
26
|
+
@code = options[:code].map(&:to_sym)
|
15
27
|
@ohm = Resistor::ColorCode.decode(@code)
|
16
28
|
@error_range = Resistor::ColorCode::ERROR_RANGE[@code[3].to_sym]
|
17
29
|
else
|
@@ -19,25 +31,43 @@ module Resistor
|
|
19
31
|
end
|
20
32
|
end
|
21
33
|
|
34
|
+
# Set a resistance value.
|
35
|
+
# When the resistance value is changed, the color code is also changed.
|
36
|
+
#
|
37
|
+
# @param ohm [Integer, Float] resistance value
|
22
38
|
def ohm=(ohm)
|
23
39
|
@ohm = ohm.to_f
|
24
40
|
@code = Resistor::ColorCode.encode(@ohm)
|
25
41
|
end
|
26
42
|
|
43
|
+
# Set a color code.
|
44
|
+
# When the color code is changed, the resistance value is also changed,
|
45
|
+
# and the error range is also changed.
|
46
|
+
#
|
47
|
+
# @param code [Array<Symbol>, Array<String>] color code
|
27
48
|
def code=(code)
|
28
49
|
@code = code.map(&:to_sym)
|
29
50
|
@ohm = Resistor::ColorCode.decode(@code)
|
30
51
|
@error_range = Resistor::ColorCode::ERROR_RANGE[@code[3].to_sym]
|
31
52
|
end
|
32
53
|
|
54
|
+
# Calculates a series combined resistance value.
|
55
|
+
#
|
56
|
+
# @param other [Resistor::BasicResistor, Resistor::CombinedResistor]
|
57
|
+
# @return [Resistor::CombinedResistor]
|
33
58
|
def +(other)
|
34
59
|
Resistor::CombinedResistor.new(@ohm + other.ohm)
|
35
60
|
end
|
36
61
|
|
62
|
+
# Calculates a parallel combined resistance value.
|
63
|
+
#
|
64
|
+
# @param other [Resistor::BasicResistor, Resistor::CombinedResistor]
|
65
|
+
# @return [Resistor::CombinedResistor]
|
37
66
|
def /(other)
|
38
67
|
Resistor::CombinedResistor.new(1 / (1 / @ohm + 1 / other.ohm))
|
39
68
|
end
|
40
69
|
|
70
|
+
# @return [Boolean] Whether or not the resistance value is the E12 series.
|
41
71
|
def e12?
|
42
72
|
num0 = Resistor::ColorCode::NUM[@code[0]]
|
43
73
|
num1 = Resistor::ColorCode::NUM[@code[1]]
|
@@ -49,6 +79,7 @@ module Resistor
|
|
49
79
|
return false
|
50
80
|
end
|
51
81
|
|
82
|
+
# @return [Boolean] Whether or not the resistance value is the E24 series.
|
52
83
|
def e24?
|
53
84
|
num0 = Resistor::ColorCode::NUM[@code[0]]
|
54
85
|
num1 = Resistor::ColorCode::NUM[@code[1]]
|
data/lib/resistor/color_code.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Resistor
|
2
2
|
module ColorCode
|
3
3
|
|
4
|
-
#
|
4
|
+
# 1st Band, 2nd Band
|
5
5
|
NUM = {
|
6
6
|
:black => 0,
|
7
7
|
:brown => 1,
|
@@ -15,7 +15,7 @@ module Resistor
|
|
15
15
|
:white => 9
|
16
16
|
}.freeze
|
17
17
|
|
18
|
-
#
|
18
|
+
# Multiplier
|
19
19
|
MULT = {
|
20
20
|
:black => 0,
|
21
21
|
:brown => 1,
|
@@ -28,7 +28,7 @@ module Resistor
|
|
28
28
|
:silver => -2
|
29
29
|
}.freeze
|
30
30
|
|
31
|
-
#
|
31
|
+
# Tolerance
|
32
32
|
ERROR_RANGE = {
|
33
33
|
:brown => 1.0,
|
34
34
|
:red => 2.0,
|
@@ -40,7 +40,6 @@ module Resistor
|
|
40
40
|
:silver => 10.0
|
41
41
|
}.freeze
|
42
42
|
|
43
|
-
# E12系列
|
44
43
|
E12_SERIES = {
|
45
44
|
1 => [0, 2, 5, 8],
|
46
45
|
2 => [2, 7],
|
@@ -51,7 +50,6 @@ module Resistor
|
|
51
50
|
8 => [2],
|
52
51
|
}.freeze
|
53
52
|
|
54
|
-
# E24系列
|
55
53
|
E24_SERIES = {
|
56
54
|
1 => [0, 1, 2, 3, 5, 6, 8],
|
57
55
|
2 => [0, 2, 4, 7],
|
@@ -64,32 +62,43 @@ module Resistor
|
|
64
62
|
9 => [1]
|
65
63
|
}.freeze
|
66
64
|
|
67
|
-
|
68
|
-
|
65
|
+
|
66
|
+
# Converts a resistance value to a color code.
|
67
|
+
# The value must be between 0.1 and 99_000_000.
|
68
|
+
#
|
69
|
+
# @param ohm [Integer, Float] resistance value
|
70
|
+
# @option options [Integer, Float] :error_range(5.0)
|
71
|
+
# @raise [ArgumentError] Error raised
|
72
|
+
# when the supplied resistance value is less than 0.1.
|
73
|
+
# @return [Array<Symbol>] color code
|
74
|
+
def self.encode(ohm, options = {:error_range => 5.0})
|
69
75
|
return [NUM.key(0)] if ohm == 0
|
70
76
|
raise ArgumentError if ohm < 0.1
|
71
77
|
|
72
|
-
# 0.1以上で1より小さい
|
73
78
|
if ohm < 1
|
74
79
|
ohm_str = (ohm*100).to_s.split('')
|
75
80
|
[NUM.key(ohm_str[0].to_i), NUM.key(ohm_str[1].to_i),
|
76
|
-
MULT.key(-2), ERROR_RANGE.key(error_range)]
|
81
|
+
MULT.key(-2), ERROR_RANGE.key(options[:error_range])]
|
77
82
|
|
78
|
-
# 1以上で10より小さい(1桁)
|
79
83
|
elsif ohm < 10
|
80
84
|
ohm_str = (ohm*10).to_s.split('')
|
81
85
|
[NUM.key(ohm_str[0].to_i), NUM.key(ohm_str[1].to_i),
|
82
|
-
MULT.key(-1), ERROR_RANGE.key(error_range)]
|
86
|
+
MULT.key(-1), ERROR_RANGE.key(options[:error_range])]
|
83
87
|
|
84
|
-
# 2桁以上
|
85
88
|
else
|
86
89
|
ohm_str = ohm.to_i.to_s.split('')
|
87
90
|
[NUM.key(ohm_str[0].to_i), NUM.key(ohm_str[1].to_i),
|
88
|
-
MULT.key(ohm_str.size - 2), ERROR_RANGE.key(error_range)]
|
91
|
+
MULT.key(ohm_str.size - 2), ERROR_RANGE.key(options[:error_range])]
|
89
92
|
end
|
90
93
|
end
|
91
94
|
|
92
|
-
#
|
95
|
+
# Converts a color code to a resistance value.
|
96
|
+
#
|
97
|
+
# @param code [Array<Symbol>, Array<String>] color code
|
98
|
+
# @raise [ArgumentError] Error raised
|
99
|
+
# when the supplied color code is not an array,
|
100
|
+
# or when the color of the first band is black.
|
101
|
+
# @return [Float] resistance value
|
93
102
|
def self.decode(code)
|
94
103
|
raise ArgumentError unless code.is_a? Array
|
95
104
|
code = code.map(&:to_sym)
|
@@ -3,14 +3,28 @@ module Resistor
|
|
3
3
|
|
4
4
|
attr_reader :ohm
|
5
5
|
|
6
|
+
# Initializes a new CombinedResistor object.
|
7
|
+
#
|
8
|
+
# @see BasicResistor#+
|
9
|
+
# @see BasicResistor#/
|
10
|
+
# @param ohm [Float] resistance value
|
11
|
+
# @return [Resistor::CombinedResistor]
|
6
12
|
def initialize(ohm)
|
7
13
|
@ohm = ohm.to_f
|
8
14
|
end
|
9
15
|
|
16
|
+
# Calculates a series combined resistance value.
|
17
|
+
#
|
18
|
+
# @param other [Resistor::BasicResistor, Resistor::CombinedResistor]
|
19
|
+
# @return [Resistor::CombinedResistor]
|
10
20
|
def +(other)
|
11
21
|
Resistor::CombinedResistor.new(@ohm + other.ohm)
|
12
22
|
end
|
13
23
|
|
24
|
+
# Calculates a parallel combined resistance value.
|
25
|
+
#
|
26
|
+
# @param other [Resistor::BasicResistor, Resistor::CombinedResistor]
|
27
|
+
# @return [Resistor::CombinedResistor]
|
14
28
|
def /(other)
|
15
29
|
Resistor::CombinedResistor.new(1 / (1 / @ohm + 1 / other.ohm))
|
16
30
|
end
|
data/lib/resistor/version.rb
CHANGED
data/resistor.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ["seinosuke"]
|
10
10
|
spec.email = ["seinosuke.3606@gmail.com"]
|
11
11
|
spec.summary = %q{Resistor gem}
|
12
|
-
spec.description = %q{
|
12
|
+
spec.description = %q{Gem for resistor}
|
13
13
|
spec.homepage = "https://github.com/seinosuke/resistor"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
@@ -19,6 +19,4 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.7"
|
22
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
23
|
-
spec.add_development_dependency "rspec", "~> 3.1"
|
24
22
|
end
|
data/spec/basic_resistor_spec.rb
CHANGED
@@ -31,6 +31,12 @@ describe Resistor::BasicResistor do
|
|
31
31
|
|
32
32
|
it { expect { is_expected }.to raise_error(ArgumentError) }
|
33
33
|
end
|
34
|
+
|
35
|
+
context '許容差を指定した場合' do
|
36
|
+
resistor = Resistor.new(ohm: 100, error_range: 0.1)
|
37
|
+
it { expect(resistor.code[3]).to eq :purple }
|
38
|
+
it { expect(resistor.error_range).to eq 0.1 }
|
39
|
+
end
|
34
40
|
end
|
35
41
|
|
36
42
|
describe '#+, #/' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resistor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- seinosuke
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -24,35 +24,7 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.7'
|
27
|
-
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '10.0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '10.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.1'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '3.1'
|
55
|
-
description: gem for resistor
|
27
|
+
description: Gem for resistor
|
56
28
|
email:
|
57
29
|
- seinosuke.3606@gmail.com
|
58
30
|
executables: []
|
@@ -102,3 +74,4 @@ test_files:
|
|
102
74
|
- spec/basic_resistor_spec.rb
|
103
75
|
- spec/color_code_spec.rb
|
104
76
|
- spec/spec_helper.rb
|
77
|
+
has_rdoc:
|