opal-rails 0.0.1.a → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/opal-rails.rb CHANGED
@@ -1 +1,5 @@
1
- require 'opal/rails'
1
+ require 'opal'
2
+ require 'opal/rails/engine'
3
+ require 'opal/rails/template_handler'
4
+ require 'opal/rails/processor'
5
+ require 'opal/rails/version'
@@ -1,12 +1,9 @@
1
- # Configure Rails 3.1 to have assert_select_jquery() in tests
1
+ require 'rails/engine'
2
+
2
3
  module Opal
3
4
  module Rails
4
-
5
5
  class Engine < ::Rails::Engine
6
- # config.before_configuration do
7
- # require "jquery/assert_select" if ::Rails.env.test?
8
- # end
6
+ config.app_generators.javascript_engine :opal
9
7
  end
10
-
11
8
  end
12
9
  end
@@ -0,0 +1,31 @@
1
+ require 'sprockets'
2
+
3
+ module Opal
4
+ module Rails
5
+ # Opal template implementation. See:
6
+ # http://opalrb.org/
7
+ #
8
+ # Opal templates do not support object scopes, locals, or yield.
9
+ class Processor < Tilt::Template
10
+ self.default_mime_type = 'application/javascript'
11
+
12
+ def self.engine_initialized?
13
+ defined? ::Opal
14
+ end
15
+
16
+ def initialize_engine
17
+ require_template_library 'opal'
18
+ end
19
+
20
+ def prepare
21
+ end
22
+
23
+ def evaluate(scope, locals, &block)
24
+ Opal.parse(data)
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ Tilt.register 'opal', Opal::Rails::Processor
31
+ Sprockets.register_engine '.opal', Opal::Rails::Processor
@@ -0,0 +1,15 @@
1
+ module Opal
2
+ module Rails
3
+ class TemplateHandler
4
+ def self.call(template)
5
+ escaped = template.source.gsub(':', '\:')
6
+ string = '%q:' + escaped + ':;'
7
+ "Opal.parse(#{string})"
8
+ end
9
+ end
10
+ end
11
+ end
12
+
13
+ ActiveSupport.on_load(:action_view) do
14
+ ActionView::Template.register_template_handler :opal, Opal::Rails::TemplateHandler
15
+ end
@@ -1,5 +1,5 @@
1
1
  module Opal
2
2
  module Rails
3
- VERSION = '0.0.1.a'
3
+ VERSION = '0.0.2'
4
4
  end
5
5
  end
data/opal-rails.gemspec CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |s|
6
6
  s.name = 'opal-rails'
7
7
  s.version = Opal::Rails::VERSION
8
8
  s.authors = ['Elia Schito']
9
- s.email = ['perlelia@gmail.com']
9
+ s.email = ['elia@schito.me']
10
10
  s.homepage = ''
11
11
  s.summary = %q{Rails bindings for opal JS engine}
12
12
  s.description = %q{Rails bindings for opal JS engine}
@@ -18,10 +18,9 @@ Gem::Specification.new do |s|
18
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
19
  s.require_paths = ['lib']
20
20
 
21
- s.add_runtime_dependency 'opal'
22
- s.add_runtime_dependency 'railties', '~> 3.1.0.rc1'
23
- s.add_runtime_dependency 'actionpack', '~> 3.1.0.rc1'
24
- s.add_runtime_dependency 'sprockets', '>= 2.0.0.beta.9'
21
+ s.add_runtime_dependency 'opal', '0.3.18'
22
+ s.add_runtime_dependency 'railties', '~> 3.2.0'
23
+ s.add_runtime_dependency 'sprockets', '~> 2.1'
25
24
 
26
- s.add_development_dependency 'rspec', '~> 2.4'
25
+ s.add_development_dependency 'rspec', '~> 2.4'
27
26
  end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe Opal::Rails::Processor do
4
+
5
+ it "is registered for '.opal' files" do
6
+ Tilt['test.opal'].should eq(Opal::Rails::Processor)
7
+ end
8
+
9
+ it "compiles and evaluates the template on #render" do
10
+ template = Opal::Rails::Processor.new { |t| "puts 'Hello, World!'\n" }
11
+ template.render.should include('this.$puts("Hello, World!")')
12
+ end
13
+
14
+ it "can be rendered more than once" do
15
+ template = Opal::Rails::Processor.new { |t| "puts 'Hello, World!'\n" }
16
+ 3.times { template.render.should include('this.$puts("Hello, World!")') }
17
+ end
18
+ end
data/spec/spec_helper.rb CHANGED
@@ -1 +1,2 @@
1
- $:.unshift File.expand_path('../../lib')
1
+ $:.unshift File.expand_path('../../lib')
2
+ require 'opal-rails'
metadata CHANGED
@@ -1,63 +1,52 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.a
5
- prerelease: 6
4
+ version: 0.0.2
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Elia Schito
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-08-22 00:00:00.000000000Z
12
+ date: 2012-05-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: opal
16
- requirement: &70164821947080 !ruby/object:Gem::Requirement
16
+ requirement: &70300436008300 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - =
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: 0.3.18
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70164821947080
24
+ version_requirements: *70300436008300
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: railties
27
- requirement: &70164821946580 !ruby/object:Gem::Requirement
27
+ requirement: &70300436022500 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
31
31
  - !ruby/object:Gem::Version
32
- version: 3.1.0.rc1
32
+ version: 3.2.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70164821946580
36
- - !ruby/object:Gem::Dependency
37
- name: actionpack
38
- requirement: &70164821946080 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ~>
42
- - !ruby/object:Gem::Version
43
- version: 3.1.0.rc1
44
- type: :runtime
45
- prerelease: false
46
- version_requirements: *70164821946080
35
+ version_requirements: *70300436022500
47
36
  - !ruby/object:Gem::Dependency
48
37
  name: sprockets
49
- requirement: &70164821945620 !ruby/object:Gem::Requirement
38
+ requirement: &70300436021280 !ruby/object:Gem::Requirement
50
39
  none: false
51
40
  requirements:
52
- - - ! '>='
41
+ - - ~>
53
42
  - !ruby/object:Gem::Version
54
- version: 2.0.0.beta.9
43
+ version: '2.1'
55
44
  type: :runtime
56
45
  prerelease: false
57
- version_requirements: *70164821945620
46
+ version_requirements: *70300436021280
58
47
  - !ruby/object:Gem::Dependency
59
48
  name: rspec
60
- requirement: &70164821945160 !ruby/object:Gem::Requirement
49
+ requirement: &70300436019840 !ruby/object:Gem::Requirement
61
50
  none: false
62
51
  requirements:
63
52
  - - ~>
@@ -65,10 +54,10 @@ dependencies:
65
54
  version: '2.4'
66
55
  type: :development
67
56
  prerelease: false
68
- version_requirements: *70164821945160
57
+ version_requirements: *70300436019840
69
58
  description: Rails bindings for opal JS engine
70
59
  email:
71
- - perlelia@gmail.com
60
+ - elia@schito.me
72
61
  executables: []
73
62
  extensions: []
74
63
  extra_rdoc_files: []
@@ -76,19 +65,17 @@ files:
76
65
  - .gitignore
77
66
  - .rspec
78
67
  - Gemfile
68
+ - README.md
79
69
  - Rakefile
70
+ - lib/assets/javascripts/opal.js
80
71
  - lib/opal-rails.rb
81
- - lib/opal/rails.rb
82
72
  - lib/opal/rails/engine.rb
83
- - lib/opal/rails/monkey_patches.rb
84
- - lib/opal/rails/railtie.rb
85
- - lib/opal/rails/template_handlers.rb
73
+ - lib/opal/rails/processor.rb
74
+ - lib/opal/rails/template_handler.rb
86
75
  - lib/opal/rails/version.rb
87
- - lib/tilt/opal.rb
88
76
  - opal-rails.gemspec
77
+ - spec/opal/rails/processor_spec.rb
89
78
  - spec/spec_helper.rb
90
- - spec/tilt/opal_spec.rb
91
- - vendor/assets/javascripts/opal.js
92
79
  homepage: ''
93
80
  licenses: []
94
81
  post_install_message:
@@ -104,15 +91,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
104
91
  required_rubygems_version: !ruby/object:Gem::Requirement
105
92
  none: false
106
93
  requirements:
107
- - - ! '>'
94
+ - - ! '>='
108
95
  - !ruby/object:Gem::Version
109
- version: 1.3.1
96
+ version: '0'
110
97
  requirements: []
111
98
  rubyforge_project: opal-rails
112
- rubygems_version: 1.8.6
99
+ rubygems_version: 1.8.17
113
100
  signing_key:
114
101
  specification_version: 3
115
102
  summary: Rails bindings for opal JS engine
116
103
  test_files:
104
+ - spec/opal/rails/processor_spec.rb
117
105
  - spec/spec_helper.rb
118
- - spec/tilt/opal_spec.rb
106
+ has_rdoc:
data/lib/opal/rails.rb DELETED
@@ -1,10 +0,0 @@
1
- module Opal
2
- module Rails
3
- end
4
- end
5
-
6
- # require 'opal/rails/railtie'
7
- require 'opal/rails/engine'
8
- require 'opal/rails/template_handlers'
9
- require 'opal/rails/monkey_patches'
10
- require 'opal/rails/version'
@@ -1,36 +0,0 @@
1
- # module Opal::Rails::OpalContext
2
- # attr_accessor :opal_config
3
- # end
4
- #
5
- # module Opal::Rails::SprocketsConfig
6
- # def self.included(base)
7
- # base.alias_method_chain :asset_environment, :opal_config
8
- # end
9
- #
10
- # def asset_environment_with_opal_config(app, *args)
11
- # env = asset_environment_without_opal_config(app, *args)
12
- # env.context_class.extend(Opal::Rails::OpalContext)
13
- # env.context_class.opal_config = app.config.opal
14
- # env
15
- # end
16
- # end
17
- #
18
- # begin
19
- # # Before sprockets was extracted from rails
20
- # require 'sprockets/railtie'
21
- # module Sprockets
22
- # class Railtie < ::Rails::Railtie
23
- # include Opal::Rails::SprocketsConfig
24
- # end
25
- # end
26
- # rescue LoadError
27
- # # After sprockets was extracted into sprockets-rails
28
- # require 'sprockets/rails/railtie'
29
- # module Sprockets
30
- # module Rails
31
- # class Railtie < ::Rails::Railtie
32
- # include Opal::Rails::SprocketsConfig
33
- # end
34
- # end
35
- # end
36
- # end
@@ -1,46 +0,0 @@
1
- module Opal::Rails
2
- class Railtie < ::Rails::Railtie
3
- config.opal = ActiveSupport::OrderedOptions.new
4
-
5
- # # Establish static configuration defaults
6
- # # Emit scss files during stylesheet generation of scaffold
7
- # config.sass.preferred_syntax = :scss
8
- # # Use expanded output instead of the sass default of :nested
9
- # config.sass.style = :expanded
10
- # # Write sass cache files to tmp/sass-cache for performance
11
- # config.sass.cache = true
12
- # # Read sass cache files from tmp/sass-cache for performance
13
- # config.sass.read_cache = true
14
- # # Display line comments above each selector as a debugging aid
15
- # config.sass.line_comments = true
16
- # # Initialize the load paths to an empty array
17
- # config.sass.load_paths = []
18
- # # Send Sass logs to Rails.logger
19
- # config.sass.logger = Sass::Rails::Logger.new
20
- #
21
- # initializer :setup_sass do |app|
22
- # # Set the stylesheet engine to the preferred syntax
23
- # config.app_generators.stylesheet_engine syntax
24
- #
25
- # # Set the sass cache location to tmp/sass-cache
26
- # config.sass.cache_location = File.join(Rails.root, "tmp/sass-cache")
27
- #
28
- # # Establish configuration defaults that are evironmental in nature
29
- # if config.sass.full_exception.nil?
30
- # # Display a stack trace in the css output when in development-like environments.
31
- # config.sass.full_exception = app.config.consider_all_requests_local
32
- # end
33
- # end
34
- #
35
- # initializer :setup_compression do |app|
36
- # if app.config.assets.compress
37
- # # Use sass's css_compressor
38
- # app.config.assets.css_compressor = CssCompressor.new
39
- # end
40
- # end
41
- #
42
- # config.after_initialize do |app|
43
- # Sass::logger = app.config.sass.logger
44
- # end
45
- end
46
- end
@@ -1,34 +0,0 @@
1
- require 'sprockets'
2
- require 'tilt/opal'
3
-
4
- module Opal::Rails
5
-
6
- class Resolver
7
-
8
- attr_accessor :context
9
-
10
- def initialize(context)
11
- @context = context
12
- end
13
-
14
- def resolve(path, content_type = :self)
15
- options = {}
16
- options[:content_type] = content_type unless content_type.nil?
17
- context.resolve(path, options)
18
- rescue Sprockets::FileNotFound, Sprockets::ContentTypeMismatch
19
- nil
20
- end
21
-
22
- def public_path(path, scope)
23
- context.asset_paths.compute_public_path(path, scope)
24
- end
25
-
26
- def process(path)
27
- context.environment[path].to_s
28
- end
29
- end
30
-
31
- end
32
-
33
- Sprockets::Engines #invoke autoloading
34
- Sprockets.register_engine '.opal', Tilt::OpalTemplate
data/lib/tilt/opal.rb DELETED
@@ -1,113 +0,0 @@
1
- require 'opal'
2
- require 'tilt/template'
3
- require 'tilt'
4
-
5
- module Tilt
6
- # Opal templates do not support object scopes, locals, or yield.
7
- class OpalTemplate < ::Tilt::Template
8
- self.default_mime_type = 'application/javascript'
9
-
10
- @@default_bare = false
11
-
12
- def self.default_bare
13
- @@default_bare
14
- end
15
-
16
- def self.default_bare=(value)
17
- @@default_bare = value
18
- end
19
-
20
- def self.engine_initialized?
21
- defined? ::Opal
22
- end
23
-
24
- def initialize_engine
25
- require_template_library 'opal'
26
- end
27
-
28
- def prepare
29
- end
30
-
31
- def self.opal_core
32
- @opal_core ||= Opal::Builder.new.build_core
33
- end
34
-
35
- # def builder_evaluate
36
- # # require 'stringio'
37
- # # out = StringIO.new
38
- # #
39
- # # opts = options
40
- # # builder = Opal::Builder.new
41
- # # builder.build :files => path,
42
- # # :out => opts["out"], :watch => opts["watch"], :main => opts["main"]
43
- # #
44
- # #
45
- # # # build
46
- # # files = options[:files] || []
47
- # # files = [files] unless files.is_a? Array
48
- # # options[:files] = files = Dir.[](*files)
49
- # #
50
- # # raise "Opal::Builder - No input files could be found" if files.empty?
51
- # #
52
- # # main = options[:main]
53
- # #
54
- # # if main == true
55
- # # options[:main] = files.first
56
- # # elsif main
57
- # # raise "Opal::Builder - Main file does not exist!" unless File.exists? main
58
- # # files << main unless files.include? main
59
- # # elsif main == false
60
- # # options[:main] = false
61
- # # else
62
- # # options[:main] = files.first
63
- # # end
64
- # #
65
- # # main = options[:main]
66
- # #
67
- # # unless options[:out]
68
- # # options[:out] = main.sub /\.rb$/, '.js'
69
- # # end
70
- # #
71
- # # FileUtils.mkdir_p File.dirname(options[:out])
72
- # #
73
- # # rebuild options
74
- # #
75
- # #
76
- # #
77
- # # # rebuild
78
- # #
79
- # # puts "rebuilding to #{options[:out]}"
80
- # # puts options[:files].inspect
81
- # # File.open(options[:out], 'w') do |out|
82
- # # # out.write @pre if @pre
83
- # #
84
- # # options[:files].each do |file|
85
- # # out.write wrap_source file
86
- # # end
87
- # #
88
- # # if options[:main]
89
- # # main = options[:main].sub(/\.rb$/, '')
90
- # # out.write "opal.require('#{main}');\n"
91
- # # end
92
- # #
93
- # # # out.write @post if @post
94
- # # end
95
- # #
96
- # #
97
- # end
98
-
99
- def evaluate(scope, locals, &block)
100
- return @output if defined? @output
101
-
102
- js_src = Opal::RubyParser.new(data).parse!.generate_top
103
- @output = <<-OPAL
104
- opal.register('try.rb', function($rb, self, __FILE__) {
105
- #{js_src}
106
- });
107
- opal.require('try');
108
- OPAL
109
- end
110
- end
111
-
112
- register OpalTemplate, '.opal'
113
- end