xommelier 0.1.3 → 0.1.4

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.
@@ -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