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 CHANGED
@@ -2,3 +2,8 @@
2
2
 
3
3
  * 1 major enhancement:
4
4
  * Initial release
5
+
6
+ === 0.0.3 2010-04-14
7
+
8
+ * 1 major enhancement:
9
+ * Ability to specify size of digits
data/README.rdoc CHANGED
@@ -12,11 +12,12 @@ Stay tuned.
12
12
 
13
13
  == SYNOPSIS:
14
14
 
15
- require 'lib/seven_segment_display'
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
@@ -1,5 +1,11 @@
1
1
  require 'lib/seven_segment_display'
2
2
 
3
- 0.upto( 100 ) do | x |
3
+ 0.step( 100, 5 ) do | x |
4
4
  puts x.seven_segment
5
5
  end
6
+ 0.step( 100, 5 ) do | x |
7
+ puts x.seven_segment( 2 )
8
+ end
9
+ 0.step( 100, 5 ) do | x |
10
+ puts x.seven_segment( 5 )
11
+ end
@@ -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
- 0.upto( 4 ) do | line |
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
- display << number_layout[ line ].join
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
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 1
9
- version: 0.0.1
8
+ - 3
9
+ version: 0.0.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - David Cole