activefacts 1.6.0 → 1.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (169) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +14 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +4 -0
  5. data/Gemfile +14 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +60 -0
  8. data/Rakefile +3 -80
  9. data/activefacts.gemspec +36 -0
  10. data/bin/afgen +4 -2
  11. data/bin/cql +5 -1
  12. data/lib/activefacts.rb +3 -12
  13. data/lib/activefacts/{vocabulary/query_evaluator.rb → query/evaluator.rb} +0 -0
  14. data/lib/activefacts/version.rb +2 -2
  15. metadata +48 -296
  16. data/History.txt +0 -4
  17. data/LICENSE +0 -19
  18. data/Manifest.txt +0 -165
  19. data/README.rdoc +0 -81
  20. data/css/offline.css +0 -3
  21. data/css/orm2.css +0 -124
  22. data/css/print.css +0 -8
  23. data/css/style-print.css +0 -357
  24. data/css/style.css +0 -387
  25. data/download.html +0 -110
  26. data/examples/CQL/Address.cql +0 -44
  27. data/examples/CQL/Blog.cql +0 -54
  28. data/examples/CQL/CompanyDirectorEmployee.cql +0 -56
  29. data/examples/CQL/Death.cql +0 -17
  30. data/examples/CQL/Diplomacy.cql +0 -48
  31. data/examples/CQL/Genealogy.cql +0 -98
  32. data/examples/CQL/Insurance.cql +0 -320
  33. data/examples/CQL/Marriage.cql +0 -18
  34. data/examples/CQL/Metamodel.cql +0 -493
  35. data/examples/CQL/Monogamy.cql +0 -24
  36. data/examples/CQL/MultiInheritance.cql +0 -22
  37. data/examples/CQL/NonRoleId.cql +0 -14
  38. data/examples/CQL/OddIdentifier.cql +0 -18
  39. data/examples/CQL/OilSupply.cql +0 -53
  40. data/examples/CQL/OneToOnes.cql +0 -17
  41. data/examples/CQL/Orienteering.cql +0 -111
  42. data/examples/CQL/PersonPlaysGame.cql +0 -18
  43. data/examples/CQL/RedundantDependency.cql +0 -34
  44. data/examples/CQL/SchoolActivities.cql +0 -33
  45. data/examples/CQL/SeparateSubtype.cql +0 -30
  46. data/examples/CQL/ServiceDirector.cql +0 -276
  47. data/examples/CQL/SimplestUnary.cql +0 -12
  48. data/examples/CQL/Supervision.cql +0 -34
  49. data/examples/CQL/WaiterTips.cql +0 -33
  50. data/examples/CQL/Warehousing.cql +0 -101
  51. data/examples/CQL/WindowInRoomInBldg.cql +0 -28
  52. data/examples/CQL/unit.cql +0 -474
  53. data/examples/index.html +0 -420
  54. data/examples/intro.html +0 -327
  55. data/examples/local.css +0 -24
  56. data/index.html +0 -111
  57. data/lib/activefacts/cql.rb +0 -35
  58. data/lib/activefacts/cql/CQLParser.treetop +0 -158
  59. data/lib/activefacts/cql/Context.treetop +0 -48
  60. data/lib/activefacts/cql/Expressions.treetop +0 -67
  61. data/lib/activefacts/cql/FactTypes.treetop +0 -358
  62. data/lib/activefacts/cql/Language/English.treetop +0 -315
  63. data/lib/activefacts/cql/LexicalRules.treetop +0 -253
  64. data/lib/activefacts/cql/ObjectTypes.treetop +0 -210
  65. data/lib/activefacts/cql/Rakefile +0 -14
  66. data/lib/activefacts/cql/Terms.treetop +0 -183
  67. data/lib/activefacts/cql/ValueTypes.treetop +0 -202
  68. data/lib/activefacts/cql/compiler.rb +0 -156
  69. data/lib/activefacts/cql/compiler/clause.rb +0 -1137
  70. data/lib/activefacts/cql/compiler/constraint.rb +0 -581
  71. data/lib/activefacts/cql/compiler/entity_type.rb +0 -457
  72. data/lib/activefacts/cql/compiler/expression.rb +0 -443
  73. data/lib/activefacts/cql/compiler/fact.rb +0 -390
  74. data/lib/activefacts/cql/compiler/fact_type.rb +0 -421
  75. data/lib/activefacts/cql/compiler/query.rb +0 -106
  76. data/lib/activefacts/cql/compiler/shared.rb +0 -161
  77. data/lib/activefacts/cql/compiler/value_type.rb +0 -174
  78. data/lib/activefacts/cql/nodes.rb +0 -49
  79. data/lib/activefacts/cql/parser.rb +0 -241
  80. data/lib/activefacts/dependency_analyser.rb +0 -182
  81. data/lib/activefacts/generate/absorption.rb +0 -70
  82. data/lib/activefacts/generate/composition.rb +0 -118
  83. data/lib/activefacts/generate/cql.rb +0 -714
  84. data/lib/activefacts/generate/dm.rb +0 -279
  85. data/lib/activefacts/generate/help.rb +0 -64
  86. data/lib/activefacts/generate/helpers/inject.rb +0 -16
  87. data/lib/activefacts/generate/helpers/oo.rb +0 -162
  88. data/lib/activefacts/generate/helpers/ordered.rb +0 -605
  89. data/lib/activefacts/generate/helpers/rails.rb +0 -57
  90. data/lib/activefacts/generate/html/glossary.rb +0 -461
  91. data/lib/activefacts/generate/json.rb +0 -337
  92. data/lib/activefacts/generate/null.rb +0 -32
  93. data/lib/activefacts/generate/rails/models.rb +0 -246
  94. data/lib/activefacts/generate/rails/schema.rb +0 -216
  95. data/lib/activefacts/generate/records.rb +0 -46
  96. data/lib/activefacts/generate/ruby.rb +0 -133
  97. data/lib/activefacts/generate/sql/mysql.rb +0 -280
  98. data/lib/activefacts/generate/sql/server.rb +0 -273
  99. data/lib/activefacts/generate/stats.rb +0 -69
  100. data/lib/activefacts/generate/text.rb +0 -27
  101. data/lib/activefacts/generate/topics.rb +0 -265
  102. data/lib/activefacts/generate/traits/datavault.rb +0 -241
  103. data/lib/activefacts/generate/traits/oo.rb +0 -73
  104. data/lib/activefacts/generate/traits/ordered.rb +0 -33
  105. data/lib/activefacts/generate/traits/ruby.rb +0 -210
  106. data/lib/activefacts/generate/transform/datavault.rb +0 -266
  107. data/lib/activefacts/generate/transform/surrogate.rb +0 -214
  108. data/lib/activefacts/generate/version.rb +0 -26
  109. data/lib/activefacts/input/cql.rb +0 -43
  110. data/lib/activefacts/input/orm.rb +0 -1636
  111. data/lib/activefacts/mapping/rails.rb +0 -132
  112. data/lib/activefacts/persistence.rb +0 -15
  113. data/lib/activefacts/persistence/columns.rb +0 -446
  114. data/lib/activefacts/persistence/foreignkey.rb +0 -187
  115. data/lib/activefacts/persistence/index.rb +0 -240
  116. data/lib/activefacts/persistence/object_type.rb +0 -198
  117. data/lib/activefacts/persistence/reference.rb +0 -434
  118. data/lib/activefacts/persistence/tables.rb +0 -380
  119. data/lib/activefacts/registry.rb +0 -11
  120. data/lib/activefacts/support.rb +0 -132
  121. data/lib/activefacts/vocabulary.rb +0 -9
  122. data/lib/activefacts/vocabulary/extensions.rb +0 -1348
  123. data/lib/activefacts/vocabulary/metamodel.rb +0 -570
  124. data/lib/activefacts/vocabulary/verbaliser.rb +0 -804
  125. data/script/txt2html +0 -71
  126. data/spec/absorption_spec.rb +0 -95
  127. data/spec/cql/comparison_spec.rb +0 -89
  128. data/spec/cql/context_spec.rb +0 -94
  129. data/spec/cql/contractions_spec.rb +0 -224
  130. data/spec/cql/deontic_spec.rb +0 -88
  131. data/spec/cql/entity_type_spec.rb +0 -320
  132. data/spec/cql/expressions_spec.rb +0 -66
  133. data/spec/cql/fact_type_matching_spec.rb +0 -338
  134. data/spec/cql/french_spec.rb +0 -21
  135. data/spec/cql/parser/bad_literals_spec.rb +0 -86
  136. data/spec/cql/parser/constraints_spec.rb +0 -19
  137. data/spec/cql/parser/entity_types_spec.rb +0 -106
  138. data/spec/cql/parser/expressions_spec.rb +0 -199
  139. data/spec/cql/parser/fact_types_spec.rb +0 -44
  140. data/spec/cql/parser/literals_spec.rb +0 -312
  141. data/spec/cql/parser/pragmas_spec.rb +0 -89
  142. data/spec/cql/parser/value_types_spec.rb +0 -42
  143. data/spec/cql/role_matching_spec.rb +0 -148
  144. data/spec/cql/samples_spec.rb +0 -244
  145. data/spec/cql_cql_spec.rb +0 -73
  146. data/spec/cql_dm_spec.rb +0 -136
  147. data/spec/cql_mysql_spec.rb +0 -69
  148. data/spec/cql_parse_spec.rb +0 -34
  149. data/spec/cql_ruby_spec.rb +0 -73
  150. data/spec/cql_sql_spec.rb +0 -72
  151. data/spec/cql_symbol_tables_spec.rb +0 -261
  152. data/spec/cqldump_spec.rb +0 -170
  153. data/spec/helpers/array_matcher.rb +0 -23
  154. data/spec/helpers/ctrl_c_support.rb +0 -52
  155. data/spec/helpers/diff_matcher.rb +0 -39
  156. data/spec/helpers/file_matcher.rb +0 -34
  157. data/spec/helpers/parse_to_ast_matcher.rb +0 -80
  158. data/spec/helpers/string_matcher.rb +0 -30
  159. data/spec/helpers/test_parser.rb +0 -15
  160. data/spec/norma_cql_spec.rb +0 -66
  161. data/spec/norma_ruby_spec.rb +0 -62
  162. data/spec/norma_ruby_sql_spec.rb +0 -107
  163. data/spec/norma_sql_spec.rb +0 -57
  164. data/spec/norma_tables_spec.rb +0 -95
  165. data/spec/ruby_api_spec.rb +0 -23
  166. data/spec/spec_helper.rb +0 -35
  167. data/spec/transform_surrogate_spec.rb +0 -59
  168. data/status.html +0 -138
  169. data/why.html +0 -60
@@ -1,253 +0,0 @@
1
- #
2
- # ActiveFacts CQL Parser.
3
- # Various lexical rules for CQL.
4
- #
5
- # Copyright (c) 2009 Clifford Heath. Read the LICENSE file.
6
- #
7
- module ActiveFacts
8
- module CQL
9
- grammar LexicalRules
10
-
11
- rule range
12
- (numeric_range / string_range)
13
- {
14
- def node_type; :literal; end
15
- }
16
- end
17
-
18
- rule numeric_range
19
- number s tail:( '..' s end:number? s )?
20
- {
21
- def value
22
- if !tail.empty?
23
- last = tail.end.value unless tail.end.empty?
24
- [ number.value, last ]
25
- else
26
- number.value
27
- end
28
- end
29
- }
30
- / '..' s number s
31
- {
32
- def value
33
- [ nil, number.value ]
34
- end
35
- }
36
- end
37
-
38
- rule string_range
39
- string s tail:( '..' s end:string? s )?
40
- {
41
- # Ranges require the original text of the string, not the content:
42
- def value
43
- first = string.text_value
44
- if !tail.empty?
45
- last = tail.end.text_value unless tail.end.empty?
46
- [ first, last ]
47
- else
48
- first
49
- end
50
- end
51
- }
52
- / '..' s string s
53
- {
54
- def value
55
- [ nil, string.value ]
56
- end
57
- }
58
- end
59
-
60
- rule url
61
- # url_scheme ':' (user ( ':' !(port '/') password )? '@' )? hostname ( ':' port )? '/' path query? fragment?
62
- ( !(white / ';') .)+
63
- {
64
- def node_type; :literal; end
65
- }
66
- end
67
-
68
- rule literal
69
- ( boolean_literal
70
- / string
71
- / number
72
- ) s
73
- {
74
- def value
75
- elements[0].value
76
- end
77
- def node_type; :literal; end
78
- }
79
- end
80
-
81
- rule boolean_literal
82
- ( true { def value; true; end }
83
- / false { def value; false; end }
84
- ) !alphanumeric
85
- {
86
- def value; elements[0].value end
87
- }
88
- end
89
-
90
- rule string
91
- "'" (string_char)* "'"
92
- {
93
- def value
94
- text_value
95
- eval(text_value.sub(/\A'(.*)'\Z/,'"\1"'))
96
- end
97
- }
98
- end
99
-
100
- rule number
101
- ( real /
102
- fractional_real /
103
- hexnumber /
104
- octalnumber
105
- ) !alphanumeric
106
- {
107
- def value
108
- eval(text_value)
109
- end
110
- def node_type; :literal; end
111
- }
112
- end
113
-
114
- # All purely lexical rules from here down, no-one looks at the structure, just the text_value:
115
-
116
- rule string_char
117
- ( '\\' [befntr\\']
118
- / '\\' [0-7] [0-7] [0-7]
119
- / '\\' [\r]* [\n] [\r]*
120
- / '\\0'
121
- / '\\x' [0-9A-Fa-f] [0-9A-Fa-f]
122
- / '\\u' [0-9A-Fa-f] [0-9A-Fa-f] [0-9A-Fa-f] [0-9A-Fa-f]
123
- / (![\'\\\0-\x07\x0A-\x1F] .)
124
- )
125
- end
126
-
127
- rule real
128
- [-+]? [1-9] [0-9]* fraction? exponent?
129
- end
130
-
131
- rule fractional_real
132
- [-+]? '0' fraction exponent?
133
- end
134
-
135
- rule fraction
136
- radix_point [0-9]+
137
- end
138
-
139
- rule exponent
140
- ( [Ee] [-+]? [0-9]+ )
141
- end
142
-
143
- rule hexnumber
144
- '0x' [0-9A-Fa-f]+
145
- end
146
-
147
- rule octalnumber
148
- '0' [0-7]*
149
- end
150
-
151
- rule mul_op
152
- '/' / '%' / '*'
153
- end
154
-
155
- rule id
156
- alpha alphanumeric*
157
- { def value; text_value; end }
158
- end
159
-
160
- rule alpha
161
- [[:alpha:]_]
162
- end
163
-
164
- rule alphanumeric
165
- alpha / [0-9]
166
- end
167
-
168
- rule s # Optional space
169
- S?
170
- end
171
-
172
- rule S # Mandatory space
173
- (white / comment_to_eol / comment_c_style)+
174
- end
175
-
176
- rule white
177
- [ \t\n\r]+
178
- end
179
-
180
- rule comment_to_eol
181
- '//' (!"\n" .)*
182
- {
183
- def node_type; :comment; end
184
- }
185
- end
186
-
187
- rule comment_c_style
188
- '/*' (!'*/' . )* '*/'
189
- {
190
- def node_type; :comment; end
191
- }
192
- end
193
-
194
- rule regular_expression
195
- '/' !'/' regular_expression_contents '/'
196
- {
197
- def contents
198
- regular_expression_contents.text_value
199
- end
200
- }
201
- end
202
-
203
- rule regular_expression_contents
204
- regular_expression_alternate ( '|' regular_expression_alternate )*
205
- end
206
-
207
- rule regular_expression_alternate
208
- regular_expression_sequence
209
- end
210
-
211
- rule regular_expression_sequence
212
- regular_expression_atom*
213
- end
214
-
215
- rule regular_expression_atom
216
- (
217
- '[' character_classes ']'
218
- / regular_expression_group
219
- / ![*+?()|/] string_char
220
- ) regular_expression_multiplicity?
221
- end
222
-
223
- rule character_classes
224
- character_class+
225
- end
226
-
227
- rule character_class
228
- !']' string_char '-' !']' string_char
229
- / '-'
230
- / !']' string_char
231
- end
232
-
233
- rule regular_expression_multiplicity
234
- '*' / '+' / '?'
235
- end
236
-
237
- rule regular_expression_group
238
- '('
239
- regular_expression_group_extension?
240
- regular_expression_contents
241
- ')'
242
- end
243
-
244
- rule regular_expression_group_extension
245
- '?' (
246
- '<' ( !'>' .)+ '>' # A tag for a regular expression group
247
- # REVISIT: Add more group extensions as needed
248
- )
249
- end
250
-
251
- end
252
- end
253
- end
@@ -1,210 +0,0 @@
1
- #
2
- # ActiveFacts CQL Parser.
3
- # Parse rules relating to ObjectType definitions.
4
- #
5
- # Copyright (c) 2009 Clifford Heath. Read the LICENSE file.
6
- #
7
- module ActiveFacts
8
- module CQL
9
- grammar ObjectTypes
10
- rule object_type
11
- value_type
12
- / entity_type
13
- / named_fact_type
14
- / anonymous_fact_type
15
- end
16
-
17
- rule entity_type
18
- s each?
19
- s term_definition_name
20
- m1:mapping_pragmas
21
- c:context_note?
22
- sup:(basetype / subtype)
23
- &{|s|
24
- # There's an implicit type when we use an identification mode, register it:
25
- mode = s[6].identification_mode
26
- if mode
27
- input.context.object_type(s[3].value+mode, "identification mode type")
28
- input.context.object_type(s[3].value+' '+mode, "identification mode type")
29
- end
30
- true
31
- }
32
- m2:mapping_pragmas
33
- c2:context_note?
34
- ec:entity_clauses?
35
- ';'
36
- {
37
- def ast
38
- name = term_definition_name.value
39
- clauses_ast = ec.empty? ? [] : ec.ast
40
- pragmas = m1.value+m2.value
41
- pragmas << 'independent' if sup.independent
42
- context_note = !c.empty? ? c.ast : (!c2.empty? ? c2.ast : nil)
43
- Compiler::EntityType.new name, sup.supers, sup.ast, pragmas, clauses_ast, context_note
44
- end
45
- }
46
- end
47
-
48
- rule basetype
49
- basetype_expression
50
- {
51
- def ast; identification.ast; end
52
- def supers; []; end
53
- def identification_mode; identification.mode; end
54
- def independent; !i.empty?; end
55
- }
56
- end
57
-
58
- rule subtype
59
- subtype_expression
60
- {
61
- def ast; ident.empty? ? nil : ident.ast; end
62
- def supers; supertype_list.value; end
63
- def identification_mode; ident.empty? ? nil : ident.mode; end
64
- def independent; !i.empty?; end
65
- }
66
- end
67
-
68
- rule supertype_list
69
- primary:term s alternate_supertypes:( (','/'and' !alpha) s !identified_by name:term s )*
70
- {
71
- def value
72
- [primary.value, *alternate_supertypes.elements.map { |sup| sup.name.value } ]
73
- end
74
- }
75
- end
76
-
77
- rule identification
78
- # REVISIT: Consider distinguishing "-Id" from just "Id", and not prepending the entity type name if no "-"
79
- identified_by its s i:(term/implicit_value_type_name) value_type_parameters
80
- r:(value_constraint enforcement)? # Reference Mode; value_constraint may be needed for the ValueType
81
- {
82
- def ast
83
- if r.empty?
84
- value_constraint = nil
85
- else
86
- value_constraint = Compiler::ValueConstraint.new(r.value_constraint.ast, r.enforcement.ast)
87
- end
88
- Compiler::ReferenceMode.new(i.value, value_constraint, value_type_parameters.values)
89
- end
90
-
91
- def mode
92
- i.value
93
- end
94
- }
95
- /
96
- identified_by role_list
97
- &{|s|
98
- role_list = s[-1]
99
- forwards = role_list.ast.
100
- map do |role|
101
- next nil if role.is_a?(Compiler::Clause) # Can't forward-reference unaries
102
- next nil if role.leading_adjective or role.trailing_adjective
103
- role.term
104
- end.
105
- compact
106
- input.context.allowed_forward_terms(forwards)
107
- true
108
- }
109
- {
110
- def ast
111
- role_list.ast
112
- end
113
-
114
- def mode
115
- nil
116
- end
117
- }
118
- end
119
-
120
- # Identified by roles... also used for constraints, beware
121
- rule role_list
122
- a:any? s
123
- head:term_or_unary s
124
- tail:(
125
- ( and S / ',' s )
126
- any? s
127
- term_or_unary s
128
- )*
129
- {
130
- def ast
131
- [head.ast, *tail.elements.map{|e| e.term_or_unary.ast}]
132
- end
133
- }
134
- end
135
-
136
- rule unary_text
137
- (s !any !non_phrase !term id)*
138
- {
139
- def node_type; :linking; end
140
- }
141
- end
142
-
143
- rule term_or_unary
144
- pre_text:unary_text s term post_text:unary_text s ss:subscript?
145
- {
146
- def ast
147
- t = term.ast
148
- t.role_name = ss.value if !ss.empty?
149
- if pre_text.elements.size == 0 && post_text.elements.size == 0
150
- t
151
- else
152
- pre_words = pre_text.elements.map{|w| w.id.text_value}
153
- post_words = post_text.elements.map{|w| w.id.text_value}
154
- Compiler::Clause.new(pre_words + [t] + post_words, [], nil)
155
- end
156
- end
157
- }
158
- /
159
- s !non_phrase id s &non_phrase s ss:subscript?
160
- { # A forward-referenced entity type
161
- # REVISIT: A change in this rule might allow forward-referencing a multi-word term
162
- def ast
163
- Compiler::Reference.new(id.text_value, nil, nil, nil, nil, ss.empty? ? nil : ss.value)
164
- end
165
- }
166
- end
167
-
168
- rule mapping_pragmas
169
- '[' s h:mapping_pragma t:(s ',' s mapping_pragma)* s ']' s
170
- {
171
- def value
172
- t.elements.inject([h.value*' ']) do |a, e|
173
- a << e.mapping_pragma.value*' '
174
- end
175
- end
176
- }
177
- /
178
- s
179
- { def value; []; end }
180
- end
181
-
182
- # Each mapping_pragma returns an array of words
183
- rule mapping_pragma
184
- was s names:(id s)+
185
- { # Old or previous name of an object type:
186
- def value
187
- [ was.text_value ] + names.elements.map{|n|n.text_value}
188
- end
189
- }
190
- /
191
- head:id tail:(s id)*
192
- { # A sequence of one or more words denoting a pragma:
193
- def value
194
- ([head]+tail.elements.map(&:id)).map(&:text_value)
195
- end
196
- }
197
- end
198
-
199
- rule entity_clauses
200
- (':' / where) s query_clauses
201
- {
202
- def ast
203
- query_clauses.ast
204
- end
205
- }
206
- end
207
-
208
- end
209
- end
210
- end