socialcastr 0.2.16 → 0.2.17
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.
- data/lib/socialcastr/base.rb +1 -0
- data/lib/socialcastr/sax/active_resource.rb +10 -9
- data/lib/socialcastr/version.rb +1 -1
- data/lib/socialcastr.rb +13 -0
- data/spec/sax/active_resource_spec.rb +3 -3
- metadata +12 -12
data/lib/socialcastr/base.rb
CHANGED
@@ -36,9 +36,9 @@ module Socialcastr
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def start_element name, attrs = []
|
39
|
-
return nil_element! if name
|
39
|
+
return nil_element! if unsupported?(name)
|
40
40
|
type = parse_attrs_and_get_type(attrs)
|
41
|
-
return if
|
41
|
+
return nil_element! if type.nil?
|
42
42
|
push_element(type)
|
43
43
|
end
|
44
44
|
|
@@ -53,7 +53,8 @@ module Socialcastr
|
|
53
53
|
(value, type) = pop_element
|
54
54
|
case type
|
55
55
|
when HASH
|
56
|
-
|
56
|
+
return nil unless value
|
57
|
+
element = element_class(name).from_hash(value)
|
57
58
|
when INTEGER
|
58
59
|
element = value.to_i
|
59
60
|
when BOOLEAN
|
@@ -73,12 +74,12 @@ module Socialcastr
|
|
73
74
|
|
74
75
|
private
|
75
76
|
|
77
|
+
def unsupported?(name)
|
78
|
+
name.contains_dot?
|
79
|
+
end
|
80
|
+
|
76
81
|
def element_class(name)
|
77
|
-
|
78
|
-
Socialcastr.const_get(Socialcastr.to_class_name(name))
|
79
|
-
else
|
80
|
-
Socialcastr.const_get(Socialcastr.to_class_name(name), false)
|
81
|
-
end
|
82
|
+
Socialcastr.get_element_class(Socialcastr.to_class_name(name))
|
82
83
|
end
|
83
84
|
|
84
85
|
def container_type
|
@@ -103,7 +104,7 @@ module Socialcastr
|
|
103
104
|
|
104
105
|
def parse_attrs_and_get_type(attribute_array=[])
|
105
106
|
attributes = attribute_array.to_attribute_hash
|
106
|
-
return
|
107
|
+
return nil if attributes["nil"]
|
107
108
|
attributes["type"] ? attributes["type"] : HASH
|
108
109
|
end
|
109
110
|
|
data/lib/socialcastr/version.rb
CHANGED
data/lib/socialcastr.rb
CHANGED
@@ -70,7 +70,20 @@ module Socialcastr
|
|
70
70
|
method.to_s.gsub(/^[a-z]|-[a-z]/i) { |a| a.sub("-", '').upcase }
|
71
71
|
end
|
72
72
|
|
73
|
+
def get_element_class(class_name)
|
74
|
+
define_element_class(class_name) unless Socialcastr.const_defined?(class_name)
|
75
|
+
if RUBY_VERSION < '1.9'
|
76
|
+
Socialcastr.const_get(class_name)
|
77
|
+
else
|
78
|
+
Socialcastr.const_get(class_name, false)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
73
82
|
def const_missing(class_name)
|
83
|
+
define_element_class(class_name)
|
84
|
+
end
|
85
|
+
|
86
|
+
def define_element_class(class_name)
|
74
87
|
Socialcastr.const_set(class_name, Class.new(Socialcastr::Base))
|
75
88
|
end
|
76
89
|
end
|
@@ -8,15 +8,15 @@ describe Socialcastr::SAX::ActiveResource do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
context "an empty document with a root 'message' element" do
|
11
|
-
it "should return a
|
11
|
+
it "should return a nil object" do
|
12
12
|
xml = "<message></message>"
|
13
13
|
@parser.parse(xml)
|
14
|
-
@active_resource.data.
|
14
|
+
@active_resource.data.should be_nil
|
15
15
|
end
|
16
16
|
end
|
17
17
|
context "a document with a nil element" do
|
18
18
|
it "should make the nil element accessible" do
|
19
|
-
xml = "<message><rating nil=\"true\"></rating></message>"
|
19
|
+
xml = "<message><id>1</id><rating nil=\"true\"></rating></message>"
|
20
20
|
@parser.parse(xml)
|
21
21
|
@active_resource.data.rating.should be_nil
|
22
22
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: socialcastr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.17
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
12
|
+
date: 2011-10-03 00:00:00.000000000 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rake
|
17
|
-
requirement: &
|
17
|
+
requirement: &2152777920 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0.8'
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2152777920
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: rspec
|
28
|
-
requirement: &
|
28
|
+
requirement: &2152915220 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '2.5'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2152915220
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: yard
|
39
|
-
requirement: &
|
39
|
+
requirement: &2152982900 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '0'
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2152982900
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: artifice
|
50
|
-
requirement: &
|
50
|
+
requirement: &2152992820 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *2152992820
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: nokogiri
|
61
|
-
requirement: &
|
61
|
+
requirement: &2152996040 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
version: 1.4.4
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *2152996040
|
70
70
|
description: A Ruby wrapper for the Socialcast REST API
|
71
71
|
email:
|
72
72
|
- bru@codewitch.org
|