xspf2m3u 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,10 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ tmp/*
6
+ test/*
7
+ doc/*
8
+ html/*
9
+ rdoc/*
10
+ .yard/*
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
@@ -0,0 +1,14 @@
1
+ language: ruby
2
+ rvm:
3
+ - rbx-18mode
4
+ - rbx-19mode
5
+ - 1.8.7
6
+ - 1.9.2
7
+ - 1.9.3
8
+ - ruby-head
9
+
10
+ branches:
11
+ only:
12
+ - master
13
+ - stable
14
+
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
+ [![Build Status](https://secure.travis-ci.org/argent-smith/xspf2m3u.png)](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
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "xspf2m3u"
data/cucumber.yml ADDED
@@ -0,0 +1,2 @@
1
+ default: --color
2
+ autotest: --color --tags ~@wip --format pretty
@@ -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
+ """
@@ -0,0 +1,4 @@
1
+ Then /^the version display should be correct$/ do
2
+ all_output.should match(/#{Xspf2m3u::VERSION}/)
3
+ end
4
+
@@ -0,0 +1,8 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'aruba/cucumber'
5
+
6
+ Before do
7
+ @aruba_timeout_seconds = 20
8
+ end
@@ -0,0 +1,6 @@
1
+ module Xspf2m3u
2
+ module CucumberHelpers
3
+ end
4
+ end
5
+
6
+ World(Xspf2m3u::CucumberHelpers)
@@ -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,3 @@
1
+ module Xspf2m3u
2
+ VERSION = "0.0.2"
3
+ 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
@@ -0,0 +1,8 @@
1
+ require "rubygems"
2
+ require "bundler/setup"
3
+
4
+ require 'rspec'
5
+
6
+ RSpec.configure do |config|
7
+ config.fail_fast = true
8
+ end
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: []