beats-adapter-discogs 0.0.5

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.
@@ -0,0 +1,4 @@
1
+ $LOAD_PATH.unshift(File.expand_path('lib'))
2
+ require 'beats/adapter/discogs/handler'
3
+
4
+
@@ -0,0 +1,6 @@
1
+ module Beats
2
+ module Adapter
3
+ module Discogs
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,68 @@
1
+ require 'rexml/document'
2
+ require 'rexml/streamlistener'
3
+
4
+ module Beats
5
+ module Adapter
6
+ module Discogs
7
+
8
+ class ReleaseParser
9
+ include REXML::StreamListener
10
+
11
+ def initialize(&block)
12
+ @callback = block
13
+ end
14
+
15
+ def tag_start(name, attrs)
16
+ if name == 'release'
17
+ @release = {}
18
+ @tag_stack = []
19
+ else
20
+ @tag = name
21
+ end
22
+ @tag_stack.push name if @tag_stack
23
+ end
24
+
25
+ def text(txt)
26
+ case @tag
27
+ when 'title'
28
+ if @tag_stack[-2] == 'track'
29
+ @release[:tracks] ||= []
30
+ @release[:tracks] << txt
31
+ else
32
+ @release[:name] ||= txt
33
+ end
34
+ when 'name'
35
+ @release[:artist] ||= txt
36
+ end
37
+
38
+ end
39
+
40
+ def tag_end(name)
41
+ @tag_stack.pop
42
+ if name == 'release'
43
+ @release[:name] ||= 'Unknown title'
44
+ @release[:artist] ||= 'Unknown artist'
45
+ @release[:type] = 'Album'
46
+ @callback.call(@release)
47
+ end
48
+ end
49
+ end
50
+
51
+ class Handler
52
+ def initialize(args = [])
53
+ raise "Need an xml file to parse" unless args[0]
54
+ @xml_file = args[0].is_a?(File) ?
55
+ args[0] : File.n(args[0])
56
+ end
57
+
58
+ def each_release
59
+ parser = ReleaseParser.new do |release|
60
+ yield(release)
61
+ end
62
+ REXML::Document.parse_stream(@xml_file, parser)
63
+ end
64
+
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,39 @@
1
+ module Beats
2
+ module Adapter
3
+ module Discogs
4
+ class ReleaseParser
5
+ include REXML::StreamListener
6
+
7
+ def initialize(&block)
8
+ @callback = block
9
+ end
10
+
11
+ def tag_start(name, attrs)
12
+ if name == 'release'
13
+ @release = {}
14
+ else
15
+ @tag = name
16
+ end
17
+ end
18
+
19
+ def text(txt)
20
+ case @tag
21
+ when 'title'
22
+ @release[:name] ||= txt
23
+ when 'artist'
24
+ @release[:artist] ||= txt
25
+ end
26
+ end
27
+
28
+ def tag_end(name)
29
+ if name == 'release'
30
+ @release[:name] ||= 'Unknown title'
31
+ @release[:artist] ||= 'Unknown artist'
32
+ @release[:type] = 'Album'
33
+ @callback.call(@release)
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,59 @@
1
+ require 'rexml/document'
2
+ require 'rexml/streamlistener'
3
+
4
+ module Beats
5
+ module Adapter
6
+ module Discogs
7
+
8
+ class ReleaseParser
9
+ include REXML::StreamListener
10
+
11
+ def initialize(&block)
12
+ @callback = block
13
+ end
14
+
15
+ def tag_start(name, attrs)
16
+ if name == 'release'
17
+ @release = {}
18
+ else
19
+ @tag = name
20
+ end
21
+ end
22
+
23
+ def text(txt)
24
+ case @tag
25
+ when 'title'
26
+ @release[:name] ||= txt
27
+ when 'artist'
28
+ @release[:artist] ||= txt
29
+ end
30
+ end
31
+
32
+ def tag_end(name)
33
+ if name == 'release'
34
+ @release[:name] ||= 'Unknown title'
35
+ @release[:artist] ||= 'Unknown artist'
36
+ @release[:type] = 'Album'
37
+ @callback.call(@release)
38
+ end
39
+ end
40
+ end
41
+
42
+ class Handler
43
+ def initialize(args = [])
44
+ raise "Need an xml file to parse" unless args[0]
45
+ @xml_file = args[0].is_a?(File) ?
46
+ args[0] : File.new(args[0])
47
+ end
48
+
49
+ def each_release
50
+ parser = ReleaseParser.new do |release|
51
+ yield(release)
52
+ end
53
+ REXML::Document.parse_stream(@xml_file, parser)
54
+ end
55
+
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,7 @@
1
+ module Beats
2
+ module Adapter
3
+ module Discogs
4
+ VERSION = "0.0.5"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Beats
2
+ module Adapter
3
+ module Discogs
4
+ VERSION = "0.0.1"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,68 @@
1
+ require 'rexml/document'
2
+ require 'rexml/streamlistener'
3
+
4
+ module Beats
5
+ module Adapter
6
+ module Discogs
7
+
8
+ class ReleaseParser
9
+ include REXML::StreamListener
10
+
11
+ def initialize(&block)
12
+ @callback = block
13
+ end
14
+
15
+ def tag_start(name, attrs)
16
+ if name == 'release'
17
+ @release = {}
18
+ @tag_stack = []
19
+ else
20
+ @tag = name
21
+ end
22
+ @tag_stack.push name if @tag_stack
23
+ end
24
+
25
+ def text(txt)
26
+ case @tag
27
+ when 'title'
28
+ if @tag_stack[-2] == 'track'
29
+ @release[:tracks] ||= []
30
+ @release[:tracks] << txt
31
+ else
32
+ @release[:name] ||= txt
33
+ end
34
+ when 'name'
35
+ @release[:artist] ||= txt
36
+ end
37
+
38
+ end
39
+
40
+ def tag_end(name)
41
+ @tag_stack.pop
42
+ if name == 'release'
43
+ @release[:name] ||= 'Unknown title'
44
+ @release[:artist] ||= 'Unknown artist'
45
+ @release[:type] = 'Album'
46
+ @callback.call(@release)
47
+ end
48
+ end
49
+ end
50
+
51
+ class Handler
52
+ def initialize(args = [])
53
+ raise "Need an xml file to parse" unless args[0]
54
+ @xml_file = args[0].is_a?(File) ?
55
+ args[0] : File.new(args[0])
56
+ end
57
+
58
+ def each_release
59
+ parser = ReleaseParser.new do |release|
60
+ yield(release)
61
+ end
62
+ REXML::Document.parse_stream(@xml_file, parser)
63
+ end
64
+
65
+ end
66
+ end
67
+ end
68
+ end
metadata ADDED
@@ -0,0 +1,69 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: beats-adapter-discogs
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.5
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Sebastian Falk
9
+ - Niklas Holmgren
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-02-23 00:00:00.000000000Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rspec
17
+ requirement: &24276300 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: *24276300
26
+ description: ! 'A parser to generate beats input from the discogs release format
27
+
28
+ '
29
+ email:
30
+ - sebastian dot falk at netlight dot se
31
+ - niklas dot holmgren at prdaisy dot com
32
+ executables: []
33
+ extensions: []
34
+ extra_rdoc_files: []
35
+ files:
36
+ - lib/beats-adapter-discogs.rb~
37
+ - lib/beats-adapter-discogs.rb
38
+ - lib/beats/adapter/discogs/handler.rb
39
+ - lib/beats-adapter-discogs/version.rb
40
+ - lib/beats-adapter-discogs/#release_parser.rb#
41
+ - lib/beats-adapter-discogs/handler.rb~
42
+ - lib/beats-adapter-discogs/#handler.rb#
43
+ - lib/beats-adapter-discogs/version.rb~
44
+ homepage: http://github.com/ProjectDaisy/beats-adapter-discogs
45
+ licenses: []
46
+ post_install_message:
47
+ rdoc_options: []
48
+ require_paths:
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ requirements: []
63
+ rubyforge_project:
64
+ rubygems_version: 1.8.17
65
+ signing_key:
66
+ specification_version: 3
67
+ summary: A parser to generate beats input from the discogs release format
68
+ test_files: []
69
+ has_rdoc: