jspreprocessor 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3e1d55e3120cf8e8cdbfc90f37a860937196ab10
4
- data.tar.gz: 1a4acb9054f3baaf2af73b196958f9e14d5c90d7
3
+ metadata.gz: c3aabf8fb6beae130e85c9e0f529f615a470ab5b
4
+ data.tar.gz: bbebd9409414d67ebba59e0f5706f49efef7898a
5
5
  SHA512:
6
- metadata.gz: 3dab0fb30a16d23b639365563eba102fb16ae5c31f572750294a3333a3e0a44d9247e5e68549b3eb0da089430555b32c5ef834d48a7b718c84000241c48bbfc1
7
- data.tar.gz: b3bd449a877f29d9eafa2b291a8a63b7e38045ae4365b726ddd13718cf83238980c8e6e7033e3fbf21ebb77ab439ae2e223ca59acce5c3a3ca5340211fe7bed4
6
+ metadata.gz: 2465000b728254bd82b0c2518caf981a21d2709341fedbbfe772397faf914b172721d34fb9f6f7591487af02c4798d1eb9d7e50331cbdf4f6b84a3b634bcc45a
7
+ data.tar.gz: 68c62a225f2066cf36992a2b03fd73c6024d3e6fcc7aede687af3067231051e3fedd7b57396faaba0260b9a68d001ceb4d91ae374640664a4a9bac5d417f7df9
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "jspreprocessor"
7
- spec.version = '0.0.1'
7
+ spec.version = '0.0.2'
8
8
  spec.authors = ["Caleb Albritton"]
9
9
  spec.email = ["ithinkincode@gmail.com"]
10
10
  spec.summary = %q{Like Browserify but the C way.}
data/README.md CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  Like Browserify but the C way.
4
4
  Include JavaScript files directly into your source code using #include 'somefile'
5
+ Use #define FOO bar to replace every instance of FOO with bar.
5
6
 
6
7
  ## Installation
7
8
 
@@ -30,6 +31,8 @@ Or install it yourself as:
30
31
 
31
32
  #include 'lib/stuff'
32
33
 
34
+ #define FOO bar
35
+
33
36
  var s = new Stuff();
34
37
  s.doStuff();
35
38
 
@@ -1,5 +1,6 @@
1
1
  var Other = function() {
2
2
  this.wat = function() {
3
3
  console.log('wat');
4
+ console.log('FOO');
4
5
  };
5
6
  };
@@ -1,8 +1,10 @@
1
1
  #include 'morestuff'
2
2
 
3
+ #define FOO BAR
4
+
3
5
  var Stuff = function() {
4
6
  this.doStuff = function() {
5
- console.log('Doing stuff');
7
+ console.log('Doing stuff FOO');
6
8
  return 2 + 2;
7
9
  };
8
10
  };
@@ -1,17 +1,33 @@
1
1
  class JSPreprocessor
2
2
 
3
+ def initialize
4
+ @defines = []
5
+ end
6
+
3
7
  def process(cwd, main_file)
4
8
  main = File.open(cwd + main_file).read.split "\n"
5
- compiled_file = recurse_includes(cwd, main).join "\n"
9
+ compiled_file = recurse_files(cwd, main).join "\n"
10
+ replace_defines compiled_file
6
11
  end
7
12
 
8
- def recurse_includes(cwd, file)
13
+ def recurse_files(cwd, file)
9
14
  file.each_with_index do |line, index|
10
15
  if line.include? '#include'
11
16
  to_include = cwd + line[10..-2] + '.js'
12
17
  next_wd = Pathname.new(to_include).dirname.to_s + '/'
13
- file[index] = recurse_includes next_wd, File.open(to_include).read.split("\n")
18
+ file[index] = recurse_files next_wd, File.open(to_include).read.split("\n")
19
+ elsif line.include? '#define'
20
+ @defines << line[8..-1].split(' ')
21
+ file.delete_at index
14
22
  end
15
23
  end
16
24
  end
25
+
26
+ def replace_defines(file)
27
+ @defines.each do |definition|
28
+ file.gsub! definition[0], definition[1]
29
+ end
30
+
31
+ file
32
+ end
17
33
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jspreprocessor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Caleb Albritton