xspf2m3u 0.0.2
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/.autotest +13 -0
- data/.gitignore +10 -0
- data/.rspec +1 -0
- data/.rvmrc +1 -0
- data/.travis.yml +14 -0
- data/Gemfile +9 -0
- data/LICENSE.md +20 -0
- data/LICENSE.rdoc +20 -0
- data/README.md +31 -0
- data/README.rdoc +29 -0
- data/Rakefile +53 -0
- data/bin/xspf2m3u +3 -0
- data/cucumber.yml +2 -0
- data/features/CLI/toplevel.feature +65 -0
- data/features/step_definitions/xspf2m3u_steps.rb +4 -0
- data/features/support/env.rb +8 -0
- data/features/support/helpers.rb +6 -0
- data/lib/xspf2m3u/app.rb +53 -0
- data/lib/xspf2m3u/help.rb +45 -0
- data/lib/xspf2m3u/version.rb +3 -0
- data/lib/xspf2m3u/xsl/xspf2m3u.xsl +18 -0
- data/lib/xspf2m3u/xspf_patch.rb +32 -0
- data/lib/xspf2m3u.rb +16 -0
- data/spec/spec_helper.rb +8 -0
- data/xspf2m3u.gemspec +32 -0
- metadata +181 -0
data/.autotest
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
Autotest.add_hook(:initialize) {|at|
|
2
|
+
%w{.git .svn .hg .DS_Store .rvmrc ._* vendor test tmp log doc var}.each do |exception|
|
3
|
+
at.add_exception(exception)
|
4
|
+
end
|
5
|
+
at.clear_mappings # take out the default (test/test*rb)
|
6
|
+
at.add_mapping(%r{^(lib)|(util)/.*\.rb$}) {|f, _|
|
7
|
+
Dir['spec/**/*.rb']
|
8
|
+
}
|
9
|
+
at.add_mapping(%r{^spec/.*\.rb$}) {|filename, _|
|
10
|
+
filename
|
11
|
+
}
|
12
|
+
nil
|
13
|
+
}
|
data/.gitignore
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
-c -f d
|
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm --create use 1.9.3@xspf2m3u
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
|
3
|
+
gem "autotest-notification", :git => 'git://github.com/carlosbrando/autotest-notification.git', :branch => 'master'
|
4
|
+
gem "aruba", :git => 'git://github.com/cucumber/aruba.git', :branch => 'master'
|
5
|
+
|
6
|
+
# Specify your gem's dependencies in xspf2m3u.gemspec
|
7
|
+
gemspec
|
8
|
+
gem 'cucumber'
|
9
|
+
gem 'rspec'
|
data/LICENSE.md
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2012 Pavel Argentov
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/LICENSE.rdoc
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2012 Pavel Argentov
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# Xspf2m3u
|
2
|
+
|
3
|
+
[](http://travis-ci.org/argent-smith/xspf2m3u)
|
4
|
+
|
5
|
+
__Author:__ Pavel Argentov <argentoff@gmail.com>
|
6
|
+
|
7
|
+
## Usage:
|
8
|
+
|
9
|
+
xspf2m3u help
|
10
|
+
|
11
|
+
xspf2m3u -i infile.xspf -o outfile.m3u
|
12
|
+
|
13
|
+
This CLI program converts a playlist in XSPF format into Extended M3U playlist.
|
14
|
+
|
15
|
+
## JRuby notice
|
16
|
+
|
17
|
+
Since this gem depends on no-jruby-compatible "ruby-xslt", it would not
|
18
|
+
build/install/work on JRuby.
|
19
|
+
|
20
|
+
## Feedback
|
21
|
+
|
22
|
+
Feel free to fork/patch/issue this thing. If you are on GitHub, you already
|
23
|
+
know how to do this :)
|
24
|
+
|
25
|
+
## Copyright
|
26
|
+
|
27
|
+
Copyright (c) 2012 Pavel Argentov. See LICENSE for details.
|
28
|
+
|
29
|
+
## LICENSE
|
30
|
+
|
31
|
+
MIT, see LICENSE.md or LICENSE.rdoc in the gem's package.
|
data/README.rdoc
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
= Xspf2m3u
|
2
|
+
|
3
|
+
*Author:* Pavel Argentov <argentoff@gmail.com>
|
4
|
+
|
5
|
+
== Usage:
|
6
|
+
|
7
|
+
xspf2m3u help
|
8
|
+
|
9
|
+
xspf2m3u -i infile.xspf -o outfile.m3u
|
10
|
+
|
11
|
+
This CLI program converts a playlist in XSPF format into Extended M3U playlist.
|
12
|
+
|
13
|
+
== JRuby notice
|
14
|
+
|
15
|
+
Since this gem depends on no-jruby-compatible "ruby-xslt", it would not
|
16
|
+
build/install/work on JRuby.
|
17
|
+
|
18
|
+
== Feedback
|
19
|
+
|
20
|
+
Feel free to fork/patch/issue this thing. If you are on GitHub, you already
|
21
|
+
know how to do this :)
|
22
|
+
|
23
|
+
== Copyright
|
24
|
+
|
25
|
+
Copyright (c) 2012 Pavel Argentov. See LICENSE for details.
|
26
|
+
|
27
|
+
== LICENSE
|
28
|
+
|
29
|
+
MIT, see LICENSE.md or LICENSE.rdoc in the gem's package.
|
data/Rakefile
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "bundler/setup"
|
3
|
+
require "bundler/gem_tasks"
|
4
|
+
|
5
|
+
require 'cucumber/rake/task'
|
6
|
+
Cucumber::Rake::Task.new(:features) do |features|
|
7
|
+
features.cucumber_opts = "features --tags ~@wip --format progress"
|
8
|
+
end
|
9
|
+
namespace :features do
|
10
|
+
Cucumber::Rake::Task.new(:pretty, "Run Cucumber features with output in pretty format") do |features|
|
11
|
+
features.cucumber_opts = "features --tags ~@wip --format pretty"
|
12
|
+
end
|
13
|
+
Cucumber::Rake::Task.new(:wip, "Run @wip (Work In Progress) Cucumber features") do |features|
|
14
|
+
features.cucumber_opts = "features --tags @wip --format progress"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
require 'rspec/core/rake_task'
|
19
|
+
desc "Run specs"
|
20
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
21
|
+
t.rspec_opts = %w(--color)
|
22
|
+
end
|
23
|
+
namespace :spec do
|
24
|
+
desc "Run specs with output in documentation format"
|
25
|
+
RSpec::Core::RakeTask.new(:doc) do |t|
|
26
|
+
t.rspec_opts = ["--color", "--format d"]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
desc "Default autotest task"
|
31
|
+
task :autotest => "autotest:spec"
|
32
|
+
|
33
|
+
namespace :autotest do
|
34
|
+
desc "Start Autotest CI"
|
35
|
+
task :spec => [".autotest", ".rspec"] do
|
36
|
+
sh "bundle exec autotest"
|
37
|
+
end
|
38
|
+
desc "autotest + features"
|
39
|
+
task :features => "cucumber.yml" do
|
40
|
+
sh "(bundle exec env AUTOFEATURE=true autotest)"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
rdoc_title = "Xspf2m3u: the playlist converter"
|
45
|
+
|
46
|
+
require 'rdoc/task'
|
47
|
+
Rake::RDocTask.new do |rd|
|
48
|
+
rd.title = rdoc_title
|
49
|
+
rd.main = "README.rdoc"
|
50
|
+
rd.rdoc_files.include("README.rdoc", "LICENSE.rdoc", "lib/**/*.rb")
|
51
|
+
end
|
52
|
+
|
53
|
+
task :default => [:spec, :features]
|
data/bin/xspf2m3u
ADDED
data/cucumber.yml
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
Feature: Toplevel application
|
2
|
+
As a user
|
3
|
+
In order to have an m3u playlist file
|
4
|
+
I run a converter application
|
5
|
+
|
6
|
+
Background: xspf sample
|
7
|
+
Given a file named "1.xspf" with:
|
8
|
+
"""
|
9
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
10
|
+
<playlist version="1" xmlns="http://xspf.org/ns/0/" xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/">
|
11
|
+
<title>Все каналы ТВ и FM</title>
|
12
|
+
<trackList>
|
13
|
+
<track>
|
14
|
+
<location>http://1tv.tv.lan</location>
|
15
|
+
<title>TV : Первый канал</title>
|
16
|
+
<image>http://tv.lan/img/1tv.jpg</image>
|
17
|
+
</track>
|
18
|
+
</trackList>
|
19
|
+
</playlist>
|
20
|
+
"""
|
21
|
+
|
22
|
+
Scenario: running the app without options
|
23
|
+
When I run `xspf2m3u`
|
24
|
+
Then the output should contain "No value"
|
25
|
+
|
26
|
+
Scenario Outline: help display
|
27
|
+
When I run `xspf2m3u <h_key>`
|
28
|
+
Then the output should contain "Usage"
|
29
|
+
Examples:
|
30
|
+
| h_key |
|
31
|
+
| help |
|
32
|
+
| -h |
|
33
|
+
| --help |
|
34
|
+
|
35
|
+
Scenario Outline: displaying the version number
|
36
|
+
When I run `xspf2m3u <v_key>`
|
37
|
+
Then the version display should be correct
|
38
|
+
Examples:
|
39
|
+
| v_key |
|
40
|
+
| version |
|
41
|
+
| -V |
|
42
|
+
| --version |
|
43
|
+
|
44
|
+
Scenario Outline: conversion run variants
|
45
|
+
When I run `xspf2m3u <task> <from> <to>`
|
46
|
+
Then the output should match /<partial_output>/
|
47
|
+
And a file named "<file>" should exist
|
48
|
+
And a file named "<no_file>" should not exist
|
49
|
+
Examples:
|
50
|
+
| task | from | to | file | no_file | partial_output |
|
51
|
+
| | | -o 1.m3u | 1.xspf | 1.m3u | No value |
|
52
|
+
| | -i 1.xspf | | 1.xspf | 1.m3u | No value |
|
53
|
+
| convert | | -o 1.m3u | 1.xspf | 1.m3u | No value |
|
54
|
+
| convert | -i 1.xspf | | 1.xspf | 1.m3u | No value |
|
55
|
+
| | -i 1.xspf | -o 1.m3u | 1.m3u | | create +1.m3u |
|
56
|
+
| convert | -i 1.xspf | -o 1.m3u | 1.m3u | | create +1.m3u |
|
57
|
+
|
58
|
+
Scenario: conversion should be correct
|
59
|
+
When I run `xspf2m3u -i 1.xspf -o 1.m3u`
|
60
|
+
Then the file "1.m3u" should contain exactly:
|
61
|
+
"""
|
62
|
+
#EXTM3U
|
63
|
+
#EXTINF:-1,TV : Первый канал
|
64
|
+
http://1tv.tv.lan
|
65
|
+
"""
|
data/lib/xspf2m3u/app.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
module Xspf2m3u
|
2
|
+
# Top-level app
|
3
|
+
class App < Thor
|
4
|
+
|
5
|
+
include Thor::Actions
|
6
|
+
|
7
|
+
map %w{-V --version} => :version
|
8
|
+
|
9
|
+
desc "version", "Displays the program's version"
|
10
|
+
def version
|
11
|
+
say "xspf2m3u version #{VERSION}"
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "convert", "Runs the converter"
|
15
|
+
|
16
|
+
method_option :infile,
|
17
|
+
:desc => "Input file",
|
18
|
+
:aliases => ["-i"],
|
19
|
+
:type => :string,
|
20
|
+
:required => true
|
21
|
+
|
22
|
+
method_option :outfile,
|
23
|
+
:desc => "Output file",
|
24
|
+
:aliases => ["-o"],
|
25
|
+
:type => :string,
|
26
|
+
:required => true
|
27
|
+
|
28
|
+
def convert
|
29
|
+
from = options[:infile]
|
30
|
+
to = options[:outfile]
|
31
|
+
|
32
|
+
begin
|
33
|
+
xspf = XSPF.new(File.read from)
|
34
|
+
create_file to do
|
35
|
+
xspf.to_xm3u
|
36
|
+
end
|
37
|
+
rescue Errno::ENOENT => message
|
38
|
+
raise Thor::Error, message
|
39
|
+
rescue NoMethodError
|
40
|
+
raise Thor::Error, "Error parsing #{from}"
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
default_task :convert
|
46
|
+
|
47
|
+
def help task = nil, subcommand = false
|
48
|
+
say Help.general_message if task.nil?
|
49
|
+
super
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Xspf2m3u
|
2
|
+
|
3
|
+
# Help helpers :)
|
4
|
+
class Help
|
5
|
+
|
6
|
+
# Toplevel program's banner.
|
7
|
+
PROG_BANNER = <<-EOF.gsub(/^ {4}/, '')
|
8
|
+
|
9
|
+
xspf -> m3u converter
|
10
|
+
|
11
|
+
EOF
|
12
|
+
|
13
|
+
# Toplevel program's usage message.
|
14
|
+
GENERAL_USAGE = <<-EOF.gsub(/^ {4}/, '')
|
15
|
+
|
16
|
+
xspf2m3u [task] [options]
|
17
|
+
|
18
|
+
Converts xspf playlist file (-i option) to m3u playlist file (-o option).
|
19
|
+
|
20
|
+
EOF
|
21
|
+
|
22
|
+
# Usage example
|
23
|
+
EXAMPLE = <<-EOF.gsub(/^ {4}/, '')
|
24
|
+
|
25
|
+
xspf2m3u -i 1.xspf -o 1.m3u
|
26
|
+
|
27
|
+
EOF
|
28
|
+
|
29
|
+
|
30
|
+
class << self
|
31
|
+
|
32
|
+
# General help message.
|
33
|
+
def general_message
|
34
|
+
<<-EOF.gsub(/^ {8}/, '')
|
35
|
+
Xspf2m3u:
|
36
|
+
#{PROG_BANNER}
|
37
|
+
Usage:
|
38
|
+
#{GENERAL_USAGE}
|
39
|
+
Example:
|
40
|
+
#{EXAMPLE}
|
41
|
+
EOF
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<!--
|
2
|
+
xspf2m3u.xsl: transform XSPF to Extended M3U
|
3
|
+
author: Pavel Argentov <argentoff@gmail.com>
|
4
|
+
-->
|
5
|
+
<xsl:stylesheet version = '1.0'
|
6
|
+
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
|
7
|
+
xmlns:xspf="http://xspf.org/ns/0/">
|
8
|
+
<xsl:output method="text" indent="no"/>
|
9
|
+
<xsl:template match="/">
|
10
|
+
<xsl:text>#EXTM3U</xsl:text>
|
11
|
+
<xsl:for-each select="//xspf:trackList/xspf:track">
|
12
|
+
#EXTINF:-1,<xsl:value-of select="./xspf:title"/>
|
13
|
+
<xsl:text>
|
14
|
+
</xsl:text>
|
15
|
+
<xsl:value-of select="./xspf:location"/>
|
16
|
+
</xsl:for-each>
|
17
|
+
</xsl:template>
|
18
|
+
</xsl:stylesheet>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# Extended m3u format driver for gem 'xspf'
|
2
|
+
module XSPFPatch
|
3
|
+
|
4
|
+
def self.included(base)
|
5
|
+
base.extend ClassMethods
|
6
|
+
base.class_eval do
|
7
|
+
|
8
|
+
end
|
9
|
+
base.send :include, InstanceMethods
|
10
|
+
end # self.included
|
11
|
+
|
12
|
+
module ClassMethods
|
13
|
+
|
14
|
+
end # ClassMethods
|
15
|
+
|
16
|
+
module InstanceMethods
|
17
|
+
|
18
|
+
def to_xm3u
|
19
|
+
xslt_path = File.join(File.dirname(__FILE__), "xsl", "xspf2m3u.xsl")
|
20
|
+
xslt = XML::XSLT.new
|
21
|
+
xslt.xml = self.to_xml
|
22
|
+
xslt.xsl = REXML::Document.new(File.new(xslt_path))
|
23
|
+
xslt.serve
|
24
|
+
end
|
25
|
+
|
26
|
+
end # InstanceMethods
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
class XSPF
|
31
|
+
include XSPFPatch
|
32
|
+
end
|
data/lib/xspf2m3u.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# from thor
|
2
|
+
require 'thor'
|
3
|
+
require 'thor/group'
|
4
|
+
|
5
|
+
# functionality
|
6
|
+
require 'xspf'
|
7
|
+
|
8
|
+
# ourselves
|
9
|
+
require "xspf2m3u/xspf_patch"
|
10
|
+
require "xspf2m3u/version"
|
11
|
+
require "xspf2m3u/help"
|
12
|
+
require "xspf2m3u/app"
|
13
|
+
|
14
|
+
module Xspf2m3u
|
15
|
+
App.start
|
16
|
+
end
|
data/spec/spec_helper.rb
ADDED
data/xspf2m3u.gemspec
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "xspf2m3u/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "xspf2m3u"
|
7
|
+
s.version = Xspf2m3u::VERSION
|
8
|
+
s.authors = ["Pavel Argentov"]
|
9
|
+
s.email = ["argentoff@gmail.com"]
|
10
|
+
s.homepage = "https://github.com/argent-smith/xspf2m3u"
|
11
|
+
s.summary = %q{Tiny simple little dumb xspf -> extended m3u converter}
|
12
|
+
s.description = %q{Usage: xspf2m3u -i one.xspf -o two.m3u}
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
|
19
|
+
s.extra_rdoc_files = %w{README.rdoc LICENSE.rdoc}
|
20
|
+
s.rdoc_options = %W{--main README.rdoc --line-numbers}
|
21
|
+
|
22
|
+
s.add_development_dependency "rake"
|
23
|
+
s.add_development_dependency "bddgen"
|
24
|
+
s.add_development_dependency "aruba"
|
25
|
+
s.add_development_dependency "ZenTest"
|
26
|
+
s.add_development_dependency "autotest-notification"
|
27
|
+
s.add_development_dependency "pry"
|
28
|
+
s.add_development_dependency "gemcutter"
|
29
|
+
|
30
|
+
s.add_runtime_dependency "thor"
|
31
|
+
s.add_runtime_dependency "xspf"
|
32
|
+
end
|
metadata
ADDED
@@ -0,0 +1,181 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: xspf2m3u
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Pavel Argentov
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-02-28 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: &338632460 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *338632460
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: bddgen
|
27
|
+
requirement: &338631750 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *338631750
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: aruba
|
38
|
+
requirement: &338630880 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *338630880
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: ZenTest
|
49
|
+
requirement: &338629600 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *338629600
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: autotest-notification
|
60
|
+
requirement: &338644900 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *338644900
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry
|
71
|
+
requirement: &338644090 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *338644090
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: gemcutter
|
82
|
+
requirement: &338643030 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *338643030
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: thor
|
93
|
+
requirement: &338641460 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
type: :runtime
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *338641460
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: xspf
|
104
|
+
requirement: &338640340 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :runtime
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: *338640340
|
113
|
+
description: ! 'Usage: xspf2m3u -i one.xspf -o two.m3u'
|
114
|
+
email:
|
115
|
+
- argentoff@gmail.com
|
116
|
+
executables:
|
117
|
+
- xspf2m3u
|
118
|
+
extensions: []
|
119
|
+
extra_rdoc_files:
|
120
|
+
- README.rdoc
|
121
|
+
- LICENSE.rdoc
|
122
|
+
files:
|
123
|
+
- .autotest
|
124
|
+
- .gitignore
|
125
|
+
- .rspec
|
126
|
+
- .rvmrc
|
127
|
+
- .travis.yml
|
128
|
+
- Gemfile
|
129
|
+
- LICENSE.md
|
130
|
+
- LICENSE.rdoc
|
131
|
+
- README.md
|
132
|
+
- README.rdoc
|
133
|
+
- Rakefile
|
134
|
+
- bin/xspf2m3u
|
135
|
+
- cucumber.yml
|
136
|
+
- features/CLI/toplevel.feature
|
137
|
+
- features/step_definitions/xspf2m3u_steps.rb
|
138
|
+
- features/support/env.rb
|
139
|
+
- features/support/helpers.rb
|
140
|
+
- lib/xspf2m3u.rb
|
141
|
+
- lib/xspf2m3u/app.rb
|
142
|
+
- lib/xspf2m3u/help.rb
|
143
|
+
- lib/xspf2m3u/version.rb
|
144
|
+
- lib/xspf2m3u/xsl/xspf2m3u.xsl
|
145
|
+
- lib/xspf2m3u/xspf_patch.rb
|
146
|
+
- spec/spec_helper.rb
|
147
|
+
- xspf2m3u.gemspec
|
148
|
+
homepage: https://github.com/argent-smith/xspf2m3u
|
149
|
+
licenses: []
|
150
|
+
post_install_message:
|
151
|
+
rdoc_options:
|
152
|
+
- --main
|
153
|
+
- README.rdoc
|
154
|
+
- --line-numbers
|
155
|
+
require_paths:
|
156
|
+
- lib
|
157
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
158
|
+
none: false
|
159
|
+
requirements:
|
160
|
+
- - ! '>='
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: '0'
|
163
|
+
segments:
|
164
|
+
- 0
|
165
|
+
hash: -53171825
|
166
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
167
|
+
none: false
|
168
|
+
requirements:
|
169
|
+
- - ! '>='
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: '0'
|
172
|
+
segments:
|
173
|
+
- 0
|
174
|
+
hash: -53171825
|
175
|
+
requirements: []
|
176
|
+
rubyforge_project:
|
177
|
+
rubygems_version: 1.8.17
|
178
|
+
signing_key:
|
179
|
+
specification_version: 3
|
180
|
+
summary: Tiny simple little dumb xspf -> extended m3u converter
|
181
|
+
test_files: []
|