ginjo-rfm 1.4.4 → 2.0.pre31

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: