seven_segment_display 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +5 -0
- data/README.rdoc +24 -13
- data/demo.rb +7 -1
- data/lib/seven_segment_display.rb +16 -4
- data/test/test_seven_segment_display.rb +29 -2
- metadata +2 -2
data/History.txt
CHANGED
data/README.rdoc
CHANGED
@@ -12,11 +12,12 @@ Stay tuned.
|
|
12
12
|
|
13
13
|
== SYNOPSIS:
|
14
14
|
|
15
|
-
require '
|
15
|
+
require 'rubygems'
|
16
|
+
require 'seven_segment_display'
|
16
17
|
|
17
18
|
puts 0.seven_segment
|
18
|
-
puts 42.seven_segment
|
19
|
-
puts 1029384756.seven_segment
|
19
|
+
puts 42.seven_segment( 5 )
|
20
|
+
puts 1029384756.seven_segment( 2 )
|
20
21
|
|
21
22
|
Outputs:
|
22
23
|
|
@@ -25,16 +26,26 @@ Outputs:
|
|
25
26
|
|
26
27
|
| |
|
27
28
|
—
|
28
|
-
|
29
|
-
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
29
|
+
—————
|
30
|
+
| | |
|
31
|
+
| | |
|
32
|
+
| | |
|
33
|
+
| | |
|
34
|
+
| | |
|
35
|
+
————— —————
|
36
|
+
||
|
37
|
+
||
|
38
|
+
||
|
39
|
+
||
|
40
|
+
||
|
41
|
+
—————
|
42
|
+
—— —— —— —— —— —— —— ——
|
43
|
+
|| | || | || || | || |
|
44
|
+
|| | || | || || | || |
|
45
|
+
—— —— —— —— —— —— ——
|
46
|
+
|| || | || | | | || |
|
47
|
+
|| || | || | | | || |
|
48
|
+
—— —— —— —— —— —— ——
|
38
49
|
|
39
50
|
== REQUIREMENTS:
|
40
51
|
|
data/demo.rb
CHANGED
@@ -84,17 +84,29 @@ module SevenSegmentDisplay
|
|
84
84
|
}
|
85
85
|
|
86
86
|
seven_segment_block = lambda { | *args |
|
87
|
+
size = args[0] ||= 1
|
88
|
+
raise ArgumentError.new( 'Size cannot be less than one.' ) if size < 1
|
87
89
|
number_count = self.to_s.length
|
88
90
|
digits = self.to_s.split( // )
|
89
91
|
display = ''
|
90
|
-
|
92
|
+
|
93
|
+
make_line = lambda { | line_number |
|
94
|
+
line = ''
|
91
95
|
0.upto( number_count - 1 ) do | digit_index |
|
92
96
|
number_layout = number_layouts[ digits[ digit_index ].to_i ]
|
93
|
-
|
97
|
+
line << "#{ number_layout[ line_number ][ 0 ] }#{ number_layout[ line_number ][ 1 ] * size }#{ number_layout[ line_number ][ 2 ] }"
|
98
|
+
end
|
99
|
+
line + "\n"
|
100
|
+
}
|
101
|
+
|
102
|
+
0.upto( 4 ) do | line_number |
|
103
|
+
if line_number.odd?
|
104
|
+
display << make_line.call( line_number ) * size
|
105
|
+
else
|
106
|
+
display << make_line.call( line_number )
|
94
107
|
end
|
95
|
-
display << "\n"
|
96
108
|
end
|
97
|
-
display
|
109
|
+
display
|
98
110
|
}
|
99
111
|
|
100
112
|
Integer.send( :define_method, 'seven_segment', seven_segment_block )
|
@@ -18,11 +18,38 @@ class TestSevenSegmentDisplay < Test::Unit::TestCase
|
|
18
18
|
— — — — — — —
|
19
19
|
|| | || | | | || || |
|
20
20
|
— — — — — — —
|
21
|
+
END
|
22
|
+
@all_digits_2 = <<-END
|
23
|
+
—— —— —— —— —— —— —— ——
|
24
|
+
| | || || | || || || |
|
25
|
+
| | || || | || || || |
|
26
|
+
—— —— —— —— —— —— ——
|
27
|
+
|| | | || | || | || |
|
28
|
+
|| | | || | || | || |
|
29
|
+
—— —— —— —— —— —— ——
|
30
|
+
END
|
31
|
+
@all_digits_5 = <<-END
|
32
|
+
————— ————— ————— ————— ————— ————— ————— —————
|
33
|
+
| | || || | || || || |
|
34
|
+
| | || || | || || || |
|
35
|
+
| | || || | || || || |
|
36
|
+
| | || || | || || || |
|
37
|
+
| | || || | || || || |
|
38
|
+
————— ————— ————— ————— ————— ————— —————
|
39
|
+
|| | | || | || | || |
|
40
|
+
|| | | || | || | || |
|
41
|
+
|| | | || | || | || |
|
42
|
+
|| | | || | || | || |
|
43
|
+
|| | | || | || | || |
|
44
|
+
————— ————— ————— ————— ————— ————— —————
|
21
45
|
END
|
22
46
|
end
|
23
47
|
|
24
|
-
def test_display
|
48
|
+
def test_display
|
25
49
|
assert_equal( @all_digits, 1234567890.seven_segment )
|
26
|
-
assert_equal( @all_digits_backwards, 9876543210.seven_segment )
|
50
|
+
assert_equal( @all_digits_backwards, 9876543210.seven_segment )
|
51
|
+
assert_equal( @all_digits_2, 1234567890.seven_segment( 2 ) )
|
52
|
+
assert_equal( @all_digits_5, 1234567890.seven_segment( 5 ) )
|
53
|
+
assert_raise( ArgumentError ) { 1234567890.seven_segment( 0 ) }
|
27
54
|
end
|
28
55
|
end
|