seven_segment_display 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,4 @@
1
+ === 0.0.1 2010-04-14
2
+
3
+ * 1 major enhancement:
4
+ * Initial release
@@ -0,0 +1,9 @@
1
+ demo.rb
2
+ History.txt
3
+ Manifest.txt
4
+ PostInstall.txt
5
+ README.rdoc
6
+ Rakefile
7
+ lib/seven_segment_display.rb
8
+ test/test_helper.rb
9
+ test/test_seven_segment_display.rb
@@ -0,0 +1,3 @@
1
+
2
+ For more information on seven_segment_display, see http://github.com/davidcole/seven_segment_display
3
+
@@ -0,0 +1,70 @@
1
+ = seven_segment_display
2
+
3
+ http://github.com/davidcole/seven_segment_display
4
+
5
+ == DESCRIPTION:
6
+
7
+ Converts numbers to seven segment display digits, as in a digital clock, by adding a monkeypatch Integer.
8
+
9
+ == FEATURES/PROBLEMS:
10
+
11
+ Stay tuned.
12
+
13
+ == SYNOPSIS:
14
+
15
+ require 'lib/seven_segment_display'
16
+
17
+ puts 0.seven_segment
18
+ puts 42.seven_segment
19
+ puts 1029384756.seven_segment
20
+
21
+ Outputs:
22
+
23
+
24
+ | |
25
+
26
+ | |
27
+
28
+
29
+ | | |
30
+ — —
31
+ ||
32
+
33
+ — — — — — — — —
34
+ || | || | || || | || |
35
+ — — — — — — —
36
+ || || | || | | | || |
37
+ — — — — — — —
38
+
39
+ == REQUIREMENTS:
40
+
41
+ Ruby.
42
+
43
+ == INSTALL:
44
+
45
+ sudo gem install seven_segment_display
46
+
47
+ == LICENSE:
48
+
49
+ (The MIT License)
50
+
51
+ Copyright (c) 2010 David Cole
52
+
53
+ Permission is hereby granted, free of charge, to any person obtaining
54
+ a copy of this software and associated documentation files (the
55
+ 'Software'), to deal in the Software without restriction, including
56
+ without limitation the rights to use, copy, modify, merge, publish,
57
+ distribute, sublicense, and/or sell copies of the Software, and to
58
+ permit persons to whom the Software is furnished to do so, subject to
59
+ the following conditions:
60
+
61
+ The above copyright notice and this permission notice shall be
62
+ included in all copies or substantial portions of the Software.
63
+
64
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
65
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
66
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
67
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
68
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
69
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
70
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,26 @@
1
+ require 'rubygems'
2
+ gem 'hoe', '>= 2.1.0'
3
+ require 'hoe'
4
+ require 'fileutils'
5
+ require './lib/seven_segment_display'
6
+
7
+ Hoe.plugin :newgem
8
+ # Hoe.plugin :website
9
+ # Hoe.plugin :cucumberfeatures
10
+
11
+ # Generate all the Rake tasks
12
+ # Run 'rake -T' to see list of generated tasks (from gem root directory)
13
+ $hoe = Hoe.spec 'seven_segment_display' do
14
+ self.developer 'David Cole', 'davidcole@davidcole.net'
15
+ self.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
16
+ self.rubyforge_name = 'seven-segment'
17
+ # self.extra_deps = [['activesupport','>= 2.0.2']]
18
+
19
+ end
20
+
21
+ require 'newgem/tasks'
22
+ Dir['tasks/**/*.rake'].each { |t| load t }
23
+
24
+ # TODO - want other tests/tasks run by default? Add them to the list
25
+ # remove_task :default
26
+ # task :default => [:spec, :features]
data/demo.rb ADDED
@@ -0,0 +1,5 @@
1
+ require 'lib/seven_segment_display'
2
+
3
+ 0.upto( 100 ) do | x |
4
+ puts x.seven_segment
5
+ end
@@ -0,0 +1,102 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ module SevenSegmentDisplay
5
+ VERSION = '0.0.1'
6
+
7
+ TOP = 0
8
+ TOP_BODY = 1
9
+ MIDDLE = 2
10
+ BOTTOM_BODY = 3
11
+ BOTTOM = 4
12
+
13
+ number_layouts = {
14
+ 0 => {
15
+ TOP => [ ' ', '—', ' ' ],
16
+ TOP_BODY => [ '|', ' ', '|' ],
17
+ MIDDLE => [ ' ', ' ', ' ' ],
18
+ BOTTOM_BODY => [ '|', ' ', '|' ],
19
+ BOTTOM => [ ' ', '—', ' ' ]
20
+ },
21
+ 1 => {
22
+ TOP => [ ' ', ' ', ' ' ],
23
+ TOP_BODY => [ ' ', ' ', '|' ],
24
+ MIDDLE => [ ' ', ' ', ' ' ],
25
+ BOTTOM_BODY => [ ' ', ' ', '|' ],
26
+ BOTTOM => [ ' ', ' ', ' ' ]
27
+ },
28
+ 2 => {
29
+ TOP => [ ' ', '—', ' ' ],
30
+ TOP_BODY => [ ' ', ' ', '|' ],
31
+ MIDDLE => [ ' ', '—', ' ' ],
32
+ BOTTOM_BODY => [ '|', ' ', ' ' ],
33
+ BOTTOM => [ ' ', '—', ' ' ]
34
+ },
35
+ 3 => {
36
+ TOP => [ ' ', '—', ' ' ],
37
+ TOP_BODY => [ ' ', ' ', '|' ],
38
+ MIDDLE => [ ' ', '—', ' ' ],
39
+ BOTTOM_BODY => [ ' ', ' ', '|' ],
40
+ BOTTOM => [ ' ', '—', ' ' ]
41
+ },
42
+ 4 => {
43
+ TOP => [ ' ', ' ', ' ' ],
44
+ TOP_BODY => [ '|', ' ', '|' ],
45
+ MIDDLE => [ ' ', '—', ' ' ],
46
+ BOTTOM_BODY => [ ' ', ' ', '|' ],
47
+ BOTTOM => [ ' ', ' ', ' ' ]
48
+ },
49
+ 5 => {
50
+ TOP => [ ' ', '—', ' ' ],
51
+ TOP_BODY => [ '|', ' ', ' ' ],
52
+ MIDDLE => [ ' ', '—', ' ' ],
53
+ BOTTOM_BODY => [ ' ', ' ', '|' ],
54
+ BOTTOM => [ ' ', '—', ' ' ]
55
+ },
56
+ 6 => {
57
+ TOP => [ ' ', '—', ' ' ],
58
+ TOP_BODY => [ '|', ' ', ' ' ],
59
+ MIDDLE => [ ' ', '—', ' ' ],
60
+ BOTTOM_BODY => [ '|', ' ', '|' ],
61
+ BOTTOM => [ ' ', '—', ' ' ]
62
+ },
63
+ 7 => {
64
+ TOP => [ ' ', '—', ' ' ],
65
+ TOP_BODY => [ ' ', ' ', '|' ],
66
+ MIDDLE => [ ' ', ' ', ' ' ],
67
+ BOTTOM_BODY => [ ' ', ' ', '|' ],
68
+ BOTTOM => [ ' ', ' ', ' ' ]
69
+ },
70
+ 8 => {
71
+ TOP => [ ' ', '—', ' ' ],
72
+ TOP_BODY => [ '|', ' ', '|' ],
73
+ MIDDLE => [ ' ', '—', ' ' ],
74
+ BOTTOM_BODY => [ '|', ' ', '|' ],
75
+ BOTTOM => [ ' ', '—', ' ' ]
76
+ },
77
+ 9 => {
78
+ TOP => [ ' ', '—', ' ' ],
79
+ TOP_BODY => [ '|', ' ', '|' ],
80
+ MIDDLE => [ ' ', '—', ' ' ],
81
+ BOTTOM_BODY => [ ' ', ' ', '|' ],
82
+ BOTTOM => [ ' ', '—', ' ' ]
83
+ }
84
+ }
85
+
86
+ seven_segment_block = lambda { | *args |
87
+ number_count = self.to_s.length
88
+ digits = self.to_s.split( // )
89
+ display = ''
90
+ 0.upto( 4 ) do | line |
91
+ 0.upto( number_count - 1 ) do | digit_index |
92
+ number_layout = number_layouts[ digits[ digit_index ].to_i ]
93
+ display << number_layout[ line ].join
94
+ end
95
+ display << "\n"
96
+ end
97
+ display
98
+ }
99
+
100
+ Integer.send( :define_method, 'seven_segment', seven_segment_block )
101
+
102
+ end
@@ -0,0 +1,2 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../lib/seven_segment_display'
@@ -0,0 +1,28 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestSevenSegmentDisplay < Test::Unit::TestCase
4
+
5
+ include SevenSegmentDisplay
6
+
7
+ def setup
8
+ @all_digits = <<-END
9
+ — — — — — — — —
10
+ | | || || | || || || |
11
+ — — — — — — —
12
+ || | | || | || | || |
13
+ — — — — — — —
14
+ END
15
+ @all_digits_backwards = <<-END
16
+ — — — — — — — —
17
+ | || | || | | | | | || |
18
+ — — — — — — —
19
+ || | || | | | || || |
20
+ — — — — — — —
21
+ END
22
+ end
23
+
24
+ def test_display
25
+ assert_equal( @all_digits, 1234567890.seven_segment )
26
+ assert_equal( @all_digits_backwards, 9876543210.seven_segment )
27
+ end
28
+ end
metadata ADDED
@@ -0,0 +1,102 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: seven_segment_display
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - David Cole
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-04-15 00:00:00 -04:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rubyforge
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 2
29
+ - 0
30
+ - 4
31
+ version: 2.0.4
32
+ type: :development
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: hoe
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 2
43
+ - 6
44
+ - 0
45
+ version: 2.6.0
46
+ type: :development
47
+ version_requirements: *id002
48
+ description: Converts numbers to seven segment display digits, as in a digital clock, by adding a monkeypatch Integer.
49
+ email:
50
+ - davidcole@davidcole.net
51
+ executables: []
52
+
53
+ extensions: []
54
+
55
+ extra_rdoc_files:
56
+ - History.txt
57
+ - Manifest.txt
58
+ - PostInstall.txt
59
+ files:
60
+ - demo.rb
61
+ - History.txt
62
+ - Manifest.txt
63
+ - PostInstall.txt
64
+ - README.rdoc
65
+ - Rakefile
66
+ - lib/seven_segment_display.rb
67
+ - test/test_helper.rb
68
+ - test/test_seven_segment_display.rb
69
+ has_rdoc: true
70
+ homepage: http://github.com/davidcole/seven_segment_display
71
+ licenses: []
72
+
73
+ post_install_message: PostInstall.txt
74
+ rdoc_options:
75
+ - --main
76
+ - README.rdoc
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ segments:
84
+ - 0
85
+ version: "0"
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ segments:
91
+ - 0
92
+ version: "0"
93
+ requirements: []
94
+
95
+ rubyforge_project: seven-segment
96
+ rubygems_version: 1.3.6
97
+ signing_key:
98
+ specification_version: 3
99
+ summary: Converts numbers to seven segment display digits, as in a digital clock, by adding a monkeypatch Integer.
100
+ test_files:
101
+ - test/test_helper.rb
102
+ - test/test_seven_segment_display.rb