ginjo-rfm 2.1.0 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/lib/rfm/VERSION CHANGED
@@ -1,2 +1,2 @@
1
- 2.1.0
1
+ 2.1.1
2
2
 
data/lib/rfm/base.rb CHANGED
@@ -254,7 +254,7 @@ module Rfm
254
254
 
255
255
  # Just like Layout#find, but searching by record_id will return a record, not a resultset.
256
256
  def find(find_criteria, options={})
257
- #puts "base.find-#{layout}"
257
+ #puts "base.find-#{layout.object_id}"
258
258
  r = layout.find(find_criteria, options)
259
259
  if ![Hash,Array].include?(find_criteria.class) and r.size == 1
260
260
  r[0]
data/lib/rfm/layout.rb CHANGED
@@ -209,7 +209,7 @@ module Rfm
209
209
  # myLayout.find 54321
210
210
  #
211
211
  def find(find_criteria, options = {})
212
- #puts "layout.find-#{self}"
212
+ #puts "layout.find-#{self.object_id}"
213
213
  options.merge!({:field_mapping => field_mapping}) if field_mapping
214
214
  get_records(*Rfm::CompoundQuery.new(find_criteria, options))
215
215
  end
@@ -0,0 +1,298 @@
1
+ # From https://github.com/ohler55/ox
2
+ #gem 'ox', '1.8.5'
3
+ require 'stringio'
4
+ require 'ox'
5
+ require 'delegate'
6
+ require 'yaml'
7
+ require 'rfm'
8
+
9
+
10
+ ##### CORE PATCHES #####
11
+
12
+ module Saxable
13
+
14
+ # Default callbacks for Saxable objects.
15
+ def parent; @parent || self end
16
+ def start_el(name, attributes); self end
17
+ def attribute(name,value); (self[name]=value) rescue nil end
18
+ def end_el(value); true end
19
+
20
+ def self.included(base)
21
+ attr_accessor :parent, :_new_element, :_new_element_name, :_new_element_attributes
22
+
23
+ class << base
24
+
25
+ attr_reader :_start_el_lambdas
26
+ # This is a class method that allows shortcut config, kinda like 'before_filter'.
27
+ # Helper shortcut method to be used in Saxable method at class level.
28
+ # When this loads, it will define a more elaborate hidden start_el operation.
29
+ # Lambdas needed to allow multiple start_el calls at Saxable object class level.
30
+ def start_el(el, kls)
31
+ @_start_el_lambdas ||= []
32
+
33
+ # Disable this to use the non-lambda version.
34
+ @_start_el_lambdas << lambda do |slf|
35
+ name = slf._new_element_name
36
+ if (name.match(el) if el.is_a? Regexp) || name == el
37
+ sub = Object.const_get(kls.to_s).new rescue kls.new
38
+ sub.parent = slf
39
+ sub.merge!(slf._new_element_attributes) rescue nil
40
+ slf._new_element = sub
41
+ yield(slf) if block_given?
42
+ return slf._new_element
43
+ else
44
+ #return slf
45
+ return nil
46
+ end
47
+ end
48
+
49
+ # This is the actual instance-level start_el method.
50
+ # The lambda version will call multiple lambdas,
51
+ # whereas the single version will only call once.
52
+ define_method :start_el do |name, attributes|
53
+ # This is for the lambda version.
54
+ self._new_element_name = name
55
+ self._new_element_attributes = attributes
56
+ #
57
+ # This is the non-lambda one-shot only version.
58
+ #
59
+ # if (name.match(el) if el.is_a? Regexp) || name == el
60
+ # self._new_element = Object.const_get(kls.to_s).new
61
+ # self._new_element.parent = self
62
+ # self._new_element_name = name
63
+ # yield(self) if block_given?
64
+ # return self._new_element
65
+ # else
66
+ # return self
67
+ # #return nil
68
+ # end
69
+ #
70
+ # This is the lambda version
71
+ #
72
+ begin
73
+ result = (self.class.instance_variable_get(:@_start_el_lambdas).compact.each{|e| @sub = e.call(self); break if @sub}; @sub || self)
74
+ #self.class.instance_variable_get(:@_start_el).last.call(self, parent, name) rescue nil || self
75
+ #puts "Successfully processed lambdas"
76
+ result
77
+ rescue
78
+ #puts "Errors processing lambdas: #{$!}"
79
+ self
80
+ end
81
+ #
82
+ end
83
+ end
84
+
85
+ def end_el(el)
86
+ define_method :end_el do |name|
87
+ if (name.match(el) if el.is_a? Regexp) || name == el
88
+ self._new_element_name = name
89
+ yield(self) if block_given?
90
+ return true
91
+ end
92
+ end
93
+ end
94
+
95
+ def element(*args)
96
+ options = args.last.is_a?(Hash) ? args.pop : {}
97
+ start_el args[0].to_s, options[:class] do |slf|
98
+ slf.is_a? Hash
99
+ slf[slf._new_element_name] = slf._new_element
100
+ elsif slf.is_a? Array
101
+ slf << slf._new_element
102
+ end
103
+ end
104
+ end
105
+
106
+ end
107
+ end
108
+
109
+ end # Saxable
110
+
111
+ class Hash
112
+ include Saxable
113
+ end
114
+ class Array
115
+ include Saxable
116
+ end
117
+
118
+
119
+ module SaxHandler
120
+
121
+ def self.included(base)
122
+ def base.build(io, initial_object)
123
+ handler = new(initial_object)
124
+ handler.run_parser(io)
125
+ handler.cursor
126
+ end
127
+ end
128
+
129
+ def initialize(initial_object)
130
+ init_element_buffer
131
+ initial_object.parent = set_cursor initial_object
132
+ end
133
+
134
+ def cursor
135
+ @cursor
136
+ end
137
+
138
+ def set_cursor(obj)
139
+ @cursor = obj
140
+ end
141
+
142
+ def init_element_buffer
143
+ @element_buffer = {:name=>nil, :attr=>{}}
144
+ end
145
+
146
+ def send_element_buffer
147
+ if element_buffer?
148
+ set_cursor cursor.start_el(@element_buffer[:name], @element_buffer[:attr])
149
+ init_element_buffer
150
+ end
151
+ end
152
+
153
+ def element_buffer?
154
+ @element_buffer[:name] && !@element_buffer[:name].empty?
155
+ end
156
+
157
+ # Add a node to an existing element.
158
+ def _start_element(name, attributes=nil)
159
+ send_element_buffer
160
+ if attributes.nil?
161
+ @element_buffer = {:name=>name, :attr=>{}}
162
+ else
163
+ set_cursor cursor.start_el(name, attributes)
164
+ end
165
+ end
166
+
167
+ # Add attribute to existing element.
168
+ def _attribute(name, value)
169
+ @element_buffer[:attr].merge!({name=>value})
170
+ #cursor.attribute(name,value)
171
+ end
172
+
173
+ # Add 'content' attribute to existing element.
174
+ def _text(value)
175
+ if !element_buffer?
176
+ cursor.attribute('content', value)
177
+ else
178
+ @element_buffer[:attr].merge!({'content'=>value})
179
+ send_element_buffer
180
+ end
181
+ end
182
+
183
+ # Close out an existing element.
184
+ def _end_element(value)
185
+ send_element_buffer
186
+ cursor.end_el(value) and set_cursor cursor.parent
187
+ end
188
+
189
+ end # SaxHandler
190
+
191
+
192
+
193
+ ##### XML PARSERS - SAX HANDLERS #####
194
+
195
+ class OxFmpSax < ::Ox::Sax
196
+
197
+ include SaxHandler
198
+
199
+ def run_parser(io)
200
+ #Ox.sax_parse(self, io)
201
+ File.open(io){|f| Ox.sax_parse self, f}
202
+ end
203
+
204
+ def start_element(name); _start_element(name.to_s.downcase); end
205
+ def end_element(name); _end_element(name.to_s.downcase); end
206
+ def attr(name, value); _attribute(name.to_s.downcase, value); end
207
+ def text(value); _text(value); end
208
+
209
+ end # OxFmpSax
210
+
211
+
212
+ class FmResultset < Hash
213
+ start_el 'datasource', :Datasource do |slf|
214
+ slf[slf._new_element_name] = slf._new_element
215
+ end
216
+ start_el 'resultset', :Resultset do |slf|
217
+ slf[slf._new_element_name] = slf._new_element
218
+ end
219
+ start_el 'metadata', :Metadata do |slf|
220
+ slf[slf._new_element_name] = slf._new_element
221
+ end
222
+ end
223
+
224
+ class Datasource < Hash
225
+ start_el /.*/i, :Hash
226
+ end
227
+
228
+ class Metadata < Array
229
+ start_el 'field-definition', :Hash do |slf|
230
+ slf << slf._new_element
231
+ end
232
+ end
233
+
234
+ class Resultset < Array
235
+ start_el 'record', :Record do |slf|
236
+ slf << slf._new_element
237
+ end
238
+ # Enable this to kill attribute parsing for this object.
239
+ #def attribute(*args); end
240
+ end
241
+
242
+ class Record < Hash
243
+ start_el 'field', :Field
244
+ end
245
+
246
+ class Field < Hash
247
+ end_el 'field' do |slf|
248
+ slf.parent[slf['name']] = slf['content']
249
+ end
250
+ end
251
+
252
+ # This gives a generic tree structure.
253
+ class Hash
254
+ start_el /.*/i, :Hash do |slf|
255
+ name, sub = slf._new_element_name, slf._new_element
256
+
257
+ if slf[name].is_a? Array
258
+ slf[name] << sub
259
+ elsif slf.has_key? name
260
+ tmp = slf[name]
261
+ slf[name] = [tmp]
262
+ slf[name] << sub
263
+ else
264
+ slf[name] = sub
265
+ end
266
+ end
267
+
268
+ end_el /.*/i do |slf|
269
+ parent, name = slf.parent, slf._new_element_name
270
+ #parent[name]=nil if slf.empty? # Use nil for empty nodes.
271
+ #parent.delete(name) if slf.empty? # Delete empty nodes.
272
+ parent[name] = slf.values[0] unless slf.size > 1 or parent.size > 2 # Reduce unnecessary nodes.
273
+ end
274
+
275
+ end
276
+
277
+
278
+ ##### DATA #####
279
+
280
+ FM = 'local_testing/resultset.xml'
281
+ FMP = 'local_testing/resultset_with_portals.xml'
282
+ XML = 'local_testing/data_fmpxmlresult.xml'
283
+ XMP = 'local_testing/data_with_portals_fmpxmlresult.xml'
284
+ LAY = 'local_testing/layout.xml'
285
+ XMD = 'local_testing/db_fmpxmlresult.xml'
286
+ FMB = 'local_testing/resultset_with_bad_data.xml'
287
+ SP = 'local_testing/SplashLayout.xml'
288
+
289
+ S = StringIO.new(%{
290
+ <top name="top01">
291
+ <middle name="middle01" />
292
+ <middle name="middle02">
293
+ <bottom name="bottom01">bottom-text</bottom>
294
+ </middle>
295
+ <middle name="middle03">middle03-text</middle>
296
+ </top>
297
+ })
298
+
metadata CHANGED
@@ -1,10 +1,15 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ginjo-rfm
3
- version: !ruby/object:Gem::Version
4
- version: 2.1.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 9
5
5
  prerelease:
6
+ segments:
7
+ - 2
8
+ - 1
9
+ - 1
10
+ version: 2.1.1
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Geoff Coffey
9
14
  - Mufaddal Khumri
10
15
  - Atsushi Matsuo
@@ -13,212 +18,193 @@ authors:
13
18
  autorequire:
14
19
  bindir: bin
15
20
  cert_chain: []
16
- date: 2013-03-06 00:00:00.000000000 Z
17
- dependencies:
18
- - !ruby/object:Gem::Dependency
21
+
22
+ date: 2013-03-21 00:00:00 Z
23
+ dependencies:
24
+ - !ruby/object:Gem::Dependency
19
25
  name: activesupport
20
- requirement: !ruby/object:Gem::Requirement
21
- none: false
22
- requirements:
23
- - - ! '>='
24
- - !ruby/object:Gem::Version
25
- version: 2.3.5
26
- type: :runtime
27
26
  prerelease: false
28
- version_requirements: !ruby/object:Gem::Requirement
27
+ requirement: &id001 !ruby/object:Gem::Requirement
29
28
  none: false
30
- requirements:
31
- - - ! '>='
32
- - !ruby/object:Gem::Version
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ hash: 9
33
+ segments:
34
+ - 2
35
+ - 3
36
+ - 5
33
37
  version: 2.3.5
34
- - !ruby/object:Gem::Dependency
38
+ type: :runtime
39
+ version_requirements: *id001
40
+ - !ruby/object:Gem::Dependency
35
41
  name: activemodel
36
- requirement: !ruby/object:Gem::Requirement
37
- none: false
38
- requirements:
39
- - - ! '>='
40
- - !ruby/object:Gem::Version
41
- version: '0'
42
- type: :development
43
42
  prerelease: false
44
- version_requirements: !ruby/object:Gem::Requirement
45
- none: false
46
- requirements:
47
- - - ! '>='
48
- - !ruby/object:Gem::Version
49
- version: '0'
50
- - !ruby/object:Gem::Dependency
51
- name: rake
52
- requirement: !ruby/object:Gem::Requirement
43
+ requirement: &id002 !ruby/object:Gem::Requirement
53
44
  none: false
54
- requirements:
55
- - - ! '>='
56
- - !ruby/object:Gem::Version
57
- version: '0'
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ hash: 3
49
+ segments:
50
+ - 0
51
+ version: "0"
58
52
  type: :development
53
+ version_requirements: *id002
54
+ - !ruby/object:Gem::Dependency
55
+ name: rake
59
56
  prerelease: false
60
- version_requirements: !ruby/object:Gem::Requirement
61
- none: false
62
- requirements:
63
- - - ! '>='
64
- - !ruby/object:Gem::Version
65
- version: '0'
66
- - !ruby/object:Gem::Dependency
67
- name: rdoc
68
- requirement: !ruby/object:Gem::Requirement
57
+ requirement: &id003 !ruby/object:Gem::Requirement
69
58
  none: false
70
- requirements:
71
- - - ! '>='
72
- - !ruby/object:Gem::Version
73
- version: '0'
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ hash: 3
63
+ segments:
64
+ - 0
65
+ version: "0"
74
66
  type: :development
67
+ version_requirements: *id003
68
+ - !ruby/object:Gem::Dependency
69
+ name: rdoc
75
70
  prerelease: false
76
- version_requirements: !ruby/object:Gem::Requirement
71
+ requirement: &id004 !ruby/object:Gem::Requirement
77
72
  none: false
78
- requirements:
79
- - - ! '>='
80
- - !ruby/object:Gem::Version
81
- version: '0'
82
- - !ruby/object:Gem::Dependency
83
- name: rspec
84
- requirement: !ruby/object:Gem::Requirement
85
- none: false
86
- requirements:
87
- - - ~>
88
- - !ruby/object:Gem::Version
89
- version: 1.3.0
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ hash: 3
77
+ segments:
78
+ - 0
79
+ version: "0"
90
80
  type: :development
81
+ version_requirements: *id004
82
+ - !ruby/object:Gem::Dependency
83
+ name: rspec
91
84
  prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
85
+ requirement: &id005 !ruby/object:Gem::Requirement
93
86
  none: false
94
- requirements:
87
+ requirements:
95
88
  - - ~>
96
- - !ruby/object:Gem::Version
89
+ - !ruby/object:Gem::Version
90
+ hash: 27
91
+ segments:
92
+ - 1
93
+ - 3
94
+ - 0
97
95
  version: 1.3.0
98
- - !ruby/object:Gem::Dependency
99
- name: diff-lcs
100
- requirement: !ruby/object:Gem::Requirement
101
- none: false
102
- requirements:
103
- - - ! '>='
104
- - !ruby/object:Gem::Version
105
- version: '0'
106
96
  type: :development
97
+ version_requirements: *id005
98
+ - !ruby/object:Gem::Dependency
99
+ name: diff-lcs
107
100
  prerelease: false
108
- version_requirements: !ruby/object:Gem::Requirement
101
+ requirement: &id006 !ruby/object:Gem::Requirement
109
102
  none: false
110
- requirements:
111
- - - ! '>='
112
- - !ruby/object:Gem::Version
113
- version: '0'
114
- - !ruby/object:Gem::Dependency
115
- name: yard
116
- requirement: !ruby/object:Gem::Requirement
117
- none: false
118
- requirements:
119
- - - ! '>='
120
- - !ruby/object:Gem::Version
121
- version: '0'
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ hash: 3
107
+ segments:
108
+ - 0
109
+ version: "0"
122
110
  type: :development
111
+ version_requirements: *id006
112
+ - !ruby/object:Gem::Dependency
113
+ name: yard
123
114
  prerelease: false
124
- version_requirements: !ruby/object:Gem::Requirement
125
- none: false
126
- requirements:
127
- - - ! '>='
128
- - !ruby/object:Gem::Version
129
- version: '0'
130
- - !ruby/object:Gem::Dependency
131
- name: redcarpet
132
- requirement: !ruby/object:Gem::Requirement
115
+ requirement: &id007 !ruby/object:Gem::Requirement
133
116
  none: false
134
- requirements:
135
- - - ! '>='
136
- - !ruby/object:Gem::Version
137
- version: '0'
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ hash: 3
121
+ segments:
122
+ - 0
123
+ version: "0"
138
124
  type: :development
125
+ version_requirements: *id007
126
+ - !ruby/object:Gem::Dependency
127
+ name: redcarpet
139
128
  prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- none: false
142
- requirements:
143
- - - ! '>='
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- - !ruby/object:Gem::Dependency
147
- name: libxml-ruby
148
- requirement: !ruby/object:Gem::Requirement
129
+ requirement: &id008 !ruby/object:Gem::Requirement
149
130
  none: false
150
- requirements:
151
- - - ! '>='
152
- - !ruby/object:Gem::Version
153
- version: '0'
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ hash: 3
135
+ segments:
136
+ - 0
137
+ version: "0"
154
138
  type: :development
139
+ version_requirements: *id008
140
+ - !ruby/object:Gem::Dependency
141
+ name: libxml-ruby
155
142
  prerelease: false
156
- version_requirements: !ruby/object:Gem::Requirement
143
+ requirement: &id009 !ruby/object:Gem::Requirement
157
144
  none: false
158
- requirements:
159
- - - ! '>='
160
- - !ruby/object:Gem::Version
161
- version: '0'
162
- - !ruby/object:Gem::Dependency
163
- name: nokogiri
164
- requirement: !ruby/object:Gem::Requirement
165
- none: false
166
- requirements:
167
- - - ! '>='
168
- - !ruby/object:Gem::Version
169
- version: '0'
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ hash: 3
149
+ segments:
150
+ - 0
151
+ version: "0"
170
152
  type: :development
153
+ version_requirements: *id009
154
+ - !ruby/object:Gem::Dependency
155
+ name: nokogiri
171
156
  prerelease: false
172
- version_requirements: !ruby/object:Gem::Requirement
157
+ requirement: &id010 !ruby/object:Gem::Requirement
173
158
  none: false
174
- requirements:
175
- - - ! '>='
176
- - !ruby/object:Gem::Version
177
- version: '0'
178
- - !ruby/object:Gem::Dependency
179
- name: hpricot
180
- requirement: !ruby/object:Gem::Requirement
181
- none: false
182
- requirements:
183
- - - ! '>='
184
- - !ruby/object:Gem::Version
185
- version: '0'
159
+ requirements:
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ hash: 3
163
+ segments:
164
+ - 0
165
+ version: "0"
186
166
  type: :development
167
+ version_requirements: *id010
168
+ - !ruby/object:Gem::Dependency
169
+ name: hpricot
187
170
  prerelease: false
188
- version_requirements: !ruby/object:Gem::Requirement
171
+ requirement: &id011 !ruby/object:Gem::Requirement
189
172
  none: false
190
- requirements:
191
- - - ! '>='
192
- - !ruby/object:Gem::Version
193
- version: '0'
194
- - !ruby/object:Gem::Dependency
195
- name: ox
196
- requirement: !ruby/object:Gem::Requirement
197
- none: false
198
- requirements:
199
- - - ! '>='
200
- - !ruby/object:Gem::Version
201
- version: '0'
173
+ requirements:
174
+ - - ">="
175
+ - !ruby/object:Gem::Version
176
+ hash: 3
177
+ segments:
178
+ - 0
179
+ version: "0"
202
180
  type: :development
181
+ version_requirements: *id011
182
+ - !ruby/object:Gem::Dependency
183
+ name: ox
203
184
  prerelease: false
204
- version_requirements: !ruby/object:Gem::Requirement
185
+ requirement: &id012 !ruby/object:Gem::Requirement
205
186
  none: false
206
- requirements:
207
- - - ! '>='
208
- - !ruby/object:Gem::Version
209
- version: '0'
210
- description: Rfm lets your Ruby scripts and Rails applications talk directly to your
211
- Filemaker server. Ginjo-rfm includes ActiveModel compatibility, multiple XML parsers,
212
- compound Filemaker find requests, and a configuration API.
187
+ requirements:
188
+ - - ">="
189
+ - !ruby/object:Gem::Version
190
+ hash: 3
191
+ segments:
192
+ - 0
193
+ version: "0"
194
+ type: :development
195
+ version_requirements: *id012
196
+ description: Rfm lets your Ruby scripts and Rails applications talk directly to your Filemaker server. Ginjo-rfm includes ActiveModel compatibility, multiple XML parsers, compound Filemaker find requests, and a configuration API.
213
197
  email: http://groups.google.com/group/rfmcommunity
214
198
  executables: []
199
+
215
200
  extensions: []
216
- extra_rdoc_files:
201
+
202
+ extra_rdoc_files:
217
203
  - LICENSE
218
204
  - README.md
219
205
  - CHANGELOG.md
220
206
  - lib/rfm/VERSION
221
- files:
207
+ files:
222
208
  - lib/rfm/base.rb
223
209
  - lib/rfm/database.rb
224
210
  - lib/rfm/error.rb
@@ -237,6 +223,7 @@ files:
237
223
  - lib/rfm/utilities/factory.rb
238
224
  - lib/rfm/utilities/fmpxmlresult.rb
239
225
  - lib/rfm/utilities/fmresultset.rb
226
+ - lib/rfm/utilities/sax_parser.rb
240
227
  - lib/rfm/utilities/xml_parser.rb
241
228
  - lib/rfm/version.rb
242
229
  - lib/rfm/xml_mini/hpricot.rb
@@ -250,33 +237,41 @@ files:
250
237
  - CHANGELOG.md
251
238
  homepage: https://rubygems.org/gems/ginjo-rfm
252
239
  licenses: []
240
+
253
241
  post_install_message:
254
- rdoc_options:
242
+ rdoc_options:
255
243
  - --line-numbers
256
244
  - --main
257
245
  - README.md
258
- require_paths:
246
+ require_paths:
259
247
  - lib
260
- required_ruby_version: !ruby/object:Gem::Requirement
248
+ required_ruby_version: !ruby/object:Gem::Requirement
261
249
  none: false
262
- requirements:
263
- - - ! '>='
264
- - !ruby/object:Gem::Version
265
- version: '0'
266
- segments:
250
+ requirements:
251
+ - - ">="
252
+ - !ruby/object:Gem::Version
253
+ hash: 3
254
+ segments:
267
255
  - 0
268
- hash: 1763595399021498150
269
- required_rubygems_version: !ruby/object:Gem::Requirement
256
+ version: "0"
257
+ required_rubygems_version: !ruby/object:Gem::Requirement
270
258
  none: false
271
- requirements:
272
- - - ! '>'
273
- - !ruby/object:Gem::Version
259
+ requirements:
260
+ - - ">"
261
+ - !ruby/object:Gem::Version
262
+ hash: 25
263
+ segments:
264
+ - 1
265
+ - 3
266
+ - 1
274
267
  version: 1.3.1
275
268
  requirements: []
269
+
276
270
  rubyforge_project:
277
271
  rubygems_version: 1.8.25
278
272
  signing_key:
279
273
  specification_version: 3
280
274
  summary: Ruby to Filemaker adapter
281
275
  test_files: []
276
+
282
277
  has_rdoc: