Class: Alf::Update::Deleter
Instance Method Summary
collapse
-
#apply_and_split(expr, predicate, list) ⇒ Object
-
#not_supported(expr, *args) ⇒ Object
(also: #on_coerce, #on_compact, #on_generator, #on_type_safe, #on_infer_heading, #on_join, #on_matching, #on_minus, #not_matching, #on_quota, #on_summarize, #on_ungroup, #on_union, #on_unwrap)
-
#on_autonum(expr, predicate) ⇒ Object
-
#on_defaults(expr, predicate) ⇒ Object
-
#on_extend(expr, predicate) ⇒ Object
-
#on_group(expr, predicate) ⇒ Object
-
#on_intersect(expr, predicate) ⇒ Object
-
#on_leaf_operand(expr, predicate) ⇒ Object
leaf Operand, recursion end :-).
-
#on_rank(expr, predicate) ⇒ Object
-
#on_rename(expr, predicate) ⇒ Object
-
#on_restrict(expr, predicate) ⇒ Object
-
#on_unary_delegate(expr, predicate) ⇒ Object
(also: #on_clip, #on_sort, #on_project)
-
#on_wrap(expr, predicate) ⇒ Object
#apply, #call, #on_missing
#copy_and_apply
Instance Method Details
#apply_and_split(expr, predicate, list) ⇒ Object
13
14
15
16
17
18
19
20
|
# File 'lib/alf-update/alf/update/deleter.rb', line 13
def apply_and_split(expr, predicate, list)
top, down = predicate.and_split(list)
if top.tautology?
apply(expr.operand, predicate)
else
raise NotSupportedError
end
end
|
#not_supported(expr, *args) ⇒ Object
Also known as:
on_coerce, on_compact, on_generator, on_type_safe, on_infer_heading, on_join, on_matching, on_minus, not_matching, on_quota, on_summarize, on_ungroup, on_union, on_unwrap
7
8
9
|
# File 'lib/alf-update/alf/update/deleter.rb', line 7
def not_supported(expr, *args)
raise NotSupportedError, "Unable to delete through `#{expr}`"
end
|
#on_autonum(expr, predicate) ⇒ Object
34
35
36
|
# File 'lib/alf-update/alf/update/deleter.rb', line 34
def on_autonum(expr, predicate)
apply_and_split(expr, predicate, AttrList[expr.as])
end
|
#on_defaults(expr, predicate) ⇒ Object
43
44
45
|
# File 'lib/alf-update/alf/update/deleter.rb', line 43
def on_defaults(expr, predicate)
apply_and_split(expr, predicate, expr.defaults.to_attr_list)
end
|
#on_extend(expr, predicate) ⇒ Object
54
55
56
|
# File 'lib/alf-update/alf/update/deleter.rb', line 54
def on_extend(expr, predicate)
apply_and_split(expr, predicate, expr.ext.to_attr_list)
end
|
#on_group(expr, predicate) ⇒ Object
58
59
60
|
# File 'lib/alf-update/alf/update/deleter.rb', line 58
def on_group(expr, predicate)
apply_and_split(expr, predicate, AttrList[expr.as])
end
|
#on_intersect(expr, predicate) ⇒ Object
64
65
66
67
|
# File 'lib/alf-update/alf/update/deleter.rb', line 64
def on_intersect(expr, predicate)
apply(expr.left, predicate)
apply(expr.right, predicate)
end
|
#on_leaf_operand(expr, predicate) ⇒ Object
leaf Operand, recursion end :-)
28
29
30
|
# File 'lib/alf-update/alf/update/deleter.rb', line 28
def on_leaf_operand(expr, predicate)
expr.to_relvar.delete(predicate)
end
|
#on_rank(expr, predicate) ⇒ Object
78
79
80
|
# File 'lib/alf-update/alf/update/deleter.rb', line 78
def on_rank(expr, predicate)
apply_and_split(expr, predicate, AttrList[expr.as])
end
|
#on_rename(expr, predicate) ⇒ Object
82
83
84
|
# File 'lib/alf-update/alf/update/deleter.rb', line 82
def on_rename(expr, predicate)
apply_and_split(expr, predicate, expr.renaming.invert.to_attr_list)
end
|
#on_restrict(expr, predicate) ⇒ Object
86
87
88
|
# File 'lib/alf-update/alf/update/deleter.rb', line 86
def on_restrict(expr, predicate)
apply(expr.operand, expr.predicate & predicate)
end
|
#on_unary_delegate(expr, predicate) ⇒ Object
Also known as:
on_clip, on_sort, on_project
22
23
24
|
# File 'lib/alf-update/alf/update/deleter.rb', line 22
def on_unary_delegate(expr, predicate)
apply(expr.operand, predicate)
end
|
#on_wrap(expr, predicate) ⇒ Object
95
96
97
|
# File 'lib/alf-update/alf/update/deleter.rb', line 95
def on_wrap(expr, predicate)
apply_and_split(expr, predicate, AttrList[expr.as])
end
|