angular-rails4-templates 0.3.0 → 0.4.0

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: a13f3844657fe44fd18eb117dec2521b80d0c6d0
4
- data.tar.gz: 6e34a70494b8499ef5bdd483954edbcfc7018874
3
+ metadata.gz: 7030f28e3d73640f9b2c8e192d5bd0cc4bb82f44
4
+ data.tar.gz: 6b172e47e0de5f36fc941c1a982c64915530e4e3
5
5
  SHA512:
6
- metadata.gz: 2f1030c253b297758e529908c3b2deb19bb7766bc2950cea6e69d24f9d448dfa11e9ebf7987f562f11fd5cde913035cfe036c782a4597e6c63db65209620fa52
7
- data.tar.gz: 40822030d06c66796e5e45f69dd9a85932cac9d704c77ca98e020a1e217231fc083ffc6519784ce65f09fcd9b0214d488d831b9f19190c4fa6daaebdf279df18
6
+ metadata.gz: 28d2c9112ce23c385f019fea283a9364c834f82aec9ebff7a2aa6a1550cb4c19c76fde4fa681de44524124f391da98e9d9e7386162c447e2ab86f7f0964302eb
7
+ data.tar.gz: b37e21fb5cde280dc3e36f11b123757e5aee18a69b2d188dbeb04eb07b11ff0c47eebcf01f971ec807b4da230292447fcb42072767ab8d0579b175cec3ea7917
data/README.md CHANGED
@@ -17,12 +17,12 @@ gem 'angular-rails4-templates'
17
17
 
18
18
  ### 2. Include Templates in Rails Asset Pipeline
19
19
 
20
- Then, in your `application.js` file, require `angular-rails-templates` and your templates:
20
+ Then, in your `application.js` file, require `angular-rails4-templates` and your templates:
21
21
 
22
22
  ```javascript
23
23
  //= require angularjs
24
24
  // ...
25
- //= require angular-rails-templates
25
+ //= require angular-rails4-templates
26
26
  //
27
27
  // Templates in app/assets/javascript/templates
28
28
  //= require_tree ./templates
@@ -31,7 +31,7 @@ Then, in your `application.js` file, require `angular-rails-templates` and your
31
31
  //= require_tree ../templates
32
32
  ```
33
33
 
34
- Make sure to `require angular-rails-templates` **before** you require your templates.
34
+ Make sure to `require angular-rails4-templates` **before** you require your templates.
35
35
 
36
36
  You'll need to use specific extensions to run the right preprocessor and load the resulting
37
37
  compiled template into the angular template cache.
@@ -112,7 +112,7 @@ It is used to generate javascript like:
112
112
  angular.module("<%= module_name %>")...
113
113
  ```
114
114
 
115
- Although it is not recommended, you can set `module_name` to the name of your main application module and remove `require angular-rails-templates` from your javascript manifest to have your templates directly injected into your app.
115
+ Although it is not recommended, you can set `module_name` to the name of your main application module and remove `require angular-rails4-templates` from your javascript manifest to have your templates directly injected into your app.
116
116
 
117
117
  ### Configuration Option: `ignore_prefix`
118
118
 
@@ -217,3 +217,4 @@ MIT License. Copyright 2014 Pitr
217
217
  * Damien Mathieu <42@dmathieu.com>
218
218
  * pitr <pitr.vern@gmail.com>
219
219
  * Jeremy Ebler <jebler@gmail.com>
220
+ * Chris Nelson <chris@teamgaslight.com>
@@ -2,6 +2,7 @@ require 'angular-rails4-templates/engine'
2
2
 
3
3
  module AngularRails4Templates
4
4
  autoload :HamlProcessor, 'angular-rails4-templates/haml_processor'
5
+ autoload :SlimProcessor, 'angular-rails4-templates/slim_processor'
5
6
  autoload :Processor, 'angular-rails4-templates/processor'
6
7
  autoload :VERSION, 'angular-rails4-templates/version'
7
8
  end
@@ -27,35 +27,16 @@ module AngularRails4Templates
27
27
 
28
28
 
29
29
  initializer 'angular-rails-templates', group: :all do |app|
30
- if app.config.assets
30
+ app.config.assets.configure do |env|
31
31
  require 'sprockets'
32
32
  require 'sprockets/engines' # load sprockets for Rails 3
33
33
 
34
- # if app.config.angular_templates.htmlcompressor
35
- # require 'htmlcompressor/compressor'
36
- # unless app.config.angular_templates.htmlcompressor.is_a? Hash
37
- # app.config.angular_templates.htmlcompressor = {remove_intertag_spaces: true}
38
- # end
39
- # end
40
- #
41
- # # These engines render markup as HTML
42
- # app.config.angular_templates.markups.each do |ext|
43
- # # Processed haml/slim templates have a mime-type of text/html.
44
- # # If sprockets sees a `foo.html.haml` it will process the haml
45
- # # and stop, because the haml output is html. Our html engine won't get run.
46
- # mimeless_engine = Class.new(Tilt[ext]) do
47
- # def self.default_mime_type
48
- # nil
49
- # end
50
- # end
51
- #
52
- # app.assets.register_engine ".#{ext}", mimeless_engine
53
- # end
54
-
55
- app.assets.register_mime_type 'text/ng-html', extensions: ['.nghtml']
56
- app.assets.register_mime_type 'text/ng-haml', extensions: ['.nghaml']
57
- app.assets.register_transformer 'text/ng-haml', 'application/javascript', AngularRails4Templates::HamlProcessor
58
- app.assets.register_transformer 'text/ng-html', 'application/javascript', AngularRails4Templates::Processor
34
+ env.register_mime_type 'text/ng-html', extensions: ['.nghtml']
35
+ env.register_mime_type 'text/ng-haml', extensions: ['.nghaml']
36
+ env.register_mime_type 'text/ng-slim', extensions: ['.ngslim']
37
+ env.register_transformer 'text/ng-slim', 'application/javascript', AngularRails4Templates::SlimProcessor
38
+ env.register_transformer 'text/ng-haml', 'application/javascript', AngularRails4Templates::HamlProcessor
39
+ env.register_transformer 'text/ng-html', 'application/javascript', AngularRails4Templates::Processor
59
40
  end
60
41
 
61
42
  # Sprockets Cache Busting
@@ -1,4 +1,4 @@
1
- require 'angular-rails-templates/compact_javascript_escape'
1
+ require 'angular-rails4-templates/compact_javascript_escape'
2
2
  require 'haml'
3
3
 
4
4
  module AngularRails4Templates
@@ -1,4 +1,4 @@
1
- require 'angular-rails-templates/compact_javascript_escape'
1
+ require 'angular-rails4-templates/compact_javascript_escape'
2
2
 
3
3
  module AngularRails4Templates
4
4
  class Processor
@@ -0,0 +1,15 @@
1
+ require 'angular-rails4-templates/compact_javascript_escape'
2
+ require 'slim'
3
+
4
+ module AngularRails4Templates
5
+ class SlimProcessor < Processor
6
+
7
+ include CompactJavaScriptEscape
8
+
9
+ def render_html(input)
10
+ template = input[:data]
11
+ output = Slim::Template.new { template }.render
12
+ escape_javascript output
13
+ end
14
+ end
15
+ end
@@ -1,4 +1,4 @@
1
- require 'angular-rails-templates/compact_javascript_escape'
1
+ require 'angular-rails4-templates/compact_javascript_escape'
2
2
 
3
3
  module AngularRails4Templates
4
4
  class Template < ::Tilt::Template
@@ -51,4 +51,3 @@ module AngularRails4Templates
51
51
  end
52
52
  end
53
53
  end
54
-
@@ -1,3 +1,3 @@
1
1
  module AngularRails4Templates
2
- VERSION = '0.3.0'
2
+ VERSION = '0.4.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: angular-rails4-templates
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damien Mathieu
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2015-12-18 00:00:00.000000000 Z
14
+ date: 2015-12-29 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: railties
@@ -106,19 +106,13 @@ extra_rdoc_files: []
106
106
  files:
107
107
  - LICENSE
108
108
  - README.md
109
- - lib/angular-rails-templates/compact_javascript_escape.rb
110
- - lib/angular-rails-templates/engine.rb
111
- - lib/angular-rails-templates/haml_processor.rb
112
- - lib/angular-rails-templates/javascript_template.js.erb
113
- - lib/angular-rails-templates/processor.rb
114
- - lib/angular-rails-templates/template.rb
115
- - lib/angular-rails-templates/version.rb
116
109
  - lib/angular-rails4-templates.rb
117
110
  - lib/angular-rails4-templates/compact_javascript_escape.rb
118
111
  - lib/angular-rails4-templates/engine.rb
119
112
  - lib/angular-rails4-templates/haml_processor.rb
120
113
  - lib/angular-rails4-templates/javascript_template.js.erb
121
114
  - lib/angular-rails4-templates/processor.rb
115
+ - lib/angular-rails4-templates/slim_processor.rb
122
116
  - lib/angular-rails4-templates/template.rb
123
117
  - lib/angular-rails4-templates/version.rb
124
118
  - vendor/assets/javascripts/angular-rails4-templates.js.erb
@@ -1,29 +0,0 @@
1
- module AngularRails4Templates
2
- module CompactJavaScriptEscape
3
- # inspired by Rails' action_view/helpers/javascript_helper.rb
4
- JS_ESCAPE_MAP = {
5
- '\\' => '\\\\',
6
- "\r\n" => '\n',
7
- "\n" => '\n',
8
- "\r" => '\n',
9
- '"' => '\\"',
10
- "'" => "\\'"
11
- }
12
-
13
- # We want to deliver the shortist valid javascript escaped string
14
- # Count the number of " vs '
15
- # If more ', escape "
16
- # If more ", escape '
17
- # If equal, prefer to escape "
18
-
19
- def escape_javascript(raw)
20
- if raw
21
- quote = raw.count(%{'}) >= raw.count(%{"}) ? %{"} : %{'}
22
- escaped = raw.gsub(/(\\|\r\n|[\n\r#{quote}])/u) {|match| JS_ESCAPE_MAP[match] }
23
- "#{quote}#{escaped}#{quote}"
24
- else
25
- '""'
26
- end
27
- end
28
- end
29
- end
@@ -1,78 +0,0 @@
1
- require 'tilt'
2
-
3
- module AngularRails4Templates
4
- class Engine < ::Rails::Engine
5
- config.angular_templates = ActiveSupport::OrderedOptions.new
6
- config.angular_templates.module_name = 'templates'
7
- config.angular_templates.ignore_prefix = ['templates/']
8
- config.angular_templates.inside_paths = [] # defined in before_configuration
9
- config.angular_templates.markups = []
10
- config.angular_templates.htmlcompressor = false
11
-
12
- config.before_configuration do |app|
13
- config.angular_templates.inside_paths = [Rails.root.join('app', 'assets')]
14
-
15
- # try loading common markups
16
- %w(erb haml liquid md radius slim str textile wiki).
17
- each do |ext|
18
- begin
19
- silence_warnings do
20
- config.angular_templates.markups << ext if Tilt[ext]
21
- end
22
- rescue LoadError
23
- # They don't have the required library required. Oh well.
24
- end
25
- end
26
- end
27
-
28
-
29
- initializer 'angular-rails-templates', group: :all do |app|
30
- if app.config.assets
31
- require 'sprockets'
32
- require 'sprockets/engines' # load sprockets for Rails 3
33
-
34
- # if app.config.angular_templates.htmlcompressor
35
- # require 'htmlcompressor/compressor'
36
- # unless app.config.angular_templates.htmlcompressor.is_a? Hash
37
- # app.config.angular_templates.htmlcompressor = {remove_intertag_spaces: true}
38
- # end
39
- # end
40
- #
41
- # # These engines render markup as HTML
42
- # app.config.angular_templates.markups.each do |ext|
43
- # # Processed haml/slim templates have a mime-type of text/html.
44
- # # If sprockets sees a `foo.html.haml` it will process the haml
45
- # # and stop, because the haml output is html. Our html engine won't get run.
46
- # mimeless_engine = Class.new(Tilt[ext]) do
47
- # def self.default_mime_type
48
- # nil
49
- # end
50
- # end
51
- #
52
- # app.assets.register_engine ".#{ext}", mimeless_engine
53
- # end
54
-
55
- app.assets.register_mime_type 'text/ng-html', extensions: ['.nghtml']
56
- app.assets.register_mime_type 'text/ng-haml', extensions: ['.nghaml']
57
- app.assets.register_transformer 'text/ng-haml', 'application/javascript', AngularRails4Templates::HamlProcessor
58
- app.assets.register_transformer 'text/ng-html', 'application/javascript', AngularRails4Templates::Processor
59
- end
60
-
61
- # Sprockets Cache Busting
62
- # If ART's version or settings change, expire and recompile all assets
63
- app.config.assets.version = [
64
- app.config.assets.version,
65
- 'ART',
66
- Digest::MD5.hexdigest("#{VERSION}-#{app.config.angular_templates}")
67
- ].join '-'
68
- end
69
-
70
-
71
- config.after_initialize do |app|
72
- # Ensure ignore_prefix can be passed as a String or Array
73
- if app.config.angular_templates.ignore_prefix.is_a? String
74
- app.config.angular_templates.ignore_prefix = Array(app.config.angular_templates.ignore_prefix)
75
- end
76
- end
77
- end
78
- end
@@ -1,19 +0,0 @@
1
- require 'angular-rails-templates/compact_javascript_escape'
2
- require 'haml'
3
-
4
- module AngularRails4Templates
5
- class HamlProcessor < Processor
6
-
7
- include CompactJavaScriptEscape
8
-
9
- def render_html(input)
10
- template = input[:data]
11
- haml_engine = Haml::Engine.new(template)
12
- output = haml_engine.render
13
- escape_javascript output
14
- rescue Haml::SyntaxError => ex
15
- raise Haml::SyntaxError.new("#{input[:filename]} #{ex.message}", ex.line)
16
- end
17
-
18
- end
19
- end
@@ -1,6 +0,0 @@
1
- // Angular Rails Template
2
- // source: <%= source_file %>
3
-
4
- angular.module("<%= angular_module %>").run(["$templateCache", function($templateCache) {
5
- $templateCache.put("<%= angular_template_name %>", <%= html %>)
6
- }]);
@@ -1,51 +0,0 @@
1
- require 'angular-rails-templates/compact_javascript_escape'
2
-
3
- module AngularRails4Templates
4
- class Processor
5
-
6
- include CompactJavaScriptEscape
7
-
8
- def self.instance
9
- @instance ||= new
10
- end
11
-
12
- def self.call(input)
13
- instance.call(input)
14
- end
15
-
16
- def self.cache_key
17
- instance.cache_key
18
- end
19
-
20
- attr_reader :cache_key, :config
21
-
22
- def config
23
- Rails.configuration.angular_templates
24
- end
25
-
26
- def initialize(options = {})
27
- @cache_key = [self.class.name, VERSION, options].freeze
28
- end
29
-
30
- def render_html(input)
31
- escape_javascript input[:data].chomp
32
- end
33
-
34
- def template_name(name)
35
- path = name.sub /^(#{config.ignore_prefix.join('|')})/, ''
36
- "#{path}.html"
37
- end
38
-
39
- def call(input)
40
- angular_template_name = template_name(input[:name])
41
- angular_module = config.module_name
42
- html = render_html(input)
43
- source_file = "#{input[:filename]}".sub(/^#{Rails.root}\//,'')
44
- erb = ERB.new(File.read("#{File.dirname __FILE__}/javascript_template.js.erb"))
45
-
46
- result = erb.result binding
47
-
48
- result
49
- end
50
- end
51
- end
@@ -1,53 +0,0 @@
1
- require 'angular-rails-templates/compact_javascript_escape'
2
-
3
- module AngularRails4Templates
4
- class Template < ::Tilt::Template
5
- include CompactJavaScriptEscape
6
- AngularJsTemplateWrapper = Tilt::ERBTemplate.new "#{File.dirname __FILE__}/javascript_template.js.erb"
7
- @@compressor = nil
8
-
9
- def self.default_mime_type
10
- 'application/javascript'
11
- end
12
-
13
- def prepare
14
- # we only want to process html assets inside those specified in configuration.inside_paths
15
- @asset_should_be_processed = configuration.inside_paths.any? { |folder| file.match(folder.to_s) }
16
-
17
- if configuration.htmlcompressor and @asset_should_be_processed
18
- @data = compress data
19
- end
20
- end
21
-
22
- def evaluate(scope, locals, &block)
23
- locals[:html] = escape_javascript data.chomp
24
- locals[:angular_template_name] = logical_template_path(scope)
25
- locals[:source_file] = "#{scope.pathname}".sub(/^#{Rails.root}\//,'')
26
- locals[:angular_module] = configuration.module_name
27
-
28
- if @asset_should_be_processed
29
- AngularJsTemplateWrapper.render(scope, locals)
30
- else
31
- data
32
- end
33
- end
34
-
35
- private
36
-
37
- def logical_template_path(scope)
38
- path = scope.logical_path.sub /^(#{configuration.ignore_prefix.join('|')})/, ''
39
- "#{path}.html"
40
- end
41
-
42
- def configuration
43
- ::Rails.configuration.angular_templates
44
- end
45
-
46
- def compress html
47
- unless @@compressor
48
- @@compressor = HtmlCompressor::Compressor.new configuration.htmlcompressor
49
- end
50
- @@compressor.compress(html)
51
- end
52
- end
53
- end
@@ -1,3 +0,0 @@
1
- module AngularRails4Templates
2
- VERSION = '1.0.0'
3
- end