Module: PageTitleHelper

Defined in:
lib/page_title_helper.rb

Overview

PageTitleHelper

Defined Under Namespace

Modules: Interpolations

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.formatsObject

Defined alias formats, pretty useful.



53
54
55
56
57
58
59
# File 'lib/page_title_helper.rb', line 53

def self.formats
  @formats ||= {
    :app => ":app",
    :default => ':title - :app',
    :title => ":title"
  }
end

.interpolates(key, &block) ⇒ Object

Add new, custom, interpolation.



38
39
40
# File 'lib/page_title_helper.rb', line 38

def self.interpolates(key, &block)
  Interpolations.send(:define_method, key, &block)
end

.optionsObject

Default options, which are globally referenced and can be changed globally, which might be useful in some cases.



44
45
46
47
48
49
50
# File 'lib/page_title_helper.rb', line 44

def self.options
  @options ||= {
    :format => :default,
    :default => :'app.tagline',
    :suffix => :title
  }
end

Instance Method Details

#page_title(options = nil, &block) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/page_title_helper.rb', line 67

def page_title(options = nil, &block)
  return page_title!(yield) if block_given? # define title
      
  options = PageTitleHelper.options.merge(options || {}).symbolize_keys!
  options[:format] ||= :title # handles :format => false
  options.assert_valid_keys(:app, :suffix, :default, :format)
  
  # construct basic env to pass around
  env = Interpolations::TitleEnv.new(options, self, self.controller)
  
  # read page title and split into 'real' title and customized format
  env.title = @_page_title || I18n.translate(i18n_template_key(options[:suffix]), :default => options[:default])
  env.title, options[:format] = *(env.title << options[:format]) if env.title.is_a?(Array)
  
  # handle format aliases
  format = options[:format]
  format = PageTitleHelper.formats[format] if PageTitleHelper.formats.include?(format)
  
  # interpolate format
  Interpolations.interpolate format, env
end

#page_title!(*args) ⇒ Object

Specify page title



62
63
64
65
# File 'lib/page_title_helper.rb', line 62

def page_title!(*args)
  @_page_title = args.size > 1 ? args : args.first
  @_page_title.is_a?(Array) ? @_page_title.first : @_page_title
end