Module: J
Defined Under Namespace
Classes: Expression, Short, Term
Instance Method Summary
collapse
Instance Method Details
#exp(receiver, operation, *args, label: nil, metadata: {}) ⇒ Object
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
# File 'lib/affidavit/j.rb', line 109
def exp(receiver, operation, *args, label: nil, metadata: {})
klass = (
if Enumerable.instance_methods.include?(operation)
Short
else
Expression
end
)
klass.new(
receiver: receiver,
operation: operation,
args: args,
label: label,
metadata: metadata
)
end
|
#reify(obj, lazy: false) ⇒ Object
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# File 'lib/affidavit/j.rb', line 6
def reify(obj, lazy: false)
enumerator = lazy ? :lazy : :itself
if obj.is_a?(Array)
obj.send(enumerator).map { reify(_1) }
elsif obj.is_a?(Hash)
obj.send(enumerator).map { [reify(_1), reify(_2)] }.to_h
elsif obj.respond_to?(:__is__J__)
obj.value
else
obj
end
end
|
#term(value, label, metadata: {}) ⇒ Object
97
98
99
|
# File 'lib/affidavit/j.rb', line 97
def term(value, label, metadata: {})
Term.new(val: value, label: label, metadata: metadata)
end
|
#v ⇒ Object
101
102
103
|
# File 'lib/affidavit/j.rb', line 101
def v(...)
term(...)
end
|
#x ⇒ Object
105
106
107
|
# File 'lib/affidavit/j.rb', line 105
def x(...)
exp(...)
end
|