quickbooks_api 0.1.1 → 0.1.2
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
@@ -67,7 +67,7 @@ class Quickbooks::API
|
|
67
67
|
# RUBY 2 QBXML
|
68
68
|
|
69
69
|
def hash_to_obj(data)
|
70
|
-
key, value = data.detect { |name, value| name != :xml_attributes }
|
70
|
+
key, value = data.detect { |name, value| name != 'xml_attributes' && name != :xml_attributes }
|
71
71
|
key_path = container_class.template(true).path_to_nested_key(key.to_s)
|
72
72
|
raise(RuntimeError, "#{key} class not found in api template") unless key_path
|
73
73
|
|
data/lib/quickbooks/logger.rb
CHANGED
@@ -6,12 +6,12 @@ class Quickbooks::Parser::QbxmlBase
|
|
6
6
|
|
7
7
|
QBXML_BASE = Quickbooks::Parser::QbxmlBase
|
8
8
|
|
9
|
-
FLOAT_CAST =
|
10
|
-
BOOL_CAST =
|
11
|
-
DATE_CAST =
|
12
|
-
TIME_CAST =
|
13
|
-
INT_CAST =
|
14
|
-
STR_CAST =
|
9
|
+
FLOAT_CAST = Proc.new {|d| d ? Float(d) : 0.0}
|
10
|
+
BOOL_CAST = Proc.new {|d| d ? (d == 'True' ? true : false) : false }
|
11
|
+
DATE_CAST = Proc.new {|d| d ? Date.parse(d).xmlschema : Date.today.xmlschema }
|
12
|
+
TIME_CAST = Proc.new {|d| d ? Time.parse(d).xmlschema : Time.now.xmlschema }
|
13
|
+
INT_CAST = Proc.new {|d| d ? Integer(d.to_i) : 0 }
|
14
|
+
STR_CAST = Proc.new {|d| d ? String(d) : ''}
|
15
15
|
|
16
16
|
QB_TYPE_CONVERSION_MAP= {
|
17
17
|
"AMTTYPE" => FLOAT_CAST,
|
@@ -37,7 +37,8 @@ class Quickbooks::Parser::QbxmlBase
|
|
37
37
|
|
38
38
|
def initialize(params = nil)
|
39
39
|
return unless params.is_a?(Hash)
|
40
|
-
@xml_attributes = params[:xml_attributes] || {}
|
40
|
+
@xml_attributes = params['xml_attributes'] || params[:xml_attributes] || {}
|
41
|
+
params.delete('xml_attributes')
|
41
42
|
params.delete(:xml_attributes)
|
42
43
|
|
43
44
|
params.each do |attr, value|
|
@@ -59,14 +60,15 @@ class Quickbooks::Parser::QbxmlBase
|
|
59
60
|
end
|
60
61
|
|
61
62
|
def self.attribute_names
|
62
|
-
|
63
|
+
# 1.9.2 changes instance_methods behavior to return symbols instead of strings
|
64
|
+
instance_methods(false).reject { |m| m[-1..-1] == '=' || m.to_s =~ /xml_attributes/ || m =~ /_xml_class/}.map { |m| m.to_s }
|
63
65
|
end
|
64
66
|
|
65
67
|
# returns innermost attributes without outer layers of the hash
|
66
68
|
#
|
67
69
|
def inner_attributes(parent = nil)
|
68
70
|
attrs = attributes(false)
|
69
|
-
attrs.delete(
|
71
|
+
attrs.delete('xml_attributes')
|
70
72
|
values = attrs.values.compact
|
71
73
|
|
72
74
|
if values.empty?
|
@@ -87,7 +89,7 @@ class Quickbooks::Parser::QbxmlBase
|
|
87
89
|
|
88
90
|
def attributes(recursive = true)
|
89
91
|
attrs = {}
|
90
|
-
attrs[
|
92
|
+
attrs['xml_attributes'] = xml_attributes
|
91
93
|
self.class.attribute_names.inject(attrs) do |h, m|
|
92
94
|
val = self.send(m)
|
93
95
|
if !val.nil?
|
@@ -32,15 +32,15 @@ private
|
|
32
32
|
|
33
33
|
def build_qbxml_nodes(node, val)
|
34
34
|
val = [val].flatten
|
35
|
-
val.
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
35
|
+
val.map do |v|
|
36
|
+
case v
|
37
|
+
when QbxmlBase
|
38
|
+
v.to_qbxml
|
39
|
+
else
|
40
|
+
n = node.clone
|
41
|
+
n.children = v.to_s
|
42
|
+
n.to_s
|
43
|
+
end
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
@@ -1,20 +1,20 @@
|
|
1
1
|
class Hash
|
2
2
|
|
3
3
|
def path_to_nested_key(key)
|
4
|
-
|
4
|
+
each do |k,v|
|
5
5
|
path = [k]
|
6
6
|
if k == key
|
7
7
|
return path
|
8
8
|
elsif v.is_a? Hash
|
9
9
|
nested_path = v.path_to_nested_key(key)
|
10
|
-
|
10
|
+
return (path + nested_path) if nested_path
|
11
11
|
end
|
12
12
|
end
|
13
13
|
return nil
|
14
14
|
end
|
15
15
|
|
16
16
|
def self.nest(path, value)
|
17
|
-
hash_constructor =
|
17
|
+
hash_constructor = Proc.new { |h, k| h[k] = Hash.new(&hash_constructor) }
|
18
18
|
nested_hash = Hash.new(&hash_constructor)
|
19
19
|
|
20
20
|
last_key = path.last
|
metadata
CHANGED
@@ -1,60 +1,44 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: quickbooks_api
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 1
|
10
|
-
version: 0.1.1
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Alex Skryl
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-08-17 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: activesupport
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70319842955620 !ruby/object:Gem::Requirement
|
25
17
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
33
22
|
type: :runtime
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: nokogiri
|
37
23
|
prerelease: false
|
38
|
-
|
24
|
+
version_requirements: *70319842955620
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: nokogiri
|
27
|
+
requirement: &70319842955000 !ruby/object:Gem::Requirement
|
39
28
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
segments:
|
45
|
-
- 0
|
46
|
-
version: "0"
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
47
33
|
type: :runtime
|
48
|
-
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70319842955000
|
49
36
|
description: A QuickBooks QBXML wrapper for Ruby
|
50
37
|
email: rut216@gmail.com
|
51
38
|
executables: []
|
52
|
-
|
53
39
|
extensions: []
|
54
|
-
|
55
40
|
extra_rdoc_files: []
|
56
|
-
|
57
|
-
files:
|
41
|
+
files:
|
58
42
|
- lib/quickbooks/api.rb
|
59
43
|
- lib/quickbooks/config.rb
|
60
44
|
- lib/quickbooks/dtd_parser.rb
|
@@ -83,39 +67,28 @@ files:
|
|
83
67
|
- xml_schema/qbxmlops70.xml
|
84
68
|
- README
|
85
69
|
- TODO
|
86
|
-
has_rdoc: true
|
87
70
|
homepage: http://github.com/skryl
|
88
71
|
licenses: []
|
89
|
-
|
90
72
|
post_install_message:
|
91
73
|
rdoc_options: []
|
92
|
-
|
93
|
-
require_paths:
|
74
|
+
require_paths:
|
94
75
|
- lib
|
95
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
96
77
|
none: false
|
97
|
-
requirements:
|
98
|
-
- -
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
|
101
|
-
|
102
|
-
- 0
|
103
|
-
version: "0"
|
104
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ! '>='
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
83
|
none: false
|
106
|
-
requirements:
|
107
|
-
- -
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
|
110
|
-
segments:
|
111
|
-
- 0
|
112
|
-
version: "0"
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
113
88
|
requirements: []
|
114
|
-
|
115
89
|
rubyforge_project:
|
116
|
-
rubygems_version: 1.6
|
90
|
+
rubygems_version: 1.8.6
|
117
91
|
signing_key:
|
118
92
|
specification_version: 3
|
119
93
|
summary: QuickBooks XML API
|
120
94
|
test_files: []
|
121
|
-
|