monad 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (188) hide show
  1. checksums.yaml +7 -0
  2. data/CONTRIBUTING.markdown +91 -0
  3. data/Gemfile +1 -1
  4. data/History.markdown +772 -0
  5. data/{README.md → README.markdown} +5 -2
  6. data/Rakefile +163 -1
  7. data/bin/monad +86 -30
  8. data/features/create_sites.feature +54 -25
  9. data/features/data.feature +65 -0
  10. data/features/data_sources.feature +10 -10
  11. data/features/drafts.feature +5 -5
  12. data/features/embed_filters.feature +10 -10
  13. data/features/include_tag.feature +48 -0
  14. data/features/markdown.feature +5 -5
  15. data/features/pagination.feature +38 -10
  16. data/features/permalinks.feature +31 -11
  17. data/features/post_data.feature +41 -41
  18. data/features/post_excerpts.feature +50 -0
  19. data/features/site_configuration.feature +47 -26
  20. data/features/site_data.feature +30 -24
  21. data/features/step_definitions/{monad_steps.rb → jekyll_steps.rb} +66 -52
  22. data/features/support/env.rb +27 -8
  23. data/lib/jekyll.rb +99 -0
  24. data/lib/jekyll/cleaner.rb +73 -0
  25. data/lib/{monad → jekyll}/command.rb +6 -6
  26. data/lib/{monad → jekyll}/commands/build.rb +9 -9
  27. data/lib/jekyll/commands/doctor.rb +67 -0
  28. data/lib/jekyll/commands/new.rb +67 -0
  29. data/lib/jekyll/commands/serve.rb +65 -0
  30. data/lib/{monad → jekyll}/configuration.rb +60 -18
  31. data/lib/{monad → jekyll}/converter.rb +1 -1
  32. data/lib/{monad → jekyll}/converters/identity.rb +1 -1
  33. data/lib/{monad → jekyll}/converters/markdown.rb +2 -2
  34. data/lib/jekyll/converters/markdown/kramdown_parser.rb +29 -0
  35. data/lib/{monad → jekyll}/converters/markdown/maruku_parser.rb +12 -8
  36. data/lib/{monad → jekyll}/converters/markdown/rdiscount_parser.rb +4 -2
  37. data/lib/{monad → jekyll}/converters/markdown/redcarpet_parser.rb +1 -1
  38. data/lib/{monad → jekyll}/converters/textile.rb +1 -1
  39. data/lib/{monad → jekyll}/convertible.rb +39 -17
  40. data/lib/{monad → jekyll}/core_ext.rb +22 -4
  41. data/lib/jekyll/deprecator.rb +36 -0
  42. data/lib/{monad → jekyll}/draft.rb +1 -1
  43. data/lib/{monad → jekyll}/drivers/json_driver.rb +1 -1
  44. data/lib/{monad → jekyll}/drivers/yaml_driver.rb +1 -1
  45. data/lib/{monad → jekyll}/errors.rb +1 -1
  46. data/lib/jekyll/excerpt.rb +113 -0
  47. data/lib/{monad → jekyll}/filters.rb +16 -6
  48. data/lib/{monad → jekyll}/generator.rb +1 -1
  49. data/lib/jekyll/generators/pagination.rb +214 -0
  50. data/lib/{monad → jekyll}/layout.rb +4 -1
  51. data/lib/{monad → jekyll}/mime.types +0 -0
  52. data/lib/{monad → jekyll}/page.rb +36 -39
  53. data/lib/{monad → jekyll}/plugin.rb +1 -1
  54. data/lib/{monad → jekyll}/post.rb +58 -123
  55. data/lib/jekyll/related_posts.rb +59 -0
  56. data/lib/{monad → jekyll}/site.rb +120 -123
  57. data/lib/{monad → jekyll}/static_file.rb +1 -1
  58. data/lib/jekyll/stevenson.rb +89 -0
  59. data/lib/jekyll/tags/gist.rb +48 -0
  60. data/lib/{monad → jekyll}/tags/highlight.rb +3 -3
  61. data/lib/jekyll/tags/include.rb +135 -0
  62. data/lib/{monad → jekyll}/tags/post_url.rb +8 -6
  63. data/lib/jekyll/url.rb +67 -0
  64. data/lib/monad.rb +36 -27
  65. data/lib/site_template/_config.yml +2 -1
  66. data/lib/site_template/_layouts/default.html +21 -23
  67. data/lib/site_template/_layouts/post.html +1 -1
  68. data/lib/site_template/_posts/{0000-00-00-welcome-to-monad.markdown.erb → 0000-00-00-welcome-to-jekyll.markdown.erb} +6 -6
  69. data/lib/site_template/css/main.css +22 -27
  70. data/lib/site_template/index.html +2 -2
  71. data/monad.gemspec +153 -52
  72. data/site/.gitignore +4 -0
  73. data/site/CNAME +1 -0
  74. data/site/README +1 -0
  75. data/site/_config.yml +6 -0
  76. data/site/_includes/analytics.html +32 -0
  77. data/site/_includes/docs_contents.html +16 -0
  78. data/site/_includes/docs_contents_mobile.html +23 -0
  79. data/site/_includes/docs_option.html +11 -0
  80. data/site/_includes/docs_ul.html +20 -0
  81. data/site/_includes/footer.html +15 -0
  82. data/site/_includes/header.html +18 -0
  83. data/site/_includes/news_contents.html +23 -0
  84. data/site/_includes/news_contents_mobile.html +11 -0
  85. data/site/_includes/news_item.html +24 -0
  86. data/site/_includes/primary-nav-items.html +14 -0
  87. data/site/_includes/section_nav.html +22 -0
  88. data/site/_includes/top.html +17 -0
  89. data/site/_layouts/default.html +12 -0
  90. data/site/_layouts/docs.html +23 -0
  91. data/site/_layouts/news.html +19 -0
  92. data/site/_layouts/news_item.html +27 -0
  93. data/site/_posts/2013-05-06-jekyll-1-0-0-released.markdown +23 -0
  94. data/site/_posts/2013-05-08-jekyll-1-0-1-released.markdown +27 -0
  95. data/site/_posts/2013-05-12-jekyll-1-0-2-released.markdown +28 -0
  96. data/site/_posts/2013-06-07-jekyll-1-0-3-released.markdown +25 -0
  97. data/site/_posts/2013-07-14-jekyll-1-1-0-released.markdown +27 -0
  98. data/site/_posts/2013-07-24-jekyll-1-1-1-released.markdown +31 -0
  99. data/site/_posts/2013-07-25-jekyll-1-0-4-released.markdown +20 -0
  100. data/site/_posts/2013-07-25-jekyll-1-1-2-released.markdown +20 -0
  101. data/site/_posts/2013-09-06-jekyll-1-2-0-released.markdown +23 -0
  102. data/site/_posts/2013-09-14-jekyll-1-2-1-released.markdown +19 -0
  103. data/site/css/gridism.css +110 -0
  104. data/site/css/normalize.css +1 -0
  105. data/site/css/pygments.css +70 -0
  106. data/site/css/style.css +946 -0
  107. data/site/docs/configuration.md +373 -0
  108. data/site/docs/contributing.md +128 -0
  109. data/site/docs/datafiles.md +63 -0
  110. data/site/docs/deployment-methods.md +109 -0
  111. data/site/docs/drafts.md +20 -0
  112. data/site/docs/extras.md +56 -0
  113. data/site/docs/frontmatter.md +180 -0
  114. data/site/docs/github-pages.md +91 -0
  115. data/site/docs/heroku.md +9 -0
  116. data/site/docs/history.md +722 -0
  117. data/site/docs/index.md +52 -0
  118. data/site/docs/installation.md +76 -0
  119. data/site/docs/migrations.md +257 -0
  120. data/site/docs/pages.md +86 -0
  121. data/site/docs/pagination.md +211 -0
  122. data/site/docs/permalinks.md +180 -0
  123. data/site/docs/plugins.md +508 -0
  124. data/site/docs/posts.md +181 -0
  125. data/site/docs/quickstart.md +32 -0
  126. data/site/docs/resources.md +46 -0
  127. data/site/docs/sites.md +29 -0
  128. data/site/docs/structure.md +190 -0
  129. data/site/docs/templates.md +319 -0
  130. data/site/docs/troubleshooting.md +150 -0
  131. data/site/docs/upgrading.md +146 -0
  132. data/site/docs/usage.md +63 -0
  133. data/site/docs/variables.md +322 -0
  134. data/site/favicon.png +0 -0
  135. data/site/feed.xml +36 -0
  136. data/site/freenode.txt +1 -0
  137. data/site/img/article-footer.png +0 -0
  138. data/site/img/footer-arrow.png +0 -0
  139. data/site/img/footer-logo.png +0 -0
  140. data/site/img/logo-2x.png +0 -0
  141. data/site/img/octojekyll.png +0 -0
  142. data/site/img/tube.png +0 -0
  143. data/site/img/tube1x.png +0 -0
  144. data/site/index.html +90 -0
  145. data/site/js/modernizr-2.5.3.min.js +4 -0
  146. data/site/news/index.html +10 -0
  147. data/site/news/releases/index.html +10 -0
  148. data/test/helper.rb +6 -3
  149. data/test/source/+/foo.md +7 -0
  150. data/test/source/_data/languages.yml +2 -0
  151. data/test/source/_data/members.yaml +7 -0
  152. data/test/source/_data/products.yml +4 -0
  153. data/test/source/_includes/params.html +7 -0
  154. data/test/source/_layouts/default.html +1 -1
  155. data/test/source/_layouts/post/simple.html +1 -0
  156. data/test/source/_plugins/dummy.rb +1 -1
  157. data/test/source/_posts/2013-01-02-post-excerpt.markdown +1 -1
  158. data/test/source/_posts/2013-07-22-post-excerpt-with-layout.markdown +23 -0
  159. data/test/source/_posts/2013-08-01-mkdn-extension.mkdn +0 -0
  160. data/test/source/deal.with.dots.html +1 -1
  161. data/test/source/products.yml +4 -0
  162. data/test/test_configuration.rb +46 -11
  163. data/test/test_convertible.rb +2 -2
  164. data/test/test_excerpt.rb +78 -0
  165. data/test/test_filters.rb +4 -4
  166. data/test/test_generated_site.rb +13 -13
  167. data/test/test_json_driver.rb +9 -9
  168. data/test/test_kramdown.rb +32 -5
  169. data/test/test_new_command.rb +8 -8
  170. data/test/test_page.rb +12 -3
  171. data/test/test_pager.rb +34 -33
  172. data/test/test_post.rb +34 -26
  173. data/test/test_redcloth.rb +3 -3
  174. data/test/test_related_posts.rb +47 -0
  175. data/test/test_site.rb +102 -44
  176. data/test/test_tags.rb +168 -23
  177. data/test/test_url.rb +28 -0
  178. data/test/test_yaml_driver.rb +6 -6
  179. metadata +215 -137
  180. data/lib/monad/commands/doctor.rb +0 -29
  181. data/lib/monad/commands/new.rb +0 -50
  182. data/lib/monad/commands/serve.rb +0 -33
  183. data/lib/monad/converters/markdown/kramdown_parser.rb +0 -44
  184. data/lib/monad/deprecator.rb +0 -32
  185. data/lib/monad/generators/pagination.rb +0 -143
  186. data/lib/monad/logger.rb +0 -54
  187. data/lib/monad/tags/gist.rb +0 -30
  188. data/lib/monad/tags/include.rb +0 -37
@@ -0,0 +1,48 @@
1
+ # Gist Liquid Tag
2
+ #
3
+ # Example:
4
+ # {% gist 1234567 %}
5
+ # {% gist 1234567 file.rb %}
6
+
7
+ module Jekyll
8
+ class GistTag < Liquid::Tag
9
+
10
+ def render(context)
11
+ if tag_contents = determine_arguments(@markup.strip)
12
+ gist_id, filename = tag_contents[0], tag_contents[1]
13
+ gist_script_tag(gist_id, filename)
14
+ else
15
+ raise ArgumentError.new <<-eos
16
+ Syntax error in tag 'gist' while parsing the following markup:
17
+
18
+ #{@markup}
19
+
20
+ Valid syntax:
21
+ for public gists: {% gist 1234567 %}
22
+ for private gists: {% gist user/1234567 %}
23
+ eos
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def determine_arguments(input)
30
+ matched = if input.include?("/")
31
+ input.match(/\A([a-zA-Z0-9\/\-_]+) ?(\S*)\Z/)
32
+ else
33
+ input.match(/\A(\d+) ?(\S*)\Z/)
34
+ end
35
+ [matched[1].strip, matched[2].strip] if matched && matched.length >= 3
36
+ end
37
+
38
+ def gist_script_tag(gist_id, filename = nil)
39
+ if filename.empty?
40
+ "<script src=\"https://gist.github.com/#{gist_id}.js\"> </script>"
41
+ else
42
+ "<script src=\"https://gist.github.com/#{gist_id}.js?file=#{filename}\"> </script>"
43
+ end
44
+ end
45
+ end
46
+ end
47
+
48
+ Liquid::Template.register_tag('gist', Jekyll::GistTag)
@@ -1,4 +1,4 @@
1
- module Monad
1
+ module Jekyll
2
2
  module Tags
3
3
  class HighlightBlock < Liquid::Block
4
4
  include Liquid::StandardFilters
@@ -14,7 +14,7 @@ module Monad
14
14
  def initialize(tag_name, markup, tokens)
15
15
  super
16
16
  if markup.strip =~ SYNTAX
17
- @lang = $1
17
+ @lang = $1.downcase
18
18
  @options = {}
19
19
  if defined?($2) && $2 != ''
20
20
  $2.split.each do |opt|
@@ -82,4 +82,4 @@ eos
82
82
  end
83
83
  end
84
84
 
85
- Liquid::Template.register_tag('highlight', Monad::Tags::HighlightBlock)
85
+ Liquid::Template.register_tag('highlight', Jekyll::Tags::HighlightBlock)
@@ -0,0 +1,135 @@
1
+ module Jekyll
2
+ module Tags
3
+ class IncludeTagError < StandardError
4
+ attr_accessor :path
5
+
6
+ def initialize(msg, path)
7
+ super(msg)
8
+ @path = path
9
+ end
10
+ end
11
+
12
+ class IncludeTag < Liquid::Tag
13
+
14
+ SYNTAX_EXAMPLE = "{% include file.ext param='value' param2='value' %}"
15
+
16
+ VALID_SYNTAX = /([\w-]+)\s*=\s*(?:"([^"\\]*(?:\\.[^"\\]*)*)"|'([^'\\]*(?:\\.[^'\\]*)*)'|([\w\.-]+))/
17
+
18
+ INCLUDES_DIR = '_includes'
19
+
20
+ def initialize(tag_name, markup, tokens)
21
+ super
22
+ @file, @params = markup.strip.split(' ', 2);
23
+ validate_params if @params
24
+ end
25
+
26
+ def parse_params(context)
27
+ params = {}
28
+ markup = @params
29
+
30
+ while match = VALID_SYNTAX.match(markup) do
31
+ markup = markup[match.end(0)..-1]
32
+
33
+ value = if match[2]
34
+ match[2].gsub(/\\"/, '"')
35
+ elsif match[3]
36
+ match[3].gsub(/\\'/, "'")
37
+ elsif match[4]
38
+ context[match[4]]
39
+ end
40
+
41
+ params[match[1]] = value
42
+ end
43
+ params
44
+ end
45
+
46
+ def validate_file_name
47
+ if @file !~ /^[a-zA-Z0-9_\/\.-]+$/ || @file =~ /\.\// || @file =~ /\/\./
48
+ raise ArgumentError.new <<-eos
49
+ Invalid syntax for include tag. File contains invalid characters or sequences:
50
+
51
+ #{@file}
52
+
53
+ Valid syntax:
54
+
55
+ #{SYNTAX_EXAMPLE}
56
+
57
+ eos
58
+ end
59
+ end
60
+
61
+ def validate_params
62
+ full_valid_syntax = Regexp.compile('\A\s*(?:' + VALID_SYNTAX.to_s + '(?=\s|\z)\s*)*\z')
63
+ unless @params =~ full_valid_syntax
64
+ raise ArgumentError.new <<-eos
65
+ Invalid syntax for include tag:
66
+
67
+ #{@params}
68
+
69
+ Valid syntax:
70
+
71
+ #{SYNTAX_EXAMPLE}
72
+
73
+ eos
74
+ end
75
+ end
76
+
77
+ # Grab file read opts in the context
78
+ def file_read_opts(context)
79
+ context.registers[:site].file_read_opts
80
+ end
81
+
82
+ def retrieve_variable(context)
83
+ if /\{\{([\w\-\.]+)\}\}/ =~ @file
84
+ raise ArgumentError.new("No variable #{$1} was found in include tag") if context[$1].nil?
85
+ @file = context[$1]
86
+ end
87
+ end
88
+
89
+ def render(context)
90
+ dir = File.join(context.registers[:site].source, INCLUDES_DIR)
91
+ validate_dir(dir, context.registers[:site].safe)
92
+
93
+ retrieve_variable(context)
94
+ validate_file_name
95
+
96
+ file = File.join(dir, @file)
97
+ validate_file(file, context.registers[:site].safe)
98
+
99
+ partial = Liquid::Template.parse(source(file, context))
100
+
101
+ context.stack do
102
+ context['include'] = parse_params(context) if @params
103
+ partial.render!(context)
104
+ end
105
+ rescue => e
106
+ raise IncludeTagError.new e.message, File.join(INCLUDES_DIR, @file)
107
+ end
108
+
109
+ def validate_dir(dir, safe)
110
+ if File.symlink?(dir) && safe
111
+ raise IOError.new "Includes directory '#{dir}' cannot be a symlink"
112
+ end
113
+ end
114
+
115
+ def validate_file(file, safe)
116
+ if !File.exists?(file)
117
+ raise IOError.new "Included file '#{@file}' not found in '#{INCLUDES_DIR}' directory"
118
+ elsif File.symlink?(file) && safe
119
+ raise IOError.new "The included file '#{INCLUDES_DIR}/#{@file}' should not be a symlink"
120
+ end
121
+ end
122
+
123
+ def blank?
124
+ false
125
+ end
126
+
127
+ # This method allows to modify the file content by inheriting from the class.
128
+ def source(file, context)
129
+ File.read_with_options(file, file_read_opts(context))
130
+ end
131
+ end
132
+ end
133
+ end
134
+
135
+ Liquid::Template.register_tag('include', Jekyll::Tags::IncludeTag)
@@ -1,4 +1,4 @@
1
- module Monad
1
+ module Jekyll
2
2
  module Tags
3
3
  class PostComparer
4
4
  MATCHER = /^(.+\/)*(\d+-\d+-\d+)-(.*)$/
@@ -19,9 +19,9 @@ module Monad
19
19
  end
20
20
 
21
21
  private
22
- # Construct the directory-aware post slug for a Monad::Post
22
+ # Construct the directory-aware post slug for a Jekyll::Post
23
23
  #
24
- # other - the Monad::Post
24
+ # other - the Jekyll::Post
25
25
  #
26
26
  # Returns the post slug with the subdirectory (relative to _posts)
27
27
  def post_slug(other)
@@ -50,12 +50,14 @@ module Monad
50
50
  end
51
51
  end
52
52
 
53
- puts "ERROR: post_url: \"#{@orig_post}\" could not be found"
53
+ raise ArgumentError.new <<-eos
54
+ Could not find post "#{@orig_post}" in tag 'post_url'.
54
55
 
55
- return "#"
56
+ Make sure the post exists and the name is correct.
57
+ eos
56
58
  end
57
59
  end
58
60
  end
59
61
  end
60
62
 
61
- Liquid::Template.register_tag('post_url', Monad::Tags::PostUrl)
63
+ Liquid::Template.register_tag('post_url', Jekyll::Tags::PostUrl)
@@ -0,0 +1,67 @@
1
+ # Public: Methods that generate a URL for a resource such as a Post or a Page.
2
+ #
3
+ # Examples
4
+ #
5
+ # URL.new({
6
+ # :template => /:categories/:title.html",
7
+ # :placeholders => {:categories => "ruby", :title => "something"}
8
+ # }).to_s
9
+ #
10
+ module Jekyll
11
+ class URL
12
+
13
+ # options - One of :permalink or :template must be supplied.
14
+ # :template - The String used as template for URL generation,
15
+ # for example "/:path/:basename:output_ext", where
16
+ # a placeholder is prefixed with a colon.
17
+ # :placeholders - A hash containing the placeholders which will be
18
+ # replaced when used inside the template. E.g.
19
+ # { "year" => Time.now.strftime("%Y") } would replace
20
+ # the placeholder ":year" with the current year.
21
+ # :permalink - If supplied, no URL will be generated from the
22
+ # template. Instead, the given permalink will be
23
+ # used as URL.
24
+ def initialize(options)
25
+ @template = options[:template]
26
+ @placeholders = options[:placeholders] || {}
27
+ @permalink = options[:permalink]
28
+
29
+ if (@template || @permalink).nil?
30
+ raise ArgumentError, "One of :template or :permalink must be supplied."
31
+ end
32
+ end
33
+
34
+ # The generated relative URL of the resource
35
+ #
36
+ # Returns the String URL
37
+ def to_s
38
+ sanitize_url(@permalink || generate_url)
39
+ end
40
+
41
+ # Internal: Generate the URL by replacing all placeholders with their
42
+ # respective values
43
+ #
44
+ # Returns the _unsanitizied_ String URL
45
+ def generate_url
46
+ @placeholders.inject(@template) do |result, token|
47
+ result.gsub(/:#{token.first}/, token.last)
48
+ end
49
+ end
50
+
51
+ # Returns a sanitized String URL
52
+ def sanitize_url(in_url)
53
+ # Remove all double slashes
54
+ url = in_url.gsub(/\/\//, "/")
55
+
56
+ # Remove every URL segment that consists solely of dots
57
+ url = url.split('/').reject{ |part| part =~ /^\.+$/ }.join('/')
58
+
59
+ # Append a trailing slash to the URL if the unsanitized URL had one
60
+ url += "/" if in_url =~ /\/$/
61
+
62
+ # Always add a leading slash
63
+ url.gsub!(/\A([^\/])/, '/\1')
64
+ url
65
+ end
66
+ end
67
+ end
@@ -20,6 +20,7 @@ require 'fileutils'
20
20
  require 'time'
21
21
  require 'safe_yaml'
22
22
  require 'English'
23
+ require 'pathname'
23
24
 
24
25
  # 3rd party
25
26
  require 'liquid'
@@ -27,43 +28,47 @@ require 'maruku'
27
28
  require 'colorator'
28
29
 
29
30
  # internal requires
30
- require 'monad/core_ext'
31
- require 'monad/logger'
32
- require 'monad/deprecator'
33
- require 'monad/configuration'
34
- require 'monad/site'
35
- require 'monad/convertible'
36
- require 'monad/layout'
37
- require 'monad/page'
38
- require 'monad/post'
39
- require 'monad/draft'
40
- require 'monad/filters'
41
- require 'monad/static_file'
42
- require 'monad/errors'
31
+ require 'jekyll/core_ext'
32
+ require 'jekyll/stevenson'
33
+ require 'jekyll/deprecator'
34
+ require 'jekyll/configuration'
35
+ require 'jekyll/site'
36
+ require 'jekyll/convertible'
37
+ require 'jekyll/url'
38
+ require 'jekyll/layout'
39
+ require 'jekyll/page'
40
+ require 'jekyll/post'
41
+ require 'jekyll/excerpt'
42
+ require 'jekyll/draft'
43
+ require 'jekyll/filters'
44
+ require 'jekyll/static_file'
45
+ require 'jekyll/errors'
46
+ require 'jekyll/related_posts'
47
+ require 'jekyll/cleaner'
43
48
 
44
49
  # extensions
45
- require 'monad/plugin'
46
- require 'monad/converter'
47
- require 'monad/generator'
48
- require 'monad/command'
50
+ require 'jekyll/plugin'
51
+ require 'jekyll/converter'
52
+ require 'jekyll/generator'
53
+ require 'jekyll/command'
49
54
 
50
- require_all 'monad/commands'
51
- require_all 'monad/converters'
52
- require_all 'monad/converters/markdown'
53
- require_all 'monad/generators'
54
- require_all 'monad/tags'
55
- require_all 'monad/drivers'
55
+ require_all 'jekyll/commands'
56
+ require_all 'jekyll/converters'
57
+ require_all 'jekyll/converters/markdown'
58
+ require_all 'jekyll/generators'
59
+ require_all 'jekyll/tags'
60
+ require_all 'jekyll/drivers'
56
61
 
57
62
  SafeYAML::OPTIONS[:suppress_warnings] = true
58
63
 
59
- module Monad
60
- VERSION = '0.0.2'
64
+ module Jekyll
65
+ VERSION = '1.2.1'
61
66
 
62
- # Public: Generate a Monad configuration Hash by merging the default
67
+ # Public: Generate a Jekyll configuration Hash by merging the default
63
68
  # options with anything in _config.yml, and adding the given options on top.
64
69
  #
65
70
  # override - A Hash of config directives that override any options in both
66
- # the defaults and the config file. See Monad::Configuration::DEFAULTS for a
71
+ # the defaults and the config file. See Jekyll::Configuration::DEFAULTS for a
67
72
  # list of option names and their defaults.
68
73
  #
69
74
  # Returns the final configuration Hash.
@@ -87,4 +92,8 @@ module Monad
87
92
  def self.set_timezone(timezone)
88
93
  ENV['TZ'] = timezone
89
94
  end
95
+
96
+ def self.logger
97
+ @logger ||= Stevenson.new
98
+ end
90
99
  end
@@ -1,2 +1,3 @@
1
- name: Your New Monad Site
1
+ name: Your New Jekyll Site
2
+ markdown: redcarpet
2
3
  pygments: true
@@ -15,32 +15,30 @@
15
15
  </head>
16
16
  <body>
17
17
 
18
- <div class="container">
19
- <div class="site">
20
- <div class="header">
21
- <h1 class="title"><a href="/">{{ site.name }}</a></h1>
22
- <a class="extra" href="/">home</a>
23
- </div>
24
-
25
- {{ content }}
18
+ <div class="site">
19
+ <div class="header">
20
+ <h1 class="title"><a href="/">{{ site.name }}</a></h1>
21
+ <a class="extra" href="/">home</a>
22
+ </div>
26
23
 
27
- <div class="footer">
28
- <div class="contact">
29
- <p>
30
- Your Name<br />
31
- What You Are<br />
32
- your@email.com
33
- </p>
34
- </div>
35
- <div class="contact">
36
- <p>
37
- <a href="http://github.com/yourusername/">github.com/yourusername</a><br />
38
- <a href="http://twitter.com/yourusername/">twitter.com/yourusername</a><br />
39
- </p>
40
- </div>
24
+ {{ content }}
25
+
26
+ <div class="footer">
27
+ <div class="contact">
28
+ <p>
29
+ Your Name<br />
30
+ What You Are<br />
31
+ you@example.com
32
+ </p>
33
+ </div>
34
+ <div class="contact">
35
+ <p>
36
+ <a href="https://github.com/yourusername">github.com/yourusername</a><br />
37
+ <a href="https://twitter.com/yourusername">twitter.com/yourusername</a><br />
38
+ </p>
41
39
  </div>
42
40
  </div>
43
- </div> <!-- /container -->
41
+ </div>
44
42
 
45
43
  </body>
46
44
  </html>