ginjo-rfm 1.4.4 → 2.0.pre31

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.
@@ -1,6 +1,6 @@
1
1
  module Rfm
2
2
  VERSION_DEFAULT = 'none'
3
- VERSION = File.read(PATH + '/rfm/VERSION').lines.first.chomp rescue VERSION_DEFAULT #File.read(File.join(File.expand_path(File.dirname(File.dirname(File.dirname(__FILE__)))), 'VERSION')) rescue VERSION_DEFAULT
3
+ VERSION = File.read(PATH + '/rfm/VERSION').lines.first.chomp rescue VERSION_DEFAULT
4
4
  VERSION.instance_eval do
5
5
  def components; VERSION.split('.'); end
6
6
  def major; components[0]; end
@@ -0,0 +1,133 @@
1
+ require 'active_support/core_ext/kernel/reporting'
2
+ require 'active_support/core_ext/object/blank'
3
+ require 'stringio'
4
+
5
+ module ActiveSupport # @private :nodoc:
6
+ module XmlMini_Hpricot # @private :nodoc:
7
+ extend self
8
+
9
+ CONTENT_KEY = '__content__'.freeze
10
+
11
+ # Parse an XML Document string or IO into a simple hash
12
+ #
13
+ # Same as XmlSimple::xml_in but doesn't shoot itself in the foot,
14
+ # and uses the defaults from Active Support.
15
+ #
16
+ # data::
17
+ # XML Document string or IO to parse
18
+ def parse(data)
19
+ if !data.respond_to?(:read)
20
+ data = StringIO.new(data || '')
21
+ end
22
+
23
+ char = data.getc
24
+ if char.nil?
25
+ {}
26
+ else
27
+ data.ungetc(char)
28
+ silence_warnings { require 'hpricot' } unless defined?(Hpricot)
29
+ doc = Hpricot.XML(data)
30
+
31
+ if doc.root
32
+ merge_element!({}, doc.root)
33
+ else
34
+ raise Hpricot::ParseError,
35
+ "The document #{doc.to_s.inspect} does not have a valid root"
36
+ end
37
+ end
38
+ end
39
+
40
+ private
41
+ # Convert an XML element and merge into the hash
42
+ #
43
+ # hash::
44
+ # Hash to merge the converted element into.
45
+ # element::
46
+ # XML element to merge into hash
47
+ def merge_element!(hash, element)
48
+ merge!(hash, element.name, collapse(element)) if element.respond_to? :name
49
+ end
50
+
51
+ # Actually converts an XML document element into a data structure.
52
+ #
53
+ # element::
54
+ # The document element to be collapsed.
55
+ def collapse(element)
56
+ hash = get_attributes(element)
57
+
58
+ if element.respond_to? :children
59
+ element.each_child {|child| merge_element!(hash, child) unless child.text? }
60
+ merge_texts!(hash, element) unless empty_content?(element)
61
+ hash
62
+ else
63
+ merge_texts!(hash, element)
64
+ end
65
+ end
66
+
67
+ # Merge all the texts of an element into the hash
68
+ #
69
+ # hash::
70
+ # Hash to add the converted element to.
71
+ # element::
72
+ # XML element whose texts are to be merged into the hash
73
+ def merge_texts!(hash, element)
74
+ unless element.respond_to? :children and element.children[0].text?
75
+ hash
76
+ else
77
+ # must use value to prevent double-escaping
78
+ texts = ''
79
+ #element.texts.each { |t| texts << t.value }
80
+ #texts << element.children[0].to_s
81
+ element.each_child { |child| texts << child.inner_text }
82
+ merge!(hash, CONTENT_KEY, texts)
83
+ texts
84
+ end
85
+ end
86
+
87
+ # Adds a new key/value pair to an existing Hash. If the key to be added
88
+ # already exists and the existing value associated with key is not
89
+ # an Array, it will be wrapped in an Array. Then the new value is
90
+ # appended to that Array.
91
+ #
92
+ # hash::
93
+ # Hash to add key/value pair to.
94
+ # key::
95
+ # Key to be added.
96
+ # value::
97
+ # Value to be associated with key.
98
+ def merge!(hash, key, value)
99
+ if hash.has_key?(key)
100
+ if hash[key].instance_of?(Array)
101
+ hash[key] << value
102
+ else
103
+ hash[key] = [hash[key], value]
104
+ end
105
+ elsif value.instance_of?(Array)
106
+ hash[key] = [value]
107
+ else
108
+ hash[key] = value
109
+ end
110
+ hash
111
+ end
112
+
113
+ # Converts the attributes array of an XML element into a hash.
114
+ # Returns an empty Hash if node has no attributes.
115
+ #
116
+ # element::
117
+ # XML element to extract attributes from.
118
+ def get_attributes(element)
119
+ attributes = {}
120
+ element.attributes.to_hash.each { |n,v| attributes[n] = v } if element.respond_to? :attributes
121
+ attributes
122
+ end
123
+
124
+ # Determines if a document element has text content
125
+ #
126
+ # element::
127
+ # XML element to be checked.
128
+ def empty_content?(element)
129
+ #element.texts.join.blank?
130
+ element.children.nil? #or element.children[0].to_s.blank?
131
+ end
132
+ end
133
+ end
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ginjo-rfm
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
5
- prerelease:
4
+ hash: 1923831879
5
+ prerelease: 4
6
6
  segments:
7
- - 1
8
- - 4
9
- - 4
10
- version: 1.4.4
7
+ - 2
8
+ - 0
9
+ - pre
10
+ - 31
11
+ version: 2.0.pre31
11
12
  platform: ruby
12
13
  authors:
13
14
  - Geoff Coffey
@@ -19,24 +20,26 @@ autorequire:
19
20
  bindir: bin
20
21
  cert_chain: []
21
22
 
22
- date: 2011-12-06 00:00:00 Z
23
+ date: 2011-12-24 00:00:00 Z
23
24
  dependencies:
24
25
  - !ruby/object:Gem::Dependency
25
- name: nokogiri
26
+ name: activesupport
26
27
  prerelease: false
27
28
  requirement: &id001 !ruby/object:Gem::Requirement
28
29
  none: false
29
30
  requirements:
30
31
  - - ">="
31
32
  - !ruby/object:Gem::Version
32
- hash: 3
33
+ hash: 9
33
34
  segments:
34
- - 0
35
- version: "0"
35
+ - 2
36
+ - 3
37
+ - 5
38
+ version: 2.3.5
36
39
  type: :runtime
37
40
  version_requirements: *id001
38
41
  - !ruby/object:Gem::Dependency
39
- name: jeweler
42
+ name: i18n
40
43
  prerelease: false
41
44
  requirement: &id002 !ruby/object:Gem::Requirement
42
45
  none: false
@@ -47,7 +50,7 @@ dependencies:
47
50
  segments:
48
51
  - 0
49
52
  version: "0"
50
- type: :development
53
+ type: :runtime
51
54
  version_requirements: *id002
52
55
  - !ruby/object:Gem::Dependency
53
56
  name: rake
@@ -78,35 +81,77 @@ dependencies:
78
81
  type: :development
79
82
  version_requirements: *id004
80
83
  - !ruby/object:Gem::Dependency
81
- name: yard
84
+ name: rspec
82
85
  prerelease: false
83
86
  requirement: &id005 !ruby/object:Gem::Requirement
84
87
  none: false
85
88
  requirements:
86
- - - ">="
89
+ - - ~>
87
90
  - !ruby/object:Gem::Version
88
- hash: 3
91
+ hash: 27
89
92
  segments:
93
+ - 1
94
+ - 3
90
95
  - 0
91
- version: "0"
96
+ version: 1.3.0
92
97
  type: :development
93
98
  version_requirements: *id005
94
99
  - !ruby/object:Gem::Dependency
95
- name: rspec
100
+ name: yard
96
101
  prerelease: false
97
102
  requirement: &id006 !ruby/object:Gem::Requirement
98
103
  none: false
99
104
  requirements:
100
- - - ~>
105
+ - - ">="
101
106
  - !ruby/object:Gem::Version
102
- hash: 27
107
+ hash: 3
103
108
  segments:
104
- - 1
105
- - 3
106
109
  - 0
107
- version: 1.3.0
110
+ version: "0"
108
111
  type: :development
109
112
  version_requirements: *id006
113
+ - !ruby/object:Gem::Dependency
114
+ name: libxml-ruby
115
+ prerelease: false
116
+ requirement: &id007 !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ hash: 3
122
+ segments:
123
+ - 0
124
+ version: "0"
125
+ type: :development
126
+ version_requirements: *id007
127
+ - !ruby/object:Gem::Dependency
128
+ name: nokogiri
129
+ prerelease: false
130
+ requirement: &id008 !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ hash: 3
136
+ segments:
137
+ - 0
138
+ version: "0"
139
+ type: :development
140
+ version_requirements: *id008
141
+ - !ruby/object:Gem::Dependency
142
+ name: hpricot
143
+ prerelease: false
144
+ requirement: &id009 !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ hash: 3
150
+ segments:
151
+ - 0
152
+ version: "0"
153
+ type: :development
154
+ version_requirements: *id009
110
155
  description: Rfm brings your FileMaker data to Ruby. Now your Ruby scripts and Rails applications can talk directly to your FileMaker server.
111
156
  email: http://groups.google.com/group/rfmcommunity
112
157
  executables: []
@@ -116,9 +161,10 @@ extensions: []
116
161
  extra_rdoc_files:
117
162
  - LICENSE
118
163
  - README.md
119
- files:
120
- - lib/rfm.rb
164
+ - CHANGELOG.md
121
165
  - lib/rfm/VERSION
166
+ files:
167
+ - lib/rfm/base.rb
122
168
  - lib/rfm/database.rb
123
169
  - lib/rfm/error.rb
124
170
  - lib/rfm/layout.rb
@@ -130,11 +176,19 @@ files:
130
176
  - lib/rfm/resultset.rb
131
177
  - lib/rfm/server.rb
132
178
  - lib/rfm/utilities/case_insensitive_hash.rb
179
+ - lib/rfm/utilities/complex_query.rb
180
+ - lib/rfm/utilities/config.rb
181
+ - lib/rfm/utilities/core_ext.rb
133
182
  - lib/rfm/utilities/factory.rb
183
+ - lib/rfm/utilities/xml_parser.rb
134
184
  - lib/rfm/version.rb
185
+ - lib/rfm/xml_mini/hpricot.rb
186
+ - lib/rfm.rb
187
+ - lib/rfm/VERSION
135
188
  - LICENSE
136
189
  - README.md
137
- homepage: http://sixfriedrice.com/wp/products/rfm/
190
+ - CHANGELOG.md
191
+ homepage: https://rubygems.org/gems/ginjo-rfm
138
192
  licenses: []
139
193
 
140
194
  post_install_message:
@@ -156,12 +210,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
156
210
  required_rubygems_version: !ruby/object:Gem::Requirement
157
211
  none: false
158
212
  requirements:
159
- - - ">="
213
+ - - ">"
160
214
  - !ruby/object:Gem::Version
161
- hash: 3
215
+ hash: 25
162
216
  segments:
163
- - 0
164
- version: "0"
217
+ - 1
218
+ - 3
219
+ - 1
220
+ version: 1.3.1
165
221
  requirements: []
166
222
 
167
223
  rubyforge_project:
@@ -171,3 +227,4 @@ specification_version: 3
171
227
  summary: Ruby to Filemaker adapter
172
228
  test_files: []
173
229
 
230
+ has_rdoc: