ddex 0.0.8 → 0.0.10

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
  SHA256:
3
- metadata.gz: 4bdfafd4654d53de0fdf4e54fe13e9ea4905a49fdaedd7b5a0959e9285710421
4
- data.tar.gz: e9491cd2e2bc6ad0dffeee9a017c98cb4dd861f0a57bea1d4ef896b3c75b3ea1
3
+ metadata.gz: 565c3680449c31b958b74485d5d224c49d86ecd78a3ef2321c0ad973a9e45dcb
4
+ data.tar.gz: 6479b38c4d334b940682be3788131ddcc295fc3522a9a52c960bab109467e3aa
5
5
  SHA512:
6
- metadata.gz: ae66a3b38b68f93e0b928e43894b8f78e3f33b4d31c359774b8b9e3fd8220bce182c82a46f995c6f4206a70a69646815769a937e9676f45eb795e7bbde67a4dd
7
- data.tar.gz: 1462c5a7d3c4a37985ad9b84eeb360eca90cb9e6d43b723d7b2b26408e0191f7a060ccbc29755cb66e8c9d3a98c91fa4acf115dfd0225d4b482b4ad5bfdaf7f7
6
+ metadata.gz: 17ee2748624cb79d3aac20b522b37c751d3510d2ddab4c71e1e7eae33ca9f2c89757340a6aa3b4b9944e971e4b198cba220372c36d91f107912082fc5b51d932
7
+ data.tar.gz: 4981963a5545997690d8bf313d9883308b4d41afea5013b1f5c0a713cc007644453f5f321c44a1428f2d889f3c64183b837c0bf85ceec7f28f417da1838b1423
data/README.rdoc CHANGED
@@ -1,6 +1,6 @@
1
1
  = DDEX
2
2
 
3
- {<img src="https://secure.travis-ci.org/sshaw/ddex.svg"/>}[http://travis-ci.org/sshaw/ddex]
3
+ {<img src="https://github.com/sshaw/ddex/workflows/CI/badge.svg"/>}[https://github.com/sshaw/ddex/actions/workflows/ci.yml]
4
4
 
5
5
  {DDEX}[http://ddex.net] metadata serialization for Ruby
6
6
 
data/lib/ddex/element.rb CHANGED
@@ -25,7 +25,7 @@ module DDEX
25
25
  #
26
26
  # === Arguments
27
27
  #
28
- # [attributes (Hash)] Values to set on the instance's attributes, a nested +Hash+ <b>will not</b> result in instantiation of child objects.
28
+ # [attributes (Hash)] Values to set on the instance's attributes, a nested +Hash+ will result in instantiation of child objects.
29
29
  #
30
30
  # === Errors
31
31
  #
@@ -40,8 +40,21 @@ module DDEX
40
40
  method = "#{name}="
41
41
  next unless attr = roxml_attributes[name] and respond_to?(method)
42
42
 
43
- value = Array(value) if !attr.sought_type.instance_of?(Symbol) && attr.array? # If it's not a ROXML directive && ...
44
- send(method, value)
43
+ if !attr.sought_type.instance_of?(Symbol) && attr.array? # If it's not a ROXML directive && ...
44
+ value = Array(value)
45
+ end
46
+
47
+ if !value.is_a?(DDEX::Element) && attr.sought_type.is_a?(Class) && attr.sought_type.ancestors.include?(DDEX::Element)
48
+ value = if attr.array? && value.is_a?(Array)
49
+ value.map { |v| v.is_a?(DDEX::Element) ? v : attr.sought_type.new(v) }
50
+ elsif !value.is_a?(Hash)
51
+ attr.sought_type.new(name => value)
52
+ else
53
+ attr.sought_type.new(value)
54
+ end
55
+ end
56
+
57
+ public_send(method, value)
45
58
  end
46
59
  end
47
60
 
data/lib/ddex/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DDEX
4
- VERSION = "0.0.8"
4
+ VERSION = "0.0.10"
5
5
  end
data/spec/element_spec.rb CHANGED
@@ -45,7 +45,7 @@ describe DDEX::Element do
45
45
  end
46
46
  end
47
47
 
48
- describe "#new" do
48
+ describe "#initialize" do
49
49
  it "sets the instance's attributes" do
50
50
  nested = parent_attr
51
51
  nested[:child] = Child.new(child_attr)
@@ -58,6 +58,22 @@ describe DDEX::Element do
58
58
  expect(parent.child).to eq nested[:child]
59
59
  expect(parent.children).to eq nested[:children]
60
60
  end
61
+
62
+ it "instantiates the object tree from a nested attribute hash" do
63
+ attributes = parent_attr.merge(:child => child_attr, :children => [ child_attr ])
64
+ parent = Parent.new(attributes)
65
+
66
+ expect(parent.name).to eq "sshaw"
67
+ expect(parent.numbers).to eq [1,2,3]
68
+
69
+ expect(parent.child).to_not be_nil
70
+ expect(parent.child.name).to eq "fofinha"
71
+ expect(parent.child.numbers).to eq [4,5,6]
72
+
73
+ expect(parent.children.size).to eq 1
74
+ expect(parent.children[0].name).to eq "fofinha"
75
+ expect(parent.children[0].numbers).to eq [4,5,6]
76
+ end
61
77
  end
62
78
 
63
79
  describe "#to_hash" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ddex
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Skye Shaw
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-03 00:00:00.000000000 Z
11
+ date: 2022-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -45,9 +45,6 @@ dependencies:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '3.0'
48
- - - "<"
49
- - !ruby/object:Gem::Version
50
- version: '7'
51
48
  type: :runtime
52
49
  prerelease: false
53
50
  version_requirements: !ruby/object:Gem::Requirement
@@ -55,9 +52,6 @@ dependencies:
55
52
  - - ">="
56
53
  - !ruby/object:Gem::Version
57
54
  version: '3.0'
58
- - - "<"
59
- - !ruby/object:Gem::Version
60
- version: '7'
61
55
  - !ruby/object:Gem::Dependency
62
56
  name: bundler
63
57
  requirement: !ruby/object:Gem::Requirement
@@ -4048,68 +4042,67 @@ required_rubygems_version: !ruby/object:Gem::Requirement
4048
4042
  - !ruby/object:Gem::Version
4049
4043
  version: '0'
4050
4044
  requirements: []
4051
- rubyforge_project:
4052
- rubygems_version: 2.7.6
4045
+ rubygems_version: 3.1.4
4053
4046
  signing_key:
4054
4047
  specification_version: 4
4055
4048
  summary: DDEX metadata serialization
4056
4049
  test_files:
4057
- - spec/element_spec.rb
4058
- - spec/ern/341_spec.rb~
4050
+ - spec/spec_helper.rb
4059
4051
  - spec/ern/34_spec.rb~
4060
- - spec/ern/36_spec.rb~
4061
4052
  - spec/ern/v36_spec.rb~
4062
- - spec/ern/versions_spec.rb
4053
+ - spec/ern/341_spec.rb~
4054
+ - spec/ern/36_spec.rb~
4063
4055
  - spec/ern/versions_spec.rb~
4056
+ - spec/ern/versions_spec.rb
4057
+ - spec/element_spec.rb
4058
+ - spec/support/ddex_element.rb
4064
4059
  - spec/ern_spec.rb
4065
- - spec/ern_spec.rb~
4066
- - spec/fixtures/ern/312/instance1.xml
4067
- - spec/fixtures/ern/33/instance1.xml
4060
+ - spec/fixtures/ern36.xml~
4061
+ - spec/fixtures/ern/35/instance1.xml
4068
4062
  - spec/fixtures/ern/34/instance1.xml
4063
+ - spec/fixtures/ern/33/instance1.xml
4064
+ - spec/fixtures/ern/37D2/instance1.xml
4065
+ - spec/fixtures/ern/37D2/instance1.xml~
4069
4066
  - spec/fixtures/ern/341/instance1.xml
4070
- - spec/fixtures/ern/35/instance1.xml
4071
- - spec/fixtures/ern/351/instance1.xml
4072
- - spec/fixtures/ern/36/instance1.xml
4073
- - spec/fixtures/ern/37/instance1.xml
4074
- - spec/fixtures/ern/37/instance2.xml
4067
+ - spec/fixtures/ern/383/instance1.xml
4068
+ - spec/fixtures/ern/42/6 Ringtone.xml
4069
+ - spec/fixtures/ern/42/4 SimpleAudioSingle.xml
4070
+ - spec/fixtures/ern/42/1 Audio.xml~
4071
+ - spec/fixtures/ern/42/5 SimpleVideoSingle.xml
4072
+ - spec/fixtures/ern/42/5 SimpleVideoSingle.xml~
4073
+ - spec/fixtures/ern/42/7 LongformMusicalWorkVideo.xml
4074
+ - spec/fixtures/ern/42/2 Video.xml
4075
+ - spec/fixtures/ern/42/6 Ringtone.xml~
4076
+ - spec/fixtures/ern/42/8 DjMix.xml
4077
+ - spec/fixtures/ern/42/1 Audio.xml
4078
+ - spec/fixtures/ern/42/4 SimpleAudioSingle.xml~
4079
+ - spec/fixtures/ern/42/3 MixedMedia.xml
4080
+ - spec/fixtures/ern/312/instance1.xml
4075
4081
  - spec/fixtures/ern/371/instance1.xml
4076
4082
  - spec/fixtures/ern/371/instance1.xml~
4077
- - spec/fixtures/ern/37D2/instance1.xml
4078
- - spec/fixtures/ern/37D2/instance1.xml~
4079
4083
  - spec/fixtures/ern/38/instance1.xml
4080
- - spec/fixtures/ern/381/instance1.xml
4081
- - spec/fixtures/ern/383/instance1.xml
4082
- - spec/fixtures/ern/41/instance1.xml
4083
- - spec/fixtures/ern/411/1 Audio.xml
4084
- - spec/fixtures/ern/411/1 Audio.xml~
4085
- - spec/fixtures/ern/411/2 Video.xml
4086
- - spec/fixtures/ern/411/2 Video.xml~
4087
- - spec/fixtures/ern/411/3 MixedMedia.xml
4088
- - spec/fixtures/ern/411/3 MixedMedia.xml~
4084
+ - spec/fixtures/ern/36/instance1.xml
4085
+ - spec/fixtures/ern/37/instance2.xml
4086
+ - spec/fixtures/ern/37/instance1.xml
4087
+ - spec/fixtures/ern/351/instance1.xml
4088
+ - spec/fixtures/ern/411/6 Ringtone.xml
4089
4089
  - spec/fixtures/ern/411/4 SimpleAudioSingle.xml
4090
- - spec/fixtures/ern/411/4 SimpleAudioSingle.xml~
4090
+ - spec/fixtures/ern/411/8 DjMix.xml~
4091
+ - spec/fixtures/ern/411/1 Audio.xml~
4091
4092
  - spec/fixtures/ern/411/5 SimpleVideoSingle.xml
4092
4093
  - spec/fixtures/ern/411/5 SimpleVideoSingle.xml~
4093
- - spec/fixtures/ern/411/6 Ringtone.xml
4094
- - spec/fixtures/ern/411/6 Ringtone.xml~
4095
4094
  - spec/fixtures/ern/411/7 LongformMusicalWorkVideo.xml
4096
4095
  - spec/fixtures/ern/411/7 LongformMusicalWorkVideo.xml~
4097
- - spec/fixtures/ern/411/8 DjMix.xml
4098
- - spec/fixtures/ern/411/8 DjMix.xml~
4099
4096
  - spec/fixtures/ern/411/x.xml~
4100
- - spec/fixtures/ern/42/1 Audio.xml
4101
- - spec/fixtures/ern/42/1 Audio.xml~
4102
- - spec/fixtures/ern/42/2 Video.xml
4103
- - spec/fixtures/ern/42/3 MixedMedia.xml
4104
- - spec/fixtures/ern/42/4 SimpleAudioSingle.xml
4105
- - spec/fixtures/ern/42/4 SimpleAudioSingle.xml~
4106
- - spec/fixtures/ern/42/5 SimpleVideoSingle.xml
4107
- - spec/fixtures/ern/42/5 SimpleVideoSingle.xml~
4108
- - spec/fixtures/ern/42/6 Ringtone.xml
4109
- - spec/fixtures/ern/42/6 Ringtone.xml~
4110
- - spec/fixtures/ern/42/7 LongformMusicalWorkVideo.xml
4111
- - spec/fixtures/ern/42/8 DjMix.xml
4097
+ - spec/fixtures/ern/411/2 Video.xml
4098
+ - spec/fixtures/ern/411/6 Ringtone.xml~
4099
+ - spec/fixtures/ern/411/8 DjMix.xml
4100
+ - spec/fixtures/ern/411/1 Audio.xml
4101
+ - spec/fixtures/ern/411/2 Video.xml~
4102
+ - spec/fixtures/ern/411/4 SimpleAudioSingle.xml~
4103
+ - spec/fixtures/ern/411/3 MixedMedia.xml~
4104
+ - spec/fixtures/ern/411/3 MixedMedia.xml
4105
+ - spec/fixtures/ern/41/instance1.xml
4106
+ - spec/fixtures/ern/381/instance1.xml
4112
4107
  - spec/fixtures/ern36.xml
4113
- - spec/fixtures/ern36.xml~
4114
- - spec/spec_helper.rb
4115
- - spec/support/ddex_element.rb
4108
+ - spec/ern_spec.rb~