nilac 0.0.4.3.9.3 → 0.0.4.3.9.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/nilac/compile_arrays.rb +76 -0
- data/lib/nilac/compile_classes.rb +1 -0
- data/lib/nilac/compile_interpolated_strings.rb +31 -1
- data/lib/nilac/version.rb +1 -1
- data/lib/nilac.rb +5 -11
- data/shark/features/array_sugar.feature +11 -0
- data/shark/test_files/array_sugar.js +9 -0
- data/shark/test_files/array_sugar.nila +3 -0
- data/shark/test_files/class.nila +7 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be01c68cfa1e5e7f6280330bf0b50bd2730edde8
|
4
|
+
data.tar.gz: ac88db8f9ed0a1138526a7b856eb20b2e3152b5e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 993a625a2b7e1345315e1c6dff8c1773f4d7f8306b85d7e951e74b41a2dc43f19170e86e59050e828047f0619b7bd97fc7cdce6ad5c9fa74374b967c1cc4e12a
|
7
|
+
data.tar.gz: cc64aca1ed1feddeee5f5abc18a452c11a142ed2c1dcae66538ba74fff190a406759a9d3e11db63cf832c00dbb93e282a5c2cce44584b9dd1f9c5941589d493f
|
data/lib/nilac/compile_arrays.rb
CHANGED
@@ -2,6 +2,8 @@ require_relative 'find_all_matching_indices'
|
|
2
2
|
|
3
3
|
require_relative 'read_file_line_by_line'
|
4
4
|
|
5
|
+
require_relative 'compile_interpolated_strings'
|
6
|
+
|
5
7
|
def compile_arrays(input_file_contents, named_functions, temporary_nila_file)
|
6
8
|
|
7
9
|
def compile_w_arrays(input_file_contents)
|
@@ -56,6 +58,78 @@ require_relative 'read_file_line_by_line'
|
|
56
58
|
|
57
59
|
end
|
58
60
|
|
61
|
+
def compile_capital_w_arrays(input_file_contents)
|
62
|
+
|
63
|
+
def extract(input_string, pattern_start, pattern_end)
|
64
|
+
|
65
|
+
all_start_locations = find_all_matching_indices(input_string, pattern_start)
|
66
|
+
|
67
|
+
all_end_locations = find_all_matching_indices(input_string, pattern_end)
|
68
|
+
|
69
|
+
pattern = []
|
70
|
+
|
71
|
+
all_start_locations.each_with_index do |location, index|
|
72
|
+
|
73
|
+
pattern << input_string[location..all_end_locations[index]]
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
return pattern
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
def compile_cap_w_syntax(input_string)
|
82
|
+
|
83
|
+
modified_input_string = input_string[3...-1]
|
84
|
+
|
85
|
+
processed_string = compile_interpolated_strings([modified_input_string])
|
86
|
+
|
87
|
+
interpolated_strings = processed_string[0].inspect.scan(/\\"[\w{1,}\s\W]*\\"/).to_a
|
88
|
+
|
89
|
+
interpolated_strings.each_with_index do |val,index|
|
90
|
+
|
91
|
+
processed_string[0] = processed_string[0].inspect.sub(val+"\"","stringgy#{index}")
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
string_split = processed_string[0].split(" ")
|
96
|
+
|
97
|
+
puts processed_string[0].inspect
|
98
|
+
|
99
|
+
interpolated_strings.each_with_index do |val,index|
|
100
|
+
|
101
|
+
string_split[string_split.index("stringgy#{index}")] = val[0..-2]
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
return string_split.to_s
|
106
|
+
|
107
|
+
end
|
108
|
+
|
109
|
+
modified_file_contents = input_file_contents.dup
|
110
|
+
|
111
|
+
input_file_contents.each_with_index do |line, index|
|
112
|
+
|
113
|
+
if line.include?("%W{")
|
114
|
+
|
115
|
+
line = line + "\n" unless line[-1].eql?("\n")
|
116
|
+
|
117
|
+
string_arrays = extract(line, "%W{", "}\n")
|
118
|
+
|
119
|
+
string_arrays.each do |array|
|
120
|
+
|
121
|
+
modified_file_contents[index] = modified_file_contents[index].sub(array, compile_cap_w_syntax(array))
|
122
|
+
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
126
|
+
|
127
|
+
end
|
128
|
+
|
129
|
+
return modified_file_contents
|
130
|
+
|
131
|
+
end
|
132
|
+
|
59
133
|
def compile_array_indexing(input_file_contents)
|
60
134
|
|
61
135
|
possible_indexing_operation = input_file_contents.dup.reject { |element| !element.include? "[" and !element.include? "]" }
|
@@ -246,6 +320,8 @@ require_relative 'read_file_line_by_line'
|
|
246
320
|
|
247
321
|
input_file_contents = compile_w_arrays(input_file_contents)
|
248
322
|
|
323
|
+
input_file_contents = compile_capital_w_arrays(input_file_contents)
|
324
|
+
|
249
325
|
input_file_contents = compile_array_indexing(input_file_contents)
|
250
326
|
|
251
327
|
input_file_contents = compile_multiline(input_file_contents, temporary_nila_file)
|
@@ -2,6 +2,36 @@ require_relative 'find_all_matching_indices'
|
|
2
2
|
|
3
3
|
def compile_interpolated_strings(input_file_contents)
|
4
4
|
|
5
|
+
def replace_string_arrays(input_string)
|
6
|
+
|
7
|
+
def extract(input_string, pattern_start, pattern_end)
|
8
|
+
|
9
|
+
all_start_locations = find_all_matching_indices(input_string, pattern_start)
|
10
|
+
|
11
|
+
all_end_locations = find_all_matching_indices(input_string, pattern_end)
|
12
|
+
|
13
|
+
pattern = []
|
14
|
+
|
15
|
+
all_start_locations.each_with_index do |location, index|
|
16
|
+
|
17
|
+
pattern << input_string[location..all_end_locations[index]]
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
return pattern
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
if input_string.include?("%W")
|
26
|
+
|
27
|
+
input_string = input_string.sub(extract(input_string,"%W{","}\n")[0],"--stringarray")
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
return input_string
|
32
|
+
|
33
|
+
end
|
34
|
+
|
5
35
|
modified_file_contents = input_file_contents.dup
|
6
36
|
|
7
37
|
single_quoted_strings = input_file_contents.reject { |element| !(element.count("'") >= 2) }
|
@@ -26,7 +56,7 @@ require_relative 'find_all_matching_indices'
|
|
26
56
|
|
27
57
|
input_file_contents.each_with_index do |line, index|
|
28
58
|
|
29
|
-
if line.include?("\#{")
|
59
|
+
if replace_string_arrays(line+"\n").include?("\#{")
|
30
60
|
|
31
61
|
modified_line = line.dup
|
32
62
|
|
data/lib/nilac/version.rb
CHANGED
data/lib/nilac.rb
CHANGED
@@ -274,16 +274,6 @@ module Nilac
|
|
274
274
|
node_output = `node #{js_file_name} #{commandline_args.join(" ")}`
|
275
275
|
puts node_output
|
276
276
|
|
277
|
-
elsif opts[:release] != nil
|
278
|
-
|
279
|
-
file_path = Dir.pwd + "/src/nilac.rb"
|
280
|
-
create_mac_executable(file_path)
|
281
|
-
FileUtils.mv("#{file_path[0...-3]}", "#{Dir.pwd}/bin/nilac")
|
282
|
-
puts "Your build was successful!\n"
|
283
|
-
commit_message = opts[:release][0]
|
284
|
-
`git commit -am "#{commit_message}"`
|
285
|
-
puts `rake release`
|
286
|
-
|
287
277
|
elsif opts[:update] != nil
|
288
278
|
|
289
279
|
puts "Checking for updates......"
|
@@ -320,9 +310,13 @@ module Nilac
|
|
320
310
|
end
|
321
311
|
|
322
312
|
end
|
323
|
-
|
313
|
+
|
324
314
|
end
|
325
315
|
|
316
|
+
if ARGV.include?("--test")
|
317
|
+
|
326
318
|
compiler = Nilac::NilaCompiler.new(ARGV)
|
327
319
|
|
328
320
|
compiler.start_compile()
|
321
|
+
|
322
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Feature: This feature brings Ruby's Syntactic Sugar for Arrays to Nila
|
2
|
+
Scenario: Input file with Ruby style arrays
|
3
|
+
Given the input file "array_sugar.nila"
|
4
|
+
When the ~compiler is run
|
5
|
+
The output file must be "array_sugar.js"
|
6
|
+
The output file must equal "correct_array_sugar.js"
|
7
|
+
|
8
|
+
Configurations:
|
9
|
+
|
10
|
+
~compiler => lib/nilac.rb
|
11
|
+
:v $cliusage => ruby :v --compile $file
|
@@ -0,0 +1,9 @@
|
|
1
|
+
//Written using Nila. Visit http://adhithyan15.github.io/nila
|
2
|
+
(function() {
|
3
|
+
var date_time, names;
|
4
|
+
|
5
|
+
names = ["joe", "kelly", "bill", "james", "smith"];
|
6
|
+
|
7
|
+
date_time = ["\"The", "current", "date", "and", "time", "is", "\\" + (new Date().toString()) + \"];
|
8
|
+
|
9
|
+
}).call(this);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nilac
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.4.3.9.
|
4
|
+
version: 0.0.4.3.9.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adhithya Rajasekaran
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: shark
|
@@ -88,6 +88,7 @@ files:
|
|
88
88
|
- nilac.gemspec
|
89
89
|
- shark/features/add_auto_return_statement.feature
|
90
90
|
- shark/features/array_and_string_indexing.feature
|
91
|
+
- shark/features/array_sugar.feature
|
91
92
|
- shark/features/barebones_compilation.feature
|
92
93
|
- shark/features/case_when.feature
|
93
94
|
- shark/features/default_method_parameters.feature
|
@@ -112,7 +113,10 @@ files:
|
|
112
113
|
- shark/features/unless_until.feature
|
113
114
|
- shark/features/whitespace_delimitation.feature
|
114
115
|
- shark/test_files/array_string_indexing.nila
|
116
|
+
- shark/test_files/array_sugar.js
|
117
|
+
- shark/test_files/array_sugar.nila
|
115
118
|
- shark/test_files/case.nila
|
119
|
+
- shark/test_files/class.nila
|
116
120
|
- shark/test_files/correct.js
|
117
121
|
- shark/test_files/correct_case.js
|
118
122
|
- shark/test_files/correct_default_parameters.js
|