nilac 0.0.3 → 0.0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -17
- data/Gemfile +4 -4
- data/LICENSE +21 -21
- data/README.md +4 -29
- data/Rakefile +2 -2
- data/bin/nilac +85 -14
- data/lib/nilac/version.rb +3 -3
- data/lib/nilac.rb +5 -5
- data/nilac.gemspec +17 -17
- metadata +2 -2
data/.gitignore
CHANGED
@@ -1,17 +1,17 @@
|
|
1
|
-
*.gem
|
2
|
-
*.rbc
|
3
|
-
.bundle
|
4
|
-
.config
|
5
|
-
.yardoc
|
6
|
-
Gemfile.lock
|
7
|
-
InstalledFiles
|
8
|
-
_yardoc
|
9
|
-
coverage
|
10
|
-
doc/
|
11
|
-
lib/bundler/man
|
12
|
-
pkg
|
13
|
-
rdoc
|
14
|
-
spec/reports
|
15
|
-
test/tmp
|
16
|
-
test/version_tmp
|
17
|
-
tmp
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
data/Gemfile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
source 'https://rubygems.org'
|
2
|
-
|
3
|
-
# Specify your gem's dependencies in nilac.gemspec
|
4
|
-
gemspec
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
# Specify your gem's dependencies in nilac.gemspec
|
4
|
+
gemspec
|
data/LICENSE
CHANGED
@@ -1,22 +1,22 @@
|
|
1
|
-
Copyright (c) 2013 Adhithya Rajasekaran
|
2
|
-
|
3
|
-
MIT License
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
-
a copy of this software and associated documentation files (the
|
7
|
-
"Software"), to deal in the Software without restriction, including
|
8
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
-
permit persons to whom the Software is furnished to do so, subject to
|
11
|
-
the following conditions:
|
12
|
-
|
13
|
-
The above copyright notice and this permission notice shall be
|
14
|
-
included in all copies or substantial portions of the Software.
|
15
|
-
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
1
|
+
Copyright (c) 2013 Adhithya Rajasekaran
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
22
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,29 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
## Installation
|
6
|
-
|
7
|
-
Add this line to your application's Gemfile:
|
8
|
-
|
9
|
-
gem 'nilac'
|
10
|
-
|
11
|
-
And then execute:
|
12
|
-
|
13
|
-
$ bundle
|
14
|
-
|
15
|
-
Or install it yourself as:
|
16
|
-
|
17
|
-
$ gem install nilac
|
18
|
-
|
19
|
-
## Usage
|
20
|
-
|
21
|
-
TODO: Write usage instructions here
|
22
|
-
|
23
|
-
## Contributing
|
24
|
-
|
25
|
-
1. Fork it
|
26
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
-
3. Commit your changes (`git commit -am 'Added some feature'`)
|
28
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
-
5. Create new Pull Request
|
1
|
+
nilac
|
2
|
+
=====
|
3
|
+
|
4
|
+
Nilac is the official compiler of Nila. Gem files for the compiler are hosted here.
|
data/Rakefile
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
#!/usr/bin/env rake
|
2
|
-
require "bundler/gem_tasks"
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
require "bundler/gem_tasks"
|
data/bin/nilac
CHANGED
@@ -22,6 +22,7 @@ def compile(input_file_path)
|
|
22
22
|
|
23
23
|
end
|
24
24
|
|
25
|
+
|
25
26
|
def extract_parsable_array(input_file_contents)
|
26
27
|
|
27
28
|
#This method finds and removes the __END__ keyword and the following lines in a Nila file.
|
@@ -155,12 +156,8 @@ def compile(input_file_path)
|
|
155
156
|
|
156
157
|
file_id.write(modified_file_contents)
|
157
158
|
|
158
|
-
file_id2.write("//Written in Nila and compiled to Javascript. Have fun!\n\n")
|
159
|
-
|
160
159
|
file_id.close()
|
161
160
|
|
162
|
-
file_id2.close()
|
163
|
-
|
164
161
|
line_by_line_contents = read_file_line_by_line(temporary_nila_file)
|
165
162
|
|
166
163
|
comments = multiline_comments.dup
|
@@ -209,6 +206,83 @@ def compile(input_file_path)
|
|
209
206
|
|
210
207
|
end
|
211
208
|
|
209
|
+
def compile_heredoc_strings(input_file_contents,temporary_nila_file)
|
210
|
+
|
211
|
+
#This method will compile all the Heredoc strings in Nila into pure
|
212
|
+
#Javascript strings. Ruby has two types of Heredocs. Currently, Nila doesn't support both of them.
|
213
|
+
#Here is an example of what Nila supports
|
214
|
+
|
215
|
+
#long_passage = <<-ipsumtext
|
216
|
+
#
|
217
|
+
#Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
|
218
|
+
#incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
|
219
|
+
#exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
|
220
|
+
#irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
|
221
|
+
#pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
|
222
|
+
#deserunt mollit anim id est laborum.
|
223
|
+
#
|
224
|
+
#ipsumtext
|
225
|
+
|
226
|
+
def find_all_matching_indices(input_string,pattern)
|
227
|
+
|
228
|
+
locations = []
|
229
|
+
|
230
|
+
index = input_string.index(pattern)
|
231
|
+
|
232
|
+
while index != nil
|
233
|
+
|
234
|
+
locations << index
|
235
|
+
|
236
|
+
index = input_string.index(pattern,index+1)
|
237
|
+
|
238
|
+
|
239
|
+
end
|
240
|
+
|
241
|
+
return locations
|
242
|
+
|
243
|
+
|
244
|
+
end
|
245
|
+
|
246
|
+
preserve_formatting = %w{ \n \t }
|
247
|
+
|
248
|
+
joined_file_contents = input_file_contents.join
|
249
|
+
|
250
|
+
modified_file_contents = joined_file_contents.dup
|
251
|
+
|
252
|
+
heredoc_start_locations = find_all_matching_indices(joined_file_contents,"<<-")
|
253
|
+
|
254
|
+
heredoc_start_locations.each do |location|
|
255
|
+
|
256
|
+
string_extract = joined_file_contents[location..-1]
|
257
|
+
|
258
|
+
end_of_first_line = string_extract.index("\n")
|
259
|
+
|
260
|
+
name_of_heredoc = string_extract[3...end_of_first_line].rstrip
|
261
|
+
|
262
|
+
heredoc_start,heredoc_end = find_all_matching_indices(string_extract,name_of_heredoc)
|
263
|
+
|
264
|
+
heredoc = string_extract[heredoc_start..heredoc_end+name_of_heredoc.length-1]
|
265
|
+
|
266
|
+
heredoc_content = heredoc.split(name_of_heredoc)
|
267
|
+
|
268
|
+
heredoc_content = heredoc_content[1].lstrip.rstrip.gsub("\n","\\n").gsub("\t","\\t")
|
269
|
+
|
270
|
+
modified_file_contents = modified_file_contents.sub(string_extract[heredoc_start-3..heredoc_end+name_of_heredoc.length-1],"\""+heredoc_content+"\"")
|
271
|
+
|
272
|
+
end
|
273
|
+
|
274
|
+
file_id = open(temporary_nila_file, 'w')
|
275
|
+
|
276
|
+
file_id.write(modified_file_contents)
|
277
|
+
|
278
|
+
file_id.close()
|
279
|
+
|
280
|
+
line_by_line_contents = read_file_line_by_line(temporary_nila_file)
|
281
|
+
|
282
|
+
return line_by_line_contents
|
283
|
+
|
284
|
+
end
|
285
|
+
|
212
286
|
def compile_interpolated_strings(input_file_contents)
|
213
287
|
|
214
288
|
modified_file_contents = input_file_contents.dup
|
@@ -470,9 +544,13 @@ def compile(input_file_path)
|
|
470
544
|
|
471
545
|
line_by_line_contents = read_file_line_by_line(temporary_nila_file)
|
472
546
|
|
473
|
-
|
547
|
+
if variables.length > 0
|
474
548
|
|
475
|
-
|
549
|
+
variable_declaration_string = "var " + variables.uniq.join(", ") + "\n\n"
|
550
|
+
|
551
|
+
line_by_line_contents = [variable_declaration_string,line_by_line_contents].flatten
|
552
|
+
|
553
|
+
end
|
476
554
|
|
477
555
|
return variables.uniq,line_by_line_contents
|
478
556
|
|
@@ -1334,7 +1412,7 @@ def compile(input_file_path)
|
|
1334
1412
|
|
1335
1413
|
file_contents = split_semicolon_seperated_expressions(file_contents)
|
1336
1414
|
|
1337
|
-
|
1415
|
+
file_contents = compile_heredoc_strings(file_contents,temp_file)
|
1338
1416
|
|
1339
1417
|
file_contents = compile_interpolated_strings(file_contents)
|
1340
1418
|
|
@@ -1477,12 +1555,5 @@ OptionParser.new do |opts|
|
|
1477
1555
|
|
1478
1556
|
end
|
1479
1557
|
|
1480
|
-
opts.on("-v", "--version", "Version of Nilac") do
|
1481
|
-
|
1482
|
-
version_number = "0.0.1"
|
1483
|
-
|
1484
|
-
puts "Current Nilac Version: #{version_number}"
|
1485
|
-
|
1486
|
-
end
|
1487
1558
|
|
1488
1559
|
end.parse!
|
data/lib/nilac/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
module Nilac
|
2
|
-
VERSION = "0.0.3"
|
3
|
-
end
|
1
|
+
module Nilac
|
2
|
+
VERSION = "0.0.3.1"
|
3
|
+
end
|
data/lib/nilac.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
require "nilac/version"
|
2
|
-
|
3
|
-
module Nilac
|
4
|
-
|
5
|
-
end
|
1
|
+
require "nilac/version"
|
2
|
+
|
3
|
+
module Nilac
|
4
|
+
|
5
|
+
end
|
data/nilac.gemspec
CHANGED
@@ -1,17 +1,17 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
require File.expand_path('../lib/nilac/version', __FILE__)
|
3
|
-
|
4
|
-
Gem::Specification.new do |gem|
|
5
|
-
gem.authors = ["Adhithya Rajasekaran"]
|
6
|
-
gem.email = ["adhithyan15@gmail.com"]
|
7
|
-
gem.description = %q{Nilac is the official compiler of Nila language}
|
8
|
-
gem.summary = %q{Nilac compiles Nila files into line for line Javascript.}
|
9
|
-
gem.homepage = "http://adhithyan15.github.com/nila"
|
10
|
-
|
11
|
-
gem.files = `git ls-files`.split($\)
|
12
|
-
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
13
|
-
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
14
|
-
gem.name = "nilac"
|
15
|
-
gem.require_paths = ["lib"]
|
16
|
-
gem.version = Nilac::VERSION
|
17
|
-
end
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/nilac/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.authors = ["Adhithya Rajasekaran"]
|
6
|
+
gem.email = ["adhithyan15@gmail.com"]
|
7
|
+
gem.description = %q{Nilac is the official compiler of Nila language}
|
8
|
+
gem.summary = %q{Nilac compiles Nila files into line for line Javascript.}
|
9
|
+
gem.homepage = "http://adhithyan15.github.com/nila"
|
10
|
+
|
11
|
+
gem.files = `git ls-files`.split($\)
|
12
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
13
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
14
|
+
gem.name = "nilac"
|
15
|
+
gem.require_paths = ["lib"]
|
16
|
+
gem.version = Nilac::VERSION
|
17
|
+
end
|
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.3
|
4
|
+
version: 0.0.3.1
|
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-
|
12
|
+
date: 2013-05-06 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Nilac is the official compiler of Nila language
|
15
15
|
email:
|