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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 44907f99e8bd2ae65cc6c5e10bfbfde0ffa8d828
|
4
|
+
data.tar.gz: c7e9887180c1b8c37dea78842673d4c4ab1f6f62
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29cd85597e4398193eb8dd6dcd926f7c39237224346b5d2536dbbec05969b451c205475311fd72e7920036bf6344795f5684ede626b96367d1641776040051bc
|
7
|
+
data.tar.gz: 26b30c2f2123978596c05702514280717007b5c6f723030501a365c0e600a21e8f9eb1b877d89ffb8ced927d232444944d50970cd7b8c10ab4053ac6e5c5d351
|
data/.gitignore
CHANGED
data/Rakefile
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
#!/usr/bin/env rake
|
2
|
-
require "bundler/gem_tasks"
|
2
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,13 @@
|
|
1
|
+
//Written using Nila. Visit http://adhithyan15.github.io/nila
|
2
|
+
(function () {
|
3
|
+
var input_name;
|
4
|
+
|
5
|
+
input_name = prompt("What is your name?");
|
6
|
+
|
7
|
+
if (input_name.toLowerCase() === "Jim".toLowerCase()) {
|
8
|
+
alert("Hey Jim!");
|
9
|
+
} else {
|
10
|
+
alert("Hey " + (input_name));
|
11
|
+
}
|
12
|
+
|
13
|
+
}).call(this);
|
@@ -0,0 +1,13 @@
|
|
1
|
+
//Written using Nila. Visit http://adhithyan15.github.io/nila
|
2
|
+
(function() {
|
3
|
+
var input_name;
|
4
|
+
|
5
|
+
input_name = prompt("What is your name?");
|
6
|
+
|
7
|
+
if (input_name === "Jim") {
|
8
|
+
alert("Hey Jim!");
|
9
|
+
} else {
|
10
|
+
alert("Hey " + (input_name));
|
11
|
+
}
|
12
|
+
|
13
|
+
}).call(this);
|
@@ -0,0 +1,13 @@
|
|
1
|
+
//Written using Nila. Visit http://adhithyan15.github.io/nila
|
2
|
+
(function() {
|
3
|
+
var string1, string2, string3;
|
4
|
+
|
5
|
+
string1 = "This is a";
|
6
|
+
|
7
|
+
string2 = "test";
|
8
|
+
|
9
|
+
string3 = string1 + string2;
|
10
|
+
|
11
|
+
console.log(string3); //=> This is a test
|
12
|
+
|
13
|
+
}).call(this);
|
@@ -0,0 +1,23 @@
|
|
1
|
+
//Written using Nila. Visit http://adhithyan15.github.io/nila
|
2
|
+
(function() {
|
3
|
+
var bool1, string1, string2;
|
4
|
+
|
5
|
+
// Javascript approach
|
6
|
+
|
7
|
+
string1 = "Trust Jim: ";
|
8
|
+
|
9
|
+
bool1 = true;
|
10
|
+
|
11
|
+
string2 = string1 + bool1;
|
12
|
+
|
13
|
+
console.log(string2);
|
14
|
+
|
15
|
+
// Ruby approach
|
16
|
+
|
17
|
+
bool1 = true;
|
18
|
+
|
19
|
+
string2 = "Trust Jim: " + (bool1);
|
20
|
+
|
21
|
+
console.log(string2);
|
22
|
+
|
23
|
+
}).call(this);
|
@@ -0,0 +1,15 @@
|
|
1
|
+
//Written using Nila. Visit http://adhithyan15.github.io/nila
|
2
|
+
(function () {
|
3
|
+
var find_string, main_string;
|
4
|
+
|
5
|
+
main_string = "This is a test string";
|
6
|
+
|
7
|
+
find_string = "test";
|
8
|
+
|
9
|
+
if (main_string.indexOf(find_string) !== -1){
|
10
|
+
console.log("Substring found!");
|
11
|
+
}
|
12
|
+
|
13
|
+
//=> Substring found!
|
14
|
+
|
15
|
+
}).call(this);
|
@@ -0,0 +1 @@
|
|
1
|
+
puts "I've set x to #{x = 5; x += 1}."
|
@@ -0,0 +1,21 @@
|
|
1
|
+
//Written using Nila. Visit http://adhithyan15.github.io/nila
|
2
|
+
(function() {
|
3
|
+
var fruits_i_like, fruits_list, start;
|
4
|
+
|
5
|
+
fruits_i_like = "List of fruits I like:apples, oranges, pineapple and mango";
|
6
|
+
|
7
|
+
start = fruits_i_like.indexOf(":");
|
8
|
+
|
9
|
+
// Indexing Range Method
|
10
|
+
|
11
|
+
fruits_list = fruits_i_like.slice(start+1);
|
12
|
+
|
13
|
+
console.log(fruits_list);
|
14
|
+
|
15
|
+
// Slicing Method
|
16
|
+
|
17
|
+
fruits_list = fruits_i_like.slice(start+1);
|
18
|
+
|
19
|
+
console.log(fruits_list);
|
20
|
+
|
21
|
+
}).call(this);
|
@@ -0,0 +1,8 @@
|
|
1
|
+
fruits_i_like = "List of fruits I like:apples, oranges, pineapple and mango"
|
2
|
+
start = fruits_i_like.index(":")
|
3
|
+
# Indexing Range Method
|
4
|
+
fruits_list = fruits_i_like[start+1..last]
|
5
|
+
puts fruits_list
|
6
|
+
# Slicing Method
|
7
|
+
fruits_list = fruits_i_like.slice(start+1,last)
|
8
|
+
puts fruits_list
|
data/examples/my_file.js
ADDED
data/examples/repl.js
CHANGED
@@ -1,33 +0,0 @@
|
|
1
|
-
//Written using Nila. Visit http://adhithyan15.github.io/nila
|
2
|
-
(function() {
|
3
|
-
var read, readline, rl, stream;
|
4
|
-
|
5
|
-
// This is a small REPL for Nila to test out nila code and do bug fixes
|
6
|
-
|
7
|
-
readline = require('readline');
|
8
|
-
|
9
|
-
require('fs');
|
10
|
-
|
11
|
-
stream = fs.createWriteStream("my_file.nila");
|
12
|
-
|
13
|
-
stream.once('open',function(fd) {
|
14
|
-
stream.write("Testing!\n");
|
15
|
-
stream.;
|
16
|
-
});
|
17
|
-
|
18
|
-
rl = readline.createInterface(process.stdin, process.stdout);
|
19
|
-
|
20
|
-
rl.setPrompt('nila> ');
|
21
|
-
|
22
|
-
rl.prompt();
|
23
|
-
|
24
|
-
read = rl.on('line',function(line) {
|
25
|
-
rl.prompt();
|
26
|
-
});
|
27
|
-
|
28
|
-
read.on('close',function() {
|
29
|
-
console.log("Have a great day!");
|
30
|
-
process.exit(0);
|
31
|
-
});
|
32
|
-
|
33
|
-
}).call(this);
|
data/examples/repl.nila
CHANGED
@@ -4,14 +4,20 @@ require 'readline'
|
|
4
4
|
|
5
5
|
require 'fs'
|
6
6
|
|
7
|
-
|
7
|
+
require 'sys'
|
8
|
+
|
9
|
+
exec = require('child_process').exec
|
10
|
+
|
11
|
+
file_name = "#{__dirname}/my_file.nila"
|
12
|
+
|
13
|
+
output_file_name = "#{__dirname}/my_file.js"
|
14
|
+
|
15
|
+
stream = fs.createWriteStream(file_name)
|
8
16
|
|
9
17
|
stream.once 'open', do |fd|
|
10
18
|
|
11
|
-
stream.write("
|
19
|
+
stream.write("# REPL Session #{new Date().to_s}\n\n")
|
12
20
|
|
13
|
-
stream.end()
|
14
|
-
|
15
21
|
end
|
16
22
|
|
17
23
|
rl = readline.createInterface(process.stdin, process.stdout)
|
@@ -21,11 +27,33 @@ rl.setPrompt('nila> ')
|
|
21
27
|
rl.prompt()
|
22
28
|
|
23
29
|
read = rl.on 'line', do |line|
|
24
|
-
|
30
|
+
stream.write("puts (#{line})\n\n")
|
31
|
+
exec 'nilac -c my_file.nila', do |error,stdout,stderr|
|
32
|
+
if error != nil
|
33
|
+
sys.print("error: #{error}")
|
34
|
+
end
|
35
|
+
if stdout.strip == "Compilation is successful!"
|
36
|
+
exec output_file_name, do |error,stdout,stderr|
|
37
|
+
if error != nil
|
38
|
+
sys.print(error + "\n")
|
39
|
+
else
|
40
|
+
sys.print(stdout + "\n")
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
25
45
|
rl.prompt()
|
26
46
|
end
|
27
47
|
|
28
|
-
read.on 'close', do
|
29
|
-
|
48
|
+
read.on 'close', do
|
49
|
+
stream.end()
|
50
|
+
fs.unlink file_name, do |err|
|
51
|
+
puts "Nila file couldn't be deleted!"
|
52
|
+
end
|
53
|
+
fs.unlink output_file_name, do |err|
|
54
|
+
puts "Output js file couldn't be deleted!"
|
55
|
+
end
|
56
|
+
puts "\n\nThanks for trying out Nila!\n"
|
57
|
+
puts "You can learn more about Nila at http://adhithyan15.github.io/nila\n"
|
30
58
|
process.exit(0)
|
31
|
-
end
|
59
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
--single_line_comment[1]
|
2
|
+
|
3
|
+
|
4
|
+
readline = require 'readline'
|
5
|
+
|
6
|
+
fs = require 'fs'
|
7
|
+
|
8
|
+
sys = require 'sys'
|
9
|
+
|
10
|
+
exec = require('child_process').exec
|
11
|
+
|
12
|
+
file_name = "" + (__dirname) + "/my_file.nila"
|
13
|
+
|
14
|
+
output_file_name = "" + (__dirname) + "/my_file.js"
|
15
|
+
|
16
|
+
stream = fs.createWriteStream(file_name)
|
17
|
+
|
18
|
+
stream.once 'open', do |fd|
|
19
|
+
|
20
|
+
stream.write("# REPL Session " + (new Date().to_s) + "\n\n")
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
rl = readline.createInterface(process.stdin, process.stdout)
|
25
|
+
|
26
|
+
rl.setPrompt('nila> ')
|
27
|
+
|
28
|
+
rl.prompt()
|
29
|
+
|
30
|
+
read = rl.on 'line', do |line|
|
31
|
+
stream.write("puts (" + (line) + ")\n\n")
|
32
|
+
exec 'nilac -c my_file.nila', do |error,stdout,stderr|
|
33
|
+
Euuf (error != nil) {
|
34
|
+
sys.print("error: " + (error))
|
35
|
+
}#@$
|
36
|
+
|
37
|
+
Euuf (stdout.strip == "Compilation is successful!") {
|
38
|
+
exec output_file_name, do |error,stdout,stderr|
|
39
|
+
Euuf (error != nil) {
|
40
|
+
sys.print(error + "\n")
|
41
|
+
} else {
|
42
|
+
sys.print(stdout + "\n")
|
43
|
+
}#@$
|
44
|
+
|
45
|
+
end
|
46
|
+
}#@$
|
47
|
+
|
48
|
+
end
|
49
|
+
rl.prompt()
|
50
|
+
end
|
51
|
+
|
52
|
+
read.on 'close', do
|
53
|
+
stream.enttttttttttt()
|
54
|
+
fs.unlink file_name, do |err|
|
55
|
+
puts "Nila file couldn't be deleted!"
|
56
|
+
end
|
57
|
+
fs.unlink output_file_name, do |err|
|
58
|
+
puts "Output js file couldn't be deleted!"
|
59
|
+
end
|
60
|
+
puts "\n\nThanks for trying out Nila!\n"
|
61
|
+
puts "You can learn more about Nila at http://adhithyan15.github.io/nila\n"
|
62
|
+
process.exit(0)
|
63
|
+
end
|
data/lib/nilac.rb
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
|
4
4
|
#Nila and Nilac are being crafted by Adhithya Rajasekaran and Sri Madhavi Rajasekaran
|
5
5
|
|
6
|
+
#All the code in this project is licensed under the MIT License
|
7
|
+
|
6
8
|
$LOAD_PATH << File.dirname(__FILE__)
|
7
9
|
|
8
10
|
module Nilac
|
@@ -10,6 +12,7 @@ module Nilac
|
|
10
12
|
require 'nilac/version'
|
11
13
|
require 'fileutils'
|
12
14
|
require 'nilac/read_file_line_by_line'
|
15
|
+
require 'nilac/add_line_numbers'
|
13
16
|
require 'nilac/find_file_name'
|
14
17
|
require 'nilac/find_file_path'
|
15
18
|
require 'nilac/extract_parsable_file'
|
@@ -47,6 +50,13 @@ module Nilac
|
|
47
50
|
require 'nilac/parse_arguments'
|
48
51
|
require 'nilac/friendly_errors'
|
49
52
|
require 'nilac/compile_monkey_patching'
|
53
|
+
require 'nilac/compile_ranges'
|
54
|
+
require 'nilac/compile_chained_comparison'
|
55
|
+
require 'nilac/compile_new_keyword'
|
56
|
+
require 'nilac/compile_inline_for'
|
57
|
+
require 'nilac/fix_javascript_traps'
|
58
|
+
require 'nilac/compile_ruby_math'
|
59
|
+
require 'nilac/compile_nilac_options'
|
50
60
|
|
51
61
|
class NilaCompiler
|
52
62
|
|
@@ -58,7 +68,7 @@ module Nilac
|
|
58
68
|
|
59
69
|
end
|
60
70
|
|
61
|
-
def compile(input_file_path, options =
|
71
|
+
def compile(input_file_path, options = {}, *output_file_name)
|
62
72
|
|
63
73
|
message,proceed = file_exist?(input_file_path)
|
64
74
|
|
@@ -66,135 +76,140 @@ module Nilac
|
|
66
76
|
|
67
77
|
file_contents = read_file_line_by_line(input_file_path)
|
68
78
|
|
79
|
+
line_numbered_file_contents = add_line_numbers(file_contents)
|
80
|
+
|
69
81
|
file_contents = file_contents.collect {|element| element.gsub("\r\n","\n")}
|
70
82
|
|
83
|
+
file_contents = file_contents.collect {|element| element.gsub(".end",".enttttttttttt")}
|
84
|
+
|
71
85
|
file_contents = extract_parsable_file(file_contents)
|
72
86
|
|
73
87
|
file_contents = compile_require_statements(file_contents)
|
74
88
|
|
75
|
-
|
89
|
+
proceed = check_comments(line_numbered_file_contents)
|
76
90
|
|
77
|
-
|
91
|
+
if proceed
|
78
92
|
|
79
|
-
|
93
|
+
file_contents, multiline_comments, temp_file, output_js_file = replace_multiline_comments(file_contents, input_file_path, *output_file_name)
|
80
94
|
|
81
|
-
|
95
|
+
file_contents, singleline_comments = replace_singleline_comments(file_contents)
|
82
96
|
|
83
|
-
|
97
|
+
file_contents = split_semicolon_seperated_expressions(file_contents)
|
84
98
|
|
85
|
-
|
99
|
+
file_contents = compile_ranges(file_contents)
|
86
100
|
|
87
|
-
|
101
|
+
file_contents = compile_heredocs(file_contents, temp_file)
|
88
102
|
|
89
|
-
|
103
|
+
file_contents,lambda_names = compile_lambdas(file_contents,temp_file)
|
90
104
|
|
91
|
-
|
105
|
+
file_contents,loop_vars = compile_loops(file_contents,temp_file)
|
92
106
|
|
93
|
-
|
107
|
+
file_contents, interpolation_vars = compile_interpolated_strings(file_contents)
|
94
108
|
|
95
|
-
|
109
|
+
file_contents = compile_hashes(file_contents,temp_file)
|
96
110
|
|
97
|
-
|
111
|
+
file_contents = compile_case_statement(file_contents,temp_file)
|
98
112
|
|
99
|
-
|
113
|
+
compile_inline_for(file_contents)
|
100
114
|
|
101
|
-
|
115
|
+
file_contents = compile_conditional_structures(file_contents, temp_file)
|
102
116
|
|
103
|
-
|
117
|
+
file_contents = compile_blocks(file_contents,temp_file)
|
104
118
|
|
105
|
-
|
119
|
+
file_contents = compile_integers(file_contents)
|
106
120
|
|
107
|
-
|
121
|
+
file_contents = compile_default_values(file_contents, temp_file)
|
108
122
|
|
109
|
-
|
123
|
+
file_contents, named_functions, nested_functions = replace_named_functions(file_contents, temp_file)
|
110
124
|
|
111
|
-
|
125
|
+
comments = [singleline_comments, multiline_comments]
|
112
126
|
|
113
|
-
|
127
|
+
file_contents = compile_parallel_assignment(file_contents, temp_file)
|
114
128
|
|
115
|
-
|
129
|
+
file_contents,named_functions = compile_arrays(file_contents, named_functions, temp_file)
|
116
130
|
|
117
|
-
|
131
|
+
file_contents = compile_strings(file_contents)
|
118
132
|
|
119
|
-
|
133
|
+
list_of_variables, file_contents = get_variables(file_contents, temp_file,loop_vars)
|
120
134
|
|
121
|
-
|
135
|
+
file_contents, function_names = compile_named_functions(file_contents, named_functions, nested_functions, temp_file)
|
122
136
|
|
123
|
-
|
137
|
+
file_contents = compile_monkey_patching(file_contents,temp_file)
|
124
138
|
|
125
|
-
|
139
|
+
func_names = function_names.dup
|
126
140
|
|
127
|
-
|
141
|
+
file_contents, ruby_functions = compile_custom_function_map(file_contents)
|
128
142
|
|
129
|
-
|
143
|
+
file_contents = compile_ruby_methods(file_contents)
|
130
144
|
|
131
|
-
|
145
|
+
file_contents = compile_special_keywords(file_contents)
|
132
146
|
|
133
|
-
|
147
|
+
function_names << ruby_functions
|
134
148
|
|
135
|
-
|
149
|
+
function_names << lambda_names
|
136
150
|
|
137
|
-
|
151
|
+
list_of_variables += loop_vars
|
138
152
|
|
139
|
-
|
153
|
+
list_of_variables += interpolation_vars
|
140
154
|
|
141
|
-
|
155
|
+
file_contents = compile_whitespace_delimited_functions(file_contents, function_names, temp_file)
|
142
156
|
|
143
|
-
|
157
|
+
file_contents = fix_javascript_traps(file_contents)
|
144
158
|
|
145
|
-
|
159
|
+
file_contents = remove_question_marks(file_contents, list_of_variables, temp_file)
|
146
160
|
|
147
|
-
|
161
|
+
file_contents = add_semicolons(file_contents)
|
148
162
|
|
149
|
-
|
163
|
+
file_contents = compile_new_keyword(file_contents)
|
150
164
|
|
151
|
-
|
165
|
+
file_contents = compile_comments(file_contents, comments, temp_file)
|
152
166
|
|
167
|
+
file_contents = pretty_print_javascript(file_contents, temp_file,list_of_variables+func_names,options)
|
153
168
|
|
154
|
-
|
169
|
+
file_contents = compile_operators(file_contents)
|
155
170
|
|
156
|
-
|
171
|
+
file_contents = compile_ruby_math(file_contents)
|
157
172
|
|
158
|
-
|
173
|
+
file_contents = file_contents.collect {|element| element.gsub(".enttttttttttt",".end")}
|
159
174
|
|
160
|
-
|
175
|
+
if options[:print]
|
161
176
|
|
162
|
-
|
177
|
+
puts file_contents.join
|
163
178
|
|
164
|
-
|
179
|
+
else
|
165
180
|
|
166
|
-
|
181
|
+
output_javascript(file_contents, output_js_file, temp_file)
|
182
|
+
|
183
|
+
puts "Compilation is successful!"
|
167
184
|
|
168
|
-
|
185
|
+
end
|
169
186
|
|
170
|
-
|
171
|
-
create_mac_executable(file_path)
|
172
|
-
FileUtils.mv("#{file_path[0...-3]}", "#{Dir.pwd}/bin/nilac")
|
173
|
-
puts "Build Successful!"
|
187
|
+
end
|
174
188
|
|
175
|
-
|
189
|
+
else
|
176
190
|
|
177
|
-
|
191
|
+
puts message
|
192
|
+
|
193
|
+
end
|
178
194
|
|
179
|
-
server_optimized = false
|
180
195
|
|
181
|
-
|
196
|
+
end
|
182
197
|
|
183
|
-
|
198
|
+
def start_compile
|
184
199
|
|
185
|
-
|
200
|
+
opts = parse_arguments(@input_arguments)
|
186
201
|
|
187
|
-
|
202
|
+
options = compose_nilac_options(opts)
|
188
203
|
|
189
|
-
|
204
|
+
nilac_version = Nilac::VERSION
|
190
205
|
|
191
|
-
|
206
|
+
if opts.values.compact.empty?
|
192
207
|
|
193
|
-
|
208
|
+
opts[:help] = "-h"
|
194
209
|
|
195
|
-
|
210
|
+
end
|
196
211
|
|
197
|
-
|
212
|
+
if opts[:compile] != nil
|
198
213
|
|
199
214
|
if opts[:compile].length == 1
|
200
215
|
|
@@ -204,14 +219,14 @@ module Nilac
|
|
204
219
|
current_directory = Dir.pwd
|
205
220
|
input_file = input
|
206
221
|
file_path = current_directory + "/" + input_file
|
207
|
-
compile(file_path,
|
222
|
+
compile(file_path,options)
|
208
223
|
elsif File.directory?(input)
|
209
224
|
folder_path = input
|
210
225
|
files = Dir.glob(File.join(folder_path, "*"))
|
211
226
|
files = files.reject { |path| !path.include? ".nila" }
|
212
227
|
files.each do |file|
|
213
228
|
file_path = Dir.pwd + "/" + file
|
214
|
-
compile(file_path,
|
229
|
+
compile(file_path,options)
|
215
230
|
end
|
216
231
|
end
|
217
232
|
|
@@ -226,7 +241,7 @@ module Nilac
|
|
226
241
|
output_file = output
|
227
242
|
input_file_path = input_file
|
228
243
|
output_file_path = output_file
|
229
|
-
compile(input_file_path,
|
244
|
+
compile(input_file_path,options,output_file_path)
|
230
245
|
|
231
246
|
elsif File.directory?(input)
|
232
247
|
|
@@ -243,7 +258,7 @@ module Nilac
|
|
243
258
|
files.each do |file|
|
244
259
|
input_file_path = file
|
245
260
|
output_file_path = output_folder_path + "/" + find_file_name(file, ".nila") + ".js"
|
246
|
-
compile(input_file_path,
|
261
|
+
compile(input_file_path,options,output_file_path)
|
247
262
|
end
|
248
263
|
|
249
264
|
end
|