jspreprocessor 0.0.1 → 0.0.2

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.
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