kikeru 0.0.1

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5f0bad6a2d167f1b2d514d50d170c6a4c983d7ae
4
+ data.tar.gz: 45607e8bab5adf20da83e37bc0776d2f110c4111
5
+ SHA512:
6
+ metadata.gz: 70a02927dda88679e36aec062cd3ff4a4d3798189e8b6dd805427694525d337850df16cf574c63e7898d353f32df5b6965bb5ca0e75fc12f2676a9bf292176d9
7
+ data.tar.gz: 27fca698d68d751f4d1a8f37c86581984769fdfa7762a35ed45a6e0fb17e8f6006adbd8868f2ac066dd88256a1006bbe09069b0b871064438de889632983acf5
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in kikeru.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Masafumi Yokoyama
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/NEWS.md ADDED
@@ -0,0 +1,5 @@
1
+ # NEWS
2
+
3
+ ## Kikeru 0.0.1: 2013-05-11
4
+
5
+ Initial release!
data/README.md ADDED
@@ -0,0 +1,35 @@
1
+ # Kikeru - Keyboard Friendly Audio Player
2
+
3
+ A keyboard friendly audio player by Ruby/GStreamer.
4
+
5
+ ## Installation
6
+
7
+ $ gem install kikeru
8
+
9
+ ## Usage
10
+
11
+ ### Launch
12
+
13
+ $ kikeru [OPTION]... [FILE]...
14
+
15
+ If no argument, then search current directory.
16
+
17
+ ### Options
18
+
19
+ -d, --deep
20
+ deep search as "**/*"
21
+
22
+ ### Keybind
23
+
24
+ n: next
25
+ p: prev
26
+ r: restart
27
+ q: quit
28
+
29
+ ## Contributing
30
+
31
+ 1. Fork it
32
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
33
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
34
+ 4. Push to the branch (`git push origin my-new-feature`)
35
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,9 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ desc "Run test"
4
+ task :test do
5
+ Bundler::GemHelper.install_tasks
6
+ ruby("-rubygems", "test/run-test.rb")
7
+ end
8
+
9
+ task :default => :test
data/bin/kikeru ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "kikeru/command"
4
+
5
+ Kikeru::Command.run(*ARGV)
data/kikeru.gemspec ADDED
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "kikeru/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "kikeru"
8
+ spec.version = Kikeru::VERSION
9
+ spec.authors = ["Masafumi Yokoyama"]
10
+ spec.email = ["myokoym@gmail.com"]
11
+ spec.summary = %q{Keyboard Friendly Audio Player}
12
+ spec.description = %q{Kikeru is a keyboard friendly audio player by Ruby/GStreamer.}
13
+ spec.homepage = "https://github.com/myokoym/kikeru"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) {|f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_runtime_dependency("gtk3")
22
+ spec.add_runtime_dependency("gstreamer")
23
+
24
+ spec.add_development_dependency("test-unit")
25
+ spec.add_development_dependency("test-unit-notify")
26
+ spec.add_development_dependency("test-unit-rr")
27
+ spec.add_development_dependency("bundler", "~> 1.3")
28
+ spec.add_development_dependency("rake")
29
+ end
@@ -0,0 +1,123 @@
1
+ require "gtk3"
2
+ require "kikeru/version"
3
+ require "kikeru/logger"
4
+ require "kikeru/container"
5
+ require "kikeru/window"
6
+
7
+ module Kikeru
8
+ class Command
9
+ USAGE = "Usage: kikeru [OPTION]... [FILE]..."
10
+
11
+ class << self
12
+ def run(*arguments)
13
+ new.run(arguments)
14
+ end
15
+ end
16
+
17
+ def initialize
18
+ @logger = Kikeru::Logger.new
19
+ end
20
+
21
+ def run(arguments)
22
+ if /\A(-h|--help)\z/ =~ arguments[0]
23
+ write_help_message
24
+ exit(true)
25
+ elsif /\A(-v|--version)\z/ =~ arguments[0]
26
+ write_version_message
27
+ exit(true)
28
+ end
29
+
30
+ files = files_from_arguments(arguments)
31
+ file_container = Kikeru::Container.new(files)
32
+
33
+ if file_container.empty?
34
+ write_empty_message
35
+ exit(false)
36
+ end
37
+
38
+ window = Kikeru::Window.new
39
+ window.add_container(file_container)
40
+ window.show_all
41
+ window.play
42
+
43
+
44
+ Gtk.main
45
+ end
46
+
47
+ private
48
+ def files_from_arguments(arguments)
49
+ if arguments.empty?
50
+ files = Dir.glob("*")
51
+ elsif purge_option(arguments, /\A(-d|--deep)\z/)
52
+ if arguments.empty?
53
+ files = Dir.glob("**/*")
54
+ else
55
+ files = []
56
+ arguments.each do |f|
57
+ if File.directory?(f)
58
+ files << Dir.glob("#{f}/**/*")
59
+ else
60
+ files << f
61
+ end
62
+ end
63
+ files.flatten!
64
+ end
65
+ elsif arguments.all? {|v| File.directory?(v) }
66
+ files = []
67
+ arguments.each do |f|
68
+ files << Dir.glob("#{f}/*")
69
+ end
70
+ files.flatten!
71
+ else
72
+ files = arguments
73
+ end
74
+ files
75
+ end
76
+
77
+ def purge_option(arguments, regexp, has_value=false)
78
+ index = arguments.find_index {|arg| regexp =~ arg }
79
+ return false unless index
80
+ if has_value
81
+ arguments.delete_at(index) # flag
82
+ arguments.delete_at(index) # value
83
+ else
84
+ arguments.delete_at(index)
85
+ end
86
+ end
87
+
88
+ def write_help_message
89
+ message = <<-EOM
90
+ #{USAGE}
91
+ If no argument, then search current directory.
92
+ Options:
93
+ -d, --deep
94
+ deep search as "**/*"
95
+ Keybind:
96
+ n: next
97
+ p: prev
98
+ r: restart
99
+ q: quit
100
+ EOM
101
+ @logger.info(message)
102
+ end
103
+
104
+ def write_version_message
105
+ message = <<-EOM
106
+ #{Kikeru::VERSION}
107
+ EOM
108
+ @logger.info(message)
109
+ end
110
+
111
+ def write_empty_message
112
+ message = <<-EOM
113
+ Warning: file not found.
114
+ #{USAGE}
115
+ If no argument, then search current directory.
116
+ Options:
117
+ -d, --deep
118
+ deep search as "**/*"
119
+ EOM
120
+ @logger.error(message)
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,34 @@
1
+ module Kikeru
2
+ class Container
3
+ def initialize(files=[])
4
+ @files = files.select {|file| file?(file) }
5
+ end
6
+
7
+ def empty?
8
+ @files.empty?
9
+ end
10
+
11
+ def pop(complement_file=nil)
12
+ @files.unshift(complement_file) if complement_file
13
+ @files.pop
14
+ end
15
+
16
+ def shift(complement_file=nil)
17
+ @files.push(complement_file) if complement_file
18
+ @files.shift
19
+ end
20
+
21
+ private
22
+ def file?(file)
23
+ unless file
24
+ return false
25
+ end
26
+
27
+ unless File.file?(file)
28
+ return false
29
+ end
30
+
31
+ true
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,14 @@
1
+ module Kikeru
2
+ class Logger
3
+ def initialize
4
+ end
5
+
6
+ def info(message)
7
+ puts(message)
8
+ end
9
+
10
+ def error(message)
11
+ $stderr.puts(message)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,3 @@
1
+ module Kikeru
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,62 @@
1
+ require "gtk3"
2
+ require "gst"
3
+
4
+ module Kikeru
5
+ class Window < Gtk::Window
6
+ def initialize
7
+ super
8
+ setup
9
+ end
10
+
11
+ def add_container(container)
12
+ @container = container
13
+ @file = @container.shift
14
+ end
15
+
16
+ def play
17
+ @playbin.stop
18
+ @playbin.uri = Gst.filename_to_uri(@file)
19
+ self.title = File.basename(@file)
20
+ @playbin.play
21
+ end
22
+
23
+ private
24
+ def setup
25
+ setup_window
26
+ setup_gst
27
+ end
28
+
29
+ def setup_window
30
+ signal_connect("destroy") do
31
+ @playbin.stop
32
+ Gtk.main_quit
33
+ end
34
+
35
+ signal_connect("key_press_event") do |widget, event|
36
+ case event.keyval
37
+ when Gdk::Keyval::GDK_KEY_n
38
+ @file = @container.shift(@file)
39
+ play
40
+ when Gdk::Keyval::GDK_KEY_p
41
+ @file = @container.pop(@file)
42
+ play
43
+ when Gdk::Keyval::GDK_KEY_r
44
+ play
45
+ when Gdk::Keyval::GDK_KEY_q
46
+ @playbin.stop
47
+ Gtk.main_quit
48
+ end
49
+ end
50
+ end
51
+
52
+ def setup_gst
53
+ Gst.init
54
+
55
+ @playbin = Gst::ElementFactory.make("playbin")
56
+ if @playbin.nil?
57
+ puts "'playbin' gstreamer plugin missing"
58
+ exit(false)
59
+ end
60
+ end
61
+ end
62
+ end
data/lib/kikeru.rb ADDED
@@ -0,0 +1,4 @@
1
+ require "kikeru/version"
2
+ require "kikeru/logger"
3
+ require "kikeru/container"
4
+ require "kikeru/window"
data/test/run-test.rb ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "test-unit"
4
+ require "test/unit/notify"
5
+ require "test/unit/rr"
6
+
7
+ base_dir = File.expand_path(File.join(File.dirname(__FILE__), ".."))
8
+ $LOAD_PATH.unshift(File.join(base_dir, "lib"))
9
+ $LOAD_PATH.unshift(File.join(base_dir, "test"))
10
+
11
+ exit Test::Unit::AutoRunner.run(true)
@@ -0,0 +1,101 @@
1
+ require "kikeru/command"
2
+ require "kikeru/container"
3
+
4
+ class KikeruTest < Test::Unit::TestCase
5
+ def setup
6
+ @command = Kikeru::Command.new
7
+ end
8
+
9
+ def test_run_help_option
10
+ arguments = %w(--help)
11
+ mock(@command).write_help_message
12
+ assert_raise SystemExit do
13
+ @command.run(arguments)
14
+ end
15
+ end
16
+
17
+ def test_run_help_option_sugar
18
+ arguments = %w(-h)
19
+ mock(@command).write_help_message
20
+ assert_raise SystemExit do
21
+ @command.run(arguments)
22
+ end
23
+ end
24
+
25
+ def test_run_version_option
26
+ arguments = %w(--version)
27
+ mock(@command).write_version_message
28
+ assert_raise SystemExit do
29
+ @command.run(arguments)
30
+ end
31
+ end
32
+
33
+ def test_run_empty
34
+ arguments = %w(hoge)
35
+ stub(@command).files_from_arguments { arguments }
36
+ mock.instance_of(Kikeru::Container).empty? { true }
37
+ mock(@command).write_empty_message
38
+ assert_raise SystemExit do
39
+ @command.run(arguments)
40
+ end
41
+ end
42
+
43
+ def test_files_from_arguments_no_argument
44
+ arguments = %w()
45
+ expected = %w(dir1 file1 dir2)
46
+ mock(Dir).glob("*") { expected }
47
+ files = @command.__send__(:files_from_arguments, arguments)
48
+ assert_equal(files, expected)
49
+ end
50
+
51
+ def test_files_from_arguments_deep_option_only
52
+ arguments = %w(--deep)
53
+ expected = %w(dir1 file1 dir2 dir1/file1 dir1/file2 dir2/file1)
54
+ mock(Dir).glob("**/*") { expected }
55
+ files = @command.__send__(:files_from_arguments, arguments)
56
+ assert_equal(files, expected)
57
+ end
58
+
59
+ def test_files_from_arguments_deep_option_and_dir
60
+ arguments = %w(--deep dir1 file1 dir2)
61
+ expected_dir1 = %w(dir1/file1 dir1/file2)
62
+ expected_dir2 = %w(dir2/file1)
63
+ expected = [expected_dir1, "file1", expected_dir2].flatten
64
+ mock(File).directory?("dir1") { true }
65
+ mock(File).directory?("file1") { false }
66
+ mock(File).directory?("dir2") { true }
67
+ mock(Dir).glob("dir1/**/*") { expected_dir1 }
68
+ mock(Dir).glob("dir2/**/*") { expected_dir2 }
69
+ files = @command.__send__(:files_from_arguments, arguments)
70
+ assert_equal(files, expected)
71
+ end
72
+
73
+ def test_files_from_arguments_all_dir
74
+ arguments = %w(dir1 dir2)
75
+ expected_dir1 = %w(dir1/file1 dir1/file2)
76
+ expected_dir2 = %w(dir2/file1)
77
+ expected = [expected_dir1, expected_dir2].flatten
78
+ mock(File).directory?("dir1") { true }
79
+ mock(File).directory?("dir2") { true }
80
+ mock(Dir).glob("dir1/*") { expected_dir1 }
81
+ mock(Dir).glob("dir2/*") { expected_dir2 }
82
+ files = @command.__send__(:files_from_arguments, arguments)
83
+ assert_equal(files, expected)
84
+ end
85
+
86
+ def test_files_from_arguments_else
87
+ arguments = %w(dir1 file1 dir2)
88
+ files = @command.__send__(:files_from_arguments, arguments)
89
+ assert_equal(files, arguments)
90
+ end
91
+
92
+ def test_purge_option
93
+ arguments = %w(--deep -f ubuntu dir1 file1 dir2)
94
+ flag = @command.__send__(:purge_option, arguments, /\A(-d|--deep)\z/)
95
+ assert_not_nil(flag)
96
+ assert_equal(%w(-f ubuntu dir1 file1 dir2), arguments)
97
+ value = @command.__send__(:purge_option, arguments, /\A-f\z/, true)
98
+ assert_equal("ubuntu", value)
99
+ assert_equal(%w(dir1 file1 dir2), arguments)
100
+ end
101
+ end
@@ -0,0 +1,17 @@
1
+ require "kikeru/container"
2
+
3
+ class ContainerTest < Test::Unit::TestCase
4
+ def setup
5
+ @container = Kikeru::Container.new
6
+ end
7
+
8
+ def test_no_argument
9
+ valid = @container.__send__(:file?, nil)
10
+ assert_false(valid)
11
+ end
12
+
13
+ def test_missing_file
14
+ valid = @container.__send__(:file?, "hoge")
15
+ assert_false(valid)
16
+ end
17
+ end
@@ -0,0 +1,40 @@
1
+ require "kikeru/logger"
2
+ require "stringio"
3
+
4
+ class LoggerTest < Test::Unit::TestCase
5
+ def setup
6
+ @logger = Kikeru::Logger.new
7
+ end
8
+
9
+ def test_info
10
+ s = ""
11
+ io = StringIO.new(s)
12
+ $stdout = io
13
+ message = <<-EOM
14
+ #{Kikeru::Command::USAGE}
15
+ If no argument, then search current directory.
16
+ Keybind:
17
+ n: next
18
+ p: prev
19
+ r: restart
20
+ q: quit
21
+ EOM
22
+ @logger.info(message)
23
+ $stdout = STDOUT
24
+ assert_equal(message, s)
25
+ end
26
+
27
+ def test_error
28
+ s = ""
29
+ io = StringIO.new(s)
30
+ $stderr = io
31
+ message = <<-EOM
32
+ Warning: valid file not found.
33
+ #{Kikeru::Command::USAGE}
34
+ Support file types: png, gif, jpeg(jpg). The others are...yet.
35
+ EOM
36
+ @logger.error(message)
37
+ $stderr = STDERR
38
+ assert_equal(message, s)
39
+ end
40
+ end
@@ -0,0 +1,13 @@
1
+ require "kikeru/window"
2
+
3
+ class WindowTest < Test::Unit::TestCase
4
+ def setup
5
+ @window = Kikeru::Window.new
6
+ end
7
+
8
+ def test_add_container
9
+ container = %w(a, b, c)
10
+ mock(container).shift { "a" }
11
+ @window.add_container(container)
12
+ end
13
+ end
metadata ADDED
@@ -0,0 +1,168 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kikeru
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Masafumi Yokoyama
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-05-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: gtk3
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: gstreamer
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: test-unit
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: test-unit-notify
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: test-unit-rr
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '1.3'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '1.3'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Kikeru is a keyboard friendly audio player by Ruby/GStreamer.
112
+ email:
113
+ - myokoym@gmail.com
114
+ executables:
115
+ - kikeru
116
+ extensions: []
117
+ extra_rdoc_files: []
118
+ files:
119
+ - .gitignore
120
+ - Gemfile
121
+ - LICENSE.txt
122
+ - NEWS.md
123
+ - README.md
124
+ - Rakefile
125
+ - bin/kikeru
126
+ - kikeru.gemspec
127
+ - lib/kikeru.rb
128
+ - lib/kikeru/command.rb
129
+ - lib/kikeru/container.rb
130
+ - lib/kikeru/logger.rb
131
+ - lib/kikeru/version.rb
132
+ - lib/kikeru/window.rb
133
+ - test/run-test.rb
134
+ - test/test-command.rb
135
+ - test/test-container.rb
136
+ - test/test-logger.rb
137
+ - test/test-window.rb
138
+ homepage: https://github.com/myokoym/kikeru
139
+ licenses:
140
+ - MIT
141
+ metadata: {}
142
+ post_install_message:
143
+ rdoc_options: []
144
+ require_paths:
145
+ - lib
146
+ required_ruby_version: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ required_rubygems_version: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - '>='
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
156
+ requirements: []
157
+ rubyforge_project:
158
+ rubygems_version: 2.0.0
159
+ signing_key:
160
+ specification_version: 4
161
+ summary: Keyboard Friendly Audio Player
162
+ test_files:
163
+ - test/run-test.rb
164
+ - test/test-command.rb
165
+ - test/test-container.rb
166
+ - test/test-logger.rb
167
+ - test/test-window.rb
168
+ has_rdoc: