nilac 0.0.4.2.9 → 0.0.4.3.0
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.
- data/bin/nilac +106 -6
- data/lib/nilac/version.rb +1 -1
- data/shark/test_files/correct_times.js +7 -0
- data/shark/test_files/times.nila +8 -0
- data/src/nilac.rb +106 -6
- metadata +2 -2
data/bin/nilac
CHANGED
@@ -3077,24 +3077,124 @@ def compile(input_file_path, *output_file_name)
|
|
3077
3077
|
|
3078
3078
|
block_parameters, block_contents = input_block[1...-1].split("|",2)[1].split("|",2)
|
3079
3079
|
|
3080
|
-
compiled_block = "(function(#{block_parameters.lstrip.rstrip}) {\n\n #{block_contents} \n\n}(_i))_!;\n"
|
3080
|
+
compiled_block = "(function(#{block_parameters.lstrip.rstrip}) {\n\n #{block_contents.strip} \n\n}(_i))_!;\n"
|
3081
3081
|
|
3082
3082
|
return compiled_block
|
3083
3083
|
|
3084
3084
|
end
|
3085
3085
|
|
3086
|
-
|
3086
|
+
def extract_variable_names(input_file_contents, temporary_nila_file)
|
3087
|
+
|
3088
|
+
variables = []
|
3089
|
+
|
3090
|
+
input_file_contents = input_file_contents.collect { |element| element.gsub("==", "equalequal") }
|
3091
|
+
|
3092
|
+
input_file_contents = input_file_contents.collect { |element| element.gsub("!=", "notequal") }
|
3093
|
+
|
3094
|
+
input_file_contents = input_file_contents.collect { |element| element.gsub("+=", "plusequal") }
|
3095
|
+
|
3096
|
+
input_file_contents = input_file_contents.collect { |element| element.gsub("-=", "minusequal") }
|
3097
|
+
|
3098
|
+
input_file_contents = input_file_contents.collect { |element| element.gsub("*=", "multiequal") }
|
3099
|
+
|
3100
|
+
input_file_contents = input_file_contents.collect { |element| element.gsub("/=", "divequal") }
|
3101
|
+
|
3102
|
+
input_file_contents = input_file_contents.collect { |element| element.gsub("%=", "modequal") }
|
3103
|
+
|
3104
|
+
input_file_contents = input_file_contents.collect { |element| element.gsub("=~", "matchequal") }
|
3105
|
+
|
3106
|
+
javascript_regexp = /(if |while |for )/
|
3107
|
+
|
3108
|
+
for x in 0...input_file_contents.length
|
3109
|
+
|
3110
|
+
current_row = input_file_contents[x]
|
3111
|
+
|
3112
|
+
if current_row.include?("=") and current_row.index(javascript_regexp) == nil
|
3113
|
+
|
3114
|
+
current_row = current_row.rstrip + "\n"
|
3115
|
+
|
3116
|
+
current_row_split = current_row.split("=")
|
3117
|
+
|
3118
|
+
for y in 0...current_row_split.length
|
3119
|
+
|
3120
|
+
current_row_split[y] = current_row_split[y].strip
|
3121
|
+
|
3122
|
+
|
3123
|
+
end
|
3124
|
+
|
3125
|
+
if current_row_split[0].include?("[") or current_row_split[0].include?("(")
|
3126
|
+
|
3127
|
+
current_row_split[0] = current_row_split[0][0...current_row_split[0].index("[")]
|
3128
|
+
|
3129
|
+
end
|
3130
|
+
|
3131
|
+
variables << current_row_split[0]
|
3132
|
+
|
3133
|
+
|
3134
|
+
end
|
3135
|
+
|
3136
|
+
input_file_contents[x] = current_row
|
3137
|
+
|
3138
|
+
end
|
3139
|
+
|
3140
|
+
variables += ["_i","_j"]
|
3141
|
+
|
3142
|
+
variables = variables.flatten
|
3143
|
+
|
3144
|
+
return variables.uniq
|
3145
|
+
|
3146
|
+
end
|
3087
3147
|
|
3088
3148
|
possible_times_loop = input_file_contents.reject{ |element| !element.include?(".times")}
|
3089
3149
|
|
3090
|
-
|
3150
|
+
multiline_times_loop = possible_times_loop.reject {|element| !element.include?(" do ")}
|
3151
|
+
|
3152
|
+
unless multiline_times_loop.empty?
|
3153
|
+
|
3154
|
+
multiline_times_loop.each do |starting_line|
|
3155
|
+
|
3156
|
+
index_counter = starting_counter = input_file_contents.index(starting_line)
|
3157
|
+
|
3158
|
+
line = starting_line
|
3159
|
+
|
3160
|
+
until line.strip.eql?("end")
|
3161
|
+
|
3162
|
+
index_counter += 1
|
3163
|
+
|
3164
|
+
line = input_file_contents[index_counter]
|
3165
|
+
|
3166
|
+
end
|
3167
|
+
|
3168
|
+
loop_extract = input_file_contents[starting_counter..index_counter]
|
3091
3169
|
|
3092
|
-
|
3170
|
+
file_extract = input_file_contents[0..index_counter]
|
3093
3171
|
|
3094
|
-
|
3172
|
+
file_variables = extract_variable_names(file_extract,temporary_nila_file)
|
3173
|
+
|
3174
|
+
block_variables = extract_variable_names(loop_extract,temporary_nila_file)
|
3175
|
+
|
3176
|
+
var_need_of_declaration = file_variables-block_variables-["_i","_j"]
|
3177
|
+
|
3178
|
+
loop_condition, block = loop_extract.join.split(" do ")
|
3179
|
+
|
3180
|
+
block = block.split("end")[0]
|
3181
|
+
|
3182
|
+
replacement_string = "#{loop_condition.rstrip} {#{block.strip}}"
|
3183
|
+
|
3184
|
+
input_file_contents[starting_counter..index_counter] = replacement_string
|
3185
|
+
|
3186
|
+
end
|
3187
|
+
|
3188
|
+
end
|
3189
|
+
|
3190
|
+
possible_times_loop = input_file_contents.reject{ |element| !element.include?(".times")}
|
3191
|
+
|
3192
|
+
oneliner_times_loop = possible_times_loop.reject {|element| !element.include?("{") and !element.include?("}")}
|
3095
3193
|
|
3096
3194
|
loop_variables = []
|
3097
3195
|
|
3196
|
+
modified_file_contents = input_file_contents.clone
|
3197
|
+
|
3098
3198
|
unless oneliner_times_loop.empty?
|
3099
3199
|
|
3100
3200
|
oneliner_times_loop.each do |loop|
|
@@ -3989,7 +4089,7 @@ def find_file_path(input_path, file_extension)
|
|
3989
4089
|
|
3990
4090
|
end
|
3991
4091
|
|
3992
|
-
nilac_version = "0.0.4.
|
4092
|
+
nilac_version = "0.0.4.3.0"
|
3993
4093
|
|
3994
4094
|
opts = Slop.parse do
|
3995
4095
|
on :c, :compile=, 'Compile Nila File', as:Array, delimiter:":"
|
data/lib/nilac/version.rb
CHANGED
data/shark/test_files/times.nila
CHANGED
data/src/nilac.rb
CHANGED
@@ -3075,24 +3075,124 @@ def compile(input_file_path, *output_file_name)
|
|
3075
3075
|
|
3076
3076
|
block_parameters, block_contents = input_block[1...-1].split("|",2)[1].split("|",2)
|
3077
3077
|
|
3078
|
-
compiled_block = "(function(#{block_parameters.lstrip.rstrip}) {\n\n #{block_contents} \n\n}(_i))_!;\n"
|
3078
|
+
compiled_block = "(function(#{block_parameters.lstrip.rstrip}) {\n\n #{block_contents.strip} \n\n}(_i))_!;\n"
|
3079
3079
|
|
3080
3080
|
return compiled_block
|
3081
3081
|
|
3082
3082
|
end
|
3083
3083
|
|
3084
|
-
|
3084
|
+
def extract_variable_names(input_file_contents, temporary_nila_file)
|
3085
|
+
|
3086
|
+
variables = []
|
3087
|
+
|
3088
|
+
input_file_contents = input_file_contents.collect { |element| element.gsub("==", "equalequal") }
|
3089
|
+
|
3090
|
+
input_file_contents = input_file_contents.collect { |element| element.gsub("!=", "notequal") }
|
3091
|
+
|
3092
|
+
input_file_contents = input_file_contents.collect { |element| element.gsub("+=", "plusequal") }
|
3093
|
+
|
3094
|
+
input_file_contents = input_file_contents.collect { |element| element.gsub("-=", "minusequal") }
|
3095
|
+
|
3096
|
+
input_file_contents = input_file_contents.collect { |element| element.gsub("*=", "multiequal") }
|
3097
|
+
|
3098
|
+
input_file_contents = input_file_contents.collect { |element| element.gsub("/=", "divequal") }
|
3099
|
+
|
3100
|
+
input_file_contents = input_file_contents.collect { |element| element.gsub("%=", "modequal") }
|
3101
|
+
|
3102
|
+
input_file_contents = input_file_contents.collect { |element| element.gsub("=~", "matchequal") }
|
3103
|
+
|
3104
|
+
javascript_regexp = /(if |while |for )/
|
3105
|
+
|
3106
|
+
for x in 0...input_file_contents.length
|
3107
|
+
|
3108
|
+
current_row = input_file_contents[x]
|
3109
|
+
|
3110
|
+
if current_row.include?("=") and current_row.index(javascript_regexp) == nil
|
3111
|
+
|
3112
|
+
current_row = current_row.rstrip + "\n"
|
3113
|
+
|
3114
|
+
current_row_split = current_row.split("=")
|
3115
|
+
|
3116
|
+
for y in 0...current_row_split.length
|
3117
|
+
|
3118
|
+
current_row_split[y] = current_row_split[y].strip
|
3119
|
+
|
3120
|
+
|
3121
|
+
end
|
3122
|
+
|
3123
|
+
if current_row_split[0].include?("[") or current_row_split[0].include?("(")
|
3124
|
+
|
3125
|
+
current_row_split[0] = current_row_split[0][0...current_row_split[0].index("[")]
|
3126
|
+
|
3127
|
+
end
|
3128
|
+
|
3129
|
+
variables << current_row_split[0]
|
3130
|
+
|
3131
|
+
|
3132
|
+
end
|
3133
|
+
|
3134
|
+
input_file_contents[x] = current_row
|
3135
|
+
|
3136
|
+
end
|
3137
|
+
|
3138
|
+
variables += ["_i","_j"]
|
3139
|
+
|
3140
|
+
variables = variables.flatten
|
3141
|
+
|
3142
|
+
return variables.uniq
|
3143
|
+
|
3144
|
+
end
|
3085
3145
|
|
3086
3146
|
possible_times_loop = input_file_contents.reject{ |element| !element.include?(".times")}
|
3087
3147
|
|
3088
|
-
|
3148
|
+
multiline_times_loop = possible_times_loop.reject {|element| !element.include?(" do ")}
|
3149
|
+
|
3150
|
+
unless multiline_times_loop.empty?
|
3151
|
+
|
3152
|
+
multiline_times_loop.each do |starting_line|
|
3153
|
+
|
3154
|
+
index_counter = starting_counter = input_file_contents.index(starting_line)
|
3155
|
+
|
3156
|
+
line = starting_line
|
3157
|
+
|
3158
|
+
until line.strip.eql?("end")
|
3159
|
+
|
3160
|
+
index_counter += 1
|
3161
|
+
|
3162
|
+
line = input_file_contents[index_counter]
|
3163
|
+
|
3164
|
+
end
|
3165
|
+
|
3166
|
+
loop_extract = input_file_contents[starting_counter..index_counter]
|
3089
3167
|
|
3090
|
-
|
3168
|
+
file_extract = input_file_contents[0..index_counter]
|
3091
3169
|
|
3092
|
-
|
3170
|
+
file_variables = extract_variable_names(file_extract,temporary_nila_file)
|
3171
|
+
|
3172
|
+
block_variables = extract_variable_names(loop_extract,temporary_nila_file)
|
3173
|
+
|
3174
|
+
var_need_of_declaration = file_variables-block_variables-["_i","_j"]
|
3175
|
+
|
3176
|
+
loop_condition, block = loop_extract.join.split(" do ")
|
3177
|
+
|
3178
|
+
block = block.split("end")[0]
|
3179
|
+
|
3180
|
+
replacement_string = "#{loop_condition.rstrip} {#{block.strip}}"
|
3181
|
+
|
3182
|
+
input_file_contents[starting_counter..index_counter] = replacement_string
|
3183
|
+
|
3184
|
+
end
|
3185
|
+
|
3186
|
+
end
|
3187
|
+
|
3188
|
+
possible_times_loop = input_file_contents.reject{ |element| !element.include?(".times")}
|
3189
|
+
|
3190
|
+
oneliner_times_loop = possible_times_loop.reject {|element| !element.include?("{") and !element.include?("}")}
|
3093
3191
|
|
3094
3192
|
loop_variables = []
|
3095
3193
|
|
3194
|
+
modified_file_contents = input_file_contents.clone
|
3195
|
+
|
3096
3196
|
unless oneliner_times_loop.empty?
|
3097
3197
|
|
3098
3198
|
oneliner_times_loop.each do |loop|
|
@@ -3987,7 +4087,7 @@ def find_file_path(input_path, file_extension)
|
|
3987
4087
|
|
3988
4088
|
end
|
3989
4089
|
|
3990
|
-
nilac_version = "0.0.4.
|
4090
|
+
nilac_version = "0.0.4.3.0"
|
3991
4091
|
|
3992
4092
|
opts = Slop.parse do
|
3993
4093
|
on :c, :compile=, 'Compile Nila File', as:Array, delimiter:":"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nilac
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.4.
|
4
|
+
version: 0.0.4.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-08-
|
12
|
+
date: 2013-08-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: shark
|