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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/sdx +1 -1
  3. data/lib/sdx/vm/vm.rb +16 -1
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '023920f36be61ea604ad6c69e66b71c2f9f9c0696b0a5679e129d7b284e1345e'
4
- data.tar.gz: 88f14b9b1aa7a253f564c8e40e9e1ad4589b62cc6ef1ead28a4bc08461017db6
3
+ metadata.gz: 92d4b64ff337b649c89dd0ec78dded37c71f508dfd3e9705127ee8d186fae2a4
4
+ data.tar.gz: e087de5f23ad9c9fc9ff85e0c7ffcfaaa3cdbaf19cffecaf589cb2926c1f2dc7
5
5
  SHA512:
6
- metadata.gz: eb029ebb6e35edfa9daf634b6553c69d4adf109af83916341b1809b00e3abbd1bc07eb31175ad94c95742f367c2e5cc06d1fc0e61ce74d4329022895e189c077
7
- data.tar.gz: c955957d5e26dd5559941c4a24f14ab8d0ba5a39f82c94fd891a3afd6f24be09362bbf83f11b61bc552c277fb52e2ced701e9c6cd3facae9955750d1b5b98f9e
6
+ metadata.gz: bc7fd1b23d60b16e2a9070fc172ce67fcf64fd1c033418e8d7693348a573635d264d94b8d0ed7809fa38f98546e8b98a9efd9d8e9ccda710de790855366f120c
7
+ data.tar.gz: b61e5f8f7d035638fb14f1d15e017260263b50daeb48835e774f9399e15f8ce016b00b462c1c54681d061a1378bb47549a93cd88d658def4e45b8f1c3ed01c90
data/bin/sdx CHANGED
@@ -15,7 +15,7 @@ if ARGV.size == 1
15
15
  else
16
16
  path = [(File.expand_path Dir.pwd), *(ENV.fetch("SDX_PATH", "").split ":")]
17
17
  vm = VM.new StringIO.new ""
18
- puts "Sardonyx v0.1.7"
18
+ puts "Sardonyx v0.1.8"
19
19
  def exit(_) end
20
20
  loop do
21
21
  print "> "
@@ -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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sardonyx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - sugarfi