activefacts 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +5 -13
  2. data/Rakefile +2 -2
  3. data/bin/afgen +1 -1
  4. data/bin/cql +118 -27
  5. data/examples/CQL/Insurance.cql +2 -2
  6. data/examples/CQL/Metamodel.cql +3 -3
  7. data/examples/CQL/SchoolActivities.cql +1 -1
  8. data/examples/CQL/Warehousing.cql +5 -4
  9. data/lib/activefacts/cql.rb +1 -1
  10. data/lib/activefacts/cql/Language/English.treetop +2 -1
  11. data/lib/activefacts/cql/compiler.rb +6 -6
  12. data/lib/activefacts/cql/compiler/clause.rb +69 -46
  13. data/lib/activefacts/cql/compiler/constraint.rb +14 -14
  14. data/lib/activefacts/cql/compiler/entity_type.rb +24 -24
  15. data/lib/activefacts/cql/compiler/fact.rb +40 -27
  16. data/lib/activefacts/cql/compiler/fact_type.rb +16 -16
  17. data/lib/activefacts/cql/compiler/query.rb +12 -12
  18. data/lib/activefacts/cql/compiler/shared.rb +9 -0
  19. data/lib/activefacts/cql/compiler/value_type.rb +4 -4
  20. data/lib/activefacts/cql/parser.rb +9 -9
  21. data/lib/activefacts/generate/cql.rb +41 -20
  22. data/lib/activefacts/generate/helpers/oo.rb +33 -70
  23. data/lib/activefacts/generate/helpers/ordered.rb +61 -87
  24. data/lib/activefacts/generate/ruby.rb +12 -72
  25. data/lib/activefacts/generate/transform/surrogate.rb +13 -13
  26. data/lib/activefacts/input/orm.rb +72 -71
  27. data/lib/activefacts/persistence/columns.rb +66 -31
  28. data/lib/activefacts/persistence/foreignkey.rb +6 -6
  29. data/lib/activefacts/persistence/index.rb +12 -12
  30. data/lib/activefacts/persistence/object_type.rb +15 -12
  31. data/lib/activefacts/persistence/reference.rb +20 -18
  32. data/lib/activefacts/persistence/tables.rb +40 -36
  33. data/lib/activefacts/support.rb +69 -123
  34. data/lib/activefacts/version.rb +2 -2
  35. data/lib/activefacts/vocabulary/extensions.rb +42 -39
  36. data/lib/activefacts/vocabulary/metamodel.rb +11 -1
  37. data/lib/activefacts/vocabulary/verbaliser.rb +28 -28
  38. data/spec/cql/contractions_spec.rb +1 -1
  39. data/spec/cql/entity_type_spec.rb +1 -1
  40. data/spec/cql/fact_type_matching_spec.rb +3 -3
  41. data/spec/cql/role_matching_spec.rb +4 -4
  42. data/spec/cql/samples_spec.rb +2 -2
  43. data/spec/cql_cql_spec.rb +1 -1
  44. data/spec/helpers/array_matcher.rb +1 -1
  45. data/spec/norma_ruby_sql_spec.rb +2 -2
  46. data/spec/norma_tables_spec.rb +3 -2
  47. metadata +47 -68
@@ -176,7 +176,7 @@ describe "When compiling a query, " do
176
176
  end
177
177
 
178
178
  it "and should project the fact type roles from the query" do
179
- pending "Plays are not yet projected" do
179
+ skip "Plays are not yet projected" do
180
180
  query = derivation(fact_type)
181
181
  queries = fact_type.all_role.map{|r| r.all_play.map{|play| play.query}}.flatten.uniq
182
182
  queries.size == 1
@@ -307,7 +307,7 @@ describe "When compiling an entity type, " do
307
307
  test.call(@compiler.vocabulary.constellation)
308
308
  rescue RSpec::Expectations::ExpectationNotMetError
309
309
  raise
310
- rescue RSpec::Core::Pending::PendingDeclaredInExample.new
310
+ rescue RSpec::Core::Pending::PendingDeclaredInExample
311
311
  raise
312
312
  rescue => e
313
313
  puts "Failed on\n\t"+tests.select{|t| t.is_a?(String)}*" "
@@ -69,7 +69,7 @@ describe "When matching a reading" do
69
69
  end
70
70
 
71
71
  it "should remove duplicate new readings" do
72
- pending("duplicate new clauses cause an error") do
72
+ skip("duplicate new clauses cause an error") do
73
73
  compile %q{
74
74
  Girl is going out with Boy,
75
75
  Girl is going out with Boy,
@@ -99,7 +99,7 @@ describe "When matching a reading" do
99
99
  }
100
100
  (new_fact_types = fact_types).size.should == 1
101
101
  (readings = (fact_type = new_fact_types[0]).all_reading.to_a).size.should == 2
102
- readings.detect{|r| r.text =~ /semi-trailer/}.should be_true
102
+ readings.detect{|r| r.text =~ /semi-trailer/}.should be_truthy
103
103
  (pcs = fact_pcs(fact_type)).size.should == 1
104
104
  end
105
105
 
@@ -112,7 +112,7 @@ describe "When matching a reading" do
112
112
  end
113
113
 
114
114
  it "should match role names" do
115
- pending("duplicate new clauses cause an error") do
115
+ skip("duplicate new clauses cause an error") do
116
116
  compile %q{
117
117
  Girl (as Girlfriend) is going out with Boy,
118
118
  Boy is going out with Girlfriend;
@@ -78,7 +78,7 @@ describe "When comparing roles of a reading with an existing reading" do
78
78
  side_effects.size.should == 2
79
79
  side_effects[0].should_not be_nil
80
80
  side_effects[1].should be_nil
81
- pending side_effects[0].to_s
81
+ skip side_effects[0].to_s
82
82
  side_effects[0].to_s.should == '[{bad- Boy} absorbs 0/0 at 0 with residual adjectives, {Girl} absorbs 0/0 at 5] with residual adjectives'
83
83
  #side_effects[1].to_s.should == ''
84
84
  end
@@ -91,7 +91,7 @@ describe "When comparing roles of a reading with an existing reading" do
91
91
  @asts.size.should == 1
92
92
  side_effects = match_readings_to_existing(@asts[0], @ugly_ft.all_reading.single)
93
93
  side_effects.size.should == 2
94
- pending "Matched adjectives must be removed and the role rebound before deciding whether residual adjectives have a purpose" do
94
+ skip "Matched adjectives must be removed and the role rebound before deciding whether residual adjectives have a purpose" do
95
95
  side_effects[0].should_not be_nil
96
96
  puts side_effects[0].to_s
97
97
  #side_effects.to_s.should == ''
@@ -103,7 +103,7 @@ describe "When comparing roles of a reading with an existing reading" do
103
103
  parse %q{Boy-monster hurts Girl;}
104
104
  @asts.size.should == 1
105
105
  side_effects = match_readings_to_existing(@asts[0], @hurts_ft.all_reading.single)
106
- pending "Thinks trailing adjectives are always residual"
106
+ skip "Thinks trailing adjectives are always residual"
107
107
  side_effects[0].should_not be_nil
108
108
  side_effects[0].to_s.should == ''
109
109
  end
@@ -137,7 +137,7 @@ describe "When comparing roles of a reading with an existing reading" do
137
137
  side_effects = match_readings_to_existing(@asts[0], @hurts_ft.all_reading.single)
138
138
  side_effects.size.should == 2
139
139
 
140
- pending "Matched adjectives must be removed and the role rebound before deciding whether residual adjectives have a purpose" do
140
+ skip "Matched adjectives must be removed and the role rebound before deciding whether residual adjectives have a purpose" do
141
141
  side_effects[0].should_not be_nil
142
142
  puts side_effects.to_s
143
143
  # side_effects.to_s.should == ''
@@ -181,7 +181,7 @@ describe "Sample data" do
181
181
  @vocabulary = ActiveFacts::Input::CQL.readstring(@text)
182
182
  @vocabulary.finalise
183
183
  rescue => exception
184
- if debug :exception
184
+ if trace :exception
185
185
  puts "#{exception.message}"
186
186
  puts "\t#{exception.backtrace*"\n\t"}"
187
187
  end
@@ -206,7 +206,7 @@ describe "Sample data" do
206
206
  begin
207
207
  @vocabulary = ActiveFacts::Input::CQL.readstring(@text)
208
208
  rescue => exception
209
- if debug :exception
209
+ if trace :exception
210
210
  puts "#{exception.message}"
211
211
  puts "\t#{exception.backtrace*"\n\t"}"
212
212
  end
data/spec/cql_cql_spec.rb CHANGED
@@ -47,7 +47,7 @@ describe "CQL Loader" do
47
47
  begin
48
48
  vocabulary = ActiveFacts::Input::CQL.readfile(cql_file)
49
49
  rescue => e
50
- debug :exception, "#{e.message}\n" +
50
+ trace :exception, "#{e.message}\n" +
51
51
  "\t#{e.backtrace*"\n\t"}"
52
52
  raise
53
53
  end
@@ -1,6 +1,6 @@
1
1
  RSpec::Matchers.define :be_different_array_from do |x|
2
2
  match do |actual|
3
- perform_match(actual, expected)
3
+ perform_match(actual, expected_as_array)
4
4
  @extra + @missing != []
5
5
  end
6
6
 
@@ -65,7 +65,7 @@ describe "Column lists from absorption compared with Ruby's" do
65
65
  begin
66
66
  eval_it.call
67
67
  rescue => exception
68
- if debug :exception
68
+ if trace :exception
69
69
  puts exception.to_s+": \n\t"+exception.backtrace*"\n\t"
70
70
  end
71
71
  raise
@@ -77,7 +77,7 @@ describe "Column lists from absorption compared with Ruby's" do
77
77
  begin
78
78
  eval_it.call
79
79
  rescue => exception
80
- if debug :exception
80
+ if trace :exception
81
81
  puts exception.to_s+": \n\t"+exception.backtrace*"\n\t"
82
82
  end
83
83
  raise
@@ -18,12 +18,13 @@ require 'activefacts/input/orm'
18
18
  orm_failures = {
19
19
  }
20
20
  norma_table_exceptions = {
21
- "Metamodel" => [%w{Query}, %w{Agreement Enforcement Comment ContactReport ID Money Nr Photo ReferenceCheck Resource TimeDivision}], # ActiveFacts absorbs Agreement into ContextNote, Enforcement into Constraint, lots into Concept
21
+ "Corporate" => [%w{}, %w{Comment ContactReport ID Money Name Nr Photo ReferenceCheck Resource TimeDivision}], # ActiveFacts absorbs Agreement into ContextNote, Enforcement into Constraint, lots into Concept
22
+ "Metamodel" => [%w{Query}, %w{Agreement Enforcement Comment ContactReport ID Money Nr Photo ReferenceCheck Resource TimeDivision Constraint ContextNote Fact Instance Query Unit}], # ActiveFacts absorbs Agreement into ContextNote, Enforcement into Constraint, lots into Concept
22
23
  "MetamodelNext" => [[], %w{Agreement Enforcement TypeInheritance}],
23
24
  "Orienteering" => [%w{Punch}, []], # NORMA doesn't make a table for the IDENTITY field
24
25
  "OrienteeringER" => [%w{SeriesEvent}, []], # NORMA doesn't make a table for the IDENTITY field
25
26
  "RedundantDependency" => [%w{Politician StateOrProvince}, %w{LegislativeDistrict}], # NORMA doesn't make a table for the 3 IDENTITY fields
26
- "Warehousing" => [%w{Product Warehouse}, []], # NORMA doesn't make a table for the IDENTITY field
27
+ "Warehousing" => [%w{Product Warehouse}, %w{Dispatch Receipt}], # NORMA doesn't make a table for the IDENTITY field
27
28
  "ServiceDirector" => [%w{DataStoreService MonitorNotificationUser}, %w{DataStoreFileHostSystem }],
28
29
  "SeparateSubtype" => [%w{Claim}, %w{Incident}],
29
30
  }
metadata CHANGED
@@ -1,236 +1,216 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activefacts
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clifford Heath
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-25 00:00:00.000000000 Z
11
+ date: 2015-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activefacts-api
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
20
- - - ~>
19
+ version: '1.7'
20
+ - - "~>"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '1'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - ! '>='
27
+ - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '1.3'
30
- - - ~>
29
+ version: '1.7'
30
+ - - "~>"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '1'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rbtree-pure
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ! '>='
37
+ - - ">="
38
38
  - !ruby/object:Gem::Version
39
39
  version: 0.1.1
40
- - - ~>
40
+ - - "~>"
41
41
  - !ruby/object:Gem::Version
42
42
  version: '0'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - ! '>='
47
+ - - ">="
48
48
  - !ruby/object:Gem::Version
49
49
  version: 0.1.1
50
- - - ~>
50
+ - - "~>"
51
51
  - !ruby/object:Gem::Version
52
52
  version: '0'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: treetop
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
- - - ! '>='
57
+ - - ">="
58
58
  - !ruby/object:Gem::Version
59
59
  version: 1.4.14
60
- - - ~>
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
62
  version: '1.4'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ! '>='
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: 1.4.14
70
- - - ~>
70
+ - - "~>"
71
71
  - !ruby/object:Gem::Version
72
72
  version: '1.4'
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: nokogiri
75
75
  requirement: !ruby/object:Gem::Requirement
76
76
  requirements:
77
- - - ! '>='
77
+ - - ">="
78
78
  - !ruby/object:Gem::Version
79
79
  version: '1.6'
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1'
83
83
  type: :runtime
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ! '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '1.6'
90
- - - ~>
91
- - !ruby/object:Gem::Version
92
- version: '1'
93
- - !ruby/object:Gem::Dependency
94
- name: debugger
95
- requirement: !ruby/object:Gem::Requirement
96
- requirements:
97
- - - ~>
98
- - !ruby/object:Gem::Version
99
- version: '1'
100
- type: :development
101
- prerelease: false
102
- version_requirements: !ruby/object:Gem::Requirement
103
- requirements:
104
- - - ~>
90
+ - - "~>"
105
91
  - !ruby/object:Gem::Version
106
92
  version: '1'
107
93
  - !ruby/object:Gem::Dependency
108
94
  name: activesupport
109
95
  requirement: !ruby/object:Gem::Requirement
110
96
  requirements:
111
- - - ~>
97
+ - - "~>"
112
98
  - !ruby/object:Gem::Version
113
99
  version: '4'
114
100
  type: :development
115
101
  prerelease: false
116
102
  version_requirements: !ruby/object:Gem::Requirement
117
103
  requirements:
118
- - - ~>
104
+ - - "~>"
119
105
  - !ruby/object:Gem::Version
120
106
  version: '4'
121
107
  - !ruby/object:Gem::Dependency
122
108
  name: dm-core
123
109
  requirement: !ruby/object:Gem::Requirement
124
110
  requirements:
125
- - - ! '>='
111
+ - - ">="
126
112
  - !ruby/object:Gem::Version
127
113
  version: '1.2'
128
- - - ~>
114
+ - - "~>"
129
115
  - !ruby/object:Gem::Version
130
116
  version: '1'
131
117
  type: :development
132
118
  prerelease: false
133
119
  version_requirements: !ruby/object:Gem::Requirement
134
120
  requirements:
135
- - - ! '>='
121
+ - - ">="
136
122
  - !ruby/object:Gem::Version
137
123
  version: '1.2'
138
- - - ~>
124
+ - - "~>"
139
125
  - !ruby/object:Gem::Version
140
126
  version: '1'
141
127
  - !ruby/object:Gem::Dependency
142
128
  name: dm-constraints
143
129
  requirement: !ruby/object:Gem::Requirement
144
130
  requirements:
145
- - - ! '>='
131
+ - - ">="
146
132
  - !ruby/object:Gem::Version
147
133
  version: '1.2'
148
- - - ~>
134
+ - - "~>"
149
135
  - !ruby/object:Gem::Version
150
136
  version: '1'
151
137
  type: :development
152
138
  prerelease: false
153
139
  version_requirements: !ruby/object:Gem::Requirement
154
140
  requirements:
155
- - - ! '>='
141
+ - - ">="
156
142
  - !ruby/object:Gem::Version
157
143
  version: '1.2'
158
- - - ~>
144
+ - - "~>"
159
145
  - !ruby/object:Gem::Version
160
146
  version: '1'
161
147
  - !ruby/object:Gem::Dependency
162
148
  name: dm-migrations
163
149
  requirement: !ruby/object:Gem::Requirement
164
150
  requirements:
165
- - - ! '>='
151
+ - - ">="
166
152
  - !ruby/object:Gem::Version
167
153
  version: '1.2'
168
- - - ~>
154
+ - - "~>"
169
155
  - !ruby/object:Gem::Version
170
156
  version: '1'
171
157
  type: :development
172
158
  prerelease: false
173
159
  version_requirements: !ruby/object:Gem::Requirement
174
160
  requirements:
175
- - - ! '>='
161
+ - - ">="
176
162
  - !ruby/object:Gem::Version
177
163
  version: '1.2'
178
- - - ~>
164
+ - - "~>"
179
165
  - !ruby/object:Gem::Version
180
166
  version: '1'
181
167
  - !ruby/object:Gem::Dependency
182
168
  name: jeweler
183
169
  requirement: !ruby/object:Gem::Requirement
184
170
  requirements:
185
- - - ! '>='
171
+ - - ">="
186
172
  - !ruby/object:Gem::Version
187
173
  version: '2.0'
188
- - - ~>
174
+ - - "~>"
189
175
  - !ruby/object:Gem::Version
190
176
  version: '2'
191
177
  type: :development
192
178
  prerelease: false
193
179
  version_requirements: !ruby/object:Gem::Requirement
194
180
  requirements:
195
- - - ! '>='
181
+ - - ">="
196
182
  - !ruby/object:Gem::Version
197
183
  version: '2.0'
198
- - - ~>
184
+ - - "~>"
199
185
  - !ruby/object:Gem::Version
200
186
  version: '2'
201
187
  - !ruby/object:Gem::Dependency
202
188
  name: rspec
203
189
  requirement: !ruby/object:Gem::Requirement
204
190
  requirements:
205
- - - ! '>='
191
+ - - ">="
206
192
  - !ruby/object:Gem::Version
207
193
  version: 2.11.0
208
- - - ~>
194
+ - - "~>"
209
195
  - !ruby/object:Gem::Version
210
196
  version: '2.11'
211
197
  type: :development
212
198
  prerelease: false
213
199
  version_requirements: !ruby/object:Gem::Requirement
214
200
  requirements:
215
- - - ! '>='
201
+ - - ">="
216
202
  - !ruby/object:Gem::Version
217
203
  version: 2.11.0
218
- - - ~>
204
+ - - "~>"
219
205
  - !ruby/object:Gem::Version
220
206
  version: '2.11'
221
- description: ! '
207
+ description: |2
222
208
 
223
209
  ActiveFacts provides a semantic modeling language, the Constellation
224
-
225
210
  Query Language (CQL). CQL combines natural language verbalisation and
226
-
227
211
  formal logic, producing a formal language that reads like plain
228
-
229
212
  English. ActiveFacts converts semantic models from CQL to relational
230
-
231
213
  and object models in SQL, Ruby and other languages.
232
-
233
- '
234
214
  email: cjh@dataconstellation.com
235
215
  executables:
236
216
  - afgen
@@ -395,21 +375,20 @@ licenses:
395
375
  metadata: {}
396
376
  post_install_message:
397
377
  rdoc_options:
398
- - -S
399
- - -x
378
+ - "-x"
400
379
  - lib/activefacts/cql/.*.rb
401
- - -x
380
+ - "-x"
402
381
  - lib/activefacts/vocabulary/.*.rb
403
382
  require_paths:
404
383
  - lib
405
384
  required_ruby_version: !ruby/object:Gem::Requirement
406
385
  requirements:
407
- - - ! '>='
386
+ - - ">="
408
387
  - !ruby/object:Gem::Version
409
388
  version: '0'
410
389
  required_rubygems_version: !ruby/object:Gem::Requirement
411
390
  requirements:
412
- - - ! '>='
391
+ - - ">="
413
392
  - !ruby/object:Gem::Version
414
393
  version: '0'
415
394
  requirements: []