rubygems-sing 1.0.0
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.
- data.tar.gz.sig +0 -0
- data/History.txt +6 -0
- data/Manifest.txt +6 -0
- data/README.txt +52 -0
- data/Rakefile +17 -0
- data/lib/rubygems/commands/sing_command.rb +88 -0
- data/lib/rubygems_plugin.rb +3 -0
- metadata +134 -0
- metadata.gz.sig +3 -0
data.tar.gz.sig
ADDED
Binary file
|
data/History.txt
ADDED
data/Manifest.txt
ADDED
data/README.txt
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
= rubygems-sing
|
2
|
+
|
3
|
+
* http://rubyforge.org/projects/seattlerb
|
4
|
+
|
5
|
+
== DESCRIPTION:
|
6
|
+
|
7
|
+
"Sings" a gem's implementation.
|
8
|
+
|
9
|
+
== FEATURES/PROBLEMS:
|
10
|
+
|
11
|
+
* "Sings" a gem's lib directory, based on the nesting of the "end" tokens.
|
12
|
+
* Currently hard coded to use dls_synth for lack of better examples.
|
13
|
+
* Rad drums at the end of each file. :P
|
14
|
+
* Special thanks to drbrain for inspiration and bbleything for help with impl.
|
15
|
+
|
16
|
+
== SYNOPSIS:
|
17
|
+
|
18
|
+
% gem sing install_gem_name
|
19
|
+
|
20
|
+
== REQUIREMENTS:
|
21
|
+
|
22
|
+
* rubygems, duh
|
23
|
+
* midiator
|
24
|
+
|
25
|
+
== INSTALL:
|
26
|
+
|
27
|
+
* sudo gem install rubygems_sing
|
28
|
+
|
29
|
+
== LICENSE:
|
30
|
+
|
31
|
+
(The MIT License)
|
32
|
+
|
33
|
+
Copyright (c) Ryan Davis, seattle.rb
|
34
|
+
|
35
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
36
|
+
a copy of this software and associated documentation files (the
|
37
|
+
'Software'), to deal in the Software without restriction, including
|
38
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
39
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
40
|
+
permit persons to whom the Software is furnished to do so, subject to
|
41
|
+
the following conditions:
|
42
|
+
|
43
|
+
The above copyright notice and this permission notice shall be
|
44
|
+
included in all copies or substantial portions of the Software.
|
45
|
+
|
46
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
47
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
48
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
49
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
50
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
51
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
52
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'hoe'
|
5
|
+
|
6
|
+
Hoe.plugin :seattlerb
|
7
|
+
Hoe.plugin :rubyforge # for the time being
|
8
|
+
|
9
|
+
Hoe.spec 'rubygems-sing' do
|
10
|
+
developer 'Ryan Davis', 'ryand-ruby@zenspider.com'
|
11
|
+
|
12
|
+
extra_deps << ['midiator', '~> 0.3.2']
|
13
|
+
|
14
|
+
self.rubyforge_name = 'seattlerb'
|
15
|
+
end
|
16
|
+
|
17
|
+
# vim: syntax=ruby
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'rubygems/command'
|
2
|
+
require 'rubygems/version_option'
|
3
|
+
require 'rubygems/text'
|
4
|
+
|
5
|
+
require 'midiator'
|
6
|
+
|
7
|
+
##
|
8
|
+
# gem command to "sing" the implementation of a gem.
|
9
|
+
|
10
|
+
class Gem::Commands::SingCommand < Gem::Command
|
11
|
+
VERSION = '1.0.0'
|
12
|
+
|
13
|
+
include MIDIator::Notes
|
14
|
+
include MIDIator::Drums
|
15
|
+
|
16
|
+
include Gem::VersionOption
|
17
|
+
# include Gem::Text
|
18
|
+
|
19
|
+
def initialize
|
20
|
+
super("sing", "\"Sing\" a gem's implementation",
|
21
|
+
:version => Gem::Requirement.default)
|
22
|
+
|
23
|
+
add_version_option
|
24
|
+
end
|
25
|
+
|
26
|
+
def arguments # :nodoc:
|
27
|
+
'GEMNAME name of an installed gem to sing'
|
28
|
+
end
|
29
|
+
|
30
|
+
def defaults_str # :nodoc:
|
31
|
+
"--version='>= 0'"
|
32
|
+
end
|
33
|
+
|
34
|
+
def usage # :nodoc:
|
35
|
+
"#{program_name} GEMNAME [options]"
|
36
|
+
end
|
37
|
+
|
38
|
+
def execute
|
39
|
+
name = get_one_gem_name
|
40
|
+
|
41
|
+
dep = Gem::Dependency.new name, options[:version]
|
42
|
+
specs = Gem.source_index.search dep
|
43
|
+
|
44
|
+
if specs.empty? then
|
45
|
+
alert_error "No installed gem #{dep}"
|
46
|
+
terminate_interaction 1
|
47
|
+
end
|
48
|
+
|
49
|
+
spec = specs.last
|
50
|
+
base = spec.full_gem_path
|
51
|
+
|
52
|
+
##
|
53
|
+
# Special thanks to Ben Bleything for midiator and help getting
|
54
|
+
# this up and running!
|
55
|
+
|
56
|
+
midi = MIDIator::Interface.new
|
57
|
+
midi.use :dls_synth
|
58
|
+
|
59
|
+
scale = [ C4, Cs4, D4, Eb4, E4, F4, Fs4, G4, Gs4, A4, Bb4, B4,
|
60
|
+
C5, Cs5, D5, Eb5, E5, F5, Fs5, G5, Gs5, A5, Bb5, B5 ]
|
61
|
+
|
62
|
+
midi.control_change 32, 10, 1 # TR-808 is Program 26 in LSB bank 1
|
63
|
+
midi.program_change 10, 26
|
64
|
+
|
65
|
+
# TODO: eventually add ability to play actual AST
|
66
|
+
|
67
|
+
spec.lib_files.each do |path|
|
68
|
+
full_path = File.join base, path
|
69
|
+
warn path
|
70
|
+
File.foreach(full_path) do |line|
|
71
|
+
if line =~ /^(\s+)end$/ then
|
72
|
+
num_spaces = $1.size
|
73
|
+
midi.play scale[ num_spaces / 2 ]
|
74
|
+
print line
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
[ HighTom1, HighTom2, LowTom1, LowTom2 ].each do |note|
|
79
|
+
midi.play note, 0.067, 10
|
80
|
+
end
|
81
|
+
|
82
|
+
midi.play CrashCymbal1, 0.25, 10
|
83
|
+
end
|
84
|
+
|
85
|
+
midi.play CrashCymbal2, 0.25, 10
|
86
|
+
sleep 1.0
|
87
|
+
end
|
88
|
+
end
|
metadata
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rubygems-sing
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ryan Davis
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDPjCCAiagAwIBAgIBADANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
|
14
|
+
ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
|
15
|
+
GRYDY29tMB4XDTA5MDMwNjE4NTMxNVoXDTEwMDMwNjE4NTMxNVowRTETMBEGA1UE
|
16
|
+
AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
|
17
|
+
JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
|
18
|
+
b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
|
19
|
+
taCPaLmfYIaFcHHCSY4hYDJijRQkLxPeB3xbOfzfLoBDbjvx5JxgJxUjmGa7xhcT
|
20
|
+
oOvjtt5P8+GSK9zLzxQP0gVLS/D0FmoE44XuDr3iQkVS2ujU5zZL84mMNqNB1znh
|
21
|
+
GiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt
|
22
|
+
qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
|
23
|
+
gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
|
24
|
+
HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBBQUAA4IB
|
25
|
+
AQAY59gYvDxqSqgC92nAP9P8dnGgfZgLxP237xS6XxFGJSghdz/nI6pusfCWKM8m
|
26
|
+
vzjjH2wUMSSf3tNudQ3rCGLf2epkcU13/rguI88wO6MrE0wi4ZqLQX+eZQFskJb/
|
27
|
+
w6x9W1ur8eR01s397LSMexySDBrJOh34cm2AlfKr/jokKCTwcM0OvVZnAutaovC0
|
28
|
+
l1SVZ0ecg88bsWHA0Yhh7NFxK1utWoIhtB6AFC/+trM0FQEB/jZkIS8SaNzn96Rl
|
29
|
+
n0sZEf77FLf5peR8TP/PtmIg7Cyqz23sLM4mCOoTGIy5OcZ8TdyiyINUHtb5ej/T
|
30
|
+
FBHgymkyj/AOSqKRIpXPhjC6
|
31
|
+
-----END CERTIFICATE-----
|
32
|
+
|
33
|
+
date: 2010-01-20 00:00:00 -08:00
|
34
|
+
default_executable:
|
35
|
+
dependencies:
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: midiator
|
38
|
+
type: :runtime
|
39
|
+
version_requirement:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
requirements:
|
42
|
+
- - ~>
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: 0.3.2
|
45
|
+
version:
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rubyforge
|
48
|
+
type: :development
|
49
|
+
version_requirement:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.0.3
|
55
|
+
version:
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: gemcutter
|
58
|
+
type: :development
|
59
|
+
version_requirement:
|
60
|
+
version_requirements: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: 0.3.0
|
65
|
+
version:
|
66
|
+
- !ruby/object:Gem::Dependency
|
67
|
+
name: minitest
|
68
|
+
type: :development
|
69
|
+
version_requirement:
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 1.5.0
|
75
|
+
version:
|
76
|
+
- !ruby/object:Gem::Dependency
|
77
|
+
name: hoe
|
78
|
+
type: :development
|
79
|
+
version_requirement:
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: 2.5.0
|
85
|
+
version:
|
86
|
+
description: "\"Sings\" a gem's implementation."
|
87
|
+
email:
|
88
|
+
- ryand-ruby@zenspider.com
|
89
|
+
executables: []
|
90
|
+
|
91
|
+
extensions: []
|
92
|
+
|
93
|
+
extra_rdoc_files:
|
94
|
+
- History.txt
|
95
|
+
- Manifest.txt
|
96
|
+
- README.txt
|
97
|
+
files:
|
98
|
+
- History.txt
|
99
|
+
- Manifest.txt
|
100
|
+
- README.txt
|
101
|
+
- Rakefile
|
102
|
+
- lib/rubygems/commands/sing_command.rb
|
103
|
+
- lib/rubygems_plugin.rb
|
104
|
+
has_rdoc: true
|
105
|
+
homepage: http://rubyforge.org/projects/seattlerb
|
106
|
+
licenses: []
|
107
|
+
|
108
|
+
post_install_message:
|
109
|
+
rdoc_options:
|
110
|
+
- --main
|
111
|
+
- README.txt
|
112
|
+
require_paths:
|
113
|
+
- lib
|
114
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: "0"
|
119
|
+
version:
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: "0"
|
125
|
+
version:
|
126
|
+
requirements: []
|
127
|
+
|
128
|
+
rubyforge_project: seattlerb
|
129
|
+
rubygems_version: 1.3.5
|
130
|
+
signing_key:
|
131
|
+
specification_version: 3
|
132
|
+
summary: "\"Sings\" a gem's implementation."
|
133
|
+
test_files: []
|
134
|
+
|
metadata.gz.sig
ADDED