analog 0.2 → 0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/scale.rb +1 -1
- data/lib/scale/scheme.rb +9 -5
- data/test/destination_test.rb +29 -0
- data/test/scale_test.rb +1 -15
- data/test/scheme_test.rb +45 -0
- data/test/source_test.rb +28 -0
- metadata +7 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d51400d28d570348eff96771885c19af401f4cf5
|
4
|
+
data.tar.gz: 4d7926c87476b2057ae901f7baeb65a6b969bef8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 749cb1957e2a5c79b9177cf0d19baeee45fec89abd5d2d60630314d231bb76124e213a8fe9da54475fb39a6e675b84ad653e8dd4f3fed8ef2ee1a3799b7469e9
|
7
|
+
data.tar.gz: 4b7a657eec352c1b81dbd877aad80585a4a4180c62994c57e38463752cfe85f50da552fa5c7f0a2abedec141e74b20669fb7b2f11ccbac340b25a0ed359bcd6d
|
data/lib/scale.rb
CHANGED
data/lib/scale/scheme.rb
CHANGED
@@ -1,23 +1,26 @@
|
|
1
1
|
module Scale
|
2
2
|
|
3
|
+
extend self
|
4
|
+
|
3
5
|
# Build a scaling scheme for the given input
|
4
6
|
# @param [Numeric] input
|
5
7
|
# @return [Scale::Scheme]
|
6
|
-
def
|
8
|
+
def transform(input)
|
7
9
|
Scheme.new.scale(input)
|
8
10
|
end
|
11
|
+
alias_method :scale, :transform
|
9
12
|
|
10
13
|
# Build a scaling scheme starting with the given source
|
11
14
|
# @param [::Enumerable] source
|
12
15
|
# @return [Scale::Scheme]
|
13
|
-
def
|
16
|
+
def from(source)
|
14
17
|
Scheme.new.from(source)
|
15
18
|
end
|
16
19
|
|
17
20
|
# Build a scaling scheme starting with the given destination
|
18
21
|
# @param [::Enumerable] destination
|
19
22
|
# @return [Scale::Scheme]
|
20
|
-
def
|
23
|
+
def to(destination)
|
21
24
|
Scheme.new.to(destination)
|
22
25
|
end
|
23
26
|
|
@@ -25,8 +28,8 @@ module Scale
|
|
25
28
|
# @param [::Enumerable] source
|
26
29
|
# @param [::Enumerable] destination
|
27
30
|
# @return [Scale::Scheme]
|
28
|
-
def
|
29
|
-
Scheme.new.using(
|
31
|
+
def using(source, destination)
|
32
|
+
Scheme.new.using(source, destination)
|
30
33
|
end
|
31
34
|
|
32
35
|
# Describes a particular scaling scenario
|
@@ -89,6 +92,7 @@ module Scale
|
|
89
92
|
@input = number
|
90
93
|
scale? ? result : self
|
91
94
|
end
|
95
|
+
alias_method :transform, :scale
|
92
96
|
|
93
97
|
# Scan this scaling scenario be run?
|
94
98
|
# @return [Boolean] Whether this scaling scenario can be run
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "helper"
|
2
|
+
|
3
|
+
class Scale::DestinationTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
context "Destination" do
|
6
|
+
|
7
|
+
context ".new" do
|
8
|
+
|
9
|
+
should "recognize a Range" do
|
10
|
+
dest = Scale::Destination.new(0..1)
|
11
|
+
assert_equal(Scale::Destination::Range, dest.class)
|
12
|
+
end
|
13
|
+
|
14
|
+
should "recognize an Array" do
|
15
|
+
dest = Scale::Destination.new([0, 10, 20, 50])
|
16
|
+
assert_equal(Scale::Destination::Enumerable, dest.class)
|
17
|
+
end
|
18
|
+
|
19
|
+
should "recognize an Set" do
|
20
|
+
dest = Scale::Destination.new(Set.new([0, 10, 20, 50]))
|
21
|
+
assert_equal(Scale::Destination::Enumerable, dest.class)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
data/test/scale_test.rb
CHANGED
@@ -4,21 +4,7 @@ class ScaleTest < Test::Unit::TestCase
|
|
4
4
|
|
5
5
|
context "Scale" do
|
6
6
|
|
7
|
-
context "#
|
8
|
-
|
9
|
-
should "recognize a Range" do
|
10
|
-
scheme = Scale::Scheme.new(:source => 0..1, :destination => 0..100)
|
11
|
-
assert_equal(Scale::Destination::Range, scheme.destination.class)
|
12
|
-
end
|
13
|
-
|
14
|
-
should "recognize an Array" do
|
15
|
-
scheme = Scale::Scheme.new(:source => 0..1, :destination => [0, 10, 20, 50])
|
16
|
-
assert_equal(Scale::Destination::Enumerable, scheme.destination.class)
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
context "#scale" do
|
7
|
+
context "#transform" do
|
22
8
|
|
23
9
|
should "amplify" do
|
24
10
|
output = Scale.transform(0.10).using(0..1, 0..127)
|
data/test/scheme_test.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
require "helper"
|
2
|
+
|
3
|
+
class Scale::SchemeTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
context "Scheme" do
|
6
|
+
|
7
|
+
context ".transform" do
|
8
|
+
|
9
|
+
should "amplify" do
|
10
|
+
output = Scale.transform(0.10).using(0..1, 0..127)
|
11
|
+
assert_equal(12, output)
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
context ".from" do
|
17
|
+
|
18
|
+
should "deamplify" do
|
19
|
+
output = Scale.from(0..150).to(0..15).transform(22)
|
20
|
+
assert_equal(2, output)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
context ".to" do
|
26
|
+
|
27
|
+
should "scale neg/pos into pos/pos" do
|
28
|
+
output = Scale.to(0..3.0).from(-24..24).transform(10)
|
29
|
+
assert_equal(2.125, output)
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
context ".using" do
|
35
|
+
|
36
|
+
should "scale neg/pos into another neg/pos" do
|
37
|
+
output = Scale.using(-24..24, -3..3.0).transform(10)
|
38
|
+
assert_equal(1.25, output)
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
data/test/source_test.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require "helper"
|
2
|
+
|
3
|
+
class Scale::SourceTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
context "Source" do
|
6
|
+
|
7
|
+
context ".new" do
|
8
|
+
|
9
|
+
should "recognize a Range" do
|
10
|
+
source = Scale::Source.new(0..1)
|
11
|
+
assert_equal(Scale::Source::Range, source.class)
|
12
|
+
end
|
13
|
+
|
14
|
+
should "recognize an Array" do
|
15
|
+
source = Scale::Source.new([0, 10, 20, 50])
|
16
|
+
assert_equal(Scale::Source::Enumerable, source.class)
|
17
|
+
end
|
18
|
+
|
19
|
+
should "recognize an Set" do
|
20
|
+
source = Scale::Source.new(Set.new([0, 10, 20, 50]))
|
21
|
+
assert_equal(Scale::Source::Enumerable, source.class)
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: analog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.3'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ari Russo
|
@@ -67,8 +67,11 @@ files:
|
|
67
67
|
- lib/scale/scheme.rb
|
68
68
|
- lib/scale/source.rb
|
69
69
|
- test/core_ext_test.rb
|
70
|
+
- test/destination_test.rb
|
70
71
|
- test/helper.rb
|
71
72
|
- test/scale_test.rb
|
73
|
+
- test/scheme_test.rb
|
74
|
+
- test/source_test.rb
|
72
75
|
homepage: http://github.com/arirusso/analog
|
73
76
|
licenses:
|
74
77
|
- Apache License (2.0)
|
@@ -95,4 +98,7 @@ specification_version: 4
|
|
95
98
|
summary: A Ruby helper for scaling numbers
|
96
99
|
test_files:
|
97
100
|
- test/core_ext_test.rb
|
101
|
+
- test/destination_test.rb
|
98
102
|
- test/scale_test.rb
|
103
|
+
- test/scheme_test.rb
|
104
|
+
- test/source_test.rb
|