ginjo-rfm 2.1.0 → 2.1.1

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/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: