dtr_to_rust 0.2.3 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/dtr_to_rust.rb +4 -3
- data/lib/generator.rb +4 -0
- data/lib/instruction/create_list.rb +27 -0
- data/lib/instruction_handler.rb +2 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0e88ee729d6b75560b0b721116d5d01a09b0461be73ce60f7866811ac852ddb
|
4
|
+
data.tar.gz: ec23afaf87408739dc2e85a6c205dc70b58518a200c8aa7452d8cc65e867c3a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b81c54febc129a193a215dd67fd29e88b6378d469752d39c3a3a258eb3d702230f48f92560938cf0ba176360ad13c2e05d1fa78e2802dc67bccd173875a72024
|
7
|
+
data.tar.gz: 00ad6c66f66e8c162860db52d7518b1633e8ecf2877c0ccd3bc09bf0c28157fbdb1627b046039af04ca570828bf2cb6a6ecf8514a7aa5d32f7a8adf272bcfd13
|
data/lib/dtr_to_rust.rb
CHANGED
@@ -7,11 +7,12 @@ module DTRToRust
|
|
7
7
|
|
8
8
|
# This module contains all the classes that handle the different types of instructions.
|
9
9
|
module Instruction
|
10
|
-
autoload :
|
10
|
+
autoload :AddAndAssign, 'instruction/add_and_assign'
|
11
|
+
autoload :CreateList, 'instruction/create_list'
|
11
12
|
autoload :Evaluate, 'instruction/evaluate'
|
12
|
-
autoload :Return, 'instruction/return'
|
13
13
|
autoload :LogString, 'instruction/log_string'
|
14
|
-
autoload :
|
14
|
+
autoload :Handler, 'instruction/handler'
|
15
|
+
autoload :Return, 'instruction/return'
|
15
16
|
end
|
16
17
|
|
17
18
|
# This module contains all the classes that handle common logic.
|
data/lib/generator.rb
CHANGED
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DTRToRust
|
4
|
+
module Instruction
|
5
|
+
# This class is responsible for generating Rust code for the AddAndAssign instruction.
|
6
|
+
class CreateList < Handler
|
7
|
+
def handle
|
8
|
+
form_rust_string("let #{@instruction[:assign]} = vec![#{handle_inputs}];",
|
9
|
+
@instruction[:scope])
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def handle_inputs
|
15
|
+
@instruction[:inputs].map { |input| handle_input(input) }.join(', ')
|
16
|
+
end
|
17
|
+
|
18
|
+
def handle_input(input)
|
19
|
+
if (input.start_with?('"') && input[-1] == ('"'))
|
20
|
+
"symbol_short!(#{input})"
|
21
|
+
else
|
22
|
+
input
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/instruction_handler.rb
CHANGED
@@ -17,6 +17,8 @@ module DTRToRust
|
|
17
17
|
Instruction::AddAndAssign.handle(@instruction)
|
18
18
|
when 'evaluate'
|
19
19
|
Instruction::Evaluate.handle(@instruction)
|
20
|
+
when 'create_list'
|
21
|
+
Instruction::CreateList.handle(@instruction)
|
20
22
|
else
|
21
23
|
raise "Unknown instruction type: #{@instruction[:instruction]}"
|
22
24
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dtr_to_rust
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rob Durst
|
@@ -21,6 +21,7 @@ files:
|
|
21
21
|
- lib/dtr_to_rust.rb
|
22
22
|
- lib/generator.rb
|
23
23
|
- lib/instruction/add_and_assign.rb
|
24
|
+
- lib/instruction/create_list.rb
|
24
25
|
- lib/instruction/evaluate.rb
|
25
26
|
- lib/instruction/handler.rb
|
26
27
|
- lib/instruction/log_string.rb
|