nilac 0.0.4.3.9.7.1 → 0.0.4.3.9.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -2
- data/Rakefile +1 -1
- data/cookbook/case_insensitive_compare.js +13 -0
- data/cookbook/case_insensitive_compare.nila +7 -0
- data/cookbook/compare_strings.js +13 -0
- data/cookbook/compare_strings.nila +7 -0
- data/cookbook/concat11.js +13 -0
- data/cookbook/concat11.nila +4 -0
- data/cookbook/concat12.js +23 -0
- data/cookbook/concat12.nila +15 -0
- data/cookbook/find_substring.js +15 -0
- data/cookbook/find_substring.nila +5 -0
- data/cookbook/string_interpolation.js +7 -0
- data/cookbook/string_interpolation.nila +1 -0
- data/cookbook/substring_extract.js +21 -0
- data/cookbook/substring_extract.nila +8 -0
- data/examples/my_file.js +5 -0
- data/examples/repl.js +0 -33
- data/examples/repl.nila +36 -8
- data/examples/temp_nila.nila +63 -0
- data/lib/nilac.rb +83 -68
- data/lib/nilac/add_line_numbers.rb +17 -0
- data/lib/nilac/add_semicolons.rb +13 -3
- data/lib/nilac/compile_arrays.rb +38 -5
- data/lib/nilac/compile_blocks.rb +87 -25
- data/lib/nilac/compile_case_statement.rb +4 -0
- data/lib/nilac/compile_chained_comparison.rb +35 -0
- data/lib/nilac/compile_comments.rb +9 -0
- data/lib/nilac/compile_conditional_structures.rb +26 -3
- data/lib/nilac/compile_custom_function_map.rb +24 -2
- data/lib/nilac/compile_hashes.rb +3 -1
- data/lib/nilac/compile_heredocs.rb +2 -0
- data/lib/nilac/compile_inline_for.rb +13 -0
- data/lib/nilac/compile_interpolated_strings.rb +184 -5
- data/lib/nilac/compile_lambdas.rb +24 -8
- data/lib/nilac/compile_new_keyword.rb +37 -0
- data/lib/nilac/compile_nilac_options.rb +79 -0
- data/lib/nilac/compile_parallel_assignment.rb +3 -1
- data/lib/nilac/compile_ranges.rb +60 -0
- data/lib/nilac/compile_require_statements.rb +4 -2
- data/lib/nilac/compile_ruby_math.rb +20 -0
- data/lib/nilac/compile_ruby_methods.rb +49 -0
- data/lib/nilac/compile_whitespace_delimited_functions.rb +15 -1
- data/lib/nilac/extract_paranthesis_contents.rb +37 -0
- data/lib/nilac/extract_strings.rb +63 -0
- data/lib/nilac/fix_javascript_traps.rb +89 -0
- data/lib/nilac/friendly_errors.rb +128 -0
- data/lib/nilac/get_variables.rb +48 -14
- data/lib/nilac/lexical_scoped_function_variables.rb +1 -3
- data/lib/nilac/optimizer.rb +13 -0
- data/lib/nilac/paranthesis_compactor.rb +3 -1
- data/lib/nilac/parse_arguments.rb +21 -7
- data/lib/nilac/pretty_print_javascript.rb +152 -18
- data/lib/nilac/pretty_print_nila.rb +17 -0
- data/lib/nilac/replace_comparison_operators.rb +25 -0
- data/lib/nilac/replace_multiline_comments.rb +4 -0
- data/lib/nilac/replace_singleline_comments.rb +23 -0
- data/lib/nilac/replace_strings.rb +3 -3
- data/lib/nilac/rollblocks.rb +7 -3
- data/lib/nilac/split_semicolon_seperated_expressions.rb +3 -17
- data/lib/nilac/square_brackets_compactor.rb +37 -0
- data/lib/nilac/version.rb +1 -1
- data/shark/features/arrays.feature +11 -0
- data/shark/features/builtin_new.feature +11 -0
- data/shark/features/comments.feature +11 -0
- data/shark/features/fix_newlines.feature +1 -1
- data/shark/features/variables.feature +11 -0
- data/shark/test_files/array_string_indexing.nila +5 -1
- data/shark/test_files/arrays.nila +3 -0
- data/shark/test_files/blocks.nila +10 -0
- data/shark/test_files/builtin_new.nila +3 -0
- data/shark/test_files/case.nila +8 -0
- data/shark/test_files/chained_comparison.nila +19 -0
- data/shark/test_files/comments.nila +15 -0
- data/shark/test_files/correct.js +1 -1
- data/shark/test_files/correct_arrays.js +7 -0
- data/shark/test_files/correct_blocks.js +14 -1
- data/shark/test_files/correct_builtin_new.js +9 -0
- data/shark/test_files/correct_case.js +10 -2
- data/shark/test_files/correct_comments.js +19 -0
- data/shark/test_files/correct_conditional_assignment.js +1 -1
- data/shark/test_files/correct_default_parameters.js +1 -1
- data/shark/test_files/correct_for.js +1 -1
- data/shark/test_files/correct_hashes.js +1 -1
- data/shark/test_files/correct_heredoc.js +6 -2
- data/shark/test_files/correct_if_then_else.js +5 -1
- data/shark/test_files/correct_indexing.js +7 -3
- data/shark/test_files/correct_initialization.js +1 -1
- data/shark/test_files/correct_javascript_methods.js +1 -1
- data/shark/test_files/correct_loop.js +1 -1
- data/shark/test_files/correct_monkey_patch.js +1 -1
- data/shark/test_files/correct_multiline_array.js +1 -1
- data/shark/test_files/correct_multiple_return.js +1 -1
- data/shark/test_files/correct_numbers.js +1 -1
- data/shark/test_files/correct_operators.js +1 -1
- data/shark/test_files/correct_regular_if.js +1 -1
- data/shark/test_files/correct_regular_while.js +1 -1
- data/shark/test_files/correct_required_module.js +1 -1
- data/shark/test_files/correct_return.js +1 -1
- data/shark/test_files/correct_ruby_methods.js +1 -1
- data/shark/test_files/correct_single_return.js +1 -1
- data/shark/test_files/{perfect.js → correct_spacing.js} +1 -1
- data/shark/test_files/correct_splats.js +1 -2
- data/shark/test_files/correct_string_interpolation.js +8 -2
- data/shark/test_files/correct_string_operators.js +1 -1
- data/shark/test_files/correct_times.js +1 -1
- data/shark/test_files/correct_unless_until.js +2 -4
- data/shark/test_files/correct_variables.js +13 -0
- data/shark/test_files/correct_whitespace_delimiter.js +1 -1
- data/shark/test_files/existential_operators.nila +7 -0
- data/shark/test_files/expression.nila +6 -0
- data/shark/test_files/global_variables_client.nila +5 -0
- data/shark/test_files/heredoc.nila +11 -1
- data/shark/test_files/if_then_else.nila +3 -1
- data/shark/test_files/inline_for.nila +5 -0
- data/shark/test_files/no_return.js +11 -0
- data/shark/test_files/parseInt_trap.nila +3 -0
- data/shark/test_files/single_return.js +11 -0
- data/shark/test_files/string_interpolation.nila +7 -1
- data/shark/test_files/variables.nila +7 -0
- metadata +54 -3
@@ -14,7 +14,9 @@ def compile_custom_function_map(input_file_contents)
|
|
14
14
|
|
15
15
|
"alert" => "alert",
|
16
16
|
|
17
|
-
"prompt" => "prompt"
|
17
|
+
"prompt" => "prompt",
|
18
|
+
|
19
|
+
"parseInt" => "parseInt"
|
18
20
|
|
19
21
|
}
|
20
22
|
|
@@ -28,6 +30,8 @@ def compile_custom_function_map(input_file_contents)
|
|
28
30
|
|
29
31
|
function_map.each do |function|
|
30
32
|
|
33
|
+
include_comment = false
|
34
|
+
|
31
35
|
test_line = replace_strings(line)
|
32
36
|
|
33
37
|
if test_line.include?(function+"(") or test_line.include?(function+" ") and test_line.index(javascript_regexp) == nil
|
@@ -38,9 +42,27 @@ def compile_custom_function_map(input_file_contents)
|
|
38
42
|
|
39
43
|
testsplit[0] = " " if testsplit[0].eql?("")
|
40
44
|
|
45
|
+
if testsplit[1].include?("--single_line_comment")
|
46
|
+
|
47
|
+
include_comment = true
|
48
|
+
|
49
|
+
end
|
50
|
+
|
41
51
|
if testsplit[0][-1].eql?(" ") or testsplit[0].eql?("return")
|
42
52
|
|
43
|
-
|
53
|
+
if include_comment
|
54
|
+
|
55
|
+
modified_line, comment = line.split("--single_line_comment")
|
56
|
+
|
57
|
+
modified_file_contents[index] = modified_line.gsub(function, function_map_replacements[function])
|
58
|
+
|
59
|
+
modified_file_contents[index] = modified_file_contents[index] + "--single_line_comment#{comment}"
|
60
|
+
|
61
|
+
else
|
62
|
+
|
63
|
+
modified_file_contents[index] = line.gsub(function, function_map_replacements[function])
|
64
|
+
|
65
|
+
end
|
44
66
|
|
45
67
|
end
|
46
68
|
|
data/lib/nilac/compile_hashes.rb
CHANGED
@@ -14,6 +14,8 @@ require_relative 'read_file_line_by_line'
|
|
14
14
|
|
15
15
|
possible_hashes = input_file_contents.reject { |element| !element.include?("{") }
|
16
16
|
|
17
|
+
possible_hashes = possible_hashes.reject {|element| element.include?("loop")}
|
18
|
+
|
17
19
|
possible_multiline_hashes = possible_hashes.reject { |element| element.include?("}") }
|
18
20
|
|
19
21
|
possible_multiline_hashes = possible_multiline_hashes.reject {|element| element.index(javascript_regexp) != nil}
|
@@ -68,7 +70,7 @@ require_relative 'read_file_line_by_line'
|
|
68
70
|
|
69
71
|
def compile_inline_hashes(input_file_contents)
|
70
72
|
|
71
|
-
javascript_regexp = /(if |while |for |function |function\(|%[qQw]*\{|lambda\s*\{|\s*->\s*\{)/
|
73
|
+
javascript_regexp = /(if |while |for |function |function\(|%[qQw]*\{|lambda\s*\{|\s*->\s*\{|loop\s*)/
|
72
74
|
|
73
75
|
modified_file_contents = input_file_contents.clone.collect {|element| replace_strings(element)}
|
74
76
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative 'replace_strings'
|
2
|
+
|
3
|
+
def compile_inline_for(input_file_contents)
|
4
|
+
|
5
|
+
test_regex = /( for )/
|
6
|
+
|
7
|
+
possible_inline_for = input_file_contents.reject {|element| element.index(test_regex).nil?}
|
8
|
+
|
9
|
+
possible_inline_for = possible_inline_for.reject {|element| element.rstrip.lstrip.index(test_regex).nil?}
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
end
|
@@ -1,7 +1,74 @@
|
|
1
1
|
require_relative 'find_all_matching_indices'
|
2
|
+
require_relative 'replace_strings'
|
3
|
+
require_relative 'extract_strings'
|
4
|
+
require_relative 'replace_comparison_operators'
|
2
5
|
|
3
6
|
def compile_interpolated_strings(input_file_contents)
|
4
7
|
|
8
|
+
def interpolation_variables(input_string)
|
9
|
+
|
10
|
+
interpolation_vars = []
|
11
|
+
|
12
|
+
modified_expressions = []
|
13
|
+
|
14
|
+
input_string = input_string[2..-1]
|
15
|
+
|
16
|
+
if replace_strings(input_string).include?(",")
|
17
|
+
|
18
|
+
replaced_string = replace_strings(input_string)
|
19
|
+
|
20
|
+
extracted_strings = extract_strings(input_string)
|
21
|
+
|
22
|
+
semicolon_seperated_expressions = replaced_string.split(",")
|
23
|
+
|
24
|
+
semicolon_seperated_expressions.each do |expr|
|
25
|
+
|
26
|
+
matched_strings = expr.scan(/--repstring\d+/).to_a
|
27
|
+
|
28
|
+
if matched_strings.empty?
|
29
|
+
|
30
|
+
modified_expressions << expr
|
31
|
+
|
32
|
+
else
|
33
|
+
|
34
|
+
matched_strings.each do |str|
|
35
|
+
|
36
|
+
junk,string_id = str.split("--repstring")
|
37
|
+
|
38
|
+
modified_expressions << expr.sub("--repstring#{string_id}",extracted_strings[string_id.to_i])
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
if modified_expressions.empty?
|
49
|
+
|
50
|
+
modified_expressions << input_string
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
modified_expressions.each do |expr|
|
55
|
+
|
56
|
+
if replace_strings(expr).include?("=")
|
57
|
+
|
58
|
+
replaced_string = replace_strings(expr)
|
59
|
+
|
60
|
+
string_split = replaced_string.split("=")
|
61
|
+
|
62
|
+
interpolation_vars << string_split[0].strip
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
return interpolation_vars
|
69
|
+
|
70
|
+
end
|
71
|
+
|
5
72
|
def replace_string_arrays(input_string)
|
6
73
|
|
7
74
|
def extract(input_string, pattern_start, pattern_end)
|
@@ -32,10 +99,16 @@ require_relative 'find_all_matching_indices'
|
|
32
99
|
|
33
100
|
end
|
34
101
|
|
102
|
+
interpolation_vars = []
|
103
|
+
|
35
104
|
modified_file_contents = input_file_contents.dup
|
36
105
|
|
37
106
|
single_quoted_strings = input_file_contents.reject { |element| !(element.count("'") >= 2) }
|
38
107
|
|
108
|
+
single_quoted_string_array = []
|
109
|
+
|
110
|
+
single_quote_counter = 0
|
111
|
+
|
39
112
|
single_quoted_strings.each do |str|
|
40
113
|
|
41
114
|
modified_string = str.dup
|
@@ -46,7 +119,11 @@ require_relative 'find_all_matching_indices'
|
|
46
119
|
|
47
120
|
string_extract = modified_string[first_index..modified_string.index("'", first_index+1)]
|
48
121
|
|
49
|
-
|
122
|
+
single_quoted_string_array << string_extract
|
123
|
+
|
124
|
+
modified_string = modified_string.sub(string_extract, "--single_quoted#{single_quote_counter}")
|
125
|
+
|
126
|
+
single_quote_counter += 1
|
50
127
|
|
51
128
|
end
|
52
129
|
|
@@ -60,6 +137,20 @@ require_relative 'find_all_matching_indices'
|
|
60
137
|
|
61
138
|
modified_line = line.dup
|
62
139
|
|
140
|
+
possible_single_quoted_strings = modified_line.scan(/--single_quoted\d+/).to_a
|
141
|
+
|
142
|
+
unless possible_single_quoted_strings.empty?
|
143
|
+
|
144
|
+
possible_single_quoted_strings.each do |quoted_string|
|
145
|
+
|
146
|
+
junk,string_id = quoted_string.split("--single_quoted")
|
147
|
+
|
148
|
+
modified_line = modified_line.sub("--single_quoted#{string_id}",single_quoted_string_array[string_id.to_i])
|
149
|
+
|
150
|
+
end
|
151
|
+
|
152
|
+
end
|
153
|
+
|
63
154
|
interpol_starting_loc = find_all_matching_indices(modified_line, "\#{") + [-1]
|
64
155
|
|
65
156
|
interpolated_strings = []
|
@@ -130,25 +221,111 @@ require_relative 'find_all_matching_indices'
|
|
130
221
|
|
131
222
|
interpolated_strings.each do |interpol|
|
132
223
|
|
224
|
+
original_interpol = interpol.clone
|
225
|
+
|
133
226
|
string_split = line.split(interpol)
|
134
227
|
|
135
228
|
if string_split[1].eql?("\"\n")
|
136
229
|
|
230
|
+
if replace_strings(interpol).include?(";")
|
231
|
+
|
232
|
+
interpol = replace_strings(interpol)
|
233
|
+
|
234
|
+
string_extracts = extract_strings(interpol)
|
235
|
+
|
236
|
+
interpol = interpol.gsub(";",",")
|
237
|
+
|
238
|
+
string_extracts.each do |str|
|
239
|
+
|
240
|
+
matched_strings = str.scan(/--repstring/).to_a
|
241
|
+
|
242
|
+
matched_strings.each do |matched_string|
|
243
|
+
|
244
|
+
junk,string_id = matched_string.split("--repstring")
|
245
|
+
|
246
|
+
interpol = interpol.sub("--repstring#{string_id}",string_extracts[string_id.to_i])
|
247
|
+
|
248
|
+
end
|
249
|
+
|
250
|
+
end
|
251
|
+
|
252
|
+
interpol = replace_comparison_operators(interpol)
|
253
|
+
|
254
|
+
end
|
255
|
+
|
256
|
+
interpolation_variables(interpol)
|
257
|
+
|
137
258
|
replacement_string = "\" + " + "(#{interpol[2...-1]})"
|
138
259
|
|
139
|
-
modified_file_contents[index] = modified_file_contents[index].sub(
|
260
|
+
modified_file_contents[index] = modified_file_contents[index].sub(original_interpol+"\"", replacement_string)
|
140
261
|
|
141
262
|
elsif string_split[1].eql?("\")\n")
|
142
263
|
|
264
|
+
if replace_strings(interpol).include?(";")
|
265
|
+
|
266
|
+
interpol = replace_strings(interpol)
|
267
|
+
|
268
|
+
string_extracts = extract_strings(interpol)
|
269
|
+
|
270
|
+
interpol = interpol.gsub(";",",")
|
271
|
+
|
272
|
+
string_extracts.each do |str|
|
273
|
+
|
274
|
+
matched_strings = str.scan(/--repstring/).to_a
|
275
|
+
|
276
|
+
matched_strings.each do |matched_string|
|
277
|
+
|
278
|
+
junk,string_id = matched_string.split("--repstring")
|
279
|
+
|
280
|
+
interpol = interpol.sub("--repstring#{string_id}",string_extracts[string_id.to_i])
|
281
|
+
|
282
|
+
end
|
283
|
+
|
284
|
+
end
|
285
|
+
|
286
|
+
interpol = replace_comparison_operators(interpol)
|
287
|
+
|
288
|
+
end
|
289
|
+
|
290
|
+
interpolation_variables(interpol)
|
291
|
+
|
143
292
|
replacement_string = "\" + " + "(#{interpol[2...-1]})"
|
144
293
|
|
145
|
-
modified_file_contents[index] = modified_file_contents[index].sub(
|
294
|
+
modified_file_contents[index] = modified_file_contents[index].sub(original_interpol + "\"", replacement_string)
|
146
295
|
|
147
296
|
else
|
148
297
|
|
298
|
+
if replace_strings(interpol).include?(";")
|
299
|
+
|
300
|
+
interpol = replace_strings(interpol)
|
301
|
+
|
302
|
+
string_extracts = extract_strings(interpol)
|
303
|
+
|
304
|
+
interpol = interpol.gsub(";",",")
|
305
|
+
|
306
|
+
string_extracts.each do |str|
|
307
|
+
|
308
|
+
matched_strings = str.scan(/--repstring/).to_a
|
309
|
+
|
310
|
+
matched_strings.each do |matched_string|
|
311
|
+
|
312
|
+
junk,string_id = matched_string.split("--repstring")
|
313
|
+
|
314
|
+
interpol = interpol.sub("--repstring#{string_id}",string_extracts[string_id.to_i])
|
315
|
+
|
316
|
+
end
|
317
|
+
|
318
|
+
end
|
319
|
+
|
320
|
+
interpol = replace_comparison_operators(interpol)
|
321
|
+
|
322
|
+
end
|
323
|
+
|
324
|
+
interpolation_vars << interpolation_variables(interpol)
|
325
|
+
|
149
326
|
replacement_string = "\"" + " + " + "(#{interpol[2...-1]})" + " + \""
|
150
327
|
|
151
|
-
modified_file_contents[index] = modified_file_contents[index].sub(
|
328
|
+
modified_file_contents[index] = modified_file_contents[index].sub(original_interpol, replacement_string)
|
152
329
|
|
153
330
|
end
|
154
331
|
|
@@ -158,6 +335,8 @@ require_relative 'find_all_matching_indices'
|
|
158
335
|
|
159
336
|
end
|
160
337
|
|
161
|
-
|
338
|
+
interpolation_vars = interpolation_vars.flatten.uniq
|
339
|
+
|
340
|
+
return modified_file_contents, interpolation_vars
|
162
341
|
|
163
342
|
end
|
@@ -12,7 +12,15 @@ def compile_lambdas(input_file_contents,temporary_nila_file)
|
|
12
12
|
|
13
13
|
if parameterless
|
14
14
|
|
15
|
-
|
15
|
+
if input_block[0] = "{" and input_block[-1] = "}"
|
16
|
+
|
17
|
+
block_contents = input_block[1...-1]
|
18
|
+
|
19
|
+
else
|
20
|
+
|
21
|
+
block_contents = input_block[3...-1]
|
22
|
+
|
23
|
+
end
|
16
24
|
|
17
25
|
compiled_lambda = "function() {\n\n #{block_contents.strip} \n\n}"
|
18
26
|
|
@@ -48,7 +56,9 @@ def compile_lambdas(input_file_contents,temporary_nila_file)
|
|
48
56
|
|
49
57
|
input_file_contents = input_file_contents.collect {|element| (replace_strings(element).include?(" -> ") ? element.gsub(" -> "," lambda ") : element)}
|
50
58
|
|
51
|
-
input_file_contents = input_file_contents.collect {|element| element.gsub("
|
59
|
+
input_file_contents = input_file_contents.collect {|element| element.gsub("document","decccccumennt")}
|
60
|
+
|
61
|
+
input_file_contents = input_file_contents.collect {|element| element.gsub("append","appand").gsub(" do"," do ").gsub("do "," do ")}
|
52
62
|
|
53
63
|
possible_lambdas = input_file_contents.reject {|line| !replace_strings(line).include?("lambda")}
|
54
64
|
|
@@ -74,7 +84,7 @@ def compile_lambdas(input_file_contents,temporary_nila_file)
|
|
74
84
|
|
75
85
|
loop_extract = input_file_contents[starting_counter..index_counter]
|
76
86
|
|
77
|
-
var_name,block = loop_extract.join.split(/\s*do
|
87
|
+
var_name,block = loop_extract.join.split(/\s*do\s+/)
|
78
88
|
|
79
89
|
var_name = var_name.split(/\s*=\s*lambda/)[0].strip
|
80
90
|
|
@@ -92,15 +102,17 @@ def compile_lambdas(input_file_contents,temporary_nila_file)
|
|
92
102
|
|
93
103
|
possible_lambdas = possible_lambdas.reject {|element| !element.include?("{") and !element.include?("}")}
|
94
104
|
|
95
|
-
possible_lambdas = possible_lambdas.collect {|element| element.gsub(/lambda\s*\{/,"lambda !_{")}
|
96
|
-
|
97
105
|
modified_file_contents = input_file_contents.clone
|
98
106
|
|
99
107
|
unless possible_lambdas.empty?
|
100
108
|
|
101
|
-
possible_lambdas.
|
109
|
+
original_loops = possible_lambdas.clone
|
110
|
+
|
111
|
+
possible_lambdas = possible_lambdas.collect {|element| element.gsub(/lambda\s*\{/,"lambda !_{")}
|
102
112
|
|
103
|
-
|
113
|
+
possible_lambdas.each_with_index do |loop,index|
|
114
|
+
|
115
|
+
original_loop = original_loops[index]
|
104
116
|
|
105
117
|
string_counter = 1
|
106
118
|
|
@@ -182,7 +194,9 @@ def compile_lambdas(input_file_contents,temporary_nila_file)
|
|
182
194
|
|
183
195
|
replacement_string = replacement_array.join
|
184
196
|
|
185
|
-
|
197
|
+
replacement_string = replacement_string[-1].eql?(";") ? replacement_string : (replacement_string + ";")
|
198
|
+
|
199
|
+
modified_file_contents[input_file_contents.index(original_loop)] = (replacement_string + "\n\n")
|
186
200
|
|
187
201
|
end
|
188
202
|
|
@@ -190,6 +204,8 @@ def compile_lambdas(input_file_contents,temporary_nila_file)
|
|
190
204
|
|
191
205
|
modified_file_contents = modified_file_contents.collect {|element| element.gsub("appand","append")}
|
192
206
|
|
207
|
+
modified_file_contents = modified_file_contents.collect {|element| element.gsub("decccccumennt","document")}
|
208
|
+
|
193
209
|
file_id = open(temporary_nila_file, 'w')
|
194
210
|
|
195
211
|
file_id.write(modified_file_contents.join)
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require_relative 'replace_strings'
|
2
|
+
|
3
|
+
def compile_new_keyword(input_file_contents)
|
4
|
+
|
5
|
+
# This construct compiles builtin Ruby type initializations to Javascript equivalents
|
6
|
+
|
7
|
+
# Eg: String.new(somestring) => new String(somestring)
|
8
|
+
|
9
|
+
match_hash = {
|
10
|
+
|
11
|
+
"String.new" => "new String",
|
12
|
+
|
13
|
+
}
|
14
|
+
|
15
|
+
replaced_contents = input_file_contents.collect {|element| replace_strings(element)}
|
16
|
+
|
17
|
+
matchables = match_hash.keys
|
18
|
+
|
19
|
+
matched_values = match_hash.values
|
20
|
+
|
21
|
+
matchables.each_with_index do |key,key_index|
|
22
|
+
|
23
|
+
replaced_contents.each_with_index do |element,index|
|
24
|
+
|
25
|
+
if element.include?(key)
|
26
|
+
|
27
|
+
input_file_contents[index] = input_file_contents[index].gsub(key,matched_values[key_index])
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
return input_file_contents
|
36
|
+
|
37
|
+
end
|