quickbooks_api 0.0.4 → 0.0.7
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/quickbooks/api.rb
CHANGED
@@ -40,9 +40,13 @@ def find(class_name)
|
|
40
40
|
cached_classes.find { |c| to_attribute_name(c) == class_name }
|
41
41
|
end
|
42
42
|
|
43
|
-
def grep(
|
44
|
-
|
45
|
-
|
43
|
+
def grep(pattern)
|
44
|
+
case pattern
|
45
|
+
when Regexp
|
46
|
+
cached_classes.select { |c| to_attribute_name(c).match(pattern) }
|
47
|
+
when String
|
48
|
+
cached_classes.select { |c| to_attribute_name(c).include?(pattern) }
|
49
|
+
end
|
46
50
|
end
|
47
51
|
|
48
52
|
# QBXML 2 RUBY
|
@@ -29,6 +29,15 @@ def initialize(params = nil)
|
|
29
29
|
return unless params.is_a?(Hash)
|
30
30
|
params.each do |k,v|
|
31
31
|
if self.respond_to?(k)
|
32
|
+
expected_type = self.class.send("#{k}_type")
|
33
|
+
v = \
|
34
|
+
case v
|
35
|
+
when Hash
|
36
|
+
expected_type.new(v)
|
37
|
+
when Array
|
38
|
+
v.inject([]) { |a,i| a << expected_type.new(i) }
|
39
|
+
else v
|
40
|
+
end
|
32
41
|
self.send("#{k}=", v)
|
33
42
|
end
|
34
43
|
end
|
@@ -48,7 +57,7 @@ def to_qbxml
|
|
48
57
|
log.debug "to_qbxml#attr_name: #{attr_name}"
|
49
58
|
|
50
59
|
val = self.send(attr_name)
|
51
|
-
next unless val
|
60
|
+
next unless val && !val.blank?
|
52
61
|
|
53
62
|
case val
|
54
63
|
when Array
|
@@ -78,19 +87,23 @@ def self.attribute_names
|
|
78
87
|
end
|
79
88
|
|
80
89
|
|
81
|
-
def inner_attributes
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
end
|
86
|
-
|
87
|
-
values = top_level_attrs.values.compact
|
90
|
+
def inner_attributes(parent = nil)
|
91
|
+
attrs = attributes(false)
|
92
|
+
values = attrs.values.compact
|
93
|
+
|
88
94
|
if values.empty?
|
89
95
|
{}
|
90
|
-
elsif values.
|
96
|
+
elsif values.first.is_a?(Array)
|
91
97
|
attributes
|
98
|
+
elsif values.size > 1
|
99
|
+
parent.attributes
|
92
100
|
else
|
93
|
-
values.first
|
101
|
+
first_val = values.first
|
102
|
+
if first_val.respond_to?(:inner_attributes)
|
103
|
+
first_val.inner_attributes(self)
|
104
|
+
else
|
105
|
+
parent.attributes
|
106
|
+
end
|
94
107
|
end
|
95
108
|
end
|
96
109
|
|
@@ -141,20 +154,21 @@ end
|
|
141
154
|
|
142
155
|
def build_qbxml_nodes(node, val)
|
143
156
|
val.inject([]) do |a, v|
|
144
|
-
n =
|
157
|
+
n = \
|
158
|
+
case v
|
159
|
+
when Quickbooks::QbxmlBase
|
160
|
+
v.to_qbxml
|
161
|
+
else
|
162
|
+
clone_qbxml_node(node,v)
|
163
|
+
end
|
145
164
|
a << n
|
146
165
|
end
|
147
166
|
end
|
148
167
|
|
149
168
|
def clone_qbxml_node(node, val)
|
150
169
|
n = node.clone
|
151
|
-
n.children =
|
152
|
-
|
153
|
-
when Quickbooks::QbxmlBase
|
154
|
-
val.to_qbxml
|
155
|
-
else
|
156
|
-
val.to_s
|
157
|
-
end; n
|
170
|
+
n.children = val.to_s
|
171
|
+
n
|
158
172
|
end
|
159
173
|
|
160
174
|
# qbxml class templates
|
@@ -74,8 +74,7 @@ def parse_leaf_node_data(xml_obj)
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def fetch_qbxml_class_instance(xml_obj)
|
77
|
-
|
78
|
-
instance
|
77
|
+
get_schema_namespace.const_get(xml_obj.name).new
|
79
78
|
end
|
80
79
|
|
81
80
|
def set_attribute_value(instance, attr_name, data)
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quickbooks_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 7
|
10
|
+
version: 0.0.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Alex Skryl
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-06-
|
18
|
+
date: 2011-06-27 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|