smg 0.1.0 → 0.2.0

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.
Files changed (42) hide show
  1. data/README.rdoc +6 -62
  2. data/examples/discogs/label.rb +62 -0
  3. data/examples/discogs/search.rb +60 -0
  4. data/examples/plant.rb +1 -2
  5. data/examples/twitter.rb +8 -5
  6. data/examples/weather.rb +146 -0
  7. data/lib/smg.rb +4 -0
  8. data/lib/smg/document.rb +25 -8
  9. data/lib/smg/http.rb +66 -0
  10. data/lib/smg/http/exceptions.rb +37 -0
  11. data/lib/smg/http/request.rb +126 -0
  12. data/lib/smg/mapping.rb +11 -1
  13. data/lib/smg/mapping/element.rb +29 -13
  14. data/lib/smg/mapping/typecasts.rb +2 -1
  15. data/lib/smg/model.rb +9 -3
  16. data/lib/smg/resource.rb +5 -1
  17. data/spec/collect_spec.rb +254 -0
  18. data/spec/context_spec.rb +189 -0
  19. data/spec/extract_spec.rb +200 -0
  20. data/spec/filtering_spec.rb +164 -0
  21. data/spec/fixtures/discogs/948224.xml +1 -0
  22. data/spec/fixtures/discogs/Enzyme+Records.xml +9 -0
  23. data/spec/fixtures/discogs/Genosha+Recordings.xml +13 -0
  24. data/spec/fixtures/discogs/Ophidian.xml +6 -0
  25. data/spec/fixtures/fake/malus.xml +18 -0
  26. data/spec/fixtures/fake/valve.xml +8 -0
  27. data/spec/fixtures/twitter/pipopolam.xml +46 -0
  28. data/spec/fixtures/yahoo.weather.com.xml +50 -0
  29. data/spec/http/request_spec.rb +186 -0
  30. data/spec/http/shared/automatic.rb +43 -0
  31. data/spec/http/shared/non_automatic.rb +36 -0
  32. data/spec/http/shared/redirectable.rb +30 -0
  33. data/spec/http_spec.rb +76 -0
  34. data/spec/lib/helpers/http_helpers.rb +27 -0
  35. data/spec/lib/matchers/instance_methods.rb +38 -0
  36. data/spec/mapping/element_spec.rb +241 -0
  37. data/spec/mapping/typecasts_spec.rb +52 -0
  38. data/spec/resource_spec.rb +30 -0
  39. data/spec/root_spec.rb +26 -0
  40. data/spec/spec_helper.rb +23 -0
  41. metadata +53 -10
  42. data/examples/discogs.rb +0 -39
@@ -0,0 +1,26 @@
1
+ require File.expand_path File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ describe SMG::Model, ".root" do
4
+
5
+ before :each do
6
+ @klass = Class.new { include SMG::Resource }
7
+ end
8
+
9
+ it "defines the root tag for further mapping" do
10
+ @klass.root 'foo'
11
+ @klass.extract 'a'
12
+ @klass.mapping.elements.should have_key ['foo','a']
13
+ end
14
+
15
+ it "could be redefined on-the-fly" do
16
+ @klass.root 'foo'
17
+ @klass.extract 'a'
18
+ @klass.root 'bar'
19
+ @klass.extract 'b'
20
+ @klass.mapping.elements.should have_key ['foo','a']
21
+ @klass.mapping.elements.should have_key ['bar','b']
22
+ end
23
+
24
+ end
25
+
26
+ # EOF
@@ -0,0 +1,23 @@
1
+ require 'pathname'
2
+ require 'rubygems'
3
+
4
+ begin
5
+
6
+ gem 'rspec', '>=1.2'
7
+ require 'spec'
8
+
9
+ SPEC_ROOT = Pathname(__FILE__).dirname.expand_path
10
+
11
+ require SPEC_ROOT + 'lib/matchers/instance_methods'
12
+ require SPEC_ROOT + 'lib/helpers/http_helpers'
13
+
14
+ FIXTURES_DIR = SPEC_ROOT + 'fixtures'
15
+
16
+ dir = SPEC_ROOT.parent.join('lib').to_s
17
+ $:.unshift(dir) unless $:.include?(dir)
18
+ require 'smg'
19
+
20
+ rescue LoadError
21
+ end
22
+
23
+ # EOF
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 1
7
+ - 2
8
8
  - 0
9
- version: 0.1.0
9
+ version: 0.2.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - SSDany
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-29 00:00:00 +04:00
17
+ date: 2010-06-13 00:00:00 +04:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -30,10 +30,24 @@ dependencies:
30
30
  version: "1.3"
31
31
  type: :runtime
32
32
  version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: addressable
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ segments:
41
+ - 2
42
+ - 1
43
+ - 1
44
+ version: 2.1.1
45
+ type: :runtime
46
+ version_requirements: *id002
33
47
  description: |
34
48
  XML to Object mapping library with simple declarative syntax.
35
- Supports 'contextual' parsing.
36
- Backed by Nokogiri's SAX Parser.
49
+ Supports 'contextual' parsing and conditions.
50
+ Provides a simple HTTP interaction solution.
37
51
 
38
52
  email: inadsence@gmail.com
39
53
  executables: []
@@ -44,11 +58,10 @@ extra_rdoc_files:
44
58
  - README.rdoc
45
59
  files:
46
60
  - README.rdoc
47
- - examples/helper.rb
48
- - examples/discogs.rb
49
- - examples/twitter.rb
50
- - examples/plant.rb
51
61
  - lib/smg/document.rb
62
+ - lib/smg/http/exceptions.rb
63
+ - lib/smg/http/request.rb
64
+ - lib/smg/http.rb
52
65
  - lib/smg/mapping/element.rb
53
66
  - lib/smg/mapping/typecasts.rb
54
67
  - lib/smg/mapping.rb
@@ -56,8 +69,38 @@ files:
56
69
  - lib/smg/resource.rb
57
70
  - lib/smg/version.rb
58
71
  - lib/smg.rb
72
+ - examples/discogs/label.rb
73
+ - examples/discogs/search.rb
74
+ - examples/helper.rb
75
+ - examples/plant.rb
76
+ - examples/twitter.rb
77
+ - examples/weather.rb
78
+ - spec/collect_spec.rb
79
+ - spec/context_spec.rb
80
+ - spec/extract_spec.rb
81
+ - spec/filtering_spec.rb
82
+ - spec/fixtures/discogs/948224.xml
83
+ - spec/fixtures/discogs/Enzyme+Records.xml
84
+ - spec/fixtures/discogs/Genosha+Recordings.xml
85
+ - spec/fixtures/discogs/Ophidian.xml
86
+ - spec/fixtures/fake/malus.xml
87
+ - spec/fixtures/fake/valve.xml
88
+ - spec/fixtures/twitter/pipopolam.xml
89
+ - spec/fixtures/yahoo.weather.com.xml
90
+ - spec/http/request_spec.rb
91
+ - spec/http/shared/automatic.rb
92
+ - spec/http/shared/non_automatic.rb
93
+ - spec/http/shared/redirectable.rb
94
+ - spec/http_spec.rb
95
+ - spec/lib/helpers/http_helpers.rb
96
+ - spec/lib/matchers/instance_methods.rb
97
+ - spec/mapping/element_spec.rb
98
+ - spec/mapping/typecasts_spec.rb
99
+ - spec/resource_spec.rb
100
+ - spec/root_spec.rb
101
+ - spec/spec_helper.rb
59
102
  has_rdoc: true
60
- homepage:
103
+ homepage: http://github.com/SSDany/smg
61
104
  licenses: []
62
105
 
63
106
  post_install_message:
@@ -1,39 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
2
-
3
- class Label
4
-
5
- class Release
6
-
7
- include SMG::Resource
8
-
9
- extract 'release' , :at => :id, :as => :discogs_id, :class => :integer
10
- extract 'release' , :at => :status
11
-
12
- extract 'release/title'
13
- extract 'release/catno'
14
- extract 'release/artist'
15
-
16
- end
17
-
18
- include SMG::Resource
19
-
20
- root 'resp/label'
21
- extract 'name'
22
- extract 'profile'
23
- collect 'releases/release' , :as => :releases, :class => Release, :context => [:with_releases]
24
-
25
- end
26
-
27
- data = File.read(ROOT.join('spec/fixtures/discogs/Genosha+Recordings.xml'))
28
-
29
- label = Label.parse(data)
30
- puts label.name
31
- puts label.profile
32
- puts label.releases.map { |release| "#{release.catno}: #{release.title}" }.join("\n")
33
-
34
- label = Label.parse(data,:with_releases)
35
- puts label.name
36
- puts label.profile
37
- puts label.releases.map { |release| "#{release.catno}: #{release.title}" }.join("\n")
38
-
39
- # EOF