badcarl-dm-googlebase 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|