page_title_helper 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 1
3
3
  :minor: 0
4
- :patch: 0
4
+ :patch: 1
@@ -9,6 +9,8 @@
9
9
 
10
10
  # PageTitleHelper
11
11
  module PageTitleHelper
12
+
13
+ # http://github.com/thoughtbot/paperclip/blob/master/lib/paperclip/interpolations.rb
12
14
  module Interpolations
13
15
  # Represents the environment which is passed into each interpolation call.
14
16
  class TitleEnv < ::Struct.new(:options, :view, :controller, :title); end
@@ -86,10 +88,17 @@ module PageTitleHelper
86
88
 
87
89
  protected
88
90
 
89
- # Find current title key based on currently rendering template, same
90
- # code as in {ActionView::Helpers::TranslationHelpers} to get that <tt>'.relative_key'</tt>
91
- # magic working.
92
- def i18n_template_key(suffix = :title)
93
- template.path_without_format_and_extension.gsub(%r{/_?}, '.') + ".#{suffix}"
91
+ # Find current title key based on currently rendering template.
92
+ #
93
+ # Access +ActionView+s internal <tt>@_first_render</tt> variable, to access
94
+ # template first rendered, this is to help create the DRY-I18n-titles magic,
95
+ # and also kind of a hack, because this really seems to be some sort if
96
+ # internal variable, that's why it's "abstracted" away as well.
97
+ #
98
+ # Also ensure that the extensions (like <tt>.html.erb</tt> or
99
+ # <tt>.html.haml</tt>) have been stripped of and translated in the sense
100
+ # of converting <tt>/</tt> to <tt>.</tt>.
101
+ def i18n_template_key(suffix = nil)
102
+ @_first_render.template_path.gsub(/\.[^\/]*\Z/, '').tr('/', '.') + (suffix.present? ? ".#{suffix}" : "")
94
103
  end
95
104
  end
@@ -61,12 +61,12 @@ class MultipleFormatsTest < ActiveSupport::TestCase
61
61
  end
62
62
 
63
63
  should "allow to overide format through YAML" do
64
- mock(@view).template { ActionView::Template.new 'pages/features.html.haml' }
64
+ @view.template = 'pages/features.html.haml'
65
65
  assert_equal 'Wohaapp > Feature comparison', @view.page_title
66
66
  end
67
67
 
68
68
  should "handle raw string formats from YAML as well" do
69
- mock(@view).template { ActionView::Template.new 'pages/signup.html.haml' }
69
+ @view.template = 'pages/signup.html.haml'
70
70
  assert_equal 'Sign up for Wohaapp now!', @view.page_title
71
71
  end
72
72
  end
@@ -9,7 +9,7 @@ class PageTitleHelperTest < ActiveSupport::TestCase
9
9
  I18n.reload!
10
10
 
11
11
  @view = ActionView::Base.new
12
- @view.template = ActionView::Template.new "contacts/list.html.erb"
12
+ @view.template_path = "contacts/list.html.erb"
13
13
  end
14
14
 
15
15
  context "::Interpolations" do
@@ -90,17 +90,17 @@ class PageTitleHelperTest < ActiveSupport::TestCase
90
90
  end
91
91
 
92
92
  should "render translated :'app.tagline' if no title is available" do
93
- mock(@view).template { ActionView::Template.new('view/does/not_exist.html.erb') }
93
+ @view.template_path = 'view/does/not_exist.html.erb'
94
94
  assert_equal "Default - Page title helper", @view.page_title
95
95
  end
96
96
 
97
97
  should "render custom 'default' string, if title is not available" do
98
- mock(@view).template { ActionView::Template.new('view/does/not_exist.html.erb') }
98
+ @view.template_path = 'view/does/not_exist.html.erb'
99
99
  assert_equal 'Some default - Page title helper', @view.page_title(:default => 'Some default')
100
100
  end
101
101
 
102
102
  should "render custom default translation, if title is not available" do
103
- mock(@view).template { ActionView::Template.new('view/does/not_exist.html.erb') }
103
+ @view.template_path = 'view/does/not_exist.html.erb'
104
104
  assert_equal 'Other default - Page title helper', @view.page_title(:default => :'app.other_tagline')
105
105
  end
106
106
 
@@ -109,7 +109,7 @@ class PageTitleHelperTest < ActiveSupport::TestCase
109
109
  end
110
110
 
111
111
  should "work with other template engines, like HAML" do
112
- mock(@view).template { ActionView::Template.new('contacts/myhaml.html.haml') }
112
+ @view.template_path = 'contacts/myhaml.html.haml'
113
113
  assert_equal 'this is haml! - Page title helper', @view.page_title
114
114
  end
115
115
  end
data/test/test_helper.rb CHANGED
@@ -13,4 +13,11 @@ end
13
13
 
14
14
  ROOT = File.expand_path File.dirname(File.dirname(__FILE__))
15
15
  RAILS_ROOT = '/this/is/just/for/testing/page_title_helper'
16
- RAILS_ENV = 'test'
16
+ RAILS_ENV = 'test'
17
+
18
+ class ActionView::Base
19
+ def template=(template)
20
+ @_first_render = template.respond_to?(:template_path) ? template : ActionView::Template.new(template)
21
+ end
22
+ alias_method :template_path=, :template=
23
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: page_title_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lukas Westermann
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-20 00:00:00 +01:00
12
+ date: 2009-11-26 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies: []
15
15