badcarl-dm-googlebase 0.0.4 → 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.
- data/Rakefile +0 -1
- data/VERSION +1 -1
- data/dm-googlebase.gemspec +3 -6
- data/lib/googlebase/adapter.rb +12 -14
- data/lib/googlebase/product_properties.rb +3 -4
- data/spec/googlebase/adapter_spec.rb +1 -1
- data/spec/spec_matchers.rb +4 -4
- metadata +2 -12
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.5
|
data/dm-googlebase.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{dm-googlebase}
|
5
|
-
s.version = "0.0.
|
5
|
+
s.version = "0.0.5"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Carl Porth"]
|
9
|
-
s.date = %q{2009-07-
|
9
|
+
s.date = %q{2009-07-31}
|
10
10
|
s.email = %q{badcarl@gmail.com}
|
11
11
|
s.extra_rdoc_files = [
|
12
12
|
"LICENSE",
|
@@ -33,7 +33,7 @@ Gem::Specification.new do |s|
|
|
33
33
|
s.homepage = %q{http://github.com/badcarl/dm-googlebase}
|
34
34
|
s.rdoc_options = ["--charset=UTF-8"]
|
35
35
|
s.require_paths = ["lib"]
|
36
|
-
s.rubygems_version = %q{1.3.
|
36
|
+
s.rubygems_version = %q{1.3.5}
|
37
37
|
s.summary = %q{A DataMapper adapter for Google Base}
|
38
38
|
s.test_files = [
|
39
39
|
"spec/googlebase/adapter_spec.rb",
|
@@ -53,7 +53,6 @@ Gem::Specification.new do |s|
|
|
53
53
|
s.add_runtime_dependency(%q<dm-validations>, [">= 0.10.0"])
|
54
54
|
s.add_runtime_dependency(%q<gdata>, [">= 0"])
|
55
55
|
s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
|
56
|
-
s.add_runtime_dependency(%q<builder>, [">= 0"])
|
57
56
|
s.add_development_dependency(%q<dm-sweatshop>, [">= 0.10.0"])
|
58
57
|
else
|
59
58
|
s.add_dependency(%q<dm-core>, [">= 0.10.0"])
|
@@ -61,7 +60,6 @@ Gem::Specification.new do |s|
|
|
61
60
|
s.add_dependency(%q<dm-validations>, [">= 0.10.0"])
|
62
61
|
s.add_dependency(%q<gdata>, [">= 0"])
|
63
62
|
s.add_dependency(%q<nokogiri>, [">= 0"])
|
64
|
-
s.add_dependency(%q<builder>, [">= 0"])
|
65
63
|
s.add_dependency(%q<dm-sweatshop>, [">= 0.10.0"])
|
66
64
|
end
|
67
65
|
else
|
@@ -70,7 +68,6 @@ Gem::Specification.new do |s|
|
|
70
68
|
s.add_dependency(%q<dm-validations>, [">= 0.10.0"])
|
71
69
|
s.add_dependency(%q<gdata>, [">= 0"])
|
72
70
|
s.add_dependency(%q<nokogiri>, [">= 0"])
|
73
|
-
s.add_dependency(%q<builder>, [">= 0"])
|
74
71
|
s.add_dependency(%q<dm-sweatshop>, [">= 0.10.0"])
|
75
72
|
end
|
76
73
|
end
|
data/lib/googlebase/adapter.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'dm-core'
|
2
2
|
require 'gdata'
|
3
3
|
require 'nokogiri'
|
4
|
-
require 'builder'
|
5
4
|
|
6
5
|
module DataMapper
|
7
6
|
class Property
|
@@ -114,25 +113,24 @@ module GoogleBase
|
|
114
113
|
end
|
115
114
|
|
116
115
|
def build_xml(resource)
|
117
|
-
|
116
|
+
builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
|
118
117
|
|
119
|
-
|
120
|
-
|
118
|
+
xml.entry(XML_ATTRIBUTES) do
|
119
|
+
resource.model.properties.each do |property|
|
120
|
+
value = property.get(resource)
|
121
|
+
next if value.blank?
|
121
122
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
if to_xml = property.options[:to_xml]
|
128
|
-
to_xml.call(xml, value)
|
129
|
-
elsif not property.options.has_key?(:to_xml)
|
130
|
-
xml.tag! property.field, value
|
123
|
+
if to_xml = property.options[:to_xml]
|
124
|
+
to_xml.call(xml, value)
|
125
|
+
elsif not property.options.has_key?(:to_xml)
|
126
|
+
xml.send "#{property.field}_", value
|
127
|
+
end
|
131
128
|
end
|
132
129
|
end
|
130
|
+
|
133
131
|
end
|
134
132
|
|
135
|
-
|
133
|
+
builder.to_xml
|
136
134
|
end
|
137
135
|
|
138
136
|
private
|
@@ -5,8 +5,7 @@ require 'dm-validations'
|
|
5
5
|
module GoogleBase
|
6
6
|
ProductProperties = LazyModule.new do
|
7
7
|
property :id, String, :key => true, :nullable => true, :length => 255, :from_xml => 'xmlns:id'
|
8
|
-
property :title, String, :from_xml => 'xmlns:title', :length => 70
|
9
|
-
:to_xml => lambda { |xml, value| xml.title value }
|
8
|
+
property :title, String, :from_xml => 'xmlns:title', :length => 70
|
10
9
|
property :description, DataMapper::Types::Text, :field => 'content', :from_xml => 'xmlns:content', :lazy => false
|
11
10
|
property :link, URI, :from_xml => "xmlns:link[@rel='alternate']/@href",
|
12
11
|
:to_xml => lambda { |xml, value| xml.link :href => value, :type => 'text/html', :rel => 'alternate' }
|
@@ -20,11 +19,11 @@ module GoogleBase
|
|
20
19
|
|
21
20
|
# optional
|
22
21
|
property :expires_at, DateTime, :field => 'g:expiration_date',
|
23
|
-
:to_xml => lambda { |xml, value| xml.
|
22
|
+
:to_xml => lambda { |xml, value| xml.send 'g:expiration_date', value.strftime('%F') }
|
24
23
|
property :quantity, Integer, :field => 'g:quantity'
|
25
24
|
property :payment_accepted, String,
|
26
25
|
:from_xml => lambda { |entry| entry.xpath('./g:payment').map { |e| e.content }.join(',') },
|
27
|
-
:to_xml => lambda { |xml, values| values.split(',').each { |value| xml.
|
26
|
+
:to_xml => lambda { |xml, values| values.split(',').each { |value| xml.send 'g:payment_accepted', value } }
|
28
27
|
property :item_language, String, :field => 'g:item_language'
|
29
28
|
property :target_country, String, :field => 'g:target_country'
|
30
29
|
|
@@ -218,7 +218,7 @@ describe GoogleBase::Adapter do
|
|
218
218
|
|
219
219
|
it "builds an element via :to_xml" do
|
220
220
|
Item.property :some_link, String,
|
221
|
-
:to_xml => lambda { |xml, value| xml.
|
221
|
+
:to_xml => lambda { |xml, value| xml.some_link_here :href => value, :type => 'text/html', :rel => 'alternate' }
|
222
222
|
xml = build_xml :some_link => 'http://example.com/something'
|
223
223
|
|
224
224
|
xml.at('some_link_here')['href'].should == 'http://example.com/something'
|
data/spec/spec_matchers.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Spec::Matchers.define :match_xml_document do |expected|
|
2
2
|
match do |actual|
|
3
|
-
actual_doc = Nokogiri
|
4
|
-
expected_doc = Nokogiri
|
3
|
+
actual_doc = Nokogiri.XML(actual) { |cfg| cfg.noblanks }
|
4
|
+
expected_doc = Nokogiri.XML(expected) { |cfg| cfg.noblanks }
|
5
5
|
|
6
6
|
actual_doc.encoding.should == expected_doc.encoding
|
7
7
|
actual_doc.root.should match_xml_node(expected_doc.root)
|
@@ -41,10 +41,10 @@ class MatchXMLNode
|
|
41
41
|
|
42
42
|
def failure_message_for_should
|
43
43
|
@actual_part = @actual.dup
|
44
|
-
@actual_part.
|
44
|
+
@actual_part.content = nil if @actual_part.child && !@actual_part.child.text?
|
45
45
|
|
46
46
|
@expected_part = @expected.dup
|
47
|
-
@expected_part.
|
47
|
+
@expected_part.content = nil if @expected_part.child && !@expected_part.child.text?
|
48
48
|
|
49
49
|
"expected:\n#{@actual_part.inspect}\n to match node:\n#{@expected_part.inspect}\n but it didn't"
|
50
50
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: badcarl-dm-googlebase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carl Porth
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-07-
|
12
|
+
date: 2009-07-31 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -62,16 +62,6 @@ dependencies:
|
|
62
62
|
- !ruby/object:Gem::Version
|
63
63
|
version: "0"
|
64
64
|
version:
|
65
|
-
- !ruby/object:Gem::Dependency
|
66
|
-
name: builder
|
67
|
-
type: :runtime
|
68
|
-
version_requirement:
|
69
|
-
version_requirements: !ruby/object:Gem::Requirement
|
70
|
-
requirements:
|
71
|
-
- - ">="
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
version: "0"
|
74
|
-
version:
|
75
65
|
- !ruby/object:Gem::Dependency
|
76
66
|
name: dm-sweatshop
|
77
67
|
type: :development
|