nilac 0.0.4.1.3 → 0.0.4.1.4
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/README.md +5 -1
 - data/bin/nilac +392 -56
 - data/lib/nilac/version.rb +1 -1
 - data/shark/features/regular_while.feature +11 -0
 - data/shark/test_files/correct_regular_if.js +3 -3
 - data/shark/test_files/correct_regular_while.js +14 -0
 - data/shark/test_files/correct_unless_until.js +8 -2
 - data/shark/test_files/regular_while.nila +7 -0
 - data/shark/test_files/unless_until.nila +9 -2
 - data/src/nilac.rb +392 -56
 - metadata +5 -2
 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,7 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Nila
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            Nila is a dialect of Coffeescript with a Rubyspired syntax. Nilac is the official compiler for the Nila language. Nila language is
         
     | 
| 
       4 
     | 
    
         
            -
            still in its infancy. The gems released are developmental releases not production releases. So use with caution. 
     | 
| 
      
 4 
     | 
    
         
            +
            still in its infancy. The gems released are developmental releases not production releases. So use with caution.
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            ## Current Version
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            [](http://badge.fury.io/rb/nilac)
         
     | 
| 
       5 
9 
     | 
    
         | 
| 
       6 
10 
     | 
    
         
             
            ## Requirements
         
     | 
| 
       7 
11 
     | 
    
         | 
    
        data/bin/nilac
    CHANGED
    
    | 
         @@ -122,7 +122,7 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       122 
122 
     | 
    
         | 
| 
       123 
123 
     | 
    
         
             
                  multiline_comment = file_contents_as_string[start_of_multiline_comment..end_of_multiline_comment+3]
         
     | 
| 
       124 
124 
     | 
    
         | 
| 
       125 
     | 
    
         
            -
                  modified_file_contents = modified_file_contents.gsub(multiline_comment,"--multiline_comment[#{multiline_comment_counter}]")
         
     | 
| 
      
 125 
     | 
    
         
            +
                  modified_file_contents = modified_file_contents.gsub(multiline_comment,"--multiline_comment[#{multiline_comment_counter}]\n\n")
         
     | 
| 
       126 
126 
     | 
    
         | 
| 
       127 
127 
     | 
    
         
             
                  multiline_comment_counter += 1
         
     | 
| 
       128 
128 
     | 
    
         | 
| 
         @@ -265,7 +265,7 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       265 
265 
     | 
    
         | 
| 
       266 
266 
     | 
    
         
             
                      single_line_comments << comment
         
     | 
| 
       267 
267 
     | 
    
         | 
| 
       268 
     | 
    
         
            -
                      current_row = current_row.gsub(comment,"--single_line_comment[#{singleline_comment_counter}]")
         
     | 
| 
      
 268 
     | 
    
         
            +
                      current_row = current_row.gsub(comment,"--single_line_comment[#{singleline_comment_counter}]\n\n")
         
     | 
| 
       269 
269 
     | 
    
         | 
| 
       270 
270 
     | 
    
         
             
                      singleline_comment_counter += 1
         
     | 
| 
       271 
271 
     | 
    
         | 
| 
         @@ -1321,8 +1321,11 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       1321 
1321 
     | 
    
         | 
| 
       1322 
1322 
     | 
    
         
             
                    "puts" => "console.log",
         
     | 
| 
       1323 
1323 
     | 
    
         | 
| 
      
 1324 
     | 
    
         
            +
                    "p" => "console.log",
         
     | 
| 
      
 1325 
     | 
    
         
            +
             
     | 
| 
       1324 
1326 
     | 
    
         
             
                    "print" => "process.stdout.write"
         
     | 
| 
       1325 
1327 
     | 
    
         | 
| 
      
 1328 
     | 
    
         
            +
             
     | 
| 
       1326 
1329 
     | 
    
         
             
                }
         
     | 
| 
       1327 
1330 
     | 
    
         | 
| 
       1328 
1331 
     | 
    
         
             
                function_map = function_map_replacements.keys
         
     | 
| 
         @@ -1403,6 +1406,8 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       1403 
1406 
     | 
    
         | 
| 
       1404 
1407 
     | 
    
         
             
                        modified_string = string.dup
         
     | 
| 
       1405 
1408 
     | 
    
         | 
| 
      
 1409 
     | 
    
         
            +
                        modified_string = modified_string.rstrip + modified_string.split(modified_string.rstrip)[1].gsub(" ","")
         
     | 
| 
      
 1410 
     | 
    
         
            +
             
     | 
| 
       1406 
1411 
     | 
    
         
             
                        modified_string = modified_string.sub(function+" ",function+"(")
         
     | 
| 
       1407 
1412 
     | 
    
         | 
| 
       1408 
1413 
     | 
    
         
             
                        modified_string = modified_string.sub("\n",")\n")
         
     | 
| 
         @@ -1435,9 +1440,41 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       1435 
1440 
     | 
    
         | 
| 
       1436 
1441 
     | 
    
         
             
              def compile_conditional_structures(input_file_contents,temporary_nila_file)
         
     | 
| 
       1437 
1442 
     | 
    
         | 
| 
       1438 
     | 
    
         
            -
                 
     | 
| 
      
 1443 
     | 
    
         
            +
                def replace_unless_until(input_file_contents)
         
     | 
| 
      
 1444 
     | 
    
         
            +
             
     | 
| 
      
 1445 
     | 
    
         
            +
                  modified_file_contents = input_file_contents.clone
         
     | 
| 
      
 1446 
     | 
    
         
            +
             
     | 
| 
      
 1447 
     | 
    
         
            +
                  possible_unless_commands = input_file_contents.reject {|element| !element.include?("unless")}
         
     | 
| 
      
 1448 
     | 
    
         
            +
             
     | 
| 
      
 1449 
     | 
    
         
            +
                  unless_commands = possible_unless_commands.reject {|element| !element.lstrip.split("unless")[0].empty?}
         
     | 
| 
      
 1450 
     | 
    
         
            +
             
     | 
| 
      
 1451 
     | 
    
         
            +
                  unless_commands.each do |command|
         
     | 
| 
      
 1452 
     | 
    
         
            +
             
     | 
| 
      
 1453 
     | 
    
         
            +
                    junk,condition = command.split("unless ")
         
     | 
| 
      
 1454 
     | 
    
         
            +
             
     | 
| 
      
 1455 
     | 
    
         
            +
                    replacement_string = "if !(#{condition.lstrip.rstrip})\n"
         
     | 
| 
      
 1456 
     | 
    
         
            +
             
     | 
| 
      
 1457 
     | 
    
         
            +
                    modified_file_contents[modified_file_contents.index(command)] = replacement_string
         
     | 
| 
      
 1458 
     | 
    
         
            +
             
     | 
| 
      
 1459 
     | 
    
         
            +
                  end
         
     | 
| 
       1439 
1460 
     | 
    
         | 
| 
       1440 
     | 
    
         
            -
             
     | 
| 
      
 1461 
     | 
    
         
            +
                  possible_until_commands = input_file_contents.reject {|element| !element.include?("until")}
         
     | 
| 
      
 1462 
     | 
    
         
            +
             
     | 
| 
      
 1463 
     | 
    
         
            +
                  until_commands = possible_until_commands.reject {|element| !element.lstrip.split("until")[0].empty?}
         
     | 
| 
      
 1464 
     | 
    
         
            +
             
     | 
| 
      
 1465 
     | 
    
         
            +
                  until_commands.each do |command|
         
     | 
| 
      
 1466 
     | 
    
         
            +
             
     | 
| 
      
 1467 
     | 
    
         
            +
                    junk,condition = command.split("until ")
         
     | 
| 
      
 1468 
     | 
    
         
            +
             
     | 
| 
      
 1469 
     | 
    
         
            +
                    replacement_string = "while !(#{condition.lstrip.rstrip})\n"
         
     | 
| 
      
 1470 
     | 
    
         
            +
             
     | 
| 
      
 1471 
     | 
    
         
            +
                    modified_file_contents[modified_file_contents.index(command)] = replacement_string
         
     | 
| 
      
 1472 
     | 
    
         
            +
             
     | 
| 
      
 1473 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1474 
     | 
    
         
            +
             
     | 
| 
      
 1475 
     | 
    
         
            +
                  return modified_file_contents
         
     | 
| 
      
 1476 
     | 
    
         
            +
             
     | 
| 
      
 1477 
     | 
    
         
            +
                end
         
     | 
| 
       1441 
1478 
     | 
    
         | 
| 
       1442 
1479 
     | 
    
         
             
                def compile_inline_conditionals(input_file_contents,temporary_nila_file)
         
     | 
| 
       1443 
1480 
     | 
    
         | 
| 
         @@ -1697,7 +1734,7 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       1697 
1734 
     | 
    
         | 
| 
       1698 
1735 
     | 
    
         
             
                    end
         
     | 
| 
       1699 
1736 
     | 
    
         | 
| 
       1700 
     | 
    
         
            -
                    if_statement_indexes = if_statement_indexes.flatten + [-1]
         
     | 
| 
      
 1737 
     | 
    
         
            +
                    if_statement_indexes = [0] + if_statement_indexes.flatten + [-1]
         
     | 
| 
       1701 
1738 
     | 
    
         | 
| 
       1702 
1739 
     | 
    
         
             
                    controlregexp = /(while |def )/
         
     | 
| 
       1703 
1740 
     | 
    
         | 
| 
         @@ -1787,65 +1824,285 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       1787 
1824 
     | 
    
         | 
| 
       1788 
1825 
     | 
    
         
             
                end
         
     | 
| 
       1789 
1826 
     | 
    
         | 
| 
       1790 
     | 
    
         
            -
                 
     | 
| 
      
 1827 
     | 
    
         
            +
                def compile_regular_while(input_file_contents,temporary_nila_file)
         
     | 
| 
       1791 
1828 
     | 
    
         | 
| 
       1792 
     | 
    
         
            -
             
     | 
| 
      
 1829 
     | 
    
         
            +
                  def convert_string_to_array(input_string,temporary_nila_file)
         
     | 
| 
       1793 
1830 
     | 
    
         | 
| 
       1794 
     | 
    
         
            -
             
     | 
| 
      
 1831 
     | 
    
         
            +
                    file_id = open(temporary_nila_file, 'w')
         
     | 
| 
       1795 
1832 
     | 
    
         | 
| 
       1796 
     | 
    
         
            -
             
     | 
| 
      
 1833 
     | 
    
         
            +
                    file_id.write(input_string)
         
     | 
| 
       1797 
1834 
     | 
    
         | 
| 
       1798 
     | 
    
         
            -
             
     | 
| 
      
 1835 
     | 
    
         
            +
                    file_id.close()
         
     | 
| 
       1799 
1836 
     | 
    
         | 
| 
       1800 
     | 
    
         
            -
             
     | 
| 
       1801 
     | 
    
         
            -
                #handles both single line and multiline comments.
         
     | 
| 
      
 1837 
     | 
    
         
            +
                    line_by_line_contents = read_file_line_by_line(temporary_nila_file)
         
     | 
| 
       1802 
1838 
     | 
    
         | 
| 
       1803 
     | 
    
         
            -
             
     | 
| 
      
 1839 
     | 
    
         
            +
                    return line_by_line_contents
         
     | 
| 
       1804 
1840 
     | 
    
         | 
| 
       1805 
     | 
    
         
            -
             
     | 
| 
      
 1841 
     | 
    
         
            +
                  end
         
     | 
| 
       1806 
1842 
     | 
    
         | 
| 
       1807 
     | 
    
         
            -
             
     | 
| 
      
 1843 
     | 
    
         
            +
                  def extract_while_blocks(while_statement_indexes,input_file_contents)
         
     | 
| 
       1808 
1844 
     | 
    
         | 
| 
       1809 
     | 
    
         
            -
             
     | 
| 
      
 1845 
     | 
    
         
            +
                    possible_while_blocks = []
         
     | 
| 
       1810 
1846 
     | 
    
         | 
| 
       1811 
     | 
    
         
            -
             
     | 
| 
      
 1847 
     | 
    
         
            +
                    while_block_counter = 0
         
     | 
| 
       1812 
1848 
     | 
    
         | 
| 
       1813 
     | 
    
         
            -
             
     | 
| 
      
 1849 
     | 
    
         
            +
                    extracted_blocks = []
         
     | 
| 
       1814 
1850 
     | 
    
         | 
| 
       1815 
     | 
    
         
            -
             
     | 
| 
      
 1851 
     | 
    
         
            +
                    controlregexp = /(if |while |def )/
         
     | 
| 
       1816 
1852 
     | 
    
         | 
| 
       1817 
     | 
    
         
            -
             
     | 
| 
      
 1853 
     | 
    
         
            +
                    rejectionregexp = /( if | while )/
         
     | 
| 
       1818 
1854 
     | 
    
         | 
| 
       1819 
     | 
    
         
            -
             
     | 
| 
      
 1855 
     | 
    
         
            +
                    for x in 0...while_statement_indexes.length-1
         
     | 
| 
       1820 
1856 
     | 
    
         | 
| 
       1821 
     | 
    
         
            -
             
     | 
| 
      
 1857 
     | 
    
         
            +
                      possible_while_blocks << input_file_contents[while_statement_indexes[x]..while_statement_indexes[x+1]]
         
     | 
| 
       1822 
1858 
     | 
    
         | 
| 
      
 1859 
     | 
    
         
            +
                    end
         
     | 
| 
       1823 
1860 
     | 
    
         | 
| 
       1824 
     | 
    
         
            -
             
     | 
| 
      
 1861 
     | 
    
         
            +
                    end_counter = 0
         
     | 
| 
       1825 
1862 
     | 
    
         | 
| 
       1826 
     | 
    
         
            -
             
     | 
| 
      
 1863 
     | 
    
         
            +
                    end_index = []
         
     | 
| 
       1827 
1864 
     | 
    
         | 
| 
       1828 
     | 
    
         
            -
             
     | 
| 
      
 1865 
     | 
    
         
            +
                    current_block = []
         
     | 
| 
       1829 
1866 
     | 
    
         | 
| 
       1830 
     | 
    
         
            -
             
     | 
| 
      
 1867 
     | 
    
         
            +
                    possible_while_blocks.each_with_index do |block|
         
     | 
| 
       1831 
1868 
     | 
    
         | 
| 
       1832 
     | 
    
         
            -
             
     | 
| 
      
 1869 
     | 
    
         
            +
                      current_block += block
         
     | 
| 
       1833 
1870 
     | 
    
         | 
| 
       1834 
     | 
    
         
            -
             
     | 
| 
      
 1871 
     | 
    
         
            +
                      current_block.each_with_index do |line,index|
         
     | 
| 
       1835 
1872 
     | 
    
         | 
| 
       1836 
     | 
    
         
            -
             
     | 
| 
      
 1873 
     | 
    
         
            +
                        if line.strip.eql? "end"
         
     | 
| 
      
 1874 
     | 
    
         
            +
             
     | 
| 
      
 1875 
     | 
    
         
            +
                          end_counter += 1
         
     | 
| 
      
 1876 
     | 
    
         
            +
             
     | 
| 
      
 1877 
     | 
    
         
            +
                          end_index << index
         
     | 
| 
      
 1878 
     | 
    
         
            +
             
     | 
| 
      
 1879 
     | 
    
         
            +
                        end
         
     | 
| 
      
 1880 
     | 
    
         
            +
             
     | 
| 
      
 1881 
     | 
    
         
            +
                      end
         
     | 
| 
      
 1882 
     | 
    
         
            +
             
     | 
| 
      
 1883 
     | 
    
         
            +
                      if end_counter > 0
         
     | 
| 
      
 1884 
     | 
    
         
            +
             
     | 
| 
      
 1885 
     | 
    
         
            +
                        until end_index.empty?
         
     | 
| 
      
 1886 
     | 
    
         
            +
             
     | 
| 
      
 1887 
     | 
    
         
            +
                          array_extract = current_block[0..end_index[0]].reverse
         
     | 
| 
      
 1888 
     | 
    
         
            +
             
     | 
| 
      
 1889 
     | 
    
         
            +
                          index_counter = 0
         
     | 
| 
      
 1890 
     | 
    
         
            +
             
     | 
| 
      
 1891 
     | 
    
         
            +
                          array_extract.each_with_index do |line|
         
     | 
| 
      
 1892 
     | 
    
         
            +
             
     | 
| 
      
 1893 
     | 
    
         
            +
                            break if (line.lstrip.index(controlregexp) != nil and line.lstrip.index(rejectionregexp).nil?)
         
     | 
| 
      
 1894 
     | 
    
         
            +
             
     | 
| 
      
 1895 
     | 
    
         
            +
                            index_counter += 1
         
     | 
| 
      
 1896 
     | 
    
         
            +
             
     | 
| 
      
 1897 
     | 
    
         
            +
                          end
         
     | 
| 
      
 1898 
     | 
    
         
            +
             
     | 
| 
      
 1899 
     | 
    
         
            +
                          block_extract = array_extract[0..index_counter].reverse
         
     | 
| 
      
 1900 
     | 
    
         
            +
             
     | 
| 
      
 1901 
     | 
    
         
            +
                          extracted_blocks << block_extract
         
     | 
| 
      
 1902 
     | 
    
         
            +
             
     | 
| 
      
 1903 
     | 
    
         
            +
                          block_start = current_block.index(block_extract[0])
         
     | 
| 
      
 1904 
     | 
    
         
            +
             
     | 
| 
      
 1905 
     | 
    
         
            +
                          block_end = current_block.index(block_extract[-1])
         
     | 
| 
      
 1906 
     | 
    
         
            +
             
     | 
| 
      
 1907 
     | 
    
         
            +
                          current_block[block_start..block_end] = "--whileblock#{while_block_counter}"
         
     | 
| 
      
 1908 
     | 
    
         
            +
             
     | 
| 
      
 1909 
     | 
    
         
            +
                          while_block_counter += 1
         
     | 
| 
      
 1910 
     | 
    
         
            +
             
     | 
| 
      
 1911 
     | 
    
         
            +
                          end_counter = 0
         
     | 
| 
      
 1912 
     | 
    
         
            +
             
     | 
| 
      
 1913 
     | 
    
         
            +
                          end_index = []
         
     | 
| 
      
 1914 
     | 
    
         
            +
             
     | 
| 
      
 1915 
     | 
    
         
            +
                          current_block.each_with_index do |line,index|
         
     | 
| 
      
 1916 
     | 
    
         
            +
             
     | 
| 
      
 1917 
     | 
    
         
            +
                            if line.strip.eql? "end"
         
     | 
| 
      
 1918 
     | 
    
         
            +
             
     | 
| 
      
 1919 
     | 
    
         
            +
                              end_counter += 1
         
     | 
| 
      
 1920 
     | 
    
         
            +
             
     | 
| 
      
 1921 
     | 
    
         
            +
                              end_index << index
         
     | 
| 
      
 1922 
     | 
    
         
            +
             
     | 
| 
      
 1923 
     | 
    
         
            +
                            end
         
     | 
| 
      
 1924 
     | 
    
         
            +
             
     | 
| 
      
 1925 
     | 
    
         
            +
                          end
         
     | 
| 
      
 1926 
     | 
    
         
            +
             
     | 
| 
      
 1927 
     | 
    
         
            +
                        end
         
     | 
| 
      
 1928 
     | 
    
         
            +
             
     | 
| 
      
 1929 
     | 
    
         
            +
                      end
         
     | 
| 
      
 1930 
     | 
    
         
            +
             
     | 
| 
      
 1931 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1932 
     | 
    
         
            +
             
     | 
| 
      
 1933 
     | 
    
         
            +
                    return current_block,extracted_blocks
         
     | 
| 
      
 1934 
     | 
    
         
            +
             
     | 
| 
      
 1935 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1936 
     | 
    
         
            +
             
     | 
| 
      
 1937 
     | 
    
         
            +
                  def compile_while_syntax(input_block)
         
     | 
| 
      
 1938 
     | 
    
         
            +
             
     | 
| 
      
 1939 
     | 
    
         
            +
                    strings = []
         
     | 
| 
      
 1940 
     | 
    
         
            +
             
     | 
| 
      
 1941 
     | 
    
         
            +
                    string_counter = 0
         
     | 
| 
      
 1942 
     | 
    
         
            +
             
     | 
| 
      
 1943 
     | 
    
         
            +
                    modified_input_block = input_block.dup
         
     | 
| 
      
 1944 
     | 
    
         
            +
             
     | 
| 
      
 1945 
     | 
    
         
            +
                    input_block.each_with_index do |line,index|
         
     | 
| 
      
 1946 
     | 
    
         
            +
             
     | 
| 
      
 1947 
     | 
    
         
            +
                      if line.include?("\"")
         
     | 
| 
      
 1948 
     | 
    
         
            +
             
     | 
| 
      
 1949 
     | 
    
         
            +
                        opening_quotes = line.index("\"")
         
     | 
| 
      
 1950 
     | 
    
         
            +
             
     | 
| 
      
 1951 
     | 
    
         
            +
                        string_extract = line[opening_quotes..line.index("\"",opening_quotes+1)]
         
     | 
| 
      
 1952 
     | 
    
         
            +
             
     | 
| 
      
 1953 
     | 
    
         
            +
                        strings << string_extract
         
     | 
| 
      
 1954 
     | 
    
         
            +
             
     | 
| 
      
 1955 
     | 
    
         
            +
                        modified_input_block[index] = modified_input_block[index].sub(string_extract,"--string{#{string_counter}}")
         
     | 
| 
      
 1956 
     | 
    
         
            +
             
     | 
| 
      
 1957 
     | 
    
         
            +
                        string_counter += 1
         
     | 
| 
      
 1958 
     | 
    
         
            +
             
     | 
| 
      
 1959 
     | 
    
         
            +
                      end
         
     | 
| 
      
 1960 
     | 
    
         
            +
             
     | 
| 
      
 1961 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1962 
     | 
    
         
            +
             
     | 
| 
      
 1963 
     | 
    
         
            +
                    input_block = modified_input_block
         
     | 
| 
      
 1964 
     | 
    
         
            +
             
     | 
| 
      
 1965 
     | 
    
         
            +
                    starting_line = input_block[0]
         
     | 
| 
      
 1966 
     | 
    
         
            +
             
     | 
| 
      
 1967 
     | 
    
         
            +
                    starting_line = starting_line + "\n" if starting_line.lstrip == starting_line
         
     | 
| 
      
 1968 
     | 
    
         
            +
             
     | 
| 
      
 1969 
     | 
    
         
            +
                    junk,condition = starting_line.split("while")
         
     | 
| 
      
 1970 
     | 
    
         
            +
             
     | 
| 
      
 1971 
     | 
    
         
            +
                    input_block[0] = "whaaleskey (#{condition.lstrip.rstrip.gsub("?","")}) {\n"
         
     | 
| 
      
 1972 
     | 
    
         
            +
             
     | 
| 
      
 1973 
     | 
    
         
            +
                    input_block[-1] = input_block[-1].lstrip.sub("end","}")
         
     | 
| 
      
 1974 
     | 
    
         
            +
             
     | 
| 
      
 1975 
     | 
    
         
            +
                    modified_input_block = input_block.dup
         
     | 
| 
      
 1976 
     | 
    
         
            +
             
     | 
| 
      
 1977 
     | 
    
         
            +
                    input_block.each_with_index do |line,index|
         
     | 
| 
      
 1978 
     | 
    
         
            +
             
     | 
| 
      
 1979 
     | 
    
         
            +
                      if line.include?("--string{")
         
     | 
| 
      
 1980 
     | 
    
         
            +
             
     | 
| 
      
 1981 
     | 
    
         
            +
                        junk,remains = line.split("--string{")
         
     | 
| 
      
 1982 
     | 
    
         
            +
             
     | 
| 
      
 1983 
     | 
    
         
            +
                        string_index,junk = remains.split("}")
         
     | 
| 
      
 1984 
     | 
    
         
            +
             
     | 
| 
      
 1985 
     | 
    
         
            +
                        modified_input_block[index] = modified_input_block[index].sub("--string{#{string_index.strip}}",strings[string_index.strip.to_i])
         
     | 
| 
      
 1986 
     | 
    
         
            +
             
     | 
| 
      
 1987 
     | 
    
         
            +
                      end
         
     | 
| 
      
 1988 
     | 
    
         
            +
             
     | 
| 
      
 1989 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1990 
     | 
    
         
            +
             
     | 
| 
      
 1991 
     | 
    
         
            +
                    return modified_input_block
         
     | 
| 
      
 1992 
     | 
    
         
            +
             
     | 
| 
      
 1993 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1994 
     | 
    
         
            +
             
     | 
| 
      
 1995 
     | 
    
         
            +
                  possible_while_statements = input_file_contents.reject {|element| !element.include?("while")}
         
     | 
| 
      
 1996 
     | 
    
         
            +
             
     | 
| 
      
 1997 
     | 
    
         
            +
                  if !possible_while_statements.empty?
         
     | 
| 
      
 1998 
     | 
    
         
            +
             
     | 
| 
      
 1999 
     | 
    
         
            +
                    while_statement_indexes = []
         
     | 
| 
      
 2000 
     | 
    
         
            +
             
     | 
| 
      
 2001 
     | 
    
         
            +
                    possible_while_statements.each do |statement|
         
     | 
| 
      
 2002 
     | 
    
         
            +
             
     | 
| 
      
 2003 
     | 
    
         
            +
                      while_statement_indexes << input_file_contents.dup.each_index.select {|index| input_file_contents[index] == statement}
         
     | 
| 
      
 2004 
     | 
    
         
            +
             
     | 
| 
      
 2005 
     | 
    
         
            +
                    end
         
     | 
| 
      
 2006 
     | 
    
         
            +
             
     | 
| 
      
 2007 
     | 
    
         
            +
                    while_statement_indexes = [0] + while_statement_indexes.flatten + [-1]
         
     | 
| 
      
 2008 
     | 
    
         
            +
             
     | 
| 
      
 2009 
     | 
    
         
            +
                    controlregexp = /(if |def )/
         
     | 
| 
      
 2010 
     | 
    
         
            +
             
     | 
| 
      
 2011 
     | 
    
         
            +
                    modified_input_contents,extracted_statements = extract_while_blocks(while_statement_indexes,input_file_contents.clone)
         
     | 
| 
      
 2012 
     | 
    
         
            +
             
     | 
| 
      
 2013 
     | 
    
         
            +
                    joined_blocks = extracted_statements.collect {|element| element.join}
         
     | 
| 
      
 2014 
     | 
    
         
            +
             
     | 
| 
      
 2015 
     | 
    
         
            +
                    while_statements = joined_blocks.reject {|element| element.index(controlregexp) != nil}
         
     | 
| 
      
 2016 
     | 
    
         
            +
             
     | 
| 
      
 2017 
     | 
    
         
            +
                    rejected_elements = joined_blocks - while_statements
         
     | 
| 
      
 2018 
     | 
    
         
            +
             
     | 
| 
      
 2019 
     | 
    
         
            +
                    rejected_elements_index = []
         
     | 
| 
      
 2020 
     | 
    
         
            +
             
     | 
| 
      
 2021 
     | 
    
         
            +
                    rejected_elements.each do |element|
         
     | 
| 
      
 2022 
     | 
    
         
            +
             
     | 
| 
      
 2023 
     | 
    
         
            +
                      rejected_elements_index << joined_blocks.each_index.select {|index| joined_blocks[index] == element}
         
     | 
| 
      
 2024 
     | 
    
         
            +
             
     | 
| 
      
 2025 
     | 
    
         
            +
                    end
         
     | 
| 
      
 2026 
     | 
    
         
            +
             
     | 
| 
      
 2027 
     | 
    
         
            +
                    while_blocks_index = (0...extracted_statements.length).to_a
         
     | 
| 
      
 2028 
     | 
    
         
            +
             
     | 
| 
      
 2029 
     | 
    
         
            +
                    rejected_elements_index = rejected_elements_index.flatten
         
     | 
| 
      
 2030 
     | 
    
         
            +
             
     | 
| 
      
 2031 
     | 
    
         
            +
                    while_blocks_index -= rejected_elements_index
         
     | 
| 
      
 2032 
     | 
    
         
            +
             
     | 
| 
      
 2033 
     | 
    
         
            +
                    modified_while_statements = while_statements.collect {|string| convert_string_to_array(string,temporary_nila_file)}
         
     | 
| 
      
 2034 
     | 
    
         
            +
             
     | 
| 
      
 2035 
     | 
    
         
            +
                    modified_while_statements = modified_while_statements.collect {|block| compile_while_syntax(block)}.reverse
         
     | 
| 
      
 2036 
     | 
    
         
            +
             
     | 
| 
      
 2037 
     | 
    
         
            +
                    while_blocks_index = while_blocks_index.collect {|element| "--whileblock#{element}"}.reverse
         
     | 
| 
      
 2038 
     | 
    
         
            +
             
     | 
| 
      
 2039 
     | 
    
         
            +
                    rejected_elements_index = rejected_elements_index.collect {|element| "--whileblock#{element}"}.reverse
         
     | 
| 
      
 2040 
     | 
    
         
            +
             
     | 
| 
      
 2041 
     | 
    
         
            +
                    rejected_elements = rejected_elements.reverse
         
     | 
| 
      
 2042 
     | 
    
         
            +
             
     | 
| 
      
 2043 
     | 
    
         
            +
                    joined_file_contents = modified_input_contents.join
         
     | 
| 
      
 2044 
     | 
    
         
            +
             
     | 
| 
      
 2045 
     | 
    
         
            +
                    until while_blocks_index.empty? and rejected_elements_index.empty?
         
     | 
| 
      
 2046 
     | 
    
         
            +
             
     | 
| 
      
 2047 
     | 
    
         
            +
                      if !while_blocks_index.empty?
         
     | 
| 
      
 2048 
     | 
    
         
            +
             
     | 
| 
      
 2049 
     | 
    
         
            +
                        if joined_file_contents.include?(while_blocks_index[0])
         
     | 
| 
      
 2050 
     | 
    
         
            +
             
     | 
| 
      
 2051 
     | 
    
         
            +
                          joined_file_contents = joined_file_contents.sub(while_blocks_index[0],modified_while_statements[0].join)
         
     | 
| 
      
 2052 
     | 
    
         
            +
             
     | 
| 
      
 2053 
     | 
    
         
            +
                          while_blocks_index.delete_at(0)
         
     | 
| 
      
 2054 
     | 
    
         
            +
             
     | 
| 
      
 2055 
     | 
    
         
            +
                          modified_while_statements.delete_at(0)
         
     | 
| 
      
 2056 
     | 
    
         
            +
             
     | 
| 
      
 2057 
     | 
    
         
            +
                        else
         
     | 
| 
      
 2058 
     | 
    
         
            +
             
     | 
| 
      
 2059 
     | 
    
         
            +
                          joined_file_contents = joined_file_contents.sub(rejected_elements_index[0],rejected_elements[0])
         
     | 
| 
      
 2060 
     | 
    
         
            +
             
     | 
| 
      
 2061 
     | 
    
         
            +
                          rejected_elements_index.delete_at(0)
         
     | 
| 
      
 2062 
     | 
    
         
            +
             
     | 
| 
      
 2063 
     | 
    
         
            +
                          rejected_elements.delete_at(0)
         
     | 
| 
      
 2064 
     | 
    
         
            +
             
     | 
| 
      
 2065 
     | 
    
         
            +
                        end
         
     | 
| 
      
 2066 
     | 
    
         
            +
             
     | 
| 
      
 2067 
     | 
    
         
            +
                      else
         
     | 
| 
      
 2068 
     | 
    
         
            +
             
     | 
| 
      
 2069 
     | 
    
         
            +
                        joined_file_contents = joined_file_contents.sub(rejected_elements_index[0],rejected_elements[0])
         
     | 
| 
      
 2070 
     | 
    
         
            +
             
     | 
| 
      
 2071 
     | 
    
         
            +
                        rejected_elements_index.delete_at(0)
         
     | 
| 
      
 2072 
     | 
    
         
            +
             
     | 
| 
      
 2073 
     | 
    
         
            +
                        rejected_elements.delete_at(0)
         
     | 
| 
      
 2074 
     | 
    
         
            +
             
     | 
| 
      
 2075 
     | 
    
         
            +
                      end
         
     | 
| 
      
 2076 
     | 
    
         
            +
             
     | 
| 
      
 2077 
     | 
    
         
            +
                    end
         
     | 
| 
      
 2078 
     | 
    
         
            +
             
     | 
| 
      
 2079 
     | 
    
         
            +
                  else
         
     | 
| 
      
 2080 
     | 
    
         
            +
             
     | 
| 
      
 2081 
     | 
    
         
            +
                    joined_file_contents = input_file_contents.join
         
     | 
| 
      
 2082 
     | 
    
         
            +
             
     | 
| 
      
 2083 
     | 
    
         
            +
                  end
         
     | 
| 
      
 2084 
     | 
    
         
            +
             
     | 
| 
      
 2085 
     | 
    
         
            +
                  file_id = open(temporary_nila_file, 'w')
         
     | 
| 
      
 2086 
     | 
    
         
            +
             
     | 
| 
      
 2087 
     | 
    
         
            +
                  file_id.write(joined_file_contents)
         
     | 
| 
      
 2088 
     | 
    
         
            +
             
     | 
| 
      
 2089 
     | 
    
         
            +
                  file_id.close()
         
     | 
| 
      
 2090 
     | 
    
         
            +
             
     | 
| 
      
 2091 
     | 
    
         
            +
                  line_by_line_contents = read_file_line_by_line(temporary_nila_file)
         
     | 
| 
      
 2092 
     | 
    
         
            +
             
     | 
| 
      
 2093 
     | 
    
         
            +
                  return line_by_line_contents
         
     | 
| 
       1837 
2094 
     | 
    
         | 
| 
       1838 
2095 
     | 
    
         
             
                end
         
     | 
| 
       1839 
2096 
     | 
    
         | 
| 
       1840 
     | 
    
         
            -
                 
     | 
| 
      
 2097 
     | 
    
         
            +
                file_contents = replace_unless_until(input_file_contents)
         
     | 
| 
       1841 
2098 
     | 
    
         | 
| 
       1842 
     | 
    
         
            -
                 
     | 
| 
      
 2099 
     | 
    
         
            +
                file_contents = compile_regular_if(file_contents,temporary_nila_file)
         
     | 
| 
       1843 
2100 
     | 
    
         | 
| 
       1844 
     | 
    
         
            -
                 
     | 
| 
      
 2101 
     | 
    
         
            +
                file_contents = compile_regular_while(file_contents,temporary_nila_file)
         
     | 
| 
       1845 
2102 
     | 
    
         | 
| 
       1846 
     | 
    
         
            -
                 
     | 
| 
      
 2103 
     | 
    
         
            +
                file_contents = compile_inline_conditionals(file_contents,temporary_nila_file)
         
     | 
| 
       1847 
2104 
     | 
    
         | 
| 
       1848 
     | 
    
         
            -
                 
     | 
| 
      
 2105 
     | 
    
         
            +
                return file_contents
         
     | 
| 
       1849 
2106 
     | 
    
         | 
| 
       1850 
2107 
     | 
    
         
             
              end
         
     | 
| 
       1851 
2108 
     | 
    
         | 
| 
         @@ -1869,7 +2126,7 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       1869 
2126 
     | 
    
         | 
| 
       1870 
2127 
     | 
    
         
             
                end
         
     | 
| 
       1871 
2128 
     | 
    
         | 
| 
       1872 
     | 
    
         
            -
                reject_regexp = /(function |Euuf |if |else|elsuf|switch |case|while |for )/
         
     | 
| 
      
 2129 
     | 
    
         
            +
                reject_regexp = /(function |Euuf |if |else|elsuf|switch |case|while |whaaleskey |for )/
         
     | 
| 
       1873 
2130 
     | 
    
         | 
| 
       1874 
2131 
     | 
    
         
             
                modified_file_contents = []
         
     | 
| 
       1875 
2132 
     | 
    
         | 
| 
         @@ -1923,7 +2180,85 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       1923 
2180 
     | 
    
         | 
| 
       1924 
2181 
     | 
    
         
             
              end
         
     | 
| 
       1925 
2182 
     | 
    
         | 
| 
       1926 
     | 
    
         
            -
              def  
     | 
| 
      
 2183 
     | 
    
         
            +
              def compile_comments(input_file_contents,comments,temporary_nila_file)
         
     | 
| 
      
 2184 
     | 
    
         
            +
             
     | 
| 
      
 2185 
     | 
    
         
            +
                #This method converts Nila comments into pure Javascript comments. This method
         
     | 
| 
      
 2186 
     | 
    
         
            +
                #handles both single line and multiline comments.
         
     | 
| 
      
 2187 
     | 
    
         
            +
             
     | 
| 
      
 2188 
     | 
    
         
            +
                file_contents_as_string = input_file_contents.join
         
     | 
| 
      
 2189 
     | 
    
         
            +
             
     | 
| 
      
 2190 
     | 
    
         
            +
                single_line_comments = comments[0]
         
     | 
| 
      
 2191 
     | 
    
         
            +
             
     | 
| 
      
 2192 
     | 
    
         
            +
                multiline_comments = comments[1]
         
     | 
| 
      
 2193 
     | 
    
         
            +
             
     | 
| 
      
 2194 
     | 
    
         
            +
                single_line_comment_counter = 1
         
     | 
| 
      
 2195 
     | 
    
         
            +
             
     | 
| 
      
 2196 
     | 
    
         
            +
                multi_line_comment_counter = 1
         
     | 
| 
      
 2197 
     | 
    
         
            +
             
     | 
| 
      
 2198 
     | 
    
         
            +
                ignorable_keywords = [/if/,/while/,/function/]
         
     | 
| 
      
 2199 
     | 
    
         
            +
             
     | 
| 
      
 2200 
     | 
    
         
            +
                dummy_replacement_words = ["eeuuff","whaalesskkey","conffoolotion"]
         
     | 
| 
      
 2201 
     | 
    
         
            +
             
     | 
| 
      
 2202 
     | 
    
         
            +
                for x in 0...single_line_comments.length
         
     | 
| 
      
 2203 
     | 
    
         
            +
             
     | 
| 
      
 2204 
     | 
    
         
            +
                  current_singleline_comment = "--single_line_comment[#{single_line_comment_counter}]"
         
     | 
| 
      
 2205 
     | 
    
         
            +
             
     | 
| 
      
 2206 
     | 
    
         
            +
                  replacement_singleline_string = single_line_comments[x].sub("#","//")
         
     | 
| 
      
 2207 
     | 
    
         
            +
             
     | 
| 
      
 2208 
     | 
    
         
            +
                  ignorable_keywords.each_with_index do |keyword,index|
         
     | 
| 
      
 2209 
     | 
    
         
            +
             
     | 
| 
      
 2210 
     | 
    
         
            +
                    if replacement_singleline_string.index(keyword) != nil
         
     | 
| 
      
 2211 
     | 
    
         
            +
             
     | 
| 
      
 2212 
     | 
    
         
            +
                      replacement_singleline_string = replacement_singleline_string.sub(keyword.inspect[1...-1],dummy_replacement_words[index])
         
     | 
| 
      
 2213 
     | 
    
         
            +
             
     | 
| 
      
 2214 
     | 
    
         
            +
                    end
         
     | 
| 
      
 2215 
     | 
    
         
            +
             
     | 
| 
      
 2216 
     | 
    
         
            +
                  end
         
     | 
| 
      
 2217 
     | 
    
         
            +
             
     | 
| 
      
 2218 
     | 
    
         
            +
                  file_contents_as_string = file_contents_as_string.sub(current_singleline_comment,replacement_singleline_string)
         
     | 
| 
      
 2219 
     | 
    
         
            +
             
     | 
| 
      
 2220 
     | 
    
         
            +
                  single_line_comment_counter += 1
         
     | 
| 
      
 2221 
     | 
    
         
            +
             
     | 
| 
      
 2222 
     | 
    
         
            +
             
     | 
| 
      
 2223 
     | 
    
         
            +
                end
         
     | 
| 
      
 2224 
     | 
    
         
            +
             
     | 
| 
      
 2225 
     | 
    
         
            +
                for y in 0...multiline_comments.length
         
     | 
| 
      
 2226 
     | 
    
         
            +
             
     | 
| 
      
 2227 
     | 
    
         
            +
                  current_multiline_comment = "--multiline_comment[#{multi_line_comment_counter}]"
         
     | 
| 
      
 2228 
     | 
    
         
            +
             
     | 
| 
      
 2229 
     | 
    
         
            +
                  replacement_multiline_string = multiline_comments[y].sub("=begin","/*\n")
         
     | 
| 
      
 2230 
     | 
    
         
            +
             
     | 
| 
      
 2231 
     | 
    
         
            +
                  replacement_multiline_string = replacement_multiline_string.sub("=end","\n*/")
         
     | 
| 
      
 2232 
     | 
    
         
            +
             
     | 
| 
      
 2233 
     | 
    
         
            +
                  ignorable_keywords.each_with_index do |keyword,index|
         
     | 
| 
      
 2234 
     | 
    
         
            +
             
     | 
| 
      
 2235 
     | 
    
         
            +
                    if replacement_multiline_string.index(keyword) != nil
         
     | 
| 
      
 2236 
     | 
    
         
            +
             
     | 
| 
      
 2237 
     | 
    
         
            +
                      replacement_multiline_string = replacement_multiline_string.sub(keyword.inspect[1...-1],dummy_replacement_words[index])
         
     | 
| 
      
 2238 
     | 
    
         
            +
             
     | 
| 
      
 2239 
     | 
    
         
            +
                    end
         
     | 
| 
      
 2240 
     | 
    
         
            +
             
     | 
| 
      
 2241 
     | 
    
         
            +
                  end
         
     | 
| 
      
 2242 
     | 
    
         
            +
             
     | 
| 
      
 2243 
     | 
    
         
            +
                  file_contents_as_string = file_contents_as_string.sub(current_multiline_comment,replacement_multiline_string)
         
     | 
| 
      
 2244 
     | 
    
         
            +
             
     | 
| 
      
 2245 
     | 
    
         
            +
                  multi_line_comment_counter += 1
         
     | 
| 
      
 2246 
     | 
    
         
            +
             
     | 
| 
      
 2247 
     | 
    
         
            +
                end
         
     | 
| 
      
 2248 
     | 
    
         
            +
             
     | 
| 
      
 2249 
     | 
    
         
            +
                file_id = open(temporary_nila_file, 'w')
         
     | 
| 
      
 2250 
     | 
    
         
            +
             
     | 
| 
      
 2251 
     | 
    
         
            +
                file_id.write(file_contents_as_string)
         
     | 
| 
      
 2252 
     | 
    
         
            +
             
     | 
| 
      
 2253 
     | 
    
         
            +
                file_id.close()
         
     | 
| 
      
 2254 
     | 
    
         
            +
             
     | 
| 
      
 2255 
     | 
    
         
            +
                line_by_line_contents = read_file_line_by_line(temporary_nila_file)
         
     | 
| 
      
 2256 
     | 
    
         
            +
             
     | 
| 
      
 2257 
     | 
    
         
            +
                line_by_line_contents
         
     | 
| 
      
 2258 
     | 
    
         
            +
             
     | 
| 
      
 2259 
     | 
    
         
            +
              end
         
     | 
| 
      
 2260 
     | 
    
         
            +
             
     | 
| 
      
 2261 
     | 
    
         
            +
              def pretty_print_javascript(javascript_file_contents,temporary_nila_file,comments)
         
     | 
| 
       1927 
2262 
     | 
    
         | 
| 
       1928 
2263 
     | 
    
         
             
                def reset_tabs(input_file_contents)
         
     | 
| 
       1929 
2264 
     | 
    
         | 
| 
         @@ -1983,22 +2318,6 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       1983 
2318 
     | 
    
         | 
| 
       1984 
2319 
     | 
    
         
             
                end
         
     | 
| 
       1985 
2320 
     | 
    
         | 
| 
       1986 
     | 
    
         
            -
                def previous_formatting(input_string,tab_counter,temporary_nila_file)
         
     | 
| 
       1987 
     | 
    
         
            -
             
     | 
| 
       1988 
     | 
    
         
            -
                  string_as_array = convert_string_to_array(input_string,temporary_nila_file)
         
     | 
| 
       1989 
     | 
    
         
            -
             
     | 
| 
       1990 
     | 
    
         
            -
                  modified_array = []
         
     | 
| 
       1991 
     | 
    
         
            -
             
     | 
| 
       1992 
     | 
    
         
            -
                  string_as_array.each do |line|
         
     | 
| 
       1993 
     | 
    
         
            -
             
     | 
| 
       1994 
     | 
    
         
            -
                    modified_array << "  "*tab_counter + line
         
     | 
| 
       1995 
     | 
    
         
            -
             
     | 
| 
       1996 
     | 
    
         
            -
                  end
         
     | 
| 
       1997 
     | 
    
         
            -
             
     | 
| 
       1998 
     | 
    
         
            -
                  return modified_array.join
         
     | 
| 
       1999 
     | 
    
         
            -
             
     | 
| 
       2000 
     | 
    
         
            -
                end
         
     | 
| 
       2001 
     | 
    
         
            -
             
     | 
| 
       2002 
2321 
     | 
    
         
             
                def fix_newlines(file_contents)
         
     | 
| 
       2003 
2322 
     | 
    
         | 
| 
       2004 
2323 
     | 
    
         
             
                  def extract_blocks(file_contents)
         
     | 
| 
         @@ -2218,10 +2537,28 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       2218 
2537 
     | 
    
         | 
| 
       2219 
2538 
     | 
    
         
             
                end
         
     | 
| 
       2220 
2539 
     | 
    
         | 
| 
      
 2540 
     | 
    
         
            +
                def replace_ignored_words(input_string)
         
     | 
| 
      
 2541 
     | 
    
         
            +
             
     | 
| 
      
 2542 
     | 
    
         
            +
                  ignorable_keywords = [/if/,/while/,/function/]
         
     | 
| 
      
 2543 
     | 
    
         
            +
             
     | 
| 
      
 2544 
     | 
    
         
            +
                  dummy_replacement_words = ["eeuuff","whaalesskkey","conffoolotion"]
         
     | 
| 
      
 2545 
     | 
    
         
            +
             
     | 
| 
      
 2546 
     | 
    
         
            +
                  dummy_replacement_words.each_with_index do |word,index|
         
     | 
| 
      
 2547 
     | 
    
         
            +
             
     | 
| 
      
 2548 
     | 
    
         
            +
                    input_string = input_string.sub(word,ignorable_keywords[index].inspect[1...-1])
         
     | 
| 
      
 2549 
     | 
    
         
            +
             
     | 
| 
      
 2550 
     | 
    
         
            +
                  end
         
     | 
| 
      
 2551 
     | 
    
         
            +
             
     | 
| 
      
 2552 
     | 
    
         
            +
                  return input_string
         
     | 
| 
      
 2553 
     | 
    
         
            +
             
     | 
| 
      
 2554 
     | 
    
         
            +
                end
         
     | 
| 
      
 2555 
     | 
    
         
            +
             
     | 
| 
       2221 
2556 
     | 
    
         
             
                javascript_regexp = /(if |while |function |function\()/
         
     | 
| 
       2222 
2557 
     | 
    
         | 
| 
       2223 
2558 
     | 
    
         
             
                javascript_file_contents = javascript_file_contents.collect {|element| element.sub("Euuf","if")}
         
     | 
| 
       2224 
2559 
     | 
    
         | 
| 
      
 2560 
     | 
    
         
            +
                javascript_file_contents = javascript_file_contents.collect {|element| element.sub("whaaleskey","while")}
         
     | 
| 
      
 2561 
     | 
    
         
            +
             
     | 
| 
       2225 
2562 
     | 
    
         
             
                javascript_file_contents = reset_tabs(javascript_file_contents)
         
     | 
| 
       2226 
2563 
     | 
    
         | 
| 
       2227 
2564 
     | 
    
         
             
                starting_locations = []
         
     | 
| 
         @@ -2322,8 +2659,6 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       2322 
2659 
     | 
    
         | 
| 
       2323 
2660 
     | 
    
         
             
                  end
         
     | 
| 
       2324 
2661 
     | 
    
         | 
| 
       2325 
     | 
    
         
            -
             
     | 
| 
       2326 
     | 
    
         
            -
             
     | 
| 
       2327 
2662 
     | 
    
         
             
                  remaining_file_contents = ["(function() {\n",remaining_file_contents,"\n}).call(this);"].flatten
         
     | 
| 
       2328 
2663 
     | 
    
         | 
| 
       2329 
2664 
     | 
    
         
             
                  joined_file_contents = remaining_file_contents.join
         
     | 
| 
         @@ -2344,7 +2679,6 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       2344 
2679 
     | 
    
         | 
| 
       2345 
2680 
     | 
    
         
             
                end
         
     | 
| 
       2346 
2681 
     | 
    
         | 
| 
       2347 
     | 
    
         
            -
             
     | 
| 
       2348 
2682 
     | 
    
         
             
                file_id = open(temporary_nila_file, 'w')
         
     | 
| 
       2349 
2683 
     | 
    
         | 
| 
       2350 
2684 
     | 
    
         
             
                file_id.write(joined_file_contents)
         
     | 
| 
         @@ -2357,6 +2691,8 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       2357 
2691 
     | 
    
         | 
| 
       2358 
2692 
     | 
    
         
             
                line_by_line_contents = fix_syntax_indentation(line_by_line_contents)
         
     | 
| 
       2359 
2693 
     | 
    
         | 
| 
      
 2694 
     | 
    
         
            +
                line_by_line_contents = line_by_line_contents.collect {|element| replace_ignored_words(element)}
         
     | 
| 
      
 2695 
     | 
    
         
            +
             
     | 
| 
       2360 
2696 
     | 
    
         
             
                return line_by_line_contents
         
     | 
| 
       2361 
2697 
     | 
    
         | 
| 
       2362 
2698 
     | 
    
         
             
              end
         
     | 
| 
         @@ -2439,7 +2775,7 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       2439 
2775 
     | 
    
         | 
| 
       2440 
2776 
     | 
    
         
             
                file_contents = compile_comments(file_contents,comments,temp_file)
         
     | 
| 
       2441 
2777 
     | 
    
         | 
| 
       2442 
     | 
    
         
            -
                file_contents = pretty_print_javascript(file_contents,temp_file)
         
     | 
| 
      
 2778 
     | 
    
         
            +
                file_contents = pretty_print_javascript(file_contents,temp_file,comments)
         
     | 
| 
       2443 
2779 
     | 
    
         | 
| 
       2444 
2780 
     | 
    
         
             
                file_contents = compile_operators(file_contents)
         
     | 
| 
       2445 
2781 
     | 
    
         | 
    
        data/lib/nilac/version.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Feature: This feature bring Ruby's while statement to Nila.   
         
     | 
| 
      
 2 
     | 
    
         
            +
              Scenario: Input function with while statements
         
     | 
| 
      
 3 
     | 
    
         
            +
                Given the input file "regular_while.nila"
         
     | 
| 
      
 4 
     | 
    
         
            +
                When the ~compiler is run
         
     | 
| 
      
 5 
     | 
    
         
            +
                The output file must be "regular_while.js"
         
     | 
| 
      
 6 
     | 
    
         
            +
                The output file must equal "correct_regular_while.js"
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            Configurations:
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            ~compiler => src/nilac.rb
         
     | 
| 
      
 11 
     | 
    
         
            +
            :v $cliusage => ruby :v --compile $file
         
     | 
| 
         @@ -1,10 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            //Written using Nila. Visit http://adhithyan15.github.io/nila
         
     | 
| 
       2 
2 
     | 
    
         
             
            (function() {
         
     | 
| 
       3 
     | 
    
         
            -
              if (visitor_present) { 
     | 
| 
      
 3 
     | 
    
         
            +
              if (visitor_present) {
         
     | 
| 
       4 
4 
     | 
    
         
             
                //This file is for demonstration purpose. It doesn't really achieve anything
         
     | 
| 
       5 
     | 
    
         
            -
                if (active || happy) { 
     | 
| 
      
 5 
     | 
    
         
            +
                if (active || happy) {
         
     | 
| 
       6 
6 
     | 
    
         
             
                  console.log("Hello Wonderful Visitor!");
         
     | 
| 
       7 
     | 
    
         
            -
                } else if (idle && not_engaged) { 
     | 
| 
      
 7 
     | 
    
         
            +
                } else if (idle && not_engaged) {
         
     | 
| 
       8 
8 
     | 
    
         
             
                  console.log("Hello Visitor! It is time to engage!");
         
     | 
| 
       9 
9 
     | 
    
         
             
                } else {
         
     | 
| 
       10 
10 
     | 
    
         
             
                  console.log("Hello user!");
         
     | 
| 
         @@ -0,0 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            //Written using Nila. Visit http://adhithyan15.github.io/nila
         
     | 
| 
      
 2 
     | 
    
         
            +
            (function() {
         
     | 
| 
      
 3 
     | 
    
         
            +
              var counter;
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              // This file will demonstrate Nila's while loops
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              counter = 1;
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              while (counter < 11) {
         
     | 
| 
      
 10 
     | 
    
         
            +
                console.log(counter);
         
     | 
| 
      
 11 
     | 
    
         
            +
                counter = counter + 1;
         
     | 
| 
      
 12 
     | 
    
         
            +
              }
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            }).call(this);
         
     | 
| 
         @@ -12,10 +12,16 @@ 
     | 
|
| 
       12 
12 
     | 
    
         
             
                console.log("There's no such person");
         
     | 
| 
       13 
13 
     | 
    
         
             
              }
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
               
     | 
| 
      
 15 
     | 
    
         
            +
              if (!(person.present)) {
         
     | 
| 
      
 16 
     | 
    
         
            +
                console.log("There's no such person");
         
     | 
| 
      
 17 
     | 
    
         
            +
              }
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              i=1;
         
     | 
| 
       16 
20 
     | 
    
         | 
| 
       17 
21 
     | 
    
         
             
              while (!(i > 10)) {
         
     | 
| 
       18 
     | 
    
         
            -
                i  
     | 
| 
      
 22 
     | 
    
         
            +
                process.stdout.write("" + i + " ");
         
     | 
| 
      
 23 
     | 
    
         
            +
                i+=1;
         
     | 
| 
      
 24 
     | 
    
         
            +
                //redo if i > 10
         
     | 
| 
       19 
25 
     | 
    
         
             
              }
         
     | 
| 
       20 
26 
     | 
    
         | 
| 
       21 
27 
     | 
    
         
             
            }).call(this);
         
     | 
    
        data/src/nilac.rb
    CHANGED
    
    | 
         @@ -120,7 +120,7 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       120 
120 
     | 
    
         | 
| 
       121 
121 
     | 
    
         
             
                  multiline_comment = file_contents_as_string[start_of_multiline_comment..end_of_multiline_comment+3]
         
     | 
| 
       122 
122 
     | 
    
         | 
| 
       123 
     | 
    
         
            -
                  modified_file_contents = modified_file_contents.gsub(multiline_comment,"--multiline_comment[#{multiline_comment_counter}]")
         
     | 
| 
      
 123 
     | 
    
         
            +
                  modified_file_contents = modified_file_contents.gsub(multiline_comment,"--multiline_comment[#{multiline_comment_counter}]\n\n")
         
     | 
| 
       124 
124 
     | 
    
         | 
| 
       125 
125 
     | 
    
         
             
                  multiline_comment_counter += 1
         
     | 
| 
       126 
126 
     | 
    
         | 
| 
         @@ -263,7 +263,7 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       263 
263 
     | 
    
         | 
| 
       264 
264 
     | 
    
         
             
                      single_line_comments << comment
         
     | 
| 
       265 
265 
     | 
    
         | 
| 
       266 
     | 
    
         
            -
                      current_row = current_row.gsub(comment,"--single_line_comment[#{singleline_comment_counter}]")
         
     | 
| 
      
 266 
     | 
    
         
            +
                      current_row = current_row.gsub(comment,"--single_line_comment[#{singleline_comment_counter}]\n\n")
         
     | 
| 
       267 
267 
     | 
    
         | 
| 
       268 
268 
     | 
    
         
             
                      singleline_comment_counter += 1
         
     | 
| 
       269 
269 
     | 
    
         | 
| 
         @@ -1319,8 +1319,11 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       1319 
1319 
     | 
    
         | 
| 
       1320 
1320 
     | 
    
         
             
                    "puts" => "console.log",
         
     | 
| 
       1321 
1321 
     | 
    
         | 
| 
      
 1322 
     | 
    
         
            +
                    "p" => "console.log",
         
     | 
| 
      
 1323 
     | 
    
         
            +
             
     | 
| 
       1322 
1324 
     | 
    
         
             
                    "print" => "process.stdout.write"
         
     | 
| 
       1323 
1325 
     | 
    
         | 
| 
      
 1326 
     | 
    
         
            +
             
     | 
| 
       1324 
1327 
     | 
    
         
             
                }
         
     | 
| 
       1325 
1328 
     | 
    
         | 
| 
       1326 
1329 
     | 
    
         
             
                function_map = function_map_replacements.keys
         
     | 
| 
         @@ -1401,6 +1404,8 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       1401 
1404 
     | 
    
         | 
| 
       1402 
1405 
     | 
    
         
             
                        modified_string = string.dup
         
     | 
| 
       1403 
1406 
     | 
    
         | 
| 
      
 1407 
     | 
    
         
            +
                        modified_string = modified_string.rstrip + modified_string.split(modified_string.rstrip)[1].gsub(" ","")
         
     | 
| 
      
 1408 
     | 
    
         
            +
             
     | 
| 
       1404 
1409 
     | 
    
         
             
                        modified_string = modified_string.sub(function+" ",function+"(")
         
     | 
| 
       1405 
1410 
     | 
    
         | 
| 
       1406 
1411 
     | 
    
         
             
                        modified_string = modified_string.sub("\n",")\n")
         
     | 
| 
         @@ -1433,9 +1438,41 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       1433 
1438 
     | 
    
         | 
| 
       1434 
1439 
     | 
    
         
             
              def compile_conditional_structures(input_file_contents,temporary_nila_file)
         
     | 
| 
       1435 
1440 
     | 
    
         | 
| 
       1436 
     | 
    
         
            -
                 
     | 
| 
      
 1441 
     | 
    
         
            +
                def replace_unless_until(input_file_contents)
         
     | 
| 
      
 1442 
     | 
    
         
            +
             
     | 
| 
      
 1443 
     | 
    
         
            +
                  modified_file_contents = input_file_contents.clone
         
     | 
| 
      
 1444 
     | 
    
         
            +
             
     | 
| 
      
 1445 
     | 
    
         
            +
                  possible_unless_commands = input_file_contents.reject {|element| !element.include?("unless")}
         
     | 
| 
      
 1446 
     | 
    
         
            +
             
     | 
| 
      
 1447 
     | 
    
         
            +
                  unless_commands = possible_unless_commands.reject {|element| !element.lstrip.split("unless")[0].empty?}
         
     | 
| 
      
 1448 
     | 
    
         
            +
             
     | 
| 
      
 1449 
     | 
    
         
            +
                  unless_commands.each do |command|
         
     | 
| 
      
 1450 
     | 
    
         
            +
             
     | 
| 
      
 1451 
     | 
    
         
            +
                    junk,condition = command.split("unless ")
         
     | 
| 
      
 1452 
     | 
    
         
            +
             
     | 
| 
      
 1453 
     | 
    
         
            +
                    replacement_string = "if !(#{condition.lstrip.rstrip})\n"
         
     | 
| 
      
 1454 
     | 
    
         
            +
             
     | 
| 
      
 1455 
     | 
    
         
            +
                    modified_file_contents[modified_file_contents.index(command)] = replacement_string
         
     | 
| 
      
 1456 
     | 
    
         
            +
             
     | 
| 
      
 1457 
     | 
    
         
            +
                  end
         
     | 
| 
       1437 
1458 
     | 
    
         | 
| 
       1438 
     | 
    
         
            -
             
     | 
| 
      
 1459 
     | 
    
         
            +
                  possible_until_commands = input_file_contents.reject {|element| !element.include?("until")}
         
     | 
| 
      
 1460 
     | 
    
         
            +
             
     | 
| 
      
 1461 
     | 
    
         
            +
                  until_commands = possible_until_commands.reject {|element| !element.lstrip.split("until")[0].empty?}
         
     | 
| 
      
 1462 
     | 
    
         
            +
             
     | 
| 
      
 1463 
     | 
    
         
            +
                  until_commands.each do |command|
         
     | 
| 
      
 1464 
     | 
    
         
            +
             
     | 
| 
      
 1465 
     | 
    
         
            +
                    junk,condition = command.split("until ")
         
     | 
| 
      
 1466 
     | 
    
         
            +
             
     | 
| 
      
 1467 
     | 
    
         
            +
                    replacement_string = "while !(#{condition.lstrip.rstrip})\n"
         
     | 
| 
      
 1468 
     | 
    
         
            +
             
     | 
| 
      
 1469 
     | 
    
         
            +
                    modified_file_contents[modified_file_contents.index(command)] = replacement_string
         
     | 
| 
      
 1470 
     | 
    
         
            +
             
     | 
| 
      
 1471 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1472 
     | 
    
         
            +
             
     | 
| 
      
 1473 
     | 
    
         
            +
                  return modified_file_contents
         
     | 
| 
      
 1474 
     | 
    
         
            +
             
     | 
| 
      
 1475 
     | 
    
         
            +
                end
         
     | 
| 
       1439 
1476 
     | 
    
         | 
| 
       1440 
1477 
     | 
    
         
             
                def compile_inline_conditionals(input_file_contents,temporary_nila_file)
         
     | 
| 
       1441 
1478 
     | 
    
         | 
| 
         @@ -1695,7 +1732,7 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       1695 
1732 
     | 
    
         | 
| 
       1696 
1733 
     | 
    
         
             
                    end
         
     | 
| 
       1697 
1734 
     | 
    
         | 
| 
       1698 
     | 
    
         
            -
                    if_statement_indexes = if_statement_indexes.flatten + [-1]
         
     | 
| 
      
 1735 
     | 
    
         
            +
                    if_statement_indexes = [0] + if_statement_indexes.flatten + [-1]
         
     | 
| 
       1699 
1736 
     | 
    
         | 
| 
       1700 
1737 
     | 
    
         
             
                    controlregexp = /(while |def )/
         
     | 
| 
       1701 
1738 
     | 
    
         | 
| 
         @@ -1785,65 +1822,285 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       1785 
1822 
     | 
    
         | 
| 
       1786 
1823 
     | 
    
         
             
                end
         
     | 
| 
       1787 
1824 
     | 
    
         | 
| 
       1788 
     | 
    
         
            -
                 
     | 
| 
      
 1825 
     | 
    
         
            +
                def compile_regular_while(input_file_contents,temporary_nila_file)
         
     | 
| 
       1789 
1826 
     | 
    
         | 
| 
       1790 
     | 
    
         
            -
             
     | 
| 
      
 1827 
     | 
    
         
            +
                  def convert_string_to_array(input_string,temporary_nila_file)
         
     | 
| 
       1791 
1828 
     | 
    
         | 
| 
       1792 
     | 
    
         
            -
             
     | 
| 
      
 1829 
     | 
    
         
            +
                    file_id = open(temporary_nila_file, 'w')
         
     | 
| 
       1793 
1830 
     | 
    
         | 
| 
       1794 
     | 
    
         
            -
             
     | 
| 
      
 1831 
     | 
    
         
            +
                    file_id.write(input_string)
         
     | 
| 
       1795 
1832 
     | 
    
         | 
| 
       1796 
     | 
    
         
            -
             
     | 
| 
      
 1833 
     | 
    
         
            +
                    file_id.close()
         
     | 
| 
       1797 
1834 
     | 
    
         | 
| 
       1798 
     | 
    
         
            -
             
     | 
| 
       1799 
     | 
    
         
            -
                #handles both single line and multiline comments.
         
     | 
| 
      
 1835 
     | 
    
         
            +
                    line_by_line_contents = read_file_line_by_line(temporary_nila_file)
         
     | 
| 
       1800 
1836 
     | 
    
         | 
| 
       1801 
     | 
    
         
            -
             
     | 
| 
      
 1837 
     | 
    
         
            +
                    return line_by_line_contents
         
     | 
| 
       1802 
1838 
     | 
    
         | 
| 
       1803 
     | 
    
         
            -
             
     | 
| 
      
 1839 
     | 
    
         
            +
                  end
         
     | 
| 
       1804 
1840 
     | 
    
         | 
| 
       1805 
     | 
    
         
            -
             
     | 
| 
      
 1841 
     | 
    
         
            +
                  def extract_while_blocks(while_statement_indexes,input_file_contents)
         
     | 
| 
       1806 
1842 
     | 
    
         | 
| 
       1807 
     | 
    
         
            -
             
     | 
| 
      
 1843 
     | 
    
         
            +
                    possible_while_blocks = []
         
     | 
| 
       1808 
1844 
     | 
    
         | 
| 
       1809 
     | 
    
         
            -
             
     | 
| 
      
 1845 
     | 
    
         
            +
                    while_block_counter = 0
         
     | 
| 
       1810 
1846 
     | 
    
         | 
| 
       1811 
     | 
    
         
            -
             
     | 
| 
      
 1847 
     | 
    
         
            +
                    extracted_blocks = []
         
     | 
| 
       1812 
1848 
     | 
    
         | 
| 
       1813 
     | 
    
         
            -
             
     | 
| 
      
 1849 
     | 
    
         
            +
                    controlregexp = /(if |while |def )/
         
     | 
| 
       1814 
1850 
     | 
    
         | 
| 
       1815 
     | 
    
         
            -
             
     | 
| 
      
 1851 
     | 
    
         
            +
                    rejectionregexp = /( if | while )/
         
     | 
| 
       1816 
1852 
     | 
    
         | 
| 
       1817 
     | 
    
         
            -
             
     | 
| 
      
 1853 
     | 
    
         
            +
                    for x in 0...while_statement_indexes.length-1
         
     | 
| 
       1818 
1854 
     | 
    
         | 
| 
       1819 
     | 
    
         
            -
             
     | 
| 
      
 1855 
     | 
    
         
            +
                      possible_while_blocks << input_file_contents[while_statement_indexes[x]..while_statement_indexes[x+1]]
         
     | 
| 
       1820 
1856 
     | 
    
         | 
| 
      
 1857 
     | 
    
         
            +
                    end
         
     | 
| 
       1821 
1858 
     | 
    
         | 
| 
       1822 
     | 
    
         
            -
             
     | 
| 
      
 1859 
     | 
    
         
            +
                    end_counter = 0
         
     | 
| 
       1823 
1860 
     | 
    
         | 
| 
       1824 
     | 
    
         
            -
             
     | 
| 
      
 1861 
     | 
    
         
            +
                    end_index = []
         
     | 
| 
       1825 
1862 
     | 
    
         | 
| 
       1826 
     | 
    
         
            -
             
     | 
| 
      
 1863 
     | 
    
         
            +
                    current_block = []
         
     | 
| 
       1827 
1864 
     | 
    
         | 
| 
       1828 
     | 
    
         
            -
             
     | 
| 
      
 1865 
     | 
    
         
            +
                    possible_while_blocks.each_with_index do |block|
         
     | 
| 
       1829 
1866 
     | 
    
         | 
| 
       1830 
     | 
    
         
            -
             
     | 
| 
      
 1867 
     | 
    
         
            +
                      current_block += block
         
     | 
| 
       1831 
1868 
     | 
    
         | 
| 
       1832 
     | 
    
         
            -
             
     | 
| 
      
 1869 
     | 
    
         
            +
                      current_block.each_with_index do |line,index|
         
     | 
| 
       1833 
1870 
     | 
    
         | 
| 
       1834 
     | 
    
         
            -
             
     | 
| 
      
 1871 
     | 
    
         
            +
                        if line.strip.eql? "end"
         
     | 
| 
      
 1872 
     | 
    
         
            +
             
     | 
| 
      
 1873 
     | 
    
         
            +
                          end_counter += 1
         
     | 
| 
      
 1874 
     | 
    
         
            +
             
     | 
| 
      
 1875 
     | 
    
         
            +
                          end_index << index
         
     | 
| 
      
 1876 
     | 
    
         
            +
             
     | 
| 
      
 1877 
     | 
    
         
            +
                        end
         
     | 
| 
      
 1878 
     | 
    
         
            +
             
     | 
| 
      
 1879 
     | 
    
         
            +
                      end
         
     | 
| 
      
 1880 
     | 
    
         
            +
             
     | 
| 
      
 1881 
     | 
    
         
            +
                      if end_counter > 0
         
     | 
| 
      
 1882 
     | 
    
         
            +
             
     | 
| 
      
 1883 
     | 
    
         
            +
                        until end_index.empty?
         
     | 
| 
      
 1884 
     | 
    
         
            +
             
     | 
| 
      
 1885 
     | 
    
         
            +
                          array_extract = current_block[0..end_index[0]].reverse
         
     | 
| 
      
 1886 
     | 
    
         
            +
             
     | 
| 
      
 1887 
     | 
    
         
            +
                          index_counter = 0
         
     | 
| 
      
 1888 
     | 
    
         
            +
             
     | 
| 
      
 1889 
     | 
    
         
            +
                          array_extract.each_with_index do |line|
         
     | 
| 
      
 1890 
     | 
    
         
            +
             
     | 
| 
      
 1891 
     | 
    
         
            +
                            break if (line.lstrip.index(controlregexp) != nil and line.lstrip.index(rejectionregexp).nil?)
         
     | 
| 
      
 1892 
     | 
    
         
            +
             
     | 
| 
      
 1893 
     | 
    
         
            +
                            index_counter += 1
         
     | 
| 
      
 1894 
     | 
    
         
            +
             
     | 
| 
      
 1895 
     | 
    
         
            +
                          end
         
     | 
| 
      
 1896 
     | 
    
         
            +
             
     | 
| 
      
 1897 
     | 
    
         
            +
                          block_extract = array_extract[0..index_counter].reverse
         
     | 
| 
      
 1898 
     | 
    
         
            +
             
     | 
| 
      
 1899 
     | 
    
         
            +
                          extracted_blocks << block_extract
         
     | 
| 
      
 1900 
     | 
    
         
            +
             
     | 
| 
      
 1901 
     | 
    
         
            +
                          block_start = current_block.index(block_extract[0])
         
     | 
| 
      
 1902 
     | 
    
         
            +
             
     | 
| 
      
 1903 
     | 
    
         
            +
                          block_end = current_block.index(block_extract[-1])
         
     | 
| 
      
 1904 
     | 
    
         
            +
             
     | 
| 
      
 1905 
     | 
    
         
            +
                          current_block[block_start..block_end] = "--whileblock#{while_block_counter}"
         
     | 
| 
      
 1906 
     | 
    
         
            +
             
     | 
| 
      
 1907 
     | 
    
         
            +
                          while_block_counter += 1
         
     | 
| 
      
 1908 
     | 
    
         
            +
             
     | 
| 
      
 1909 
     | 
    
         
            +
                          end_counter = 0
         
     | 
| 
      
 1910 
     | 
    
         
            +
             
     | 
| 
      
 1911 
     | 
    
         
            +
                          end_index = []
         
     | 
| 
      
 1912 
     | 
    
         
            +
             
     | 
| 
      
 1913 
     | 
    
         
            +
                          current_block.each_with_index do |line,index|
         
     | 
| 
      
 1914 
     | 
    
         
            +
             
     | 
| 
      
 1915 
     | 
    
         
            +
                            if line.strip.eql? "end"
         
     | 
| 
      
 1916 
     | 
    
         
            +
             
     | 
| 
      
 1917 
     | 
    
         
            +
                              end_counter += 1
         
     | 
| 
      
 1918 
     | 
    
         
            +
             
     | 
| 
      
 1919 
     | 
    
         
            +
                              end_index << index
         
     | 
| 
      
 1920 
     | 
    
         
            +
             
     | 
| 
      
 1921 
     | 
    
         
            +
                            end
         
     | 
| 
      
 1922 
     | 
    
         
            +
             
     | 
| 
      
 1923 
     | 
    
         
            +
                          end
         
     | 
| 
      
 1924 
     | 
    
         
            +
             
     | 
| 
      
 1925 
     | 
    
         
            +
                        end
         
     | 
| 
      
 1926 
     | 
    
         
            +
             
     | 
| 
      
 1927 
     | 
    
         
            +
                      end
         
     | 
| 
      
 1928 
     | 
    
         
            +
             
     | 
| 
      
 1929 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1930 
     | 
    
         
            +
             
     | 
| 
      
 1931 
     | 
    
         
            +
                    return current_block,extracted_blocks
         
     | 
| 
      
 1932 
     | 
    
         
            +
             
     | 
| 
      
 1933 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1934 
     | 
    
         
            +
             
     | 
| 
      
 1935 
     | 
    
         
            +
                  def compile_while_syntax(input_block)
         
     | 
| 
      
 1936 
     | 
    
         
            +
             
     | 
| 
      
 1937 
     | 
    
         
            +
                    strings = []
         
     | 
| 
      
 1938 
     | 
    
         
            +
             
     | 
| 
      
 1939 
     | 
    
         
            +
                    string_counter = 0
         
     | 
| 
      
 1940 
     | 
    
         
            +
             
     | 
| 
      
 1941 
     | 
    
         
            +
                    modified_input_block = input_block.dup
         
     | 
| 
      
 1942 
     | 
    
         
            +
             
     | 
| 
      
 1943 
     | 
    
         
            +
                    input_block.each_with_index do |line,index|
         
     | 
| 
      
 1944 
     | 
    
         
            +
             
     | 
| 
      
 1945 
     | 
    
         
            +
                      if line.include?("\"")
         
     | 
| 
      
 1946 
     | 
    
         
            +
             
     | 
| 
      
 1947 
     | 
    
         
            +
                        opening_quotes = line.index("\"")
         
     | 
| 
      
 1948 
     | 
    
         
            +
             
     | 
| 
      
 1949 
     | 
    
         
            +
                        string_extract = line[opening_quotes..line.index("\"",opening_quotes+1)]
         
     | 
| 
      
 1950 
     | 
    
         
            +
             
     | 
| 
      
 1951 
     | 
    
         
            +
                        strings << string_extract
         
     | 
| 
      
 1952 
     | 
    
         
            +
             
     | 
| 
      
 1953 
     | 
    
         
            +
                        modified_input_block[index] = modified_input_block[index].sub(string_extract,"--string{#{string_counter}}")
         
     | 
| 
      
 1954 
     | 
    
         
            +
             
     | 
| 
      
 1955 
     | 
    
         
            +
                        string_counter += 1
         
     | 
| 
      
 1956 
     | 
    
         
            +
             
     | 
| 
      
 1957 
     | 
    
         
            +
                      end
         
     | 
| 
      
 1958 
     | 
    
         
            +
             
     | 
| 
      
 1959 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1960 
     | 
    
         
            +
             
     | 
| 
      
 1961 
     | 
    
         
            +
                    input_block = modified_input_block
         
     | 
| 
      
 1962 
     | 
    
         
            +
             
     | 
| 
      
 1963 
     | 
    
         
            +
                    starting_line = input_block[0]
         
     | 
| 
      
 1964 
     | 
    
         
            +
             
     | 
| 
      
 1965 
     | 
    
         
            +
                    starting_line = starting_line + "\n" if starting_line.lstrip == starting_line
         
     | 
| 
      
 1966 
     | 
    
         
            +
             
     | 
| 
      
 1967 
     | 
    
         
            +
                    junk,condition = starting_line.split("while")
         
     | 
| 
      
 1968 
     | 
    
         
            +
             
     | 
| 
      
 1969 
     | 
    
         
            +
                    input_block[0] = "whaaleskey (#{condition.lstrip.rstrip.gsub("?","")}) {\n"
         
     | 
| 
      
 1970 
     | 
    
         
            +
             
     | 
| 
      
 1971 
     | 
    
         
            +
                    input_block[-1] = input_block[-1].lstrip.sub("end","}")
         
     | 
| 
      
 1972 
     | 
    
         
            +
             
     | 
| 
      
 1973 
     | 
    
         
            +
                    modified_input_block = input_block.dup
         
     | 
| 
      
 1974 
     | 
    
         
            +
             
     | 
| 
      
 1975 
     | 
    
         
            +
                    input_block.each_with_index do |line,index|
         
     | 
| 
      
 1976 
     | 
    
         
            +
             
     | 
| 
      
 1977 
     | 
    
         
            +
                      if line.include?("--string{")
         
     | 
| 
      
 1978 
     | 
    
         
            +
             
     | 
| 
      
 1979 
     | 
    
         
            +
                        junk,remains = line.split("--string{")
         
     | 
| 
      
 1980 
     | 
    
         
            +
             
     | 
| 
      
 1981 
     | 
    
         
            +
                        string_index,junk = remains.split("}")
         
     | 
| 
      
 1982 
     | 
    
         
            +
             
     | 
| 
      
 1983 
     | 
    
         
            +
                        modified_input_block[index] = modified_input_block[index].sub("--string{#{string_index.strip}}",strings[string_index.strip.to_i])
         
     | 
| 
      
 1984 
     | 
    
         
            +
             
     | 
| 
      
 1985 
     | 
    
         
            +
                      end
         
     | 
| 
      
 1986 
     | 
    
         
            +
             
     | 
| 
      
 1987 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1988 
     | 
    
         
            +
             
     | 
| 
      
 1989 
     | 
    
         
            +
                    return modified_input_block
         
     | 
| 
      
 1990 
     | 
    
         
            +
             
     | 
| 
      
 1991 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1992 
     | 
    
         
            +
             
     | 
| 
      
 1993 
     | 
    
         
            +
                  possible_while_statements = input_file_contents.reject {|element| !element.include?("while")}
         
     | 
| 
      
 1994 
     | 
    
         
            +
             
     | 
| 
      
 1995 
     | 
    
         
            +
                  if !possible_while_statements.empty?
         
     | 
| 
      
 1996 
     | 
    
         
            +
             
     | 
| 
      
 1997 
     | 
    
         
            +
                    while_statement_indexes = []
         
     | 
| 
      
 1998 
     | 
    
         
            +
             
     | 
| 
      
 1999 
     | 
    
         
            +
                    possible_while_statements.each do |statement|
         
     | 
| 
      
 2000 
     | 
    
         
            +
             
     | 
| 
      
 2001 
     | 
    
         
            +
                      while_statement_indexes << input_file_contents.dup.each_index.select {|index| input_file_contents[index] == statement}
         
     | 
| 
      
 2002 
     | 
    
         
            +
             
     | 
| 
      
 2003 
     | 
    
         
            +
                    end
         
     | 
| 
      
 2004 
     | 
    
         
            +
             
     | 
| 
      
 2005 
     | 
    
         
            +
                    while_statement_indexes = [0] + while_statement_indexes.flatten + [-1]
         
     | 
| 
      
 2006 
     | 
    
         
            +
             
     | 
| 
      
 2007 
     | 
    
         
            +
                    controlregexp = /(if |def )/
         
     | 
| 
      
 2008 
     | 
    
         
            +
             
     | 
| 
      
 2009 
     | 
    
         
            +
                    modified_input_contents,extracted_statements = extract_while_blocks(while_statement_indexes,input_file_contents.clone)
         
     | 
| 
      
 2010 
     | 
    
         
            +
             
     | 
| 
      
 2011 
     | 
    
         
            +
                    joined_blocks = extracted_statements.collect {|element| element.join}
         
     | 
| 
      
 2012 
     | 
    
         
            +
             
     | 
| 
      
 2013 
     | 
    
         
            +
                    while_statements = joined_blocks.reject {|element| element.index(controlregexp) != nil}
         
     | 
| 
      
 2014 
     | 
    
         
            +
             
     | 
| 
      
 2015 
     | 
    
         
            +
                    rejected_elements = joined_blocks - while_statements
         
     | 
| 
      
 2016 
     | 
    
         
            +
             
     | 
| 
      
 2017 
     | 
    
         
            +
                    rejected_elements_index = []
         
     | 
| 
      
 2018 
     | 
    
         
            +
             
     | 
| 
      
 2019 
     | 
    
         
            +
                    rejected_elements.each do |element|
         
     | 
| 
      
 2020 
     | 
    
         
            +
             
     | 
| 
      
 2021 
     | 
    
         
            +
                      rejected_elements_index << joined_blocks.each_index.select {|index| joined_blocks[index] == element}
         
     | 
| 
      
 2022 
     | 
    
         
            +
             
     | 
| 
      
 2023 
     | 
    
         
            +
                    end
         
     | 
| 
      
 2024 
     | 
    
         
            +
             
     | 
| 
      
 2025 
     | 
    
         
            +
                    while_blocks_index = (0...extracted_statements.length).to_a
         
     | 
| 
      
 2026 
     | 
    
         
            +
             
     | 
| 
      
 2027 
     | 
    
         
            +
                    rejected_elements_index = rejected_elements_index.flatten
         
     | 
| 
      
 2028 
     | 
    
         
            +
             
     | 
| 
      
 2029 
     | 
    
         
            +
                    while_blocks_index -= rejected_elements_index
         
     | 
| 
      
 2030 
     | 
    
         
            +
             
     | 
| 
      
 2031 
     | 
    
         
            +
                    modified_while_statements = while_statements.collect {|string| convert_string_to_array(string,temporary_nila_file)}
         
     | 
| 
      
 2032 
     | 
    
         
            +
             
     | 
| 
      
 2033 
     | 
    
         
            +
                    modified_while_statements = modified_while_statements.collect {|block| compile_while_syntax(block)}.reverse
         
     | 
| 
      
 2034 
     | 
    
         
            +
             
     | 
| 
      
 2035 
     | 
    
         
            +
                    while_blocks_index = while_blocks_index.collect {|element| "--whileblock#{element}"}.reverse
         
     | 
| 
      
 2036 
     | 
    
         
            +
             
     | 
| 
      
 2037 
     | 
    
         
            +
                    rejected_elements_index = rejected_elements_index.collect {|element| "--whileblock#{element}"}.reverse
         
     | 
| 
      
 2038 
     | 
    
         
            +
             
     | 
| 
      
 2039 
     | 
    
         
            +
                    rejected_elements = rejected_elements.reverse
         
     | 
| 
      
 2040 
     | 
    
         
            +
             
     | 
| 
      
 2041 
     | 
    
         
            +
                    joined_file_contents = modified_input_contents.join
         
     | 
| 
      
 2042 
     | 
    
         
            +
             
     | 
| 
      
 2043 
     | 
    
         
            +
                    until while_blocks_index.empty? and rejected_elements_index.empty?
         
     | 
| 
      
 2044 
     | 
    
         
            +
             
     | 
| 
      
 2045 
     | 
    
         
            +
                      if !while_blocks_index.empty?
         
     | 
| 
      
 2046 
     | 
    
         
            +
             
     | 
| 
      
 2047 
     | 
    
         
            +
                        if joined_file_contents.include?(while_blocks_index[0])
         
     | 
| 
      
 2048 
     | 
    
         
            +
             
     | 
| 
      
 2049 
     | 
    
         
            +
                          joined_file_contents = joined_file_contents.sub(while_blocks_index[0],modified_while_statements[0].join)
         
     | 
| 
      
 2050 
     | 
    
         
            +
             
     | 
| 
      
 2051 
     | 
    
         
            +
                          while_blocks_index.delete_at(0)
         
     | 
| 
      
 2052 
     | 
    
         
            +
             
     | 
| 
      
 2053 
     | 
    
         
            +
                          modified_while_statements.delete_at(0)
         
     | 
| 
      
 2054 
     | 
    
         
            +
             
     | 
| 
      
 2055 
     | 
    
         
            +
                        else
         
     | 
| 
      
 2056 
     | 
    
         
            +
             
     | 
| 
      
 2057 
     | 
    
         
            +
                          joined_file_contents = joined_file_contents.sub(rejected_elements_index[0],rejected_elements[0])
         
     | 
| 
      
 2058 
     | 
    
         
            +
             
     | 
| 
      
 2059 
     | 
    
         
            +
                          rejected_elements_index.delete_at(0)
         
     | 
| 
      
 2060 
     | 
    
         
            +
             
     | 
| 
      
 2061 
     | 
    
         
            +
                          rejected_elements.delete_at(0)
         
     | 
| 
      
 2062 
     | 
    
         
            +
             
     | 
| 
      
 2063 
     | 
    
         
            +
                        end
         
     | 
| 
      
 2064 
     | 
    
         
            +
             
     | 
| 
      
 2065 
     | 
    
         
            +
                      else
         
     | 
| 
      
 2066 
     | 
    
         
            +
             
     | 
| 
      
 2067 
     | 
    
         
            +
                        joined_file_contents = joined_file_contents.sub(rejected_elements_index[0],rejected_elements[0])
         
     | 
| 
      
 2068 
     | 
    
         
            +
             
     | 
| 
      
 2069 
     | 
    
         
            +
                        rejected_elements_index.delete_at(0)
         
     | 
| 
      
 2070 
     | 
    
         
            +
             
     | 
| 
      
 2071 
     | 
    
         
            +
                        rejected_elements.delete_at(0)
         
     | 
| 
      
 2072 
     | 
    
         
            +
             
     | 
| 
      
 2073 
     | 
    
         
            +
                      end
         
     | 
| 
      
 2074 
     | 
    
         
            +
             
     | 
| 
      
 2075 
     | 
    
         
            +
                    end
         
     | 
| 
      
 2076 
     | 
    
         
            +
             
     | 
| 
      
 2077 
     | 
    
         
            +
                  else
         
     | 
| 
      
 2078 
     | 
    
         
            +
             
     | 
| 
      
 2079 
     | 
    
         
            +
                    joined_file_contents = input_file_contents.join
         
     | 
| 
      
 2080 
     | 
    
         
            +
             
     | 
| 
      
 2081 
     | 
    
         
            +
                  end
         
     | 
| 
      
 2082 
     | 
    
         
            +
             
     | 
| 
      
 2083 
     | 
    
         
            +
                  file_id = open(temporary_nila_file, 'w')
         
     | 
| 
      
 2084 
     | 
    
         
            +
             
     | 
| 
      
 2085 
     | 
    
         
            +
                  file_id.write(joined_file_contents)
         
     | 
| 
      
 2086 
     | 
    
         
            +
             
     | 
| 
      
 2087 
     | 
    
         
            +
                  file_id.close()
         
     | 
| 
      
 2088 
     | 
    
         
            +
             
     | 
| 
      
 2089 
     | 
    
         
            +
                  line_by_line_contents = read_file_line_by_line(temporary_nila_file)
         
     | 
| 
      
 2090 
     | 
    
         
            +
             
     | 
| 
      
 2091 
     | 
    
         
            +
                  return line_by_line_contents
         
     | 
| 
       1835 
2092 
     | 
    
         | 
| 
       1836 
2093 
     | 
    
         
             
                end
         
     | 
| 
       1837 
2094 
     | 
    
         | 
| 
       1838 
     | 
    
         
            -
                 
     | 
| 
      
 2095 
     | 
    
         
            +
                file_contents = replace_unless_until(input_file_contents)
         
     | 
| 
       1839 
2096 
     | 
    
         | 
| 
       1840 
     | 
    
         
            -
                 
     | 
| 
      
 2097 
     | 
    
         
            +
                file_contents = compile_regular_if(file_contents,temporary_nila_file)
         
     | 
| 
       1841 
2098 
     | 
    
         | 
| 
       1842 
     | 
    
         
            -
                 
     | 
| 
      
 2099 
     | 
    
         
            +
                file_contents = compile_regular_while(file_contents,temporary_nila_file)
         
     | 
| 
       1843 
2100 
     | 
    
         | 
| 
       1844 
     | 
    
         
            -
                 
     | 
| 
      
 2101 
     | 
    
         
            +
                file_contents = compile_inline_conditionals(file_contents,temporary_nila_file)
         
     | 
| 
       1845 
2102 
     | 
    
         | 
| 
       1846 
     | 
    
         
            -
                 
     | 
| 
      
 2103 
     | 
    
         
            +
                return file_contents
         
     | 
| 
       1847 
2104 
     | 
    
         | 
| 
       1848 
2105 
     | 
    
         
             
              end
         
     | 
| 
       1849 
2106 
     | 
    
         | 
| 
         @@ -1867,7 +2124,7 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       1867 
2124 
     | 
    
         | 
| 
       1868 
2125 
     | 
    
         
             
                end
         
     | 
| 
       1869 
2126 
     | 
    
         | 
| 
       1870 
     | 
    
         
            -
                reject_regexp = /(function |Euuf |if |else|elsuf|switch |case|while |for )/
         
     | 
| 
      
 2127 
     | 
    
         
            +
                reject_regexp = /(function |Euuf |if |else|elsuf|switch |case|while |whaaleskey |for )/
         
     | 
| 
       1871 
2128 
     | 
    
         | 
| 
       1872 
2129 
     | 
    
         
             
                modified_file_contents = []
         
     | 
| 
       1873 
2130 
     | 
    
         | 
| 
         @@ -1921,7 +2178,85 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       1921 
2178 
     | 
    
         | 
| 
       1922 
2179 
     | 
    
         
             
              end
         
     | 
| 
       1923 
2180 
     | 
    
         | 
| 
       1924 
     | 
    
         
            -
              def  
     | 
| 
      
 2181 
     | 
    
         
            +
              def compile_comments(input_file_contents,comments,temporary_nila_file)
         
     | 
| 
      
 2182 
     | 
    
         
            +
             
     | 
| 
      
 2183 
     | 
    
         
            +
                #This method converts Nila comments into pure Javascript comments. This method
         
     | 
| 
      
 2184 
     | 
    
         
            +
                #handles both single line and multiline comments.
         
     | 
| 
      
 2185 
     | 
    
         
            +
             
     | 
| 
      
 2186 
     | 
    
         
            +
                file_contents_as_string = input_file_contents.join
         
     | 
| 
      
 2187 
     | 
    
         
            +
             
     | 
| 
      
 2188 
     | 
    
         
            +
                single_line_comments = comments[0]
         
     | 
| 
      
 2189 
     | 
    
         
            +
             
     | 
| 
      
 2190 
     | 
    
         
            +
                multiline_comments = comments[1]
         
     | 
| 
      
 2191 
     | 
    
         
            +
             
     | 
| 
      
 2192 
     | 
    
         
            +
                single_line_comment_counter = 1
         
     | 
| 
      
 2193 
     | 
    
         
            +
             
     | 
| 
      
 2194 
     | 
    
         
            +
                multi_line_comment_counter = 1
         
     | 
| 
      
 2195 
     | 
    
         
            +
             
     | 
| 
      
 2196 
     | 
    
         
            +
                ignorable_keywords = [/if/,/while/,/function/]
         
     | 
| 
      
 2197 
     | 
    
         
            +
             
     | 
| 
      
 2198 
     | 
    
         
            +
                dummy_replacement_words = ["eeuuff","whaalesskkey","conffoolotion"]
         
     | 
| 
      
 2199 
     | 
    
         
            +
             
     | 
| 
      
 2200 
     | 
    
         
            +
                for x in 0...single_line_comments.length
         
     | 
| 
      
 2201 
     | 
    
         
            +
             
     | 
| 
      
 2202 
     | 
    
         
            +
                  current_singleline_comment = "--single_line_comment[#{single_line_comment_counter}]"
         
     | 
| 
      
 2203 
     | 
    
         
            +
             
     | 
| 
      
 2204 
     | 
    
         
            +
                  replacement_singleline_string = single_line_comments[x].sub("#","//")
         
     | 
| 
      
 2205 
     | 
    
         
            +
             
     | 
| 
      
 2206 
     | 
    
         
            +
                  ignorable_keywords.each_with_index do |keyword,index|
         
     | 
| 
      
 2207 
     | 
    
         
            +
             
     | 
| 
      
 2208 
     | 
    
         
            +
                    if replacement_singleline_string.index(keyword) != nil
         
     | 
| 
      
 2209 
     | 
    
         
            +
             
     | 
| 
      
 2210 
     | 
    
         
            +
                      replacement_singleline_string = replacement_singleline_string.sub(keyword.inspect[1...-1],dummy_replacement_words[index])
         
     | 
| 
      
 2211 
     | 
    
         
            +
             
     | 
| 
      
 2212 
     | 
    
         
            +
                    end
         
     | 
| 
      
 2213 
     | 
    
         
            +
             
     | 
| 
      
 2214 
     | 
    
         
            +
                  end
         
     | 
| 
      
 2215 
     | 
    
         
            +
             
     | 
| 
      
 2216 
     | 
    
         
            +
                  file_contents_as_string = file_contents_as_string.sub(current_singleline_comment,replacement_singleline_string)
         
     | 
| 
      
 2217 
     | 
    
         
            +
             
     | 
| 
      
 2218 
     | 
    
         
            +
                  single_line_comment_counter += 1
         
     | 
| 
      
 2219 
     | 
    
         
            +
             
     | 
| 
      
 2220 
     | 
    
         
            +
             
     | 
| 
      
 2221 
     | 
    
         
            +
                end
         
     | 
| 
      
 2222 
     | 
    
         
            +
             
     | 
| 
      
 2223 
     | 
    
         
            +
                for y in 0...multiline_comments.length
         
     | 
| 
      
 2224 
     | 
    
         
            +
             
     | 
| 
      
 2225 
     | 
    
         
            +
                  current_multiline_comment = "--multiline_comment[#{multi_line_comment_counter}]"
         
     | 
| 
      
 2226 
     | 
    
         
            +
             
     | 
| 
      
 2227 
     | 
    
         
            +
                  replacement_multiline_string = multiline_comments[y].sub("=begin","/*\n")
         
     | 
| 
      
 2228 
     | 
    
         
            +
             
     | 
| 
      
 2229 
     | 
    
         
            +
                  replacement_multiline_string = replacement_multiline_string.sub("=end","\n*/")
         
     | 
| 
      
 2230 
     | 
    
         
            +
             
     | 
| 
      
 2231 
     | 
    
         
            +
                  ignorable_keywords.each_with_index do |keyword,index|
         
     | 
| 
      
 2232 
     | 
    
         
            +
             
     | 
| 
      
 2233 
     | 
    
         
            +
                    if replacement_multiline_string.index(keyword) != nil
         
     | 
| 
      
 2234 
     | 
    
         
            +
             
     | 
| 
      
 2235 
     | 
    
         
            +
                      replacement_multiline_string = replacement_multiline_string.sub(keyword.inspect[1...-1],dummy_replacement_words[index])
         
     | 
| 
      
 2236 
     | 
    
         
            +
             
     | 
| 
      
 2237 
     | 
    
         
            +
                    end
         
     | 
| 
      
 2238 
     | 
    
         
            +
             
     | 
| 
      
 2239 
     | 
    
         
            +
                  end
         
     | 
| 
      
 2240 
     | 
    
         
            +
             
     | 
| 
      
 2241 
     | 
    
         
            +
                  file_contents_as_string = file_contents_as_string.sub(current_multiline_comment,replacement_multiline_string)
         
     | 
| 
      
 2242 
     | 
    
         
            +
             
     | 
| 
      
 2243 
     | 
    
         
            +
                  multi_line_comment_counter += 1
         
     | 
| 
      
 2244 
     | 
    
         
            +
             
     | 
| 
      
 2245 
     | 
    
         
            +
                end
         
     | 
| 
      
 2246 
     | 
    
         
            +
             
     | 
| 
      
 2247 
     | 
    
         
            +
                file_id = open(temporary_nila_file, 'w')
         
     | 
| 
      
 2248 
     | 
    
         
            +
             
     | 
| 
      
 2249 
     | 
    
         
            +
                file_id.write(file_contents_as_string)
         
     | 
| 
      
 2250 
     | 
    
         
            +
             
     | 
| 
      
 2251 
     | 
    
         
            +
                file_id.close()
         
     | 
| 
      
 2252 
     | 
    
         
            +
             
     | 
| 
      
 2253 
     | 
    
         
            +
                line_by_line_contents = read_file_line_by_line(temporary_nila_file)
         
     | 
| 
      
 2254 
     | 
    
         
            +
             
     | 
| 
      
 2255 
     | 
    
         
            +
                line_by_line_contents
         
     | 
| 
      
 2256 
     | 
    
         
            +
             
     | 
| 
      
 2257 
     | 
    
         
            +
              end
         
     | 
| 
      
 2258 
     | 
    
         
            +
             
     | 
| 
      
 2259 
     | 
    
         
            +
              def pretty_print_javascript(javascript_file_contents,temporary_nila_file,comments)
         
     | 
| 
       1925 
2260 
     | 
    
         | 
| 
       1926 
2261 
     | 
    
         
             
                def reset_tabs(input_file_contents)
         
     | 
| 
       1927 
2262 
     | 
    
         | 
| 
         @@ -1981,22 +2316,6 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       1981 
2316 
     | 
    
         | 
| 
       1982 
2317 
     | 
    
         
             
                end
         
     | 
| 
       1983 
2318 
     | 
    
         | 
| 
       1984 
     | 
    
         
            -
                def previous_formatting(input_string,tab_counter,temporary_nila_file)
         
     | 
| 
       1985 
     | 
    
         
            -
             
     | 
| 
       1986 
     | 
    
         
            -
                  string_as_array = convert_string_to_array(input_string,temporary_nila_file)
         
     | 
| 
       1987 
     | 
    
         
            -
             
     | 
| 
       1988 
     | 
    
         
            -
                  modified_array = []
         
     | 
| 
       1989 
     | 
    
         
            -
             
     | 
| 
       1990 
     | 
    
         
            -
                  string_as_array.each do |line|
         
     | 
| 
       1991 
     | 
    
         
            -
             
     | 
| 
       1992 
     | 
    
         
            -
                    modified_array << "  "*tab_counter + line
         
     | 
| 
       1993 
     | 
    
         
            -
             
     | 
| 
       1994 
     | 
    
         
            -
                  end
         
     | 
| 
       1995 
     | 
    
         
            -
             
     | 
| 
       1996 
     | 
    
         
            -
                  return modified_array.join
         
     | 
| 
       1997 
     | 
    
         
            -
             
     | 
| 
       1998 
     | 
    
         
            -
                end
         
     | 
| 
       1999 
     | 
    
         
            -
             
     | 
| 
       2000 
2319 
     | 
    
         
             
                def fix_newlines(file_contents)
         
     | 
| 
       2001 
2320 
     | 
    
         | 
| 
       2002 
2321 
     | 
    
         
             
                  def extract_blocks(file_contents)
         
     | 
| 
         @@ -2216,10 +2535,28 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       2216 
2535 
     | 
    
         | 
| 
       2217 
2536 
     | 
    
         
             
                end
         
     | 
| 
       2218 
2537 
     | 
    
         | 
| 
      
 2538 
     | 
    
         
            +
                def replace_ignored_words(input_string)
         
     | 
| 
      
 2539 
     | 
    
         
            +
             
     | 
| 
      
 2540 
     | 
    
         
            +
                  ignorable_keywords = [/if/,/while/,/function/]
         
     | 
| 
      
 2541 
     | 
    
         
            +
             
     | 
| 
      
 2542 
     | 
    
         
            +
                  dummy_replacement_words = ["eeuuff","whaalesskkey","conffoolotion"]
         
     | 
| 
      
 2543 
     | 
    
         
            +
             
     | 
| 
      
 2544 
     | 
    
         
            +
                  dummy_replacement_words.each_with_index do |word,index|
         
     | 
| 
      
 2545 
     | 
    
         
            +
             
     | 
| 
      
 2546 
     | 
    
         
            +
                    input_string = input_string.sub(word,ignorable_keywords[index].inspect[1...-1])
         
     | 
| 
      
 2547 
     | 
    
         
            +
             
     | 
| 
      
 2548 
     | 
    
         
            +
                  end
         
     | 
| 
      
 2549 
     | 
    
         
            +
             
     | 
| 
      
 2550 
     | 
    
         
            +
                  return input_string
         
     | 
| 
      
 2551 
     | 
    
         
            +
             
     | 
| 
      
 2552 
     | 
    
         
            +
                end
         
     | 
| 
      
 2553 
     | 
    
         
            +
             
     | 
| 
       2219 
2554 
     | 
    
         
             
                javascript_regexp = /(if |while |function |function\()/
         
     | 
| 
       2220 
2555 
     | 
    
         | 
| 
       2221 
2556 
     | 
    
         
             
                javascript_file_contents = javascript_file_contents.collect {|element| element.sub("Euuf","if")}
         
     | 
| 
       2222 
2557 
     | 
    
         | 
| 
      
 2558 
     | 
    
         
            +
                javascript_file_contents = javascript_file_contents.collect {|element| element.sub("whaaleskey","while")}
         
     | 
| 
      
 2559 
     | 
    
         
            +
             
     | 
| 
       2223 
2560 
     | 
    
         
             
                javascript_file_contents = reset_tabs(javascript_file_contents)
         
     | 
| 
       2224 
2561 
     | 
    
         | 
| 
       2225 
2562 
     | 
    
         
             
                starting_locations = []
         
     | 
| 
         @@ -2320,8 +2657,6 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       2320 
2657 
     | 
    
         | 
| 
       2321 
2658 
     | 
    
         
             
                  end
         
     | 
| 
       2322 
2659 
     | 
    
         | 
| 
       2323 
     | 
    
         
            -
             
     | 
| 
       2324 
     | 
    
         
            -
             
     | 
| 
       2325 
2660 
     | 
    
         
             
                  remaining_file_contents = ["(function() {\n",remaining_file_contents,"\n}).call(this);"].flatten
         
     | 
| 
       2326 
2661 
     | 
    
         | 
| 
       2327 
2662 
     | 
    
         
             
                  joined_file_contents = remaining_file_contents.join
         
     | 
| 
         @@ -2342,7 +2677,6 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       2342 
2677 
     | 
    
         | 
| 
       2343 
2678 
     | 
    
         
             
                end
         
     | 
| 
       2344 
2679 
     | 
    
         | 
| 
       2345 
     | 
    
         
            -
             
     | 
| 
       2346 
2680 
     | 
    
         
             
                file_id = open(temporary_nila_file, 'w')
         
     | 
| 
       2347 
2681 
     | 
    
         | 
| 
       2348 
2682 
     | 
    
         
             
                file_id.write(joined_file_contents)
         
     | 
| 
         @@ -2355,6 +2689,8 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       2355 
2689 
     | 
    
         | 
| 
       2356 
2690 
     | 
    
         
             
                line_by_line_contents = fix_syntax_indentation(line_by_line_contents)
         
     | 
| 
       2357 
2691 
     | 
    
         | 
| 
      
 2692 
     | 
    
         
            +
                line_by_line_contents = line_by_line_contents.collect {|element| replace_ignored_words(element)}
         
     | 
| 
      
 2693 
     | 
    
         
            +
             
     | 
| 
       2358 
2694 
     | 
    
         
             
                return line_by_line_contents
         
     | 
| 
       2359 
2695 
     | 
    
         | 
| 
       2360 
2696 
     | 
    
         
             
              end
         
     | 
| 
         @@ -2437,7 +2773,7 @@ def compile(input_file_path,*output_file_name) 
     | 
|
| 
       2437 
2773 
     | 
    
         | 
| 
       2438 
2774 
     | 
    
         
             
                file_contents = compile_comments(file_contents,comments,temp_file)
         
     | 
| 
       2439 
2775 
     | 
    
         | 
| 
       2440 
     | 
    
         
            -
                file_contents = pretty_print_javascript(file_contents,temp_file)
         
     | 
| 
      
 2776 
     | 
    
         
            +
                file_contents = pretty_print_javascript(file_contents,temp_file,comments)
         
     | 
| 
       2441 
2777 
     | 
    
         | 
| 
       2442 
2778 
     | 
    
         
             
                file_contents = compile_operators(file_contents)
         
     | 
| 
       2443 
2779 
     | 
    
         | 
    
        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.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.4.1.4
         
     | 
| 
       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-07- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2013-07-22 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: shark
         
     | 
| 
         @@ -68,6 +68,7 @@ files: 
     | 
|
| 
       68 
68 
     | 
    
         
             
            - shark/features/method_multiple_return.feature
         
     | 
| 
       69 
69 
     | 
    
         
             
            - shark/features/multiple_variable_initialization.feature
         
     | 
| 
       70 
70 
     | 
    
         
             
            - shark/features/regular_if.feature
         
     | 
| 
      
 71 
     | 
    
         
            +
            - shark/features/regular_while.feature
         
     | 
| 
       71 
72 
     | 
    
         
             
            - shark/features/unless_until.feature
         
     | 
| 
       72 
73 
     | 
    
         
             
            - shark/test_files/array_string_indexing.nila
         
     | 
| 
       73 
74 
     | 
    
         
             
            - shark/test_files/correct.js
         
     | 
| 
         @@ -76,6 +77,7 @@ files: 
     | 
|
| 
       76 
77 
     | 
    
         
             
            - shark/test_files/correct_initialization.js
         
     | 
| 
       77 
78 
     | 
    
         
             
            - shark/test_files/correct_multiple_return.js
         
     | 
| 
       78 
79 
     | 
    
         
             
            - shark/test_files/correct_regular_if.js
         
     | 
| 
      
 80 
     | 
    
         
            +
            - shark/test_files/correct_regular_while.js
         
     | 
| 
       79 
81 
     | 
    
         
             
            - shark/test_files/correct_return.js
         
     | 
| 
       80 
82 
     | 
    
         
             
            - shark/test_files/correct_single_return.js
         
     | 
| 
       81 
83 
     | 
    
         
             
            - shark/test_files/correct_unless_until.js
         
     | 
| 
         @@ -86,6 +88,7 @@ files: 
     | 
|
| 
       86 
88 
     | 
    
         
             
            - shark/test_files/no_return.nila
         
     | 
| 
       87 
89 
     | 
    
         
             
            - shark/test_files/perfect.js
         
     | 
| 
       88 
90 
     | 
    
         
             
            - shark/test_files/regular_if.nila
         
     | 
| 
      
 91 
     | 
    
         
            +
            - shark/test_files/regular_while.nila
         
     | 
| 
       89 
92 
     | 
    
         
             
            - shark/test_files/simple.nila
         
     | 
| 
       90 
93 
     | 
    
         
             
            - shark/test_files/single_return.nila
         
     | 
| 
       91 
94 
     | 
    
         
             
            - shark/test_files/unless_until.nila
         
     |