sardonyx 0.1.7 → 0.1.8
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/bin/sdx +1 -1
- data/lib/sdx/vm/vm.rb +16 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 92d4b64ff337b649c89dd0ec78dded37c71f508dfd3e9705127ee8d186fae2a4
|
|
4
|
+
data.tar.gz: e087de5f23ad9c9fc9ff85e0c7ffcfaaa3cdbaf19cffecaf589cb2926c1f2dc7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bc7fd1b23d60b16e2a9070fc172ce67fcf64fd1c033418e8d7693348a573635d264d94b8d0ed7809fa38f98546e8b98a9efd9d8e9ccda710de790855366f120c
|
|
7
|
+
data.tar.gz: b61e5f8f7d035638fb14f1d15e017260263b50daeb48835e774f9399e15f8ce016b00b462c1c54681d061a1378bb47549a93cd88d658def4e45b8f1c3ed01c90
|
data/bin/sdx
CHANGED
data/lib/sdx/vm/vm.rb
CHANGED
|
@@ -43,6 +43,21 @@ class VM
|
|
|
43
43
|
return (to_var val).value.call args
|
|
44
44
|
end
|
|
45
45
|
end
|
|
46
|
+
|
|
47
|
+
def from_rb(val)
|
|
48
|
+
case val
|
|
49
|
+
when Integer
|
|
50
|
+
to_var (Int.new val)
|
|
51
|
+
when String
|
|
52
|
+
to_var (Str.new val)
|
|
53
|
+
when Float
|
|
54
|
+
to_var (Str.new val)
|
|
55
|
+
when Array
|
|
56
|
+
to_var (List.new val.map { |v| from_rb v })
|
|
57
|
+
when Nil
|
|
58
|
+
to_var (Nil_.new)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
46
61
|
|
|
47
62
|
def callable(val)
|
|
48
63
|
if val.respond_to? :value and val.value.respond_to? :fields
|
|
@@ -84,7 +99,7 @@ class VM
|
|
|
84
99
|
@global = GLOBAL_SCOPE.new
|
|
85
100
|
@global.add_fn "__rb_call", (Variable.new (NativeFn.new 2, (Proc.new do |name, args|
|
|
86
101
|
args = (codify args)[1..-2]
|
|
87
|
-
eval "#{name.value.internal}(#{args})"
|
|
102
|
+
from_rb eval "#{name.value.internal}(#{args})"
|
|
88
103
|
end)), :fn, @global)
|
|
89
104
|
@stack = []
|
|
90
105
|
@byte_pos = 0
|