xommelier 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module Xommelier
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.4'
3
3
  end
@@ -14,5 +14,15 @@ module Xommelier
14
14
 
15
15
  autoload :Namespace, 'xommelier/xml/namespace'
16
16
  autoload :Element, 'xommelier/xml/element'
17
+
18
+ extend ClassMethods
19
+ xmlns DEFAULT_NS, as: :xml
20
+
21
+ module CommonAttributes
22
+ def self.included(base)
23
+ base.attribute :lang, ns: Xml.xmlns
24
+ base.attribute :base, type: Uri, ns: Xml.xmlns
25
+ end
26
+ end
17
27
  end
18
28
  end
@@ -84,7 +84,7 @@ module Xommelier
84
84
  (prefix ? builder[prefix] : builder).
85
85
  send(element_name, attribute_values) do |xml|
86
86
  elements.each do |name, value|
87
- serialize_element(name, value, xml)
87
+ serialize_element(name, value, xml, self.class.elements[name].merge(parent_ns_prefix: prefix))
88
88
  end
89
89
  if respond_to?(:text)
90
90
  xml.text @text
@@ -146,8 +146,12 @@ module Xommelier
146
146
  end
147
147
  end
148
148
 
149
- def serialize_element(name, value, xml, options = nil)
150
- options ||= self.element_options(name)
149
+ def serialize_element(name, value, xml, options = {})
150
+ prefix = if options[:ns].try(:!=, xmlns)
151
+ xml.doc.namespaces.key(options[:ns].uri)[6..-1].presence
152
+ else
153
+ nil
154
+ end
151
155
  case options[:count]
152
156
  when :any, :many
153
157
  single_element = options.merge(count: :one)
@@ -157,7 +161,7 @@ module Xommelier
157
161
  when Xommelier::Xml::Element
158
162
  value.to_xommelier(builder: xml, element_name: options[:element_name])
159
163
  else
160
- xml.send(options[:element_name]) { xml.text value.to_xommelier }
164
+ (prefix ? xml[prefix] : xml).send(options[:element_name]) { xml.text value.to_xommelier }
161
165
  end
162
166
  end
163
167
  end
@@ -67,6 +67,7 @@ module Xommelier
67
67
  def inherited(child)
68
68
  child.elements = elements.dup
69
69
  child.attributes = attributes.dup
70
+ include Xml::CommonAttributes
70
71
  end
71
72
 
72
73
  # Defines containing element
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
- require 'xommelier/atom/threading'
2
+ require 'xommelier/atom/full'
3
3
 
4
4
  describe 'Atom feed building' do
5
5
  let(:feed) do
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Xommelier do
4
- it { Xommelier::VERSION.should == '0.1.3' }
4
+ it { Xommelier::VERSION.should == '0.1.4' }
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xommelier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-03-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
16
- requirement: &70163686772120 !ruby/object:Gem::Requirement
16
+ requirement: &70270196058780 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.5.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70163686772120
24
+ version_requirements: *70270196058780
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &70163686771620 !ruby/object:Gem::Requirement
27
+ requirement: &70270196058120 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 3.2.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70163686771620
35
+ version_requirements: *70270196058120
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activemodel
38
- requirement: &70163686771160 !ruby/object:Gem::Requirement
38
+ requirement: &70270196057660 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: 3.2.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70163686771160
46
+ version_requirements: *70270196057660
47
47
  description: XML-Object Mapper with many built-in XML formats supported
48
48
  email:
49
49
  - al@semyonov.us