om 3.0.1 → 3.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ad2b503450c856d7a7e3dbd55bab9545419c04f9
4
- data.tar.gz: 2c97e1ce0d2f2b2524e1cca742726d50a2fc814f
3
+ metadata.gz: b8853ffe68e14cbf9ff2ff97cc6a11dc742f66b9
4
+ data.tar.gz: 1f871031a8b66f0537598d05c05fc1bbcbbeca2d
5
5
  SHA512:
6
- metadata.gz: b9cf738d9afa3d3c08d1e2a2cb349b2c6a13b7dfc42b7400384094f3fed29f324cdf83cf1511e69452c24fb07f937a817b9759fdbbb19a2cda6b30b3bc1e16fc
7
- data.tar.gz: 879531480232ee5d238745cba12be106c0b3566b38827053d930afbdcfffe78f88738159b7f63753057bb6e0a03b6e0dae2a76c7f22f79a5c2684a55b1eb31c7
6
+ metadata.gz: 8eb12d59198a4a22597551376e8142be99c0e5567e273490fd4eab40659419f89727267a79795e5049e3a1876c6f479df471146455f69d5c37cbd7cf167390a2
7
+ data.tar.gz: d8e3386ff684e7fe87d599b5842753050494fba9f6043f070882d21709de794052c46bc3fd64881638476cf099fdaeee277f63b2644fe305ad805ec290553b6c
data/lib/om/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Om
2
- VERSION = "3.0.1"
2
+ VERSION = "3.0.2"
3
3
  end
@@ -1,6 +1,13 @@
1
1
  module OM::XML::Document
2
2
  extend ActiveSupport::Concern
3
3
 
4
+ included do
5
+ include OM::XML::Container
6
+ include OM::XML::TermValueOperators
7
+ include OM::XML::Validation
8
+ include ActiveModel::Dirty
9
+ end
10
+
4
11
  # Class Methods -- These methods will be available on classes that include this Module
5
12
 
6
13
  module ClassMethods
@@ -8,7 +15,12 @@ module OM::XML::Document
8
15
  attr_accessor :terminology, :terminology_builder, :template_registry
9
16
 
10
17
  def terminology
11
- @terminology ||= terminology_builder.build
18
+ return @terminology if @terminology
19
+ @terminology = if superclass.respond_to? :terminology
20
+ superclass.terminology.dup
21
+ else
22
+ terminology_builder.build
23
+ end
12
24
  end
13
25
 
14
26
  def terminology_builder
@@ -16,7 +28,12 @@ module OM::XML::Document
16
28
  end
17
29
 
18
30
  def template_registry
19
- @template_registry ||= OM::XML::TemplateRegistry.new
31
+ return @template_registry if @template_registry
32
+ @template_registry = if superclass.respond_to? :template_registry
33
+ superclass.template_registry.dup
34
+ else
35
+ OM::XML::TemplateRegistry.new
36
+ end
20
37
  end
21
38
 
22
39
  def rebuild_terminology!
@@ -24,6 +41,8 @@ module OM::XML::Document
24
41
  end
25
42
 
26
43
  # Sets the OM::XML::Terminology for the Document
44
+ # If there already is a termnology for this class, it will be replaced.
45
+ # @see extend_termniology If you want to add terms to an existing terminology
27
46
  # Expects +&block+ that will be passed into OM::XML::Terminology::Builder.new
28
47
  def set_terminology &block
29
48
  @terminology_builder = OM::XML::Terminology::Builder.new(&block)
@@ -60,14 +79,6 @@ module OM::XML::Document
60
79
 
61
80
  attr_accessor :ox_namespaces
62
81
 
63
- included do
64
- include OM::XML::Container
65
- include OM::XML::TermValueOperators
66
- include OM::XML::Validation
67
- include ActiveModel::Dirty
68
-
69
- end
70
-
71
82
  def ng_xml_will_change!
72
83
  # throw away older version.
73
84
  changed_attributes['ng_xml'] = nil
@@ -0,0 +1,85 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Inherited terminology" do
4
+ describe "with basic terms" do
5
+ before(:all) do
6
+ class AbstractTerminology
7
+ include OM::XML::Document
8
+ set_terminology do |t|
9
+ t.root :path => 'root', :xmlns => "asdf"
10
+ t.foo
11
+ end
12
+ end
13
+
14
+ class ConcreteTerminology < AbstractTerminology
15
+ end
16
+ end
17
+
18
+ after(:all) do
19
+ Object.send(:remove_const, :ConcreteTerminology)
20
+ Object.send(:remove_const, :AbstractTerminology)
21
+ end
22
+
23
+ describe "on the subclass" do
24
+ subject do
25
+ xml = '<root xmlns="asdf"><foo>fooval</foo><bar>barval</bar></root>'
26
+ ConcreteTerminology.from_xml(xml)
27
+ end
28
+
29
+ it "should inherit terminology" do
30
+ subject.foo = "Test value"
31
+ subject.foo.should == ["Test value"]
32
+ end
33
+ end
34
+
35
+ describe "on the superclass" do
36
+ subject do
37
+ xml = '<root xmlns="asdf"><foo>fooval</foo><bar>barval</bar></root>'
38
+ AbstractTerminology.from_xml(xml)
39
+ end
40
+
41
+ it "should have terminology" do
42
+ subject.foo = "Test value"
43
+ subject.foo.should == ["Test value"]
44
+ end
45
+ end
46
+ end
47
+
48
+ describe "with template terms" do
49
+ before(:all) do
50
+ class AbstractTerminology
51
+ include OM::XML::Document
52
+ set_terminology do |t|
53
+ t.root :path => 'root', :xmlns => "asdf"
54
+ end
55
+
56
+ define_template :creator do |xml, author, role|
57
+ xml.pbcoreCreator {
58
+ xml.creator(author)
59
+ xml.creatorRole(role, :source=>"PBCore creatorRole")
60
+ }
61
+ end
62
+ end
63
+
64
+ class ConcreteTerminology < AbstractTerminology
65
+ end
66
+ end
67
+
68
+ after(:all) do
69
+ Object.send(:remove_const, :ConcreteTerminology)
70
+ Object.send(:remove_const, :AbstractTerminology)
71
+ end
72
+
73
+ describe "on the subclass" do
74
+ subject do
75
+ xml = '<root></root>'
76
+ ConcreteTerminology.from_xml(xml)
77
+ end
78
+
79
+ it "should inherit templates" do
80
+ subject.add_child_node subject.ng_xml.root, :creator, 'Test author', 'Primary'
81
+ subject.ng_xml.xpath('//pbcoreCreator/creatorRole[@source="PBCore creatorRole"]').text.should == "Primary"
82
+ end
83
+ end
84
+ end
85
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: om
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Zumwalt
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-26 00:00:00.000000000 Z
12
+ date: 2013-07-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -256,6 +256,7 @@ files:
256
256
  - spec/integration/selective_querying_spec.rb
257
257
  - spec/integration/serialization_spec.rb
258
258
  - spec/integration/set_reentrant_terminology_spec.rb
259
+ - spec/integration/subclass_terminology_spec.rb
259
260
  - spec/integration/xpathy_stuff_spec.rb
260
261
  - spec/samples.rb
261
262
  - spec/samples/mods_article.rb
@@ -319,6 +320,7 @@ test_files:
319
320
  - spec/integration/selective_querying_spec.rb
320
321
  - spec/integration/serialization_spec.rb
321
322
  - spec/integration/set_reentrant_terminology_spec.rb
323
+ - spec/integration/subclass_terminology_spec.rb
322
324
  - spec/integration/xpathy_stuff_spec.rb
323
325
  - spec/samples.rb
324
326
  - spec/samples/mods_article.rb