opal-erb 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,6 +1,7 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
  gemspec
3
3
 
4
4
  gem 'rake'
5
- gem 'opal', '~> 0.3.37'
6
5
  gem 'opal-spec'
6
+
7
+ gem 'opal', :github => 'opal/opal'
data/README.md CHANGED
@@ -1,14 +1,42 @@
1
1
  # opal-erb: ERB for Opal
2
2
 
3
+ Provides an ERB compiler and runtime for opal.
4
+
5
+ ## Installation
6
+
7
+ Add to your Gemfile:
8
+
9
+ ```ruby
10
+ gem 'opal-erb'
11
+ ```
12
+
13
+ Then require anywhere in your code:
14
+
15
+ ```ruby
16
+ require 'opal-gem' # if you don't Bundler.require
17
+ ```
18
+
3
19
  ## Usage
4
20
 
5
- opal-erb will automatically compile erb files using the `.opalerb` extension.
21
+ This gem adds support to sprockets to compile files with `.opalerb` extensions
22
+ automatically, so, if you have:
23
+
24
+ ```erb
25
+ <!-- my_template.opalerb -->
26
+ Hello <%= @name %>!
27
+ ```
28
+
29
+ ```ruby
30
+ # my_app.rb
6
31
 
7
- ## Running specs
32
+ require "my_template"
8
33
 
9
- You must have phantomjs installed.
34
+ @name = 'Adam'
10
35
 
11
- ```text
12
- $ bundle
13
- $ bundle exec rake
36
+ Template["my_template"].render self
37
+ # => "Hello Adam!"
14
38
  ```
39
+
40
+ ## License
41
+
42
+ MIT
data/Rakefile CHANGED
@@ -1,9 +1,5 @@
1
1
  require 'bundler'
2
2
  Bundler.require
3
- require File.expand_path('../vendor/opal-spec-ext.rb', __FILE__)
4
3
 
5
- Opal::Spec::RakeTask.new do |t|
6
- # t.port = 9999
7
- end
8
-
9
- task :default => ['opal:spec']
4
+ require 'opal/spec/rake_task'
5
+ Opal::Spec::RakeTask.new(:default)
@@ -1,5 +1,5 @@
1
1
  module Opal
2
2
  module ERB
3
- VERSION = '0.0.2'
3
+ VERSION = '0.1.0'
4
4
  end
5
5
  end
data/lib/opal/erb.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  require 'opal'
2
- require 'opal/erb/processor'
3
- require 'opal/erb/version'
2
+ require 'opal/parser'
4
3
 
5
4
  module Opal
6
5
  module ERB
@@ -15,8 +14,30 @@ module Opal
15
14
  code = "ERB.new('#{name}') do\nout = []\nout.<<(\"#{ body }\")\nout.join\nend\n"
16
15
  Opal.parse code
17
16
  end
17
+
18
+ class Processor < Tilt::Template
19
+ self.default_mime_type = 'application/javascript'
20
+
21
+ def self.engine_initialized?
22
+ true
23
+ end
24
+
25
+ def initialize_engine
26
+ require_template_library 'opal'
27
+ end
28
+
29
+ def prepare
30
+ # ...
31
+ end
32
+
33
+ def evaluate(scope, locals, &block)
34
+ Opal::ERB.parse data, scope.logical_path.sub(/^templates\//, '')
35
+ end
36
+ end
18
37
  end
19
38
  end
20
39
 
21
- # Just register our opal code path with opal build tools
22
- Opal.append_path File.join(File.dirname(__FILE__), '..', 'assets', 'javascripts')
40
+ Opal.append_path File.expand_path('../../../opal', __FILE__)
41
+
42
+ Tilt.register 'opalerb', Opal::ERB::Processor
43
+ Sprockets.register_engine '.opalerb', Opal::ERB::Processor
@@ -1,5 +1,5 @@
1
1
  # Provides Template module for registering erb templates
2
- require 'opal/template'
2
+ require 'opal-template'
3
3
 
4
4
  class ERB
5
5
  def initialize(name, &body)
@@ -16,3 +16,4 @@ class ERB
16
16
  ctx.instance_eval(&@body)
17
17
  end
18
18
  end
19
+
data/opal-erb.gemspec CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |s|
6
6
  s.version = Opal::ERB::VERSION
7
7
  s.authors = ['Adam Beynon']
8
8
  s.email = ['adam.beynon@gmail.com']
9
- s.homepage = 'http://opal.github.com/opal-erb'
9
+ s.homepage = 'http://github.com/adambeynon/opal-erb'
10
10
  s.summary = %q{ERB for Opal}
11
11
  s.description = %q{ERB for Opal}
12
12
  s.license = 'MIT-LICENSE'
@@ -16,5 +16,5 @@ Gem::Specification.new do |s|
16
16
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
17
  s.require_paths = ['lib']
18
18
 
19
- s.add_runtime_dependency 'opal', '~> 0.3.35'
19
+ s.add_runtime_dependency 'opal', '~> 0.3.44'
20
20
  end
@@ -1,7 +1,15 @@
1
+ require 'opal'
2
+ require 'erb'
3
+ #require 'opal-spec'
4
+
5
+ # Our 3 templates we use (we can require them as normal files)
6
+ require 'simple_erb_template'
7
+ require 'templates/prefixed'
8
+ require 'templates/foo/bar'
9
+
1
10
  describe "Opal ERB files" do
2
11
  it "should be defined by their filename on Template namespace" do
3
- Template['simple'].should be_kind_of(ERB)
4
- Template['quoted'].should be_kind_of(ERB)
12
+ Template['simple_erb_template'].should be_kind_of(ERB)
5
13
  end
6
14
 
7
15
  it "should remove 'templates/' path prefix" do
@@ -15,11 +23,11 @@ describe "Opal ERB files" do
15
23
 
16
24
  it "calling the block with a context should render the block" do
17
25
  @some_data = "hello"
18
- Template['simple'].render(self).should == "<div>hello</div>\n"
26
+ Template['simple_erb_template'].render(self).should == "<div>hello</div>\n"
19
27
  end
20
28
 
21
29
  it "should accept quotes in strings" do
22
30
  @name = "adam"
23
- Template['quoted'].render(self).should == "<div class=\"foo\">hello there adam</div>\n"
31
+ Template['foo/bar'].render(self).should == "<div class=\"foo\">hello there adam</div>\n"
24
32
  end
25
33
  end
@@ -0,0 +1 @@
1
+ <div><%= @some_data %></div>
@@ -1 +1 @@
1
- Deeply nested!
1
+ <div class="foo">hello <%= "there " + @name %></div>
@@ -1 +1 @@
1
- Prefixed content.
1
+ Prefixed content.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal-erb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
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-02-15 00:00:00.000000000 Z
12
+ date: 2013-06-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: opal
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.3.35
21
+ version: 0.3.44
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 0.3.35
29
+ version: 0.3.44
30
30
  description: ERB for Opal
31
31
  email:
32
32
  - adam.beynon@gmail.com
@@ -39,22 +39,16 @@ files:
39
39
  - README.md
40
40
  - Rakefile
41
41
  - config.ru
42
- - lib/assets/javascripts/opal-erb.rb
43
42
  - lib/opal-erb.rb
44
43
  - lib/opal/erb.rb
45
- - lib/opal/erb/processor.rb
46
44
  - lib/opal/erb/version.rb
47
45
  - opal-erb.gemspec
48
- - spec/quoted.opalerb
49
- - spec/simple.opalerb
50
- - spec/spec.rb
51
- - spec/spec_helper.rb
46
+ - opal/erb.rb
47
+ - spec/erb_spec.rb
48
+ - spec/simple_erb_template.opalerb
52
49
  - spec/templates/foo/bar.opalerb
53
50
  - spec/templates/prefixed.opalerb
54
- - vendor/opal-spec-ext.rb
55
- - vendor/opal-spec-runner.html
56
- - vendor/opal-spec-runner.js
57
- homepage: http://opal.github.com/opal-erb
51
+ homepage: http://github.com/adambeynon/opal-erb
58
52
  licenses:
59
53
  - MIT-LICENSE
60
54
  post_install_message:
@@ -75,14 +69,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
75
69
  version: '0'
76
70
  requirements: []
77
71
  rubyforge_project:
78
- rubygems_version: 1.8.24
72
+ rubygems_version: 1.8.23
79
73
  signing_key:
80
74
  specification_version: 3
81
75
  summary: ERB for Opal
82
76
  test_files:
83
- - spec/quoted.opalerb
84
- - spec/simple.opalerb
85
- - spec/spec.rb
86
- - spec/spec_helper.rb
77
+ - spec/erb_spec.rb
78
+ - spec/simple_erb_template.opalerb
87
79
  - spec/templates/foo/bar.opalerb
88
80
  - spec/templates/prefixed.opalerb
@@ -1,28 +0,0 @@
1
- require 'sprockets'
2
-
3
- module Opal
4
- module ERB
5
- class Processor < Tilt::Template
6
- self.default_mime_type = 'application/javascript'
7
-
8
- def self.engine_initialized?
9
- true
10
- end
11
-
12
- def initialize_engine
13
- require_template_library 'opal'
14
- end
15
-
16
- def prepare
17
- # ...
18
- end
19
-
20
- def evaluate(scope, locals, &block)
21
- Opal::ERB.parse data, scope.logical_path.sub(/^templates\//, '')
22
- end
23
- end
24
- end
25
- end
26
-
27
- Tilt.register 'opalerb', Opal::ERB::Processor
28
- Sprockets.register_engine '.opalerb', Opal::ERB::Processor
data/spec/quoted.opalerb DELETED
@@ -1 +0,0 @@
1
- <div class="foo">hello <%= "there " + @name %></div>
data/spec/simple.opalerb DELETED
@@ -1 +0,0 @@
1
- <div><%= @some_data %></div>
data/spec/spec_helper.rb DELETED
@@ -1,6 +0,0 @@
1
- #= require opal
2
- #= require opal-erb
3
- #= require opal-spec
4
- #= require_tree .
5
-
6
- Opal::Spec::Runner.autorun
@@ -1,74 +0,0 @@
1
- module Opal
2
- module Spec
3
- class Server
4
- class IndexHandler
5
- def initialize(app)
6
- @app = app
7
- end
8
-
9
- def call(env)
10
- if env['PATH_INFO'] == '/'
11
- [200, {'Content-Type' => 'text/html'}, [File.read('vendor/opal-spec-runner.html')]]
12
- else
13
- @app.call(env)
14
- end
15
- end
16
- end
17
-
18
- def initialize
19
- @app = Rack::Builder.app do
20
- map '/assets' do
21
- env = Sprockets::Environment.new
22
- Opal.paths.each { |p| env.append_path p }
23
- env.append_path 'spec'
24
- run env
25
- end
26
-
27
- use IndexHandler
28
- run Rack::Directory.new('.')
29
- end
30
- end
31
-
32
- def call(env)
33
- @app.call(env)
34
- end
35
- end
36
- end
37
- end
38
-
39
- module Opal
40
- module Spec
41
- class RakeTask
42
- include Rake::DSL if defined? Rake::DSL
43
-
44
- def initialize(name = "opal:spec")
45
- @name = name
46
- define
47
- end
48
-
49
- def define
50
- desc "Run opal specs"
51
- task @name do
52
- require 'rack'
53
- require 'webrick'
54
-
55
- server = fork do
56
- Rack::Server.start(:config => 'config.ru',
57
- :Port => 9999,
58
- :Logger => WEBrick::Log.new("/dev/null"),
59
- :AccessLog => [])
60
- end
61
-
62
- system("phantomjs vendor/opal-spec-runner.js \"http://localhost:9999/\"")
63
-
64
- success = $?.success?
65
-
66
- Process.kill(:SIGINT, server)
67
- Process.wait
68
-
69
- exit(1) unless success
70
- end
71
- end
72
- end
73
- end
74
- end
@@ -1,10 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>opal-spec: specs</title>
5
-
6
- </head>
7
- <body>
8
- <script src="/assets/spec_helper.js"></script>
9
- </body>
10
- </html>
@@ -1,40 +0,0 @@
1
- /*
2
- * Test runner for phantomjs
3
- */
4
- var args = phantom.args;
5
- var page = require('webpage').create();
6
-
7
- page.onConsoleMessage = function(msg) {
8
- console.log(msg);
9
- };
10
-
11
- page.onInitialized = function() {
12
- page.evaluate(function () {
13
- window.OPAL_SPEC_PHANTOM = true;
14
- });
15
- };
16
-
17
- page.open(args[0], function(status) {
18
- if (status !== 'success') {
19
- console.error("Cannot load: " + args[0]);
20
- phantom.exit(1);
21
- } else {
22
- var timeout = parseInt(args[1] || 60000, 10);
23
- var start = Date.now();
24
- var interval = setInterval(function() {
25
- if (Date.now() > start + timeout) {
26
- console.error("Specs timed out");
27
- phantom.exit(124);
28
- } else {
29
- var code = page.evaluate(function() {
30
- return window.OPAL_SPEC_CODE;
31
- });
32
-
33
- if (code === 0 || code === 1) {
34
- clearInterval(interval);
35
- phantom.exit(code);
36
- }
37
- }
38
- }, 500);
39
- }
40
- });