ginjo-rfm 3.0.0 → 3.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/rfm/VERSION +1 -1
- data/lib/rfm/utilities/sax/fmpxml_minimal.yml +42 -0
- data/lib/rfm/utilities/sax/fmpxmllayout.yml +173 -0
- data/lib/rfm/utilities/sax/fmresultset.xml +79 -0
- data/lib/rfm/utilities/sax/fmresultset.yml +160 -0
- metadata +5 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NDkwZmQwZTdjNWVjZmQwYTc3NGZjYjFlMTI3OTAzMWRiMzBhYzZlOQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YjMyYTRmNWFjYWUzN2ZlNmJmN2E5MWE3MDFhM2E1ZmRlMGFlNWUyZQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NGFhODQ1Mjk0M2YzY2ZhNjhmYTY4NWRiNzZlYTlhZjU1YTE2MjE2NmFiZTIz
|
10
|
+
NGVmYTA5YzEyMmYzNDg2NWQ5YTY0Yjk3ZGI5ZDI5ODBhMmI0ZWIzYmVlY2Vi
|
11
|
+
OGVlZDE4ODk1ZDU2NDQ3YzZkNmU4NmM1OGQyNWEwNWI4MWM4ZjI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ODhiMjg0Njk1Y2UzMzk2NWY3MDRiMTA5Yzc5MmZmNzkzODQ4ZTIyYzA2YTI4
|
14
|
+
ZGY0MGE4NGNkNjFlMTQ3MzZmZTQyY2YyYjNjNDc3N2I3YjQwYTBjOWRhYmVl
|
15
|
+
NGU0YWMwMjgyNzQxNjNmYzJmODM0Y2Y1NDQ5MGEwMTYwYWU2YTA=
|
data/lib/rfm/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.0.
|
1
|
+
3.0.1
|
@@ -0,0 +1,42 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Database names from fmpxmlresult #
|
3
|
+
#
|
4
|
+
# <?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
5
|
+
# <!DOCTYPE FMPXMLRESULT PUBLIC "-//FMI//DTD FMPXMLRESULT//EN" "/fmi/xml/FMPXMLRESULT.dtd">
|
6
|
+
# <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
|
7
|
+
# <ERRORCODE>0</ERRORCODE>
|
8
|
+
# <PRODUCT BUILD="03/02/2011" NAME="FileMaker Web Publishing Engine" VERSION="11.0.3.302"/>
|
9
|
+
# <DATABASE DATEFORMAT="" LAYOUT="" NAME="DBNAMES" RECORDS="3" TIMEFORMAT=""/>
|
10
|
+
# <METADATA>
|
11
|
+
# <FIELD EMPTYOK="NO" MAXREPEAT="1" NAME="DATABASE_NAME" TYPE="TEXT"/>
|
12
|
+
# </METADATA>
|
13
|
+
# <RESULTSET FOUND="3">
|
14
|
+
# <ROW MODID="0" RECORDID="0">
|
15
|
+
# <COL>
|
16
|
+
# <DATA>SDS</DATA>
|
17
|
+
# </COL>
|
18
|
+
# </ROW>
|
19
|
+
# <ROW MODID="0" RECORDID="0">
|
20
|
+
# <COL>
|
21
|
+
# <DATA>SevenDev</DATA>
|
22
|
+
# </COL>
|
23
|
+
# </ROW>
|
24
|
+
# <ROW MODID="0" RECORDID="0">
|
25
|
+
# <COL>
|
26
|
+
# <DATA>SevenGables</DATA>
|
27
|
+
# </COL>
|
28
|
+
# </ROW>
|
29
|
+
# </RESULTSET>
|
30
|
+
# </FMPXMLRESULT>
|
31
|
+
#
|
32
|
+
# The top level represents the initial object, a basic hash in this case.
|
33
|
+
---
|
34
|
+
attach_elements: none
|
35
|
+
attach_attributes: none
|
36
|
+
elements:
|
37
|
+
- name: data
|
38
|
+
compact: true
|
39
|
+
attach: hash
|
40
|
+
attach_attributes: hash
|
41
|
+
delimiter: text
|
42
|
+
|
@@ -0,0 +1,173 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# YAML structure defining a SAX parsing scheme for fmpxmllayout xml.
|
3
|
+
# The initial object of this parse should be a new instance of Rfm::Layout.
|
4
|
+
---
|
5
|
+
attach_elements: _meta
|
6
|
+
attach_attributes: _meta
|
7
|
+
elements:
|
8
|
+
- name: doctype
|
9
|
+
attach: none
|
10
|
+
attributes:
|
11
|
+
- name: value
|
12
|
+
as_name: doctype
|
13
|
+
- name: fmpxmllayout
|
14
|
+
attach: none
|
15
|
+
- name: errorcode
|
16
|
+
attach: none
|
17
|
+
# TODO: Build check_for_errors method in Layout class.
|
18
|
+
#before_close: 'check_for_errors'
|
19
|
+
attributes:
|
20
|
+
- name: text
|
21
|
+
as_name: error
|
22
|
+
- name: product
|
23
|
+
as_name: product
|
24
|
+
- name: layout
|
25
|
+
attach: none
|
26
|
+
attributes:
|
27
|
+
- name: database
|
28
|
+
as_name: database
|
29
|
+
- name: NAME
|
30
|
+
as_name: name
|
31
|
+
- name: field
|
32
|
+
handler: [object.meta, handle_new_field_control, _attributes]
|
33
|
+
attach_attributes: private
|
34
|
+
elements:
|
35
|
+
- name: style
|
36
|
+
handler: [object, handle_style_element, _attributes]
|
37
|
+
# attach: none
|
38
|
+
# attributes:
|
39
|
+
# - name: valuelist
|
40
|
+
# as_name: value_list_name
|
41
|
+
- name: valuelists
|
42
|
+
attach: none
|
43
|
+
- name: valuelist
|
44
|
+
class: Array
|
45
|
+
as_name: value_lists
|
46
|
+
delimiter: name
|
47
|
+
elements:
|
48
|
+
- name: value
|
49
|
+
class: Rfm::Metadata::ValueListItem
|
50
|
+
before_close: replace(@value.to_s)
|
51
|
+
attach_attributes: private
|
52
|
+
attributes:
|
53
|
+
- name: display
|
54
|
+
as_name: display
|
55
|
+
- name: text
|
56
|
+
as_name: value
|
57
|
+
|
58
|
+
|
59
|
+
# Works - doesn't use Handler method.
|
60
|
+
# ---
|
61
|
+
# attach_elements: _meta
|
62
|
+
# attach_attributes: _meta
|
63
|
+
# elements:
|
64
|
+
# - name: doctype
|
65
|
+
# attach: none
|
66
|
+
# attributes:
|
67
|
+
# - name: value
|
68
|
+
# as_name: doctype
|
69
|
+
# - name: FMPXMLLAYOUT
|
70
|
+
# attach: none
|
71
|
+
# - name: ERRORCODE
|
72
|
+
# attach: none
|
73
|
+
# # TODO: Build check_for_errors method in Layout class.
|
74
|
+
# #before_close: 'check_for_errors'
|
75
|
+
# attributes:
|
76
|
+
# - name: text
|
77
|
+
# as_name: error
|
78
|
+
# - name: PRODUCT
|
79
|
+
# as_name: product
|
80
|
+
# - name: LAYOUT
|
81
|
+
# attach: none
|
82
|
+
# attributes:
|
83
|
+
# - name: DATABASE
|
84
|
+
# as_name: database
|
85
|
+
# - name: NAME
|
86
|
+
# as_name: name
|
87
|
+
# - name: FIELD
|
88
|
+
# class: Rfm::Metadata::FieldControl
|
89
|
+
# as_name: field_controls
|
90
|
+
# delimiter: name
|
91
|
+
# attach_attributes: private
|
92
|
+
# attributes:
|
93
|
+
# - name: NAME
|
94
|
+
# as_name: name
|
95
|
+
# elements:
|
96
|
+
# - name: STYLE
|
97
|
+
# attach: none
|
98
|
+
# # Add logic for 3rd level of prefs, so FieldControl pref captures this attach_attributes instead having to explicitly define here.
|
99
|
+
# attach_attributes: private
|
100
|
+
# attributes:
|
101
|
+
# - name: TYPE
|
102
|
+
# as_name: type
|
103
|
+
# - name: VALUELIST
|
104
|
+
# as_name: valuelist
|
105
|
+
# - name: VALUELISTS
|
106
|
+
# attach: none
|
107
|
+
# - name: VALUELIST
|
108
|
+
# # TODO: Disabling this breaks the delimiter.
|
109
|
+
# #attach: shared
|
110
|
+
# class: Array
|
111
|
+
# as_name: value_lists
|
112
|
+
# delimiter: NAME
|
113
|
+
# elements:
|
114
|
+
# - name: VALUE
|
115
|
+
# class: Rfm::Metadata::ValueListItem
|
116
|
+
# before_close: replace(@value.to_s)
|
117
|
+
# attach_attributes: private
|
118
|
+
# attributes:
|
119
|
+
# - name: DISPLAY
|
120
|
+
# as_name: display
|
121
|
+
# - name: text
|
122
|
+
# as_name: value
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
# Works !!!
|
127
|
+
# ---
|
128
|
+
# elements:
|
129
|
+
# - name: FMPXMLLAYOUT
|
130
|
+
# attach: none
|
131
|
+
# attach_attributes: shared
|
132
|
+
# - name: ERRORCODE
|
133
|
+
# as_name: error
|
134
|
+
# attach: shared
|
135
|
+
# compact: true
|
136
|
+
# - name: PRODUCT
|
137
|
+
# attach: none
|
138
|
+
# attach_attributes: shared
|
139
|
+
# - name: LAYOUT
|
140
|
+
# attach: none
|
141
|
+
# attach_attributes: shared
|
142
|
+
# - name: FIELD
|
143
|
+
# class: Rfm::Metadata::FieldControl
|
144
|
+
# as_name: field_controls
|
145
|
+
# delineate_with_hash: name
|
146
|
+
# attributes:
|
147
|
+
# - name: NAME
|
148
|
+
# as_name: name
|
149
|
+
# elements:
|
150
|
+
# - name: STYLE
|
151
|
+
# attach: none
|
152
|
+
# attributes:
|
153
|
+
# - name: TYPE
|
154
|
+
# as_name: type
|
155
|
+
# - name: VALUELIST
|
156
|
+
# as_name: valuelist
|
157
|
+
# - name: VALUELISTS
|
158
|
+
# attach: none
|
159
|
+
# - name: VALUELIST
|
160
|
+
# class: Array
|
161
|
+
# as_name: value_lists
|
162
|
+
# delineate_with_hash: NAME
|
163
|
+
# elements:
|
164
|
+
# - name: VALUE
|
165
|
+
# # This turns the potential hash into a string
|
166
|
+
# class: String
|
167
|
+
# # Then we place the main attribute into the string's data.
|
168
|
+
# before_close: replace text
|
169
|
+
# attributes:
|
170
|
+
# - name: DISPLAY
|
171
|
+
# as_name: display
|
172
|
+
|
173
|
+
|
@@ -0,0 +1,79 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<fmresultset-xml>
|
3
|
+
<attach-elements>individual</attach-elements>
|
4
|
+
<elements >
|
5
|
+
<element>
|
6
|
+
<name>fmresultset</name>
|
7
|
+
<class>Rfm::FmResultset</class>
|
8
|
+
<ignore >
|
9
|
+
<ignore>self</ignore>
|
10
|
+
</ignore>
|
11
|
+
</element>
|
12
|
+
<element>
|
13
|
+
<name>datasource</name>
|
14
|
+
<class>Rfm::Datasource</class>
|
15
|
+
</element>
|
16
|
+
<element>
|
17
|
+
<name>metadata</name>
|
18
|
+
<class>Rfm::Meta</class>
|
19
|
+
<elements >
|
20
|
+
<element>
|
21
|
+
<name>field_definition</name>
|
22
|
+
<as-name>field_meta</as-name>
|
23
|
+
<attach>hash</attach>
|
24
|
+
</element>
|
25
|
+
<element>
|
26
|
+
<name>portal_definition</name>
|
27
|
+
<as-name>portal_meta</as-name>
|
28
|
+
<attach>hash</attach>
|
29
|
+
</element>
|
30
|
+
</elements>
|
31
|
+
</element>
|
32
|
+
<element>
|
33
|
+
<name>resultset</name>
|
34
|
+
<attach-attributes>individual</attach-attributes>
|
35
|
+
<ignore >
|
36
|
+
<ignore>self</ignore>
|
37
|
+
</ignore>
|
38
|
+
</element>
|
39
|
+
<element>
|
40
|
+
<name>record</name>
|
41
|
+
<class>Rfm::Record</class>
|
42
|
+
<attach-attributes>individual</attach-attributes>
|
43
|
+
<attach>hash</attach>
|
44
|
+
<elements >
|
45
|
+
<element>
|
46
|
+
<name>field</name>
|
47
|
+
<class>Rfm::Metadata::Field</class>
|
48
|
+
<attach-attributes>individual</attach-attributes>
|
49
|
+
<compact>true</compact>
|
50
|
+
<attach>none</attach>
|
51
|
+
<before-close>build_record_data</before-close>
|
52
|
+
</element>
|
53
|
+
<element>
|
54
|
+
<name>relatedset</name>
|
55
|
+
<class>Rfm::RelatedSet</class>
|
56
|
+
<attach>individual</attach>
|
57
|
+
<as-name>portals</as-name>
|
58
|
+
<delineate-with-hash>table</delineate-with-hash>
|
59
|
+
<elements >
|
60
|
+
<element>
|
61
|
+
<name>record</name>
|
62
|
+
<class>Rfm::Record</class>
|
63
|
+
<attach-attributes>individual</attach-attributes>
|
64
|
+
<elements >
|
65
|
+
<element>
|
66
|
+
<name>field</name>
|
67
|
+
<compact>true</compact>
|
68
|
+
<class>Rfm::Metadata::Field</class>
|
69
|
+
<attach>none</attach>
|
70
|
+
<before-close>build_record_data</before-close>
|
71
|
+
</element>
|
72
|
+
</elements>
|
73
|
+
</element>
|
74
|
+
</elements>
|
75
|
+
</element>
|
76
|
+
</elements>
|
77
|
+
</element>
|
78
|
+
</elements>
|
79
|
+
</fmresultset-xml>
|
@@ -0,0 +1,160 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# YAML structure defining a SAX parsing scheme for fmresultset xml.
|
3
|
+
# The initial object of this parse should be a new instance of Rfm::Resultset.
|
4
|
+
---
|
5
|
+
attach_elements: _meta
|
6
|
+
attach_attributes: _meta
|
7
|
+
create_accessors: all
|
8
|
+
elements:
|
9
|
+
- name: doctype
|
10
|
+
attach: none
|
11
|
+
attributes:
|
12
|
+
- name: value
|
13
|
+
as_name: doctype
|
14
|
+
- name: fmresultset
|
15
|
+
attach: none
|
16
|
+
- name: product
|
17
|
+
- name: error
|
18
|
+
attach: none
|
19
|
+
before_close: 'check_for_errors'
|
20
|
+
attributes:
|
21
|
+
- name: code
|
22
|
+
as_name: error
|
23
|
+
- name: datasource
|
24
|
+
attach: none
|
25
|
+
attributes:
|
26
|
+
- name: total_count
|
27
|
+
accessor: none
|
28
|
+
before_close: :end_datasource_element_callback
|
29
|
+
- name: metadata
|
30
|
+
attach: none
|
31
|
+
- name: field_definition
|
32
|
+
handler: [object.meta, handle_new_field, _attributes]
|
33
|
+
before_close: :main_callback
|
34
|
+
- name: relatedset_definition
|
35
|
+
delimiter: table
|
36
|
+
as_name: portal_meta
|
37
|
+
attach_attributes: private
|
38
|
+
elements:
|
39
|
+
- name: field_definition
|
40
|
+
class: Rfm::Metadata::Field
|
41
|
+
attach: cursor
|
42
|
+
delimiter: name
|
43
|
+
as_name: field_meta
|
44
|
+
attach_attributes: private
|
45
|
+
before_close: :portal_callback
|
46
|
+
- name: resultset
|
47
|
+
attach: none
|
48
|
+
attributes:
|
49
|
+
- name: count
|
50
|
+
accessor: none
|
51
|
+
- name: fetch_size
|
52
|
+
accessor: none
|
53
|
+
- name: record
|
54
|
+
handler: [object, handle_new_record, _attributes]
|
55
|
+
before_close: '@loaded=true'
|
56
|
+
elements:
|
57
|
+
- name: field
|
58
|
+
class: Rfm::Metadata::Datum
|
59
|
+
compact: true
|
60
|
+
attach: cursor
|
61
|
+
before_close: :handler_callback
|
62
|
+
- name: relatedset
|
63
|
+
class: Array
|
64
|
+
as_name: portals
|
65
|
+
attach: private
|
66
|
+
attach_attributes: private
|
67
|
+
create_accessors: all
|
68
|
+
delimiter: table
|
69
|
+
elements:
|
70
|
+
- name: record
|
71
|
+
class: Rfm::Record
|
72
|
+
attach_attributes: private
|
73
|
+
before_close: '@loaded=true'
|
74
|
+
elements:
|
75
|
+
- name: field
|
76
|
+
compact: true
|
77
|
+
class: Rfm::Metadata::Datum
|
78
|
+
attach: cursor
|
79
|
+
before_close: :portal_callback
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
# Works - doesn't use Handler methods.
|
84
|
+
# ---
|
85
|
+
# attach_elements: _meta
|
86
|
+
# attach_attributes: _meta
|
87
|
+
# create_accessors: all
|
88
|
+
# elements:
|
89
|
+
# - name: doctype
|
90
|
+
# attach: none
|
91
|
+
# attributes:
|
92
|
+
# - name: value
|
93
|
+
# as_name: doctype
|
94
|
+
# - name: fmresultset
|
95
|
+
# attach: none
|
96
|
+
# - name: product
|
97
|
+
# - name: error
|
98
|
+
# attach: none
|
99
|
+
# before_close: 'check_for_errors'
|
100
|
+
# attributes:
|
101
|
+
# - name: code
|
102
|
+
# as_name: error
|
103
|
+
# - name: datasource
|
104
|
+
# attach: none
|
105
|
+
# before_close: :end_datasource_element_callback
|
106
|
+
# - name: metadata
|
107
|
+
# attach: none
|
108
|
+
# - name: field_definition
|
109
|
+
# class: Rfm::Metadata::Field
|
110
|
+
# attach: cursor
|
111
|
+
# delimiter: name
|
112
|
+
# as_name: field_meta
|
113
|
+
# attach_attributes: private
|
114
|
+
# before_close: :main_callback
|
115
|
+
# - name: relatedset_definition
|
116
|
+
# delimiter: table
|
117
|
+
# as_name: portal_meta
|
118
|
+
# attach_attributes: private
|
119
|
+
# elements:
|
120
|
+
# - name: field_definition
|
121
|
+
# class: Rfm::Metadata::Field
|
122
|
+
# attach: cursor
|
123
|
+
# delimiter: name
|
124
|
+
# as_name: field_meta
|
125
|
+
# attach_attributes: private
|
126
|
+
# before_close: :portal_callback
|
127
|
+
# - name: resultset
|
128
|
+
# attach: none
|
129
|
+
# - name: record
|
130
|
+
# class: Rfm::Record
|
131
|
+
# initialize: [new, object]
|
132
|
+
# attach: array
|
133
|
+
# attach_attributes: private
|
134
|
+
# before_close: '@loaded=true'
|
135
|
+
# elements:
|
136
|
+
# - name: field
|
137
|
+
# class: Rfm::Metadata::Datum
|
138
|
+
# compact: true
|
139
|
+
# attach: cursor
|
140
|
+
# before_close: :main_callback
|
141
|
+
# - name: relatedset
|
142
|
+
# class: Array
|
143
|
+
# as_name: portals
|
144
|
+
# attach: private
|
145
|
+
# attach_attributes: private
|
146
|
+
# create_accessors: all
|
147
|
+
# delimiter: table
|
148
|
+
# elements:
|
149
|
+
# - name: record
|
150
|
+
# class: Rfm::Record
|
151
|
+
# # Should this be enabled?
|
152
|
+
# #initialize: [new, object]
|
153
|
+
# attach_attributes: private
|
154
|
+
# before_close: '@loaded=true'
|
155
|
+
# elements:
|
156
|
+
# - name: field
|
157
|
+
# compact: true
|
158
|
+
# class: Rfm::Metadata::Datum
|
159
|
+
# attach: cursor
|
160
|
+
# before_close: :portal_callback
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ginjo-rfm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Geoff Coffey
|
@@ -192,6 +192,10 @@ files:
|
|
192
192
|
- lib/rfm/utilities/connection.rb
|
193
193
|
- lib/rfm/utilities/core_ext.rb
|
194
194
|
- lib/rfm/utilities/factory.rb
|
195
|
+
- lib/rfm/utilities/sax/fmpxml_minimal.yml
|
196
|
+
- lib/rfm/utilities/sax/fmpxmllayout.yml
|
197
|
+
- lib/rfm/utilities/sax/fmresultset.xml
|
198
|
+
- lib/rfm/utilities/sax/fmresultset.yml
|
195
199
|
- lib/rfm/utilities/sax_parser.rb
|
196
200
|
- lib/rfm/version.rb
|
197
201
|
homepage: https://rubygems.org/gems/ginjo-rfm
|