dry_haml_handlebars 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,81 @@
1
+ module DryHamlHandlebars
2
+ module ControllerHelpers
3
+ module ActionController
4
+
5
+ def render_extra_content_for(*args)
6
+ options = args.extract_options!
7
+ args.each do |identifier|
8
+ name, path = get_content_for_name_and_path(identifier, options)
9
+ DryHamlHandlebars.content_cache.add_item(name, path)
10
+ end
11
+
12
+ end
13
+
14
+ private
15
+
16
+ def get_content_for_name_and_path(identifier, options)
17
+
18
+ case identifier
19
+ when Symbol
20
+
21
+ name = identifier
22
+
23
+ possible_folders = [
24
+ Rails.root.join( *%w[app views] << params[:controller] ).to_s,
25
+ Rails.root.join( *%w[app views application] ).to_s
26
+ ]
27
+
28
+ if folders = options[:prepend_search_folders]
29
+ possible_folders = folders + possible_folders
30
+ end
31
+
32
+ if folders = options[:append_search_folders]
33
+ possible_folders += folders
34
+ end
35
+
36
+ possible_filenames = [
37
+ "#{params[:action]}_#{name}.html.haml",
38
+ "#{name}.html.haml",
39
+ "#{params[:action]}_content_for_#{name}.html.haml",
40
+ "content_for_#{name}.html.haml"
41
+ ]
42
+
43
+ possible_paths = []
44
+
45
+ possible_folders.each do |folder|
46
+ possible_filenames.each do |fname|
47
+ possible_paths << File.join( folder, fname )
48
+ end
49
+ end
50
+
51
+ path = possible_paths.find { |p| File.exist?(p) }
52
+ raise "couldn't find any of the following expected files:\n#{possible_paths.join("\n")}" if path.nil?
53
+
54
+ when Array
55
+
56
+ path = Rails.root.join( *%w[app views] << "#{identifier.last}.html.haml" ).to_s
57
+ name = identifier.first.to_sym
58
+
59
+ when String
60
+
61
+ path = Rails.root.join( *%w[app views] << "#{identifier}.html.haml" ).to_s
62
+ name_match = identifier.match(/.*content_for_(?<name>\w*)/)
63
+ if name_match
64
+ name = name_match[:name].to_sym
65
+ else
66
+ name = identifier
67
+ end
68
+
69
+ else
70
+ raise ArgumentError, "expected identifier to be a Array, Symbol or String, but got #{identifier}"
71
+ end
72
+
73
+ raise "the file #{path} does not exist" unless File.exist?(path)
74
+
75
+ return name, path
76
+
77
+ end
78
+
79
+ end
80
+ end
81
+ end
@@ -1,3 +1,3 @@
1
1
  module DryHamlHandlebars
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -0,0 +1,46 @@
1
+ module DryHamlHandlebars
2
+ module ViewHelpers
3
+ module ActionView
4
+
5
+ # WARNING: content_for is ignored in caches. So you shouldn't use it
6
+ # for elements that will be fragment cached.
7
+ def handlebars_content_for(name, content = nil, flush = false)
8
+
9
+ if content
10
+ flush ? @view_flow.set(name, content) : @view_flow.append(name, content)
11
+ nil
12
+ else
13
+ @view_flow.get(name)
14
+ end
15
+
16
+ end
17
+
18
+ def handlebars_render(*args, &block)
19
+
20
+ #we simply wrap render so that we can detect that 'handlebars_render' was the calling function
21
+ #we do this by adding a local variable :handlebars_partial => true
22
+
23
+ if args.first.is_a?(Hash)
24
+
25
+ options = args.first
26
+ options[:locals] ||= {}
27
+ options[:locals].merge!(:__handlebars_partial => true)
28
+
29
+ elsif args.last.is_a?(Hash)
30
+
31
+ locals = args.last
32
+ locals[:__handlebars_partial] = true
33
+
34
+ else
35
+
36
+ args << {:__handlebars_partial => true}
37
+
38
+ end
39
+
40
+ render(*args, &block)
41
+
42
+ end
43
+
44
+ end
45
+ end
46
+ end
@@ -7,11 +7,6 @@ require "dry_haml_handlebars/register"
7
7
  require "haml-rails"
8
8
  require "rabl"
9
9
  require "gon"
10
- require 'action_view'
11
- require 'action_controller'
12
- require_relative "action_view/base"
13
- require_relative "action_view/helpers/capture_helper"
14
- require_relative "action_controller/base"
15
10
 
16
11
  module DryHamlHandlebars
17
12
 
@@ -28,6 +23,20 @@ module DryHamlHandlebars
28
23
  DryHamlHandlebars.prepare_handlebars
29
24
  end
30
25
 
26
+ initializer "dry_haml_handlebars.configure" do |app|
27
+
28
+ ActiveSupport.on_load :action_view do
29
+ require 'dry_haml_handlebars/view_helpers/action_view'
30
+ include DryHamlHandlebars::ViewHelpers::ActionView
31
+ end
32
+
33
+ ActiveSupport.on_load :action_controller do
34
+ require 'dry_haml_handlebars/controller_helpers/action_controller'
35
+ include DryHamlHandlebars::ControllerHelpers::ActionController
36
+ end
37
+
38
+ end
39
+
31
40
  end
32
41
 
33
42
  class ContentCache
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: dry_haml_handlebars
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.6
5
+ version: 0.0.7
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jonathan Chambers
@@ -96,13 +96,12 @@ files:
96
96
  - README.md
97
97
  - Rakefile
98
98
  - dry_haml_handlebars.gemspec
99
- - lib/action_controller/base.rb
100
- - lib/action_view/base.rb
101
- - lib/action_view/helpers/capture_helper.rb
102
99
  - lib/dry_haml_handlebars.rb
100
+ - lib/dry_haml_handlebars/controller_helpers/action_controller.rb
103
101
  - lib/dry_haml_handlebars/handler.rb
104
102
  - lib/dry_haml_handlebars/register.rb
105
103
  - lib/dry_haml_handlebars/version.rb
104
+ - lib/dry_haml_handlebars/view_helpers/action_view.rb
106
105
  - vendor/assets/javascripts/underscore.js
107
106
  homepage: https://github.com/jmchambers/dry_haml_handlebars
108
107
  licenses:
@@ -1,80 +0,0 @@
1
- module ActionController
2
- class Base
3
-
4
- def render_extra_content_for(*args)
5
- options = args.extract_options!
6
- args.each do |identifier|
7
- name, path = get_content_for_name_and_path(identifier, options)
8
- DryHamlHandlebars.content_cache.add_item(name, path)
9
- end
10
-
11
- end
12
-
13
- private
14
-
15
- def get_content_for_name_and_path(identifier, options)
16
-
17
- case identifier
18
- when Symbol
19
-
20
- name = identifier
21
-
22
- possible_folders = [
23
- Rails.root.join( *%w[app views] << params[:controller] ).to_s,
24
- Rails.root.join( *%w[app views application] ).to_s
25
- ]
26
-
27
- if folders = options[:prepend_search_folders]
28
- possible_folders = folders + possible_folders
29
- end
30
-
31
- if folders = options[:append_search_folders]
32
- possible_folders += folders
33
- end
34
-
35
- possible_filenames = [
36
- "#{params[:action]}_#{name}.html.haml",
37
- "#{name}.html.haml",
38
- "#{params[:action]}_content_for_#{name}.html.haml",
39
- "content_for_#{name}.html.haml"
40
- ]
41
-
42
- possible_paths = []
43
-
44
- possible_folders.each do |folder|
45
- possible_filenames.each do |fname|
46
- possible_paths << File.join( folder, fname )
47
- end
48
- end
49
-
50
- path = possible_paths.find { |p| File.exist?(p) }
51
- raise "couldn't find any of the following expected files:\n#{possible_paths.join("\n")}" if path.nil?
52
-
53
- when Array
54
-
55
- path = Rails.root.join( *%w[app views] << "#{identifier.last}.html.haml" ).to_s
56
- name = identifier.first.to_sym
57
-
58
- when String
59
-
60
- path = Rails.root.join( *%w[app views] << "#{identifier}.html.haml" ).to_s
61
- name_match = identifier.match(/.*content_for_(?<name>\w*)/)
62
- if name_match
63
- name = name_match[:name].to_sym
64
- else
65
- name = identifier
66
- end
67
-
68
- else
69
- raise ArgumentError, "expected identifier to be a Array, Symbol or String, but got #{identifier}"
70
- end
71
-
72
- raise "the file #{path} does not exist" unless File.exist?(path)
73
-
74
- return name, path
75
-
76
- end
77
-
78
-
79
- end
80
- end
@@ -1,31 +0,0 @@
1
- module ActionView
2
- class Base
3
-
4
- def handlebars_render(*args, &block)
5
-
6
- #we simply wrap render so that we can detect that 'handlebars_render' was the calling function
7
- #we do this by adding a local variable :handlebars_partial => true
8
-
9
- if args.first.is_a?(Hash)
10
-
11
- options = args.first
12
- options[:locals] ||= {}
13
- options[:locals].merge!(:__handlebars_partial => true)
14
-
15
- elsif args.last.is_a?(Hash)
16
-
17
- locals = args.last
18
- locals[:__handlebars_partial] = true
19
-
20
- else
21
-
22
- args << {:__handlebars_partial => true}
23
-
24
- end
25
-
26
- render(*args, &block)
27
-
28
- end
29
-
30
- end
31
- end
@@ -1,22 +0,0 @@
1
- include ActionView::Helpers
2
-
3
- module ActionView
4
- module Helpers
5
- module CaptureHelper
6
-
7
- # WARNING: content_for is ignored in caches. So you shouldn't use it
8
- # for elements that will be fragment cached.
9
- def handlebars_content_for(name, content = nil, flush = false)
10
-
11
- if content
12
- flush ? @view_flow.set(name, content) : @view_flow.append(name, content)
13
- nil
14
- else
15
- @view_flow.get(name)
16
- end
17
-
18
- end
19
-
20
- end
21
- end
22
- end