nilac 0.0.4.0 → 0.0.4.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/nilac +115 -3
- data/lib/nilac/version.rb +1 -1
- metadata +1 -1
data/bin/nilac
CHANGED
@@ -468,6 +468,84 @@ def compile(input_file_path,*output_file_name)
|
|
468
468
|
|
469
469
|
end
|
470
470
|
|
471
|
+
def compile_default_values(input_file_contents,temporary_nila_file)
|
472
|
+
|
473
|
+
#This method compiles default values present in functions. An example is provided below
|
474
|
+
|
475
|
+
# def fill(container = "cup",liquid = "coffee")
|
476
|
+
# puts "Filling the #{container} with #{liquid}"
|
477
|
+
# end
|
478
|
+
|
479
|
+
def parse_default_values(input_function_definition)
|
480
|
+
|
481
|
+
puts input_function_definition
|
482
|
+
|
483
|
+
split1,split2 = input_function_definition.split("(")
|
484
|
+
|
485
|
+
split2,split3 = split2.split(")")
|
486
|
+
|
487
|
+
function_parameters = split2.split(",")
|
488
|
+
|
489
|
+
default_value_parameters = function_parameters.reject {|element| !element.include?"="}
|
490
|
+
|
491
|
+
replacement_parameters = []
|
492
|
+
|
493
|
+
replacement_string = ""
|
494
|
+
|
495
|
+
default_value_parameters.each do |paramvalue|
|
496
|
+
|
497
|
+
param, value = paramvalue.split("=")
|
498
|
+
|
499
|
+
replacement_parameters << param.lstrip.rstrip
|
500
|
+
|
501
|
+
replacement_string = replacement_string + "\n" + "if (#{param.lstrip.rstrip} == null) {\n #{paramvalue.lstrip.rstrip}\n}\n" +"\n"
|
502
|
+
|
503
|
+
end
|
504
|
+
|
505
|
+
return replacement_string,default_value_parameters,replacement_parameters
|
506
|
+
|
507
|
+
end
|
508
|
+
|
509
|
+
possible_default_values = input_file_contents.dup.reject {|element| !element.include?("def")}
|
510
|
+
|
511
|
+
possible_default_values = possible_default_values.reject {|element| !element.include?("=")}
|
512
|
+
|
513
|
+
if !possible_default_values.empty?
|
514
|
+
|
515
|
+
possible_default_values.each do |line|
|
516
|
+
|
517
|
+
current_line_index = input_file_contents.each_index.select {|index| input_file_contents[index] == line}.flatten[0]
|
518
|
+
|
519
|
+
replacement_string,value_parameters,replacement_parameters = parse_default_values(line)
|
520
|
+
|
521
|
+
modified_line = line.dup
|
522
|
+
|
523
|
+
value_parameters.each_with_index do |val,index|
|
524
|
+
|
525
|
+
modified_line = modified_line.sub(val,replacement_parameters[index])
|
526
|
+
|
527
|
+
end
|
528
|
+
|
529
|
+
input_file_contents[current_line_index] = modified_line
|
530
|
+
|
531
|
+
input_file_contents[current_line_index + 1] = replacement_string
|
532
|
+
|
533
|
+
end
|
534
|
+
|
535
|
+
end
|
536
|
+
|
537
|
+
file_id = open(temporary_nila_file, 'w')
|
538
|
+
|
539
|
+
file_id.write(input_file_contents.join)
|
540
|
+
|
541
|
+
file_id.close()
|
542
|
+
|
543
|
+
line_by_line_contents = read_file_line_by_line(temporary_nila_file)
|
544
|
+
|
545
|
+
return line_by_line_contents
|
546
|
+
|
547
|
+
end
|
548
|
+
|
471
549
|
def get_variables(input_file_contents,temporary_nila_file)
|
472
550
|
|
473
551
|
#This method is solely focused on getting a list of variables to be declared.
|
@@ -725,6 +803,10 @@ def compile(input_file_path,*output_file_name)
|
|
725
803
|
|
726
804
|
index_start,index_end = range_index.split ".."
|
727
805
|
|
806
|
+
index_start = "" if index_start.nil?
|
807
|
+
|
808
|
+
index_end = "" if index_end.nil?
|
809
|
+
|
728
810
|
replacement_string = nil
|
729
811
|
|
730
812
|
if index_end.strip == "end"
|
@@ -818,11 +900,19 @@ def compile(input_file_path,*output_file_name)
|
|
818
900
|
#This method will pickup and declare all the variables inside a function block. In future, this method will be
|
819
901
|
#merged with the get variables method
|
820
902
|
|
903
|
+
controlregexp = /(if |while |def |function |function\()/
|
904
|
+
|
821
905
|
variables = []
|
822
906
|
|
907
|
+
function_name,parameters = input_function_block[0].split("(")
|
908
|
+
|
909
|
+
parameters = parameters.split(")")[0].split(",")
|
910
|
+
|
911
|
+
parameters = parameters.collect {|element| element.strip}
|
912
|
+
|
823
913
|
input_function_block.each do |line|
|
824
914
|
|
825
|
-
if line.include? "=" and
|
915
|
+
if line.include? "=" and line.index(controlregexp).nil?
|
826
916
|
|
827
917
|
current_line_split = line.strip.split("=")
|
828
918
|
|
@@ -832,7 +922,25 @@ def compile(input_file_path,*output_file_name)
|
|
832
922
|
|
833
923
|
end
|
834
924
|
|
835
|
-
|
925
|
+
parameters.each do |param|
|
926
|
+
|
927
|
+
if variables.include?(param)
|
928
|
+
|
929
|
+
variables.delete(param)
|
930
|
+
|
931
|
+
end
|
932
|
+
|
933
|
+
end
|
934
|
+
|
935
|
+
if variables.empty?
|
936
|
+
|
937
|
+
return []
|
938
|
+
|
939
|
+
else
|
940
|
+
|
941
|
+
return variables.uniq
|
942
|
+
|
943
|
+
end
|
836
944
|
|
837
945
|
end
|
838
946
|
|
@@ -1076,6 +1184,8 @@ def compile(input_file_path,*output_file_name)
|
|
1076
1184
|
|
1077
1185
|
modified_input_array[-1] = input_array[-1].sub "end","}\n"
|
1078
1186
|
|
1187
|
+
modified_input_array = compile_multiple_variable_initialization(modified_input_array,temporary_nila_file)
|
1188
|
+
|
1079
1189
|
variables = lexical_scoped_variables(modified_input_array)
|
1080
1190
|
|
1081
1191
|
if !variables.empty?
|
@@ -1822,6 +1932,8 @@ def compile(input_file_path,*output_file_name)
|
|
1822
1932
|
|
1823
1933
|
file_contents = compile_arrays(file_contents)
|
1824
1934
|
|
1935
|
+
file_contents = compile_default_values(file_contents,temp_file)
|
1936
|
+
|
1825
1937
|
file_contents,named_functions,nested_functions = replace_named_functions(file_contents,temp_file)
|
1826
1938
|
|
1827
1939
|
comments = [singleline_comments,multiline_comments]
|
@@ -1916,7 +2028,7 @@ def find_file_path(input_path,file_extension)
|
|
1916
2028
|
|
1917
2029
|
end
|
1918
2030
|
|
1919
|
-
nilac_version = "0.0.
|
2031
|
+
nilac_version = "0.0.4.0"
|
1920
2032
|
|
1921
2033
|
opts = Slop.parse do
|
1922
2034
|
on :c, :compile=, 'Compile Nila File', as:Array, delimiter:":"
|
data/lib/nilac/version.rb
CHANGED