Class: Mirah::AST::Unquote
- Inherits:
-
Node
- Object
- Node
- Mirah::AST::Unquote
show all
- Defined in:
- lib/mirah/ast/intrinsics.rb
Instance Attribute Summary
Attributes inherited from Node
#children, #inferred_type, #newline, #parent, #position
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Node
#<<, ===, #[], #[]=, #_set_parent, child, child_name, #child_nodes, #each, #empty?, #expr?, #inferred_type!, #initialize, #initialize_copy, #insert, #inspect, #inspect_children, #line_number, #log, #precompile, #resolve_if, #resolved!, #resolved?, #simple_name, #string_value, #temp, #to_s, #top_level?, #validate_child, #validate_children
Class Method Details
53
54
55
|
# File 'lib/mirah/ast/intrinsics.rb', line 53
def self.
Thread.current[:'Mirah::AST::Unqote.extracted']
end
|
57
58
59
|
# File 'lib/mirah/ast/intrinsics.rb', line 57
def self.(value)
Thread.current[:'Mirah::AST::Unqote.extracted'] = value
end
|
.__injected ⇒ Object
61
62
63
|
# File 'lib/mirah/ast/intrinsics.rb', line 61
def self.__injected
Thread.current[:'Mirah::AST::Unqote.injected']
end
|
.__injected=(value) ⇒ Object
65
66
67
|
# File 'lib/mirah/ast/intrinsics.rb', line 65
def self.__injected=(value)
Thread.current[:'Mirah::AST::Unqote.injected'] = value
end
|
._load(str) ⇒ Object
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
# File 'lib/mirah/ast/intrinsics.rb', line 35
def self._load(str)
if str =~ /^\d+$/
index = str.to_i
Unquote.__injected[index].dup
else
position, index = Marshal.load(str)
holder = UnquotedValue.new(nil, position)
value = Unquote.__injected[index]
begin
holder << value.dup
rescue TypeError
holder << value
end
holder
end
end
|
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/mirah/ast/intrinsics.rb', line 69
def self.
values = []
saved, self. = self., values
begin
yield
return values
ensure
self. = saved
end
end
|
.inject_values(values) ⇒ Object
80
81
82
83
84
85
86
87
|
# File 'lib/mirah/ast/intrinsics.rb', line 80
def self.inject_values(values)
saved, self.__injected = self.__injected, values
begin
yield
ensure
self.__injected = saved
end
end
|
Instance Method Details
#_dump(depth) ⇒ Object
27
28
29
30
31
32
|
# File 'lib/mirah/ast/intrinsics.rb', line 27
def _dump(depth)
vals = Unquote.
index = vals.size
vals << value
Marshal.dump([position, index])
end
|
#infer(typer, expression) ⇒ Object
23
24
25
|
# File 'lib/mirah/ast/intrinsics.rb', line 23
def infer(typer, expression)
raise Mirah::SyntaxError.new("Unquote used outside of macro", self)
end
|