porolog 0.0.4 → 1.0.0
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.
- checksums.yaml +4 -4
- data/README.md +30 -5
- data/Rakefile +7 -2
- data/bin/porolog +58 -1
- data/coverage/badge.svg +1 -1
- data/coverage/index.html +76733 -2638
- data/doc/Array.html +1066 -0
- data/doc/Object.html +674 -0
- data/doc/Porolog.html +4153 -74
- data/doc/Symbol.html +501 -0
- data/doc/_index.html +280 -6
- data/doc/class_list.html +1 -1
- data/doc/file.README.html +34 -39
- data/doc/index.html +34 -39
- data/doc/method_list.html +1337 -57
- data/doc/top-level-namespace.html +4 -2
- data/lib/porolog.rb +1144 -4
- data/lib/porolog/arguments.rb +28 -24
- data/lib/porolog/core_ext.rb +188 -0
- data/lib/porolog/error.rb +9 -0
- data/lib/porolog/goal.rb +357 -0
- data/lib/porolog/instantiation.rb +346 -0
- data/lib/porolog/predicate.rb +74 -31
- data/lib/porolog/predicate/builtin.rb +825 -0
- data/lib/porolog/rule.rb +162 -0
- data/lib/porolog/scope.rb +4 -4
- data/lib/porolog/tail.rb +57 -0
- data/lib/porolog/value.rb +105 -0
- data/lib/porolog/variable.rb +325 -0
- data/test/porolog/arguments_test.rb +244 -195
- data/test/porolog/core_ext_test.rb +290 -0
- data/test/porolog/goal_test.rb +891 -0
- data/test/porolog/instantiation_test.rb +910 -0
- data/test/porolog/porolog_test.rb +2376 -13
- data/test/porolog/predicate/builtin_test.rb +1340 -0
- data/test/porolog/predicate_test.rb +84 -30
- data/test/porolog/rule_test.rb +527 -0
- data/test/porolog/scope_test.rb +0 -2
- data/test/porolog/tail_test.rb +127 -0
- data/test/porolog/value_test.rb +315 -0
- data/test/porolog/variable_test.rb +1614 -0
- data/test/samples_test.rb +277 -0
- data/test/test_helper.rb +115 -0
- metadata +34 -7
data/doc/_index.html
CHANGED
@@ -87,10 +87,171 @@
|
|
87
87
|
|
88
88
|
</li>
|
89
89
|
|
90
|
+
<li>
|
91
|
+
<span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span>
|
92
|
+
|
93
|
+
</li>
|
94
|
+
|
95
|
+
</ul>
|
96
|
+
</ul>
|
97
|
+
|
98
|
+
|
99
|
+
<ul id="alpha_B" class="alpha">
|
100
|
+
<li class="letter">B</li>
|
101
|
+
<ul>
|
102
|
+
|
103
|
+
<li>
|
104
|
+
<span class='object_link'><a href="Porolog/Predicate/Builtin.html" title="Porolog::Predicate::Builtin (module)">Builtin</a></span>
|
105
|
+
|
106
|
+
<small>(Porolog::Predicate)</small>
|
107
|
+
|
108
|
+
</li>
|
109
|
+
|
110
|
+
</ul>
|
111
|
+
</ul>
|
112
|
+
|
113
|
+
|
114
|
+
<ul id="alpha_D" class="alpha">
|
115
|
+
<li class="letter">D</li>
|
116
|
+
<ul>
|
117
|
+
|
118
|
+
<li>
|
119
|
+
<span class='object_link'><a href="Porolog/Goal/DefinitionError.html" title="Porolog::Goal::DefinitionError (class)">DefinitionError</a></span>
|
120
|
+
|
121
|
+
<small>(Porolog::Goal)</small>
|
122
|
+
|
123
|
+
</li>
|
124
|
+
|
125
|
+
<li>
|
126
|
+
<span class='object_link'><a href="Porolog/Rule/DefinitionError.html" title="Porolog::Rule::DefinitionError (class)">DefinitionError</a></span>
|
127
|
+
|
128
|
+
<small>(Porolog::Rule)</small>
|
129
|
+
|
130
|
+
</li>
|
131
|
+
|
132
|
+
</ul>
|
133
|
+
</ul>
|
134
|
+
|
135
|
+
|
136
|
+
<ul id="alpha_E" class="alpha">
|
137
|
+
<li class="letter">E</li>
|
138
|
+
<ul>
|
139
|
+
|
140
|
+
<li>
|
141
|
+
<span class='object_link'><a href="Porolog/Variable/Error.html" title="Porolog::Variable::Error (class)">Error</a></span>
|
142
|
+
|
143
|
+
<small>(Porolog::Variable)</small>
|
144
|
+
|
145
|
+
</li>
|
146
|
+
|
147
|
+
<li>
|
148
|
+
<span class='object_link'><a href="Porolog/Scope/Error.html" title="Porolog::Scope::Error (class)">Error</a></span>
|
149
|
+
|
150
|
+
<small>(Porolog::Scope)</small>
|
151
|
+
|
152
|
+
</li>
|
153
|
+
|
154
|
+
<li>
|
155
|
+
<span class='object_link'><a href="Porolog/Value/Error.html" title="Porolog::Value::Error (class)">Error</a></span>
|
156
|
+
|
157
|
+
<small>(Porolog::Value)</small>
|
158
|
+
|
159
|
+
</li>
|
160
|
+
|
161
|
+
<li>
|
162
|
+
<span class='object_link'><a href="Porolog/Goal/Error.html" title="Porolog::Goal::Error (class)">Error</a></span>
|
163
|
+
|
164
|
+
<small>(Porolog::Goal)</small>
|
165
|
+
|
166
|
+
</li>
|
167
|
+
|
168
|
+
<li>
|
169
|
+
<span class='object_link'><a href="Porolog/Instantiation/Error.html" title="Porolog::Instantiation::Error (class)">Error</a></span>
|
170
|
+
|
171
|
+
<small>(Porolog::Instantiation)</small>
|
172
|
+
|
173
|
+
</li>
|
174
|
+
|
175
|
+
<li>
|
176
|
+
<span class='object_link'><a href="Porolog/Rule/Error.html" title="Porolog::Rule::Error (class)">Error</a></span>
|
177
|
+
|
178
|
+
<small>(Porolog::Rule)</small>
|
179
|
+
|
180
|
+
</li>
|
181
|
+
|
182
|
+
<li>
|
183
|
+
<span class='object_link'><a href="Porolog/Predicate/Error.html" title="Porolog::Predicate::Error (class)">Error</a></span>
|
184
|
+
|
185
|
+
<small>(Porolog::Predicate)</small>
|
186
|
+
|
187
|
+
</li>
|
188
|
+
|
189
|
+
</ul>
|
190
|
+
</ul>
|
191
|
+
|
192
|
+
|
193
|
+
<ul id="alpha_G" class="alpha">
|
194
|
+
<li class="letter">G</li>
|
195
|
+
<ul>
|
196
|
+
|
197
|
+
<li>
|
198
|
+
<span class='object_link'><a href="Porolog/Goal.html" title="Porolog::Goal (class)">Goal</a></span>
|
199
|
+
|
200
|
+
<small>(Porolog)</small>
|
201
|
+
|
202
|
+
</li>
|
203
|
+
|
204
|
+
<li>
|
205
|
+
<span class='object_link'><a href="Porolog/Value/GoalError.html" title="Porolog::Value::GoalError (class)">GoalError</a></span>
|
206
|
+
|
207
|
+
<small>(Porolog::Value)</small>
|
208
|
+
|
209
|
+
</li>
|
210
|
+
|
211
|
+
<li>
|
212
|
+
<span class='object_link'><a href="Porolog/Variable/GoalError.html" title="Porolog::Variable::GoalError (class)">GoalError</a></span>
|
213
|
+
|
214
|
+
<small>(Porolog::Variable)</small>
|
215
|
+
|
216
|
+
</li>
|
217
|
+
|
218
|
+
</ul>
|
219
|
+
</ul>
|
220
|
+
|
221
|
+
|
222
|
+
<ul id="alpha_I" class="alpha">
|
223
|
+
<li class="letter">I</li>
|
224
|
+
<ul>
|
225
|
+
|
226
|
+
<li>
|
227
|
+
<span class='object_link'><a href="Porolog/Instantiation.html" title="Porolog::Instantiation (class)">Instantiation</a></span>
|
228
|
+
|
229
|
+
<small>(Porolog)</small>
|
230
|
+
|
231
|
+
</li>
|
232
|
+
|
233
|
+
</ul>
|
234
|
+
</ul>
|
235
|
+
|
236
|
+
|
237
|
+
<ul id="alpha_M" class="alpha">
|
238
|
+
<li class="letter">M</li>
|
239
|
+
<ul>
|
240
|
+
|
241
|
+
<li>
|
242
|
+
<span class='object_link'><a href="Porolog/Variable/MultipleValuesError.html" title="Porolog::Variable::MultipleValuesError (class)">MultipleValuesError</a></span>
|
243
|
+
|
244
|
+
<small>(Porolog::Variable)</small>
|
245
|
+
|
246
|
+
</li>
|
247
|
+
|
90
248
|
</ul>
|
91
249
|
</ul>
|
92
250
|
|
93
251
|
|
252
|
+
</td><td valign='top' width="33%">
|
253
|
+
|
254
|
+
|
94
255
|
<ul id="alpha_N" class="alpha">
|
95
256
|
<li class="letter">N</li>
|
96
257
|
<ul>
|
@@ -102,6 +263,27 @@
|
|
102
263
|
|
103
264
|
</li>
|
104
265
|
|
266
|
+
<li>
|
267
|
+
<span class='object_link'><a href="Porolog/NoGoalError.html" title="Porolog::NoGoalError (class)">NoGoalError</a></span>
|
268
|
+
|
269
|
+
<small>(Porolog)</small>
|
270
|
+
|
271
|
+
</li>
|
272
|
+
|
273
|
+
<li>
|
274
|
+
<span class='object_link'><a href="Porolog/Instantiation/NoVariableError.html" title="Porolog::Instantiation::NoVariableError (class)">NoVariableError</a></span>
|
275
|
+
|
276
|
+
<small>(Porolog::Instantiation)</small>
|
277
|
+
|
278
|
+
</li>
|
279
|
+
|
280
|
+
<li>
|
281
|
+
<span class='object_link'><a href="Porolog/NonVariableError.html" title="Porolog::NonVariableError (class)">NonVariableError</a></span>
|
282
|
+
|
283
|
+
<small>(Porolog)</small>
|
284
|
+
|
285
|
+
</li>
|
286
|
+
|
105
287
|
<li>
|
106
288
|
<span class='object_link'><a href="Porolog/Scope/NotPredicateError.html" title="Porolog::Scope::NotPredicateError (class)">NotPredicateError</a></span>
|
107
289
|
|
@@ -109,6 +291,26 @@
|
|
109
291
|
|
110
292
|
</li>
|
111
293
|
|
294
|
+
<li>
|
295
|
+
<span class='object_link'><a href="Porolog/Goal/NotVariableError.html" title="Porolog::Goal::NotVariableError (class)">NotVariableError</a></span>
|
296
|
+
|
297
|
+
<small>(Porolog::Goal)</small>
|
298
|
+
|
299
|
+
</li>
|
300
|
+
|
301
|
+
</ul>
|
302
|
+
</ul>
|
303
|
+
|
304
|
+
|
305
|
+
<ul id="alpha_O" class="alpha">
|
306
|
+
<li class="letter">O</li>
|
307
|
+
<ul>
|
308
|
+
|
309
|
+
<li>
|
310
|
+
<span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span>
|
311
|
+
|
312
|
+
</li>
|
313
|
+
|
112
314
|
</ul>
|
113
315
|
</ul>
|
114
316
|
|
@@ -136,10 +338,18 @@
|
|
136
338
|
|
137
339
|
</li>
|
138
340
|
|
341
|
+
</ul>
|
342
|
+
</ul>
|
343
|
+
|
344
|
+
|
345
|
+
<ul id="alpha_R" class="alpha">
|
346
|
+
<li class="letter">R</li>
|
347
|
+
<ul>
|
348
|
+
|
139
349
|
<li>
|
140
|
-
<span class='object_link'><a href="Porolog/
|
350
|
+
<span class='object_link'><a href="Porolog/Rule.html" title="Porolog::Rule (class)">Rule</a></span>
|
141
351
|
|
142
|
-
<small>(Porolog
|
352
|
+
<small>(Porolog)</small>
|
143
353
|
|
144
354
|
</li>
|
145
355
|
|
@@ -159,9 +369,73 @@
|
|
159
369
|
</li>
|
160
370
|
|
161
371
|
<li>
|
162
|
-
<span class='object_link'><a href="Porolog/
|
372
|
+
<span class='object_link'><a href="Porolog/Variable/SelfReferentialError.html" title="Porolog::Variable::SelfReferentialError (class)">SelfReferentialError</a></span>
|
163
373
|
|
164
|
-
<small>(Porolog::
|
374
|
+
<small>(Porolog::Variable)</small>
|
375
|
+
|
376
|
+
</li>
|
377
|
+
|
378
|
+
<li>
|
379
|
+
<span class='object_link'><a href="Symbol.html" title="Symbol (class)">Symbol</a></span>
|
380
|
+
|
381
|
+
</li>
|
382
|
+
|
383
|
+
</ul>
|
384
|
+
</ul>
|
385
|
+
|
386
|
+
|
387
|
+
<ul id="alpha_T" class="alpha">
|
388
|
+
<li class="letter">T</li>
|
389
|
+
<ul>
|
390
|
+
|
391
|
+
<li>
|
392
|
+
<span class='object_link'><a href="Porolog/Tail.html" title="Porolog::Tail (class)">Tail</a></span>
|
393
|
+
|
394
|
+
<small>(Porolog)</small>
|
395
|
+
|
396
|
+
</li>
|
397
|
+
|
398
|
+
</ul>
|
399
|
+
</ul>
|
400
|
+
|
401
|
+
|
402
|
+
<ul id="alpha_U" class="alpha">
|
403
|
+
<li class="letter">U</li>
|
404
|
+
<ul>
|
405
|
+
|
406
|
+
<li>
|
407
|
+
<span class='object_link'><a href="Porolog/Variable/UnexpectedError.html" title="Porolog::Variable::UnexpectedError (class)">UnexpectedError</a></span>
|
408
|
+
|
409
|
+
<small>(Porolog::Variable)</small>
|
410
|
+
|
411
|
+
</li>
|
412
|
+
|
413
|
+
<li>
|
414
|
+
<span class='object_link'><a href="Porolog/Instantiation/UnhandledIndexError.html" title="Porolog::Instantiation::UnhandledIndexError (class)">UnhandledIndexError</a></span>
|
415
|
+
|
416
|
+
<small>(Porolog::Instantiation)</small>
|
417
|
+
|
418
|
+
</li>
|
419
|
+
|
420
|
+
</ul>
|
421
|
+
</ul>
|
422
|
+
|
423
|
+
|
424
|
+
<ul id="alpha_V" class="alpha">
|
425
|
+
<li class="letter">V</li>
|
426
|
+
<ul>
|
427
|
+
|
428
|
+
<li>
|
429
|
+
<span class='object_link'><a href="Porolog/Value.html" title="Porolog::Value (class)">Value</a></span>
|
430
|
+
|
431
|
+
<small>(Porolog)</small>
|
432
|
+
|
433
|
+
</li>
|
434
|
+
|
435
|
+
<li>
|
436
|
+
<span class='object_link'><a href="Porolog/Variable.html" title="Porolog::Variable (class)">Variable</a></span>
|
437
|
+
|
438
|
+
<small>(Porolog)</small>
|
165
439
|
|
166
440
|
</li>
|
167
441
|
|
@@ -177,9 +451,9 @@
|
|
177
451
|
</div>
|
178
452
|
|
179
453
|
<div id="footer">
|
180
|
-
Generated on
|
454
|
+
Generated on Sun Aug 2 19:24:16 2020 by
|
181
455
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
182
|
-
0.9.19 (ruby-2.
|
456
|
+
0.9.19 (ruby-2.6.5).
|
183
457
|
</div>
|
184
458
|
|
185
459
|
</div>
|
data/doc/class_list.html
CHANGED
@@ -43,7 +43,7 @@
|
|
43
43
|
|
44
44
|
<ul id="full_list" class="class">
|
45
45
|
<li id="object_" class="odd"><div class="item" style="padding-left:30px"><span class='object_link'><a href="top-level-namespace.html" title="Top Level Namespace (root)">Top Level Namespace</a></span></div></li>
|
46
|
-
<li id='object_Porolog' class='even'><div class='item' style='padding-left:30px'><a class='toggle'></a> <span class='object_link'><a href="Porolog.html" title="Porolog (module)">Porolog</a></span><small class='search_info'>Top Level Namespace</small></div><ul><li id='object_Porolog::Arguments' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="Porolog/Arguments.html" title="Porolog::Arguments (class)">Arguments</a></span> < Object<small class='search_info'>Porolog</small></div></li><li id='object_Porolog::PorologError' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="Porolog/PorologError.html" title="Porolog::PorologError (class)">PorologError</a></span> < RuntimeError<small class='search_info'>Porolog</small></div></li><li id='object_Porolog::Predicate' class='collapsed odd'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="Porolog/Predicate.html" title="Porolog::Predicate (class)">Predicate</a></span> < Object<small class='search_info'>Porolog</small></div><ul><li id='object_Porolog::Predicate::NameError' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Predicate/NameError.html" title="Porolog::Predicate::NameError (class)">NameError</a></span> < PredicateError<small class='search_info'>Porolog::Predicate</small></div></li><li id='object_Porolog::Predicate::PredicateError' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Predicate/PredicateError.html" title="Porolog::Predicate::PredicateError (class)">PredicateError</a></span> < PorologError<small class='search_info'>Porolog::Predicate</small></div></li></ul></li><li id='object_Porolog::Scope' class='collapsed even'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="Porolog/Scope.html" title="Porolog::Scope (class)">Scope</a></span> < Object<small class='search_info'>Porolog</small></div><ul><li id='object_Porolog::Scope::NotPredicateError' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Scope/NotPredicateError.html" title="Porolog::Scope::NotPredicateError (class)">NotPredicateError</a></span> < ScopeError<small class='search_info'>Porolog::Scope</small></div></li><li id='object_Porolog::Scope::ScopeError' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Scope/ScopeError.html" title="Porolog::Scope::ScopeError (class)">ScopeError</a></span> < PorologError<small class='search_info'>Porolog::Scope</small></div></li></ul></li></ul></li>
|
46
|
+
<li id='object_Array' class='even'><div class='item' style='padding-left:30px'><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span> < Object<small class='search_info'>Top Level Namespace</small></div></li><li id='object_Object' class='odd'><div class='item' style='padding-left:30px'><span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span> < BasicObject<small class='search_info'>Top Level Namespace</small></div></li><li id='object_Porolog' class='even'><div class='item' style='padding-left:30px'><a class='toggle'></a> <span class='object_link'><a href="Porolog.html" title="Porolog (module)">Porolog</a></span><small class='search_info'>Top Level Namespace</small></div><ul><li id='object_Porolog::Arguments' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="Porolog/Arguments.html" title="Porolog::Arguments (class)">Arguments</a></span> < Object<small class='search_info'>Porolog</small></div></li><li id='object_Porolog::Goal' class='collapsed even'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="Porolog/Goal.html" title="Porolog::Goal (class)">Goal</a></span> < Object<small class='search_info'>Porolog</small></div><ul><li id='object_Porolog::Goal::DefinitionError' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Goal/DefinitionError.html" title="Porolog::Goal::DefinitionError (class)">DefinitionError</a></span> < Error<small class='search_info'>Porolog::Goal</small></div></li><li id='object_Porolog::Goal::Error' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Goal/Error.html" title="Porolog::Goal::Error (class)">Error</a></span> < PorologError<small class='search_info'>Porolog::Goal</small></div></li><li id='object_Porolog::Goal::NotVariableError' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Goal/NotVariableError.html" title="Porolog::Goal::NotVariableError (class)">NotVariableError</a></span> < Error<small class='search_info'>Porolog::Goal</small></div></li></ul></li><li id='object_Porolog::Instantiation' class='collapsed odd'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="Porolog/Instantiation.html" title="Porolog::Instantiation (class)">Instantiation</a></span> < Object<small class='search_info'>Porolog</small></div><ul><li id='object_Porolog::Instantiation::Error' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Instantiation/Error.html" title="Porolog::Instantiation::Error (class)">Error</a></span> < PorologError<small class='search_info'>Porolog::Instantiation</small></div></li><li id='object_Porolog::Instantiation::NoVariableError' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Instantiation/NoVariableError.html" title="Porolog::Instantiation::NoVariableError (class)">NoVariableError</a></span> < Error<small class='search_info'>Porolog::Instantiation</small></div></li><li id='object_Porolog::Instantiation::UnhandledIndexError' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Instantiation/UnhandledIndexError.html" title="Porolog::Instantiation::UnhandledIndexError (class)">UnhandledIndexError</a></span> < Error<small class='search_info'>Porolog::Instantiation</small></div></li></ul></li><li id='object_Porolog::NoGoalError' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="Porolog/NoGoalError.html" title="Porolog::NoGoalError (class)">NoGoalError</a></span> < PorologError<small class='search_info'>Porolog</small></div></li><li id='object_Porolog::NonVariableError' class='collapsed odd'><div class='item' style='padding-left:45px'><span class='object_link'><a href="Porolog/NonVariableError.html" title="Porolog::NonVariableError (class)">NonVariableError</a></span> < PorologError<small class='search_info'>Porolog</small></div></li><li id='object_Porolog::PorologError' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="Porolog/PorologError.html" title="Porolog::PorologError (class)">PorologError</a></span> < RuntimeError<small class='search_info'>Porolog</small></div></li><li id='object_Porolog::Predicate' class='collapsed odd'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="Porolog/Predicate.html" title="Porolog::Predicate (class)">Predicate</a></span> < Object<small class='search_info'>Porolog</small></div><ul><li id='object_Porolog::Predicate::Builtin' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Predicate/Builtin.html" title="Porolog::Predicate::Builtin (module)">Builtin</a></span><small class='search_info'>Porolog::Predicate</small></div></li><li id='object_Porolog::Predicate::Error' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Predicate/Error.html" title="Porolog::Predicate::Error (class)">Error</a></span> < PorologError<small class='search_info'>Porolog::Predicate</small></div></li><li id='object_Porolog::Predicate::NameError' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Predicate/NameError.html" title="Porolog::Predicate::NameError (class)">NameError</a></span> < Error<small class='search_info'>Porolog::Predicate</small></div></li></ul></li><li id='object_Porolog::Rule' class='collapsed even'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="Porolog/Rule.html" title="Porolog::Rule (class)">Rule</a></span> < Object<small class='search_info'>Porolog</small></div><ul><li id='object_Porolog::Rule::DefinitionError' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Rule/DefinitionError.html" title="Porolog::Rule::DefinitionError (class)">DefinitionError</a></span> < Error<small class='search_info'>Porolog::Rule</small></div></li><li id='object_Porolog::Rule::Error' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Rule/Error.html" title="Porolog::Rule::Error (class)">Error</a></span> < PorologError<small class='search_info'>Porolog::Rule</small></div></li></ul></li><li id='object_Porolog::Scope' class='collapsed odd'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="Porolog/Scope.html" title="Porolog::Scope (class)">Scope</a></span> < Object<small class='search_info'>Porolog</small></div><ul><li id='object_Porolog::Scope::Error' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Scope/Error.html" title="Porolog::Scope::Error (class)">Error</a></span> < PorologError<small class='search_info'>Porolog::Scope</small></div></li><li id='object_Porolog::Scope::NotPredicateError' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Scope/NotPredicateError.html" title="Porolog::Scope::NotPredicateError (class)">NotPredicateError</a></span> < Error<small class='search_info'>Porolog::Scope</small></div></li></ul></li><li id='object_Porolog::Tail' class='collapsed even'><div class='item' style='padding-left:45px'><span class='object_link'><a href="Porolog/Tail.html" title="Porolog::Tail (class)">Tail</a></span> < Object<small class='search_info'>Porolog</small></div></li><li id='object_Porolog::Value' class='collapsed odd'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="Porolog/Value.html" title="Porolog::Value (class)">Value</a></span> < Object<small class='search_info'>Porolog</small></div><ul><li id='object_Porolog::Value::Error' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Value/Error.html" title="Porolog::Value::Error (class)">Error</a></span> < PorologError<small class='search_info'>Porolog::Value</small></div></li><li id='object_Porolog::Value::GoalError' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Value/GoalError.html" title="Porolog::Value::GoalError (class)">GoalError</a></span> < Error<small class='search_info'>Porolog::Value</small></div></li></ul></li><li id='object_Porolog::Variable' class='collapsed even'><div class='item' style='padding-left:45px'><a class='toggle'></a> <span class='object_link'><a href="Porolog/Variable.html" title="Porolog::Variable (class)">Variable</a></span> < Object<small class='search_info'>Porolog</small></div><ul><li id='object_Porolog::Variable::Error' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Variable/Error.html" title="Porolog::Variable::Error (class)">Error</a></span> < PorologError<small class='search_info'>Porolog::Variable</small></div></li><li id='object_Porolog::Variable::GoalError' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Variable/GoalError.html" title="Porolog::Variable::GoalError (class)">GoalError</a></span> < Error<small class='search_info'>Porolog::Variable</small></div></li><li id='object_Porolog::Variable::MultipleValuesError' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Variable/MultipleValuesError.html" title="Porolog::Variable::MultipleValuesError (class)">MultipleValuesError</a></span> < Error<small class='search_info'>Porolog::Variable</small></div></li><li id='object_Porolog::Variable::SelfReferentialError' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Variable/SelfReferentialError.html" title="Porolog::Variable::SelfReferentialError (class)">SelfReferentialError</a></span> < Error<small class='search_info'>Porolog::Variable</small></div></li><li id='object_Porolog::Variable::UnexpectedError' class='collapsed'><div class='item' style='padding-left:60px'><span class='object_link'><a href="Porolog/Variable/UnexpectedError.html" title="Porolog::Variable::UnexpectedError (class)">UnexpectedError</a></span> < Error<small class='search_info'>Porolog::Variable</small></div></li></ul></li></ul></li><li id='object_Symbol' class='odd'><div class='item' style='padding-left:30px'><span class='object_link'><a href="Symbol.html" title="Symbol (class)">Symbol</a></span> < Object<small class='search_info'>Top Level Namespace</small></div></li>
|
47
47
|
|
48
48
|
</ul>
|
49
49
|
</div>
|
data/doc/file.README.html
CHANGED
@@ -60,38 +60,23 @@
|
|
60
60
|
<div id="content"><div id='filecontents'>
|
61
61
|
<h1 id="label-porolog">porolog</h1>
|
62
62
|
|
63
|
-
<p><img src=“<a
|
64
|
-
href="https://repository-images.githubusercontent.com/131847563/b3754100-636a-11e9-995b-20d409b992c9">repository-images.githubusercontent.com/131847563/b3754100-636a-11e9-995b-20d409b992c9</a>”
|
65
|
-
width=“240” height=“120” align=“right” /></p>
|
63
|
+
<p><img src=“<a href="https://repository-images.githubusercontent.com/131847563/b3754100-636a-11e9-995b-20d409b992c9">repository-images.githubusercontent.com/131847563/b3754100-636a-11e9-995b-20d409b992c9</a>” width=“240” height=“120” align=“right” /></p>
|
66
64
|
|
67
|
-
<p>Plain Old Ruby Objects Prolog
|
65
|
+
<p>Plain Old Ruby Objects Prolog</p>
|
68
66
|
|
69
|
-
<p><a href="https://badge.fury.io/rb/porolog"><img
|
70
|
-
src="https://badge.fury.io/rb/porolog.svg"></a> <a
|
71
|
-
href="https://travis-ci.com/wizardofosmium/porolog"><img
|
72
|
-
src="https://travis-ci.com/wizardofosmium/porolog.svg?branch=master"></a>
|
73
|
-
<img
|
74
|
-
src="https://img.shields.io/badge/status-work%20in%20progress-orange.svg">
|
75
|
-
<a href="https://github.com/wizardofosmium/porolog"><img
|
76
|
-
src="https://wizardofosmium.github.io/porolog/coverage/badge.svg"></a></p>
|
67
|
+
<p><a href="https://badge.fury.io/rb/porolog"><img src="https://badge.fury.io/rb/porolog.svg"></a> <a href="https://travis-ci.com/wizardofosmium/porolog"><img src="https://travis-ci.com/wizardofosmium/porolog.svg?branch=master"></a> <a href="https://github.com/wizardofosmium/porolog"><img src="https://github.com/wizardofosmium/porolog/blob/master/coverage/badge.svg"></a></p>
|
77
68
|
|
78
69
|
<h2 id="label-Introduction">Introduction</h2>
|
79
70
|
|
80
|
-
<p><code>porolog</code> is a Prolog implementation using plain old Ruby
|
81
|
-
objects with the aim that logic queries can be called within a regular Ruby
|
82
|
-
program. The goal was not to implement a Prolog interpreter that is just
|
83
|
-
implement in Ruby, but rather that a logic engine could be embedded in a
|
84
|
-
larger program.</p>
|
71
|
+
<p><code>porolog</code> is a Prolog implementation using plain old Ruby objects with the aim that logic queries can be called within a regular Ruby program. The goal was not to implement a Prolog interpreter that is just implement in Ruby, but rather that a logic engine could be embedded in a larger program.</p>
|
85
72
|
|
86
|
-
<p>The need that this gem aims to meet is to have a Ruby program interact with
|
87
|
-
|
88
|
-
|
89
|
-
where Ruby objects could be passed in and Ruby objects were passed back.</p>
|
73
|
+
<p>The need that this gem aims to meet is to have a Ruby program interact with a Prolog program using native Ruby objects (POROs); hence the name Porolog. The goal was to implement a minimal logic engine in the style of Prolog where Ruby objects could be passed in and Ruby objects were passed back.</p>
|
74
|
+
|
75
|
+
<p>This version completes the minimal/generic logic engine along with some standard builtin predicates. Custom builtin predicates can be easily added.</p>
|
90
76
|
|
91
77
|
<h2 id="label-Dependencies">Dependencies</h2>
|
92
78
|
|
93
|
-
<p>The aim of <code>porolog</code> is to provide a logic engine with a minimal
|
94
|
-
footprint. The only extra dependency is Yard for documentation.</p>
|
79
|
+
<p>The aim of <code>porolog</code> is to provide a logic engine with a minimal footprint. The only extra dependency is Yard for documentation.</p>
|
95
80
|
|
96
81
|
<h2 id="label-Installation">Installation</h2>
|
97
82
|
|
@@ -109,13 +94,13 @@ footprint. The only extra dependency is Yard for documentation.</p>
|
|
109
94
|
<p>solving goals</p>
|
110
95
|
</li></ul>
|
111
96
|
|
112
|
-
<p>It is entirely possible to create a Ruby program that is effectively just a
|
113
|
-
|
97
|
+
<p>It is entirely possible to create a Ruby program that is effectively just a Prolog program. The main purpose of Porolog though is to add declarative logic programming to Ruby and allow hybrid programming, in the same way that Ruby allows hybrid programming in the functional programming paradigm.</p>
|
98
|
+
|
99
|
+
<p>This then Ruby programs to be written spanning all the major programming paradigms: - Imperative - Functional - Object Oriented - Declarative Logic</p>
|
114
100
|
|
115
101
|
<h3 id="label-Basic+Usage">Basic Usage</h3>
|
116
102
|
|
117
|
-
<p>Using <code>porolog</code> involves creating logic from facts and rules. An
|
118
|
-
example, of the most basic usage uses just facts.</p>
|
103
|
+
<p>Using <code>porolog</code> involves creating logic from facts and rules. An example, of the most basic usage uses just facts.</p>
|
119
104
|
|
120
105
|
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>porolog</span><span class='tstring_end'>'</span></span>
|
121
106
|
|
@@ -135,15 +120,15 @@ example, of the most basic usage uses just facts.</p>
|
|
135
120
|
|
136
121
|
<h3 id="label-Common+Usage">Common Usage</h3>
|
137
122
|
|
138
|
-
<p>Common usage is expected to be including Porolog in a class and
|
139
|
-
encapsulating the engine defined.</p>
|
123
|
+
<p>Common usage is expected to be including Porolog in a class and encapsulating the engine defined.</p>
|
140
124
|
|
141
125
|
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>porolog</span><span class='tstring_end'>'</span></span>
|
142
126
|
|
143
|
-
<span class='
|
127
|
+
<span class='id identifier rubyid_include'>include</span> <span class='const'><span class='object_link'><a href="Porolog.html" title="Porolog (module)">Porolog</a></span></span>
|
144
128
|
|
145
|
-
|
129
|
+
<span class='kw'>class</span> <span class='const'>Numbers</span>
|
146
130
|
|
131
|
+
<span class='const'>Predicate</span><span class='period'>.</span><span class='id identifier rubyid_scope'>scope</span> <span class='kw'>self</span>
|
147
132
|
<span class='id identifier rubyid_predicate'>predicate</span> <span class='symbol'>:prime</span>
|
148
133
|
|
149
134
|
<span class='id identifier rubyid_prime'>prime</span><span class='lparen'>(</span><span class='int'>2</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_fact!'>fact!</span>
|
@@ -164,16 +149,18 @@ encapsulating the engine defined.</p>
|
|
164
149
|
<span class='kw'>end</span>
|
165
150
|
|
166
151
|
<span class='kw'>end</span>
|
152
|
+
|
153
|
+
|
154
|
+
<span class='id identifier rubyid_numbers'>numbers</span> <span class='op'>=</span> <span class='const'>Numbers</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
155
|
+
<span class='id identifier rubyid_numbers'>numbers</span><span class='period'>.</span><span class='id identifier rubyid_show_primes'>show_primes</span>
|
156
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='id identifier rubyid_numbers'>numbers</span><span class='period'>.</span><span class='id identifier rubyid_primes'>primes</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span>
|
167
157
|
</code></pre>
|
168
158
|
|
169
159
|
<h3 id="label-Scope+and+Predicate+Usage">Scope and Predicate Usage</h3>
|
170
160
|
|
171
|
-
<p>A Predicate represents a Prolog predicate. They form the basis for rules
|
172
|
-
and queries.</p>
|
161
|
+
<p>A Predicate represents a Prolog predicate. They form the basis for rules and queries.</p>
|
173
162
|
|
174
|
-
<p>The Scope class enables you to have multiple logic programs embedded in the
|
175
|
-
same Ruby program. A Scope object defines a scope for the predicates of a
|
176
|
-
logic programme.</p>
|
163
|
+
<p>The Scope class enables you to have multiple logic programs embedded in the same Ruby program. A Scope object defines a scope for the predicates of a logic programme.</p>
|
177
164
|
|
178
165
|
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>porolog</span><span class='tstring_end'>'</span></span>
|
179
166
|
|
@@ -229,9 +216,17 @@ logic programme.</p>
|
|
229
216
|
|
230
217
|
<p>or</p>
|
231
218
|
|
232
|
-
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_rake'>rake</span> <span class='id identifier
|
219
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_rake'>rake</span> <span class='id identifier rubyid_core_ext_test'>core_ext_test</span>
|
220
|
+
<span class='id identifier rubyid_rake'>rake</span> <span class='id identifier rubyid_porolog_test'>porolog_test</span>
|
221
|
+
<span class='id identifier rubyid_rake'>rake</span> <span class='id identifier rubyid_scope_test'>scope_test</span>
|
233
222
|
<span class='id identifier rubyid_rake'>rake</span> <span class='id identifier rubyid_predicate_test'>predicate_test</span>
|
234
223
|
<span class='id identifier rubyid_rake'>rake</span> <span class='id identifier rubyid_arguments_test'>arguments_test</span>
|
224
|
+
<span class='id identifier rubyid_rake'>rake</span> <span class='id identifier rubyid_rule_test'>rule_test</span>
|
225
|
+
<span class='id identifier rubyid_rake'>rake</span> <span class='id identifier rubyid_goal_test'>goal_test</span>
|
226
|
+
<span class='id identifier rubyid_rake'>rake</span> <span class='id identifier rubyid_variable_test'>variable_test</span>
|
227
|
+
<span class='id identifier rubyid_rake'>rake</span> <span class='id identifier rubyid_value_test'>value_test</span>
|
228
|
+
<span class='id identifier rubyid_rake'>rake</span> <span class='id identifier rubyid_tail_test'>tail_test</span>
|
229
|
+
<span class='id identifier rubyid_rake'>rake</span> <span class='id identifier rubyid_instantiation_test'>instantiation_test</span>
|
235
230
|
</code></pre>
|
236
231
|
|
237
232
|
<h2 id="label-Author">Author</h2>
|
@@ -240,9 +235,9 @@ logic programme.</p>
|
|
240
235
|
</div></div>
|
241
236
|
|
242
237
|
<div id="footer">
|
243
|
-
Generated on
|
238
|
+
Generated on Sun Aug 2 19:24:16 2020 by
|
244
239
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
245
|
-
0.9.19 (ruby-2.
|
240
|
+
0.9.19 (ruby-2.6.5).
|
246
241
|
</div>
|
247
242
|
|
248
243
|
</div>
|