compiled_query.js
· 3.7 KiB · JavaScript
Исходник
Playground
/*
|
lightning struck $x $y
, $something is at $x $y?
, $something has inventory $inventory?
, $inventory has item $item?
, $item is $class?
, $class is conductive?
|
$something is struck by lightning
*/
plans._lightning_struck_x_y = function (match, patterns) {
for(let [_x, _y] of patterns._lightning_struck_x_y) {
match.state._lightning_struck_x_y = true;
match.vars._x = _x;
match.vars._y = _y;
if (
match.state._something_is_at_x_y || plans._something_is_at_x_y(match, patterns)
) {
return true;
} else { return false; }
}
}
plans._something_is_at_x_y = function (match, patterns) {
for(let [_something, _x, _y] of patterns._something_is_at_x_y) {
match.state._something_is_at_x_y = true;
match.vars._something = _something;
match.vars._x = _x;
match.vars._y = _y;
if (
match.state._something_has_inventory_inventory || plans._something_has_inventory_inventory(match, p
atterns) &&
match.state._lightning_struck_x_y || plans._lightning_struck_x_y(match, patterns)
) {
return true;
} else { return false; }
}
}
plans._something_has_inventory_inventory = function (match, patterns) {
for(let [_something, _inventory] of patterns._something_has_inventory_inventory) {
match.state._something_has_inventory_inventory = true;
match.vars._something = _something;
match.vars._inventory = _inventory;
if (
match.state._something_is_at_x_y || plans._something_is_at_x_y(match, patterns) &&
match.state._inventory_has_item_item || plans._inventory_has_item_item(match, patterns)
) {
return true;
} else { return false; }
}
}
plans._inventory_has_item_item = function (match, patterns) {
for(let [_inventory, _item] of patterns._inventory_has_item_item) {
match.state._inventory_has_item_item = true;
match.vars._inventory = _inventory;
match.vars._item = _item;
if (
match.state._something_has_inventory_inventory || plans._something_has_inventory_inventory(match, p
atterns) &&
match.state._item_is_class || plans._item_is_class(match, patterns)
) {
return true;
} else { return false; }
}
}
plans._item_is_class = function (match, patterns) {
for(let [_item, _class] of patterns._item_is_class) {
match.state._item_is_class = true;
match.vars._item = _item;
match.vars._class = _class;
if (
match.state._inventory_has_item_item || plans._inventory_has_item_item(match, patterns) &&
match.state._class_is_conductive || plans._class_is_conductive(match, patterns)
) {
return true;
} else { return false; }
}
}
plans._class_is_conductive = function (match, patterns) {
for(let [_class] of patterns._class_is_conductive) {
match.state._class_is_conductive = true;
match.vars._class = _class;
if (
match.state._item_is_class || plans._item_is_class(match, patterns)
) {
return true;
} else { return false; }
}
}
1 | /* |
2 | | |
3 | lightning struck $x $y |
4 | , $something is at $x $y? |
5 | , $something has inventory $inventory? |
6 | , $inventory has item $item? |
7 | , $item is $class? |
8 | , $class is conductive? |
9 | | |
10 | $something is struck by lightning |
11 | |
12 | */ |
13 | |
14 | plans._lightning_struck_x_y = function (match, patterns) { |
15 | for(let [_x, _y] of patterns._lightning_struck_x_y) { |
16 | match.state._lightning_struck_x_y = true; |
17 | match.vars._x = _x; |
18 | match.vars._y = _y; |
19 | if ( |
20 | match.state._something_is_at_x_y || plans._something_is_at_x_y(match, patterns) |
21 | |
22 | ) { |
23 | return true; |
24 | } else { return false; } |
25 | } |
26 | } |
27 | |
28 | |
29 | |
30 | |
31 | plans._something_is_at_x_y = function (match, patterns) { |
32 | for(let [_something, _x, _y] of patterns._something_is_at_x_y) { |
33 | match.state._something_is_at_x_y = true; |
34 | match.vars._something = _something; |
35 | match.vars._x = _x; |
36 | match.vars._y = _y; |
37 | if ( |
38 | match.state._something_has_inventory_inventory || plans._something_has_inventory_inventory(match, p |
39 | atterns) && |
40 | match.state._lightning_struck_x_y || plans._lightning_struck_x_y(match, patterns) |
41 | |
42 | ) { |
43 | return true; |
44 | } else { return false; } |
45 | } |
46 | } |
47 | |
48 | |
49 | |
50 | |
51 | plans._something_has_inventory_inventory = function (match, patterns) { |
52 | for(let [_something, _inventory] of patterns._something_has_inventory_inventory) { |
53 | match.state._something_has_inventory_inventory = true; |
54 | match.vars._something = _something; |
55 | match.vars._inventory = _inventory; |
56 | if ( |
57 | match.state._something_is_at_x_y || plans._something_is_at_x_y(match, patterns) && |
58 | match.state._inventory_has_item_item || plans._inventory_has_item_item(match, patterns) |
59 | |
60 | ) { |
61 | return true; |
62 | } else { return false; } |
63 | } |
64 | } |
65 | |
66 | |
67 | |
68 | |
69 | plans._inventory_has_item_item = function (match, patterns) { |
70 | for(let [_inventory, _item] of patterns._inventory_has_item_item) { |
71 | match.state._inventory_has_item_item = true; |
72 | match.vars._inventory = _inventory; |
73 | match.vars._item = _item; |
74 | if ( |
75 | match.state._something_has_inventory_inventory || plans._something_has_inventory_inventory(match, p |
76 | atterns) && |
77 | match.state._item_is_class || plans._item_is_class(match, patterns) |
78 | |
79 | ) { |
80 | return true; |
81 | } else { return false; } |
82 | } |
83 | } |
84 | |
85 | |
86 | |
87 | |
88 | plans._item_is_class = function (match, patterns) { |
89 | for(let [_item, _class] of patterns._item_is_class) { |
90 | match.state._item_is_class = true; |
91 | match.vars._item = _item; |
92 | match.vars._class = _class; |
93 | if ( |
94 | match.state._inventory_has_item_item || plans._inventory_has_item_item(match, patterns) && |
95 | match.state._class_is_conductive || plans._class_is_conductive(match, patterns) |
96 | |
97 | ) { |
98 | return true; |
99 | } else { return false; } |
100 | } |
101 | } |
102 | |
103 | |
104 | |
105 | |
106 | plans._class_is_conductive = function (match, patterns) { |
107 | for(let [_class] of patterns._class_is_conductive) { |
108 | match.state._class_is_conductive = true; |
109 | match.vars._class = _class; |
110 | if ( |
111 | match.state._item_is_class || plans._item_is_class(match, patterns) |
112 | |
113 | ) { |
114 | return true; |
115 | } else { return false; } |
116 | } |
117 | } |
118 | |
119 |