Module: Middleman::Blog

Defined in:
lib/middleman-blog/version.rb,
lib/middleman-blog/template.rb,
lib/middleman-blog/tag_pages.rb,
lib/middleman-blog/paginator.rb,
lib/middleman-blog/blog_data.rb,
lib/middleman-blog/blog_article.rb,
lib/middleman-blog/extension_3_0.rb,
lib/middleman-blog/calendar_pages.rb

Defined Under Namespace

Modules: BlogArticle, Helpers Classes: BlogData, CalendarPages, Options, Paginator, TagPages, Template

Constant Summary

VERSION =
"3.2.0"

Class Method Summary (collapse)

Class Method Details

+ (Object) registered(app, options_hash = {}) {|options| ... } Also known as: included

Yields:

  • (options)


40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# File 'lib/middleman-blog/extension_3_0.rb', line 40

def registered(app, options_hash={}, &block)
  require 'middleman-blog/blog_data'
  require 'middleman-blog/blog_article'
  require 'active_support/core_ext/time/zones'

  app.set :time_zone, 'UTC'

  app.send :include, Helpers
  
  options = Options.new(options_hash)
  yield options if block_given?
  
  options.permalink            ||= "/:year/:month/:day/:title.html"
  options.sources              ||= ":year-:month-:day-:title.html"
  options.taglink              ||= "tags/:tag.html"
  options.layout               ||= "layout"
  options.summary_separator    ||= /(READMORE)/
  options.summary_length       ||= 250
  options.year_link            ||= "/:year.html"
  options.month_link           ||= "/:year/:month.html"
  options.day_link             ||= "/:year/:month/:day.html"
  options.default_extension    ||= ".markdown"
  options.paginate             ||= false
  options.per_page             ||= 10
  options.page_link            ||= "page/:num"
  options.publish_future_dated ||= false

  # optional: :tag_template
  # optional: :year_template
  # optional: :month_template
  # optional: :day_template
  # Allow one setting to set all the calendar templates
  if options.calendar_template
    options.year_template  ||= options.calendar_template
    options.month_template ||= options.calendar_template
    options.day_template   ||= options.calendar_template
  end

  # If "prefix" option is specified, all other paths are relative to it.
  if options.prefix
    options.prefix = "/#{options.prefix}" unless options.prefix.start_with? '/'
    options.permalink = File.join(options.prefix, options.permalink)
    options.sources = File.join(options.prefix, options.sources)
    options.taglink = File.join(options.prefix, options.taglink)
    options.year_link = File.join(options.prefix, options.year_link)
    options.month_link = File.join(options.prefix, options.month_link)
    options.day_link = File.join(options.prefix, options.day_link)
  end

  app.after_configuration do
    # Make sure ActiveSupport's TimeZone stuff has something to work with,
    # allowing people to set their desired time zone via Time.zone or
    # set :time_zone
    time_zone = Time.zone if Time.zone
    zone_default = Time.find_zone!(time_zone || 'UTC')
    unless zone_default
      raise 'Value assigned to time_zone not recognized.'
    end
    Time.zone_default = zone_default

    # Initialize blog with options
    blog(options)
    
    sitemap.register_resource_list_manipulator(
                                               :blog_articles,
                                               blog,
                                               false
                                               )

    if options.tag_template
      ignore options.tag_template

      require 'middleman-blog/tag_pages'
      sitemap.register_resource_list_manipulator(
                                                 :blog_tags,
                                                 TagPages.new(self),
                                                 false
                                                 )
    end

    if options.year_template || 
        options.month_template || 
        options.day_template

      require 'middleman-blog/calendar_pages'
      sitemap.register_resource_list_manipulator(
                                                 :blog_calendar,
                                                 CalendarPages.new(self),
                                                 false
                                                 )
    end

    if options.paginate
      require 'middleman-blog/paginator'
      sitemap.register_resource_list_manipulator(
                                                 :blog_paginate,
                                                 Paginator.new(self),
                                                 false
                                                 )
    end
  end
end