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 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: []