octopress-ink 1.0.0.alpha.29 → 1.0.0.alpha.30

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/lib/octopress-ink.rb +14 -4
  3. data/lib/octopress-ink/assets.rb +1 -0
  4. data/lib/octopress-ink/assets/page.rb +40 -0
  5. data/lib/octopress-ink/assets/root.rb +1 -2
  6. data/lib/octopress-ink/filters.rb +24 -9
  7. data/lib/octopress-ink/generators/plugin_assets.rb +1 -1
  8. data/lib/octopress-ink/helpers/path.rb +24 -1
  9. data/lib/octopress-ink/helpers/var.rb +1 -1
  10. data/lib/octopress-ink/jekyll/hooks.rb +3 -4
  11. data/lib/octopress-ink/jekyll/page.rb +31 -0
  12. data/lib/octopress-ink/{assets → jekyll}/static_file.rb +0 -0
  13. data/lib/octopress-ink/{assets → jekyll}/static_file_content.rb +0 -0
  14. data/lib/octopress-ink/plugin.rb +35 -8
  15. data/lib/octopress-ink/plugins.rb +8 -10
  16. data/lib/octopress-ink/tags.rb +2 -0
  17. data/lib/octopress-ink/tags/abort.rb +19 -0
  18. data/lib/octopress-ink/tags/assign.rb +1 -2
  19. data/lib/octopress-ink/tags/capture.rb +9 -2
  20. data/lib/octopress-ink/tags/content_for.rb +1 -2
  21. data/lib/octopress-ink/tags/filter.rb +21 -0
  22. data/lib/octopress-ink/tags/include.rb +1 -2
  23. data/lib/octopress-ink/tags/render.rb +1 -2
  24. data/lib/octopress-ink/tags/return.rb +1 -2
  25. data/lib/octopress-ink/tags/wrap.rb +10 -3
  26. data/lib/octopress-ink/tags/yield.rb +1 -6
  27. data/lib/octopress-ink/version.rb +1 -1
  28. data/test/expected/2014/02/01/test-post.html +14 -0
  29. data/test/expected/test_tags/abort_false.html +1 -0
  30. data/test/expected/test_tags/capture.html +2 -0
  31. data/test/expected/test_tags/filter.html +4 -0
  32. data/test/expected/test_tags/wrap.html +1 -0
  33. data/test/plugins/awesome-sauce/config.yml +2 -0
  34. data/test/{source/_plugins → plugins}/awesome-sauce/files/robots.txt +0 -0
  35. data/test/{source/_plugins → plugins}/awesome-sauce/includes/some-include.html +0 -0
  36. data/test/{source/_plugins → plugins}/awesome-sauce/layouts/test-layout.html +0 -0
  37. data/test/plugins/awesome-sauce/plugin.rb +16 -0
  38. data/test/{source/_plugins → plugins}/awesome-sauce/stylesheets/plugin-media-test.css +0 -0
  39. data/test/{source/_plugins → plugins}/awesome-sauce/stylesheets/plugin-test.css +0 -0
  40. data/test/{source/_plugins → plugins}/test-theme/config.yml +3 -0
  41. data/test/{source/_plugins → plugins}/test-theme/files/favicon.ico +0 -0
  42. data/test/{source/_plugins → plugins}/test-theme/files/favicon.png +0 -0
  43. data/test/{source/_plugins → plugins}/test-theme/files/test.html +0 -0
  44. data/test/{source/_plugins → plugins}/test-theme/includes/bar.html +0 -0
  45. data/test/{source/_plugins → plugins}/test-theme/includes/greet.html +0 -0
  46. data/test/{source/_plugins → plugins}/test-theme/javascripts/bar.js +0 -0
  47. data/test/{source/_plugins → plugins}/test-theme/javascripts/foo.js +0 -0
  48. data/test/{source/_plugins → plugins}/test-theme/layouts/default.html +0 -0
  49. data/test/{source/_plugins → plugins}/test-theme/layouts/test.html +0 -0
  50. data/test/plugins/test-theme/pages/pages-test.md +6 -0
  51. data/test/plugins/test-theme/pages/sub/test.md +5 -0
  52. data/test/{source/_plugins/bundler.rb → plugins/test-theme/plugin.rb} +1 -17
  53. data/test/{source/_plugins → plugins}/test-theme/stylesheets/_colors.scss +0 -0
  54. data/test/{source/_plugins → plugins}/test-theme/stylesheets/main.scss +0 -0
  55. data/test/{source/_plugins → plugins}/test-theme/stylesheets/theme-media-test@print.css +0 -0
  56. data/test/{source/_plugins → plugins}/test-theme/stylesheets/theme-test.css +0 -0
  57. data/test/{source/_plugins → plugins}/test-theme/stylesheets/theme-test2.css +0 -0
  58. data/test/site/2014/02/01/test-post.html +14 -0
  59. data/test/site/index.html +2 -0
  60. data/test/site/pages-tet.html +13 -0
  61. data/test/site/test_layouts/test_markdown.html +13 -0
  62. data/test/site/test_tags/abort_false.html +1 -0
  63. data/test/site/test_tags/abort_true.html +1 -0
  64. data/test/site/test_tags/capture.html +2 -0
  65. data/test/site/test_tags/filter.html +4 -0
  66. data/test/site/test_tags/wrap.html +1 -0
  67. data/test/source/_plugins/awesome-sauce/config.yml +1 -2
  68. data/test/source/_plugins/loader.rb +2 -0
  69. data/test/source/{_custom → _plugins}/theme/config.yml +3 -0
  70. data/test/source/{_custom → _plugins}/theme/includes/bar.html +0 -0
  71. data/test/source/{_custom → _plugins}/theme/layouts/test.html +0 -0
  72. data/test/source/{_custom → _plugins}/theme/stylesheets/_colors.sass +0 -0
  73. data/test/source/{_custom → _plugins}/theme/stylesheets/theme-test.css +0 -0
  74. data/test/source/_posts/2014-02-01-test-post.md +6 -0
  75. data/test/source/index.md +10 -0
  76. data/test/source/pages-tet.md +5 -0
  77. data/test/source/test_layouts/test_markdown.md +5 -0
  78. data/test/source/test_tags/abort_false.html +5 -0
  79. data/test/source/test_tags/abort_true.html +5 -0
  80. data/test/source/test_tags/capture.html +7 -0
  81. data/test/source/test_tags/content_for.html +1 -1
  82. data/test/source/test_tags/filter.html +6 -0
  83. data/test/source/test_tags/wrap.html +2 -1
  84. data/test/test.rb +13 -2
  85. metadata +100 -58
  86. data/test/source/_custom/awesome-sauce/config.yml +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1b32b9130d0f7aa2c02fd31e843550e1f3fe76fe
4
- data.tar.gz: 46be5b6827a83af4a481ab318f425a2cf406f477
3
+ metadata.gz: 271a68e3d38cef8481d93b84fb05cfc8583b6f03
4
+ data.tar.gz: ee98fbb5431c7abb1a18101712e7fb3988e083cf
5
5
  SHA512:
6
- metadata.gz: 2a6ac361f9f02a354888431144e604cf36c6c1067066a2dd3526722ce0f228a3a77b96e894c6254c8ca32f99cd7d224e29fd60b863dc416a286fef466527ef4e
7
- data.tar.gz: cd09c65826a81d14f74f9549511869ccfb23057211cc860e2c929e30538d2800729e5cf0706271f0c5522f9e1318f6e7e8fec9e4caf6784f607e0a5e3fcadc1b
6
+ metadata.gz: 2eb15b26133b814a97d397438596d1502dd6f32cbafb83bf3334177089e226b135f3328a49d81803c0c230187bb149e815ee06299d617b5104609bad5dd6774c
7
+ data.tar.gz: 441a8f7ad7927a86c2a1518cbed724344231ec006ca4bd4baf01de421bb41f3c6e84a053342c61934427d026d6deebec462552fb19ee93a451e009d84ced3351
data/lib/octopress-ink.rb CHANGED
@@ -9,13 +9,12 @@ require 'octopress-ink/version'
9
9
  require 'octopress-ink/helpers/titlecase'
10
10
 
11
11
  module Octopress
12
- CUSTOM_DIR = "_custom"
13
-
14
12
  autoload :Helpers, 'octopress-ink/helpers'
15
13
  autoload :Filters, 'octopress-ink/filters'
16
14
  autoload :Assets, 'octopress-ink/assets'
17
- autoload :StaticFile, 'octopress-ink/assets/static_file'
18
- autoload :StaticFileContent, 'octopress-ink/assets/static_file_content'
15
+ autoload :Page, 'octopress-ink/jekyll/page'
16
+ autoload :StaticFile, 'octopress-ink/jekyll/static_file'
17
+ autoload :StaticFileContent, 'octopress-ink/jekyll/static_file_content'
19
18
  autoload :Plugins, 'octopress-ink/plugins'
20
19
  autoload :Plugin, 'octopress-ink/plugin'
21
20
  autoload :Tags, 'octopress-ink/tags'
@@ -24,6 +23,15 @@ module Octopress
24
23
  def self.register_plugin(plugin, name, type='plugin')
25
24
  Plugins.register_plugin(plugin, name, type)
26
25
  end
26
+
27
+ def self.version
28
+ version = "Jekyll v#{Jekyll::VERSION}, "
29
+ if defined? Octopress::VERSION
30
+ version << "Octopress v#{Octopress::VERSION} "
31
+ end
32
+ version << "Octopress Ink v#{Octopress::Ink::VERSION}"
33
+ end
34
+
27
35
  end
28
36
 
29
37
  Liquid::Template.register_filter Octopress::Filters
@@ -32,12 +40,14 @@ Liquid::Template.register_tag('include', Octopress::Tags::IncludeTag)
32
40
  Liquid::Template.register_tag('assign', Octopress::Tags::AssignTag)
33
41
  Liquid::Template.register_tag('capture', Octopress::Tags::CaptureTag)
34
42
  Liquid::Template.register_tag('return', Octopress::Tags::ReturnTag)
43
+ Liquid::Template.register_tag('filter', Octopress::Tags::FilterTag)
35
44
  Liquid::Template.register_tag('render', Octopress::Tags::RenderTag)
36
45
  Liquid::Template.register_tag('octopress_js', Octopress::Tags::JavascriptTag)
37
46
  Liquid::Template.register_tag('octopress_css', Octopress::Tags::StylesheetTag)
38
47
  Liquid::Template.register_tag('content_for', Octopress::Tags::ContentForTag)
39
48
  Liquid::Template.register_tag('yield', Octopress::Tags::YieldTag)
40
49
  Liquid::Template.register_tag('wrap', Octopress::Tags::WrapTag)
50
+ Liquid::Template.register_tag('abort', Octopress::Tags::AbortTag)
41
51
  Liquid::Template.register_tag('_', Octopress::Tags::LineCommentTag)
42
52
 
43
53
  Octopress.register_plugin(Octopress::StylesheetsPlugin, 'user stylesheets', 'local_plugin')
@@ -3,6 +3,7 @@ module Octopress
3
3
  autoload :Asset, 'octopress-ink/assets/asset'
4
4
  autoload :Config, 'octopress-ink/assets/config'
5
5
  autoload :RootAsset, 'octopress-ink/assets/root'
6
+ autoload :PageAsset, 'octopress-ink/assets/page'
6
7
  autoload :Javascript, 'octopress-ink/assets/javascript'
7
8
  autoload :Stylesheet, 'octopress-ink/assets/stylesheet'
8
9
  autoload :Sass, 'octopress-ink/assets/sass'
@@ -0,0 +1,40 @@
1
+ # These are files which need to be in added to the root of the site directory
2
+ # Use root assets for files like robots.text or favicon.ico
3
+
4
+ module Octopress
5
+ module Assets
6
+ class PageAsset < Asset
7
+
8
+ def initialize(plugin, type, file)
9
+ @root = plugin.assets_path
10
+ @plugin = plugin
11
+ @type = type
12
+ @dir = File.dirname(file)
13
+ @file = File.basename(file)
14
+ @exists = {}
15
+ file_check
16
+ end
17
+
18
+ def page_dir
19
+ @dir == '.' ? '' : @dir
20
+ end
21
+
22
+ def plugin_path
23
+ File.join(plugin_dir, @dir, @file)
24
+ end
25
+
26
+ def page
27
+ @page ||= Page.new(Plugins.site, plugin_dir, page_dir, @file, @plugin.config)
28
+ end
29
+
30
+ # Add page to Jekyll pages if no other page has a conflicting destination
31
+ #
32
+ def copy
33
+ return unless page.url
34
+ Plugins.site.pages << @page unless Helpers::Path.find_page(@page)
35
+ end
36
+
37
+ end
38
+ end
39
+ end
40
+
@@ -1,7 +1,6 @@
1
1
  # These are files which need to be in added to the root of the site directory
2
2
  # Use root assets for files like robots.text or favicon.ico
3
3
 
4
-
5
4
  module Octopress
6
5
  module Assets
7
6
  class RootAsset < Asset
@@ -11,8 +10,8 @@ module Octopress
11
10
  @plugin = plugin
12
11
  @dir = ''
13
12
  @type = type
14
- @exists = {}
15
13
  @file = file
14
+ @exists = {}
16
15
  file_check
17
16
  end
18
17
 
@@ -25,6 +25,11 @@ module Octopress
25
25
  end
26
26
  end
27
27
 
28
+ # Prevent orphans in text by inserting a non-breaking space between the two last words of a string.
29
+ def unorphan(input)
30
+ input.sub(/\s+(\S+)\s*$/, '&nbsp;\1')
31
+ end
32
+
28
33
  # Prepend all absolute urls with a url fragment
29
34
  #
30
35
  # input - The content of a page or post
@@ -49,9 +54,9 @@ module Octopress
49
54
  def full_urls(input)
50
55
  url = Plugins.site.config['url']
51
56
  if url.nil?
52
- expand_urls(input)
57
+ raise IOError.new "Could not expand urls: Please add your published url to your _config.yml, eg url: http://example.com/"
53
58
  else
54
- File.join url, expand_urls(input)
59
+ expand_urls(input, url)
55
60
  end
56
61
  end
57
62
 
@@ -65,9 +70,9 @@ module Octopress
65
70
  def full_url(input)
66
71
  url = Plugins.site.config['url']
67
72
  if url.nil?
68
- expand_url(input)
73
+ raise IOError.new "Could not expand url in #{input}: Please add your site's published url to your _config.yml, eg url: http://example.com/"
69
74
  else
70
- File.join url, expand_url(input)
75
+ expand_url(input, url)
71
76
  end
72
77
  end
73
78
 
@@ -94,6 +99,11 @@ module Octopress
94
99
  input =~ /<!--\s*more\s*-->/i ? true : false
95
100
  end
96
101
 
102
+ # Escapes HTML content for XML
103
+ def cdata_escape(input)
104
+ input.gsub(/<!\[CDATA\[/, '&lt;![CDATA[').gsub(/\]\]>/, ']]&gt;')
105
+ end
106
+
97
107
  # Returns a title cased string based on John Gruber's title case http://daringfireball.net/2008/08/title_case_update
98
108
  def titlecase(input)
99
109
  input.titlecase
@@ -104,12 +114,17 @@ module Octopress
104
114
  input.gsub(/ /,'-').gsub(/[^\w-]/,'').downcase
105
115
  end
106
116
 
107
- # Replaces newlines with space characters
108
- def join_space(input)
109
- input.gsub(/^\s+/,'').gsub(/\s+/, ' ')
117
+ # Remove empty lines
118
+ def compact_newlines(input)
119
+ input.gsub(/\n{2,}/, "\n").gsub(/^ +\n/,"")
120
+ end
121
+
122
+ # Join newlines
123
+ def join_lines(input, separator='')
124
+ compact_newlines(input).strip.gsub(/\s*\n\s*/, separator)
110
125
  end
111
126
 
112
- module_function :root, :expand_url, :expand_urls, :full_url, :full_urls, :excerpt, :titlecase, :classify
113
- public :expand_url, :expand_urls, :full_url, :full_urls, :excerpt, :titlecase, :classify
127
+ module_function :root, :expand_url, :expand_urls, :full_url, :full_urls, :excerpt, :cdata_escape, :titlecase, :classify, :join_lines, :compact_newlines, :unorphan
128
+ public :expand_url, :expand_urls, :full_url, :full_urls, :excerpt, :cdata_escape, :titlecase, :classify, :join_lines, :compact_newlines, :unorphan
114
129
  end
115
130
  end
@@ -1,7 +1,7 @@
1
1
  module Octopress
2
2
  class PluginAssets < Jekyll::Generator
3
3
  def generate(site)
4
- Plugins.config(site)
4
+ Plugins.site = site
5
5
  Plugins.register_layouts
6
6
  Plugins.add_static_files
7
7
  site = Plugins.site
@@ -36,7 +36,30 @@ module Octopress
36
36
  File.join root, file
37
37
  end
38
38
  end
39
-
39
+
40
+ def self.site_dir
41
+ File.expand_path(Plugins.site.config['destination'])
42
+ end
43
+
44
+ def self.page_destination(page)
45
+ page.destination(site_dir)
46
+ end
47
+
48
+ def self.find_page(page)
49
+ find_page_by_dest find_page_by_dest(page)
50
+ end
51
+
52
+ def self.find_page_by_dest(dest)
53
+ Plugins.site.pages.clone.each do |p|
54
+ return p if page_destination(p) == dest
55
+ end
56
+ end
57
+
58
+ def self.remove_page(dest)
59
+ Plugins.site.pages.reject! do |p|
60
+ page_destination(p) == dest
61
+ end
62
+ end
40
63
  end
41
64
  end
42
65
  end
@@ -2,7 +2,7 @@ module Octopress
2
2
  module Helpers
3
3
  module Var
4
4
  TERNARY = /(.*?)\(\s*(.+?)\s+\?\s+(.+?)\s+:\s+(.+?)\s*\)(.+)?/
5
- HAS_FILTERS = /(.+?)(\s+\|\s+.+)/
5
+ HAS_FILTERS = /(.*?)(\s+\|\s+.+)/
6
6
 
7
7
  def self.set_var(var, operator, value, context)
8
8
  case operator
@@ -4,13 +4,12 @@ module Jekyll
4
4
 
5
5
  def do_layout(payload, layouts)
6
6
  # The contentblock tags needs access to the converter to process it while rendering.
7
- config = Octopress::Plugins.config(payload['site'])
7
+ config = Octopress::Plugins.config
8
8
  payload['plugins'] = config['plugins']
9
9
  payload['theme'] = config['theme']
10
10
  payload['converter'] = self.converter
11
- self.site.config['octopress'] = {}
12
- self.site.config['octopress']['theme'] = config['theme']
13
- self.site.config['octopress']['plugins'] = config['plugins']
11
+ payload['octopress'] = {}
12
+ payload['octopress']['version'] = Octopress.version
14
13
  do_layout_orig(payload, layouts)
15
14
  end
16
15
  end
@@ -0,0 +1,31 @@
1
+ module Octopress
2
+ class Page < Jekyll::Page
3
+
4
+ # Override the destination for a page
5
+ #
6
+ # url - Path relative to destination directory.
7
+ # examples:
8
+ # - '/' for the _site/index.html page
9
+ # - '/archive/' for the _site/archive/index.html page
10
+ #
11
+ def initialize(site, base, dir, name, config)
12
+ @plugin_config = config
13
+ super(site, base, dir, name)
14
+ end
15
+
16
+
17
+ # Allow pages to read url from plugin configuration
18
+ #
19
+ def url
20
+ @url ||= if path_config = self.data['url_config']
21
+ begin
22
+ config = @plugin_config
23
+ path_config.split('.').each { |key| config = config[key] }
24
+ config
25
+ rescue; end
26
+ else
27
+ super
28
+ end
29
+ end
30
+ end
31
+ end
File without changes
@@ -7,11 +7,13 @@ module Octopress
7
7
  def initialize(name, type)
8
8
  @layouts_dir = 'layouts'
9
9
  @files_dir = 'files'
10
+ @pages_dir = 'pages'
10
11
  @fonts_dir = 'fonts'
11
12
  @images_dir = 'images'
12
13
  @includes_dir = 'includes'
13
14
  @javascripts_dir = 'javascripts'
14
15
  @stylesheets_dir = 'stylesheets'
16
+ @plugins_dir = 'plugins'
15
17
  @config_file = 'config.yml'
16
18
  @name = name
17
19
  @type = type
@@ -20,22 +22,22 @@ module Octopress
20
22
  @stylesheets = []
21
23
  @javascripts = []
22
24
  @images = []
23
- @root_files = []
24
25
  @sass = []
25
26
  @fonts = []
26
27
  @files = []
28
+ @pages = []
27
29
  add_assets
28
30
  add_layouts
31
+ add_pages
29
32
  add_includes
30
33
  add_config
34
+ require_plugins
31
35
  end
32
36
 
33
- def add_assets
34
-
35
- end
37
+ def add_assets; end
36
38
 
37
39
  def add_config
38
- @configs = Assets::Config.new(self, @config_file)
40
+ @config_file = Assets::Config.new(self, @config_file)
39
41
  end
40
42
 
41
43
  def namespace
@@ -58,6 +60,32 @@ module Octopress
58
60
  @javascripts << Assets::Javascript.new(self, @javascripts_dir, file)
59
61
  end
60
62
 
63
+ def add_pages
64
+ if @assets_path
65
+ base = File.join(@assets_path, @pages_dir)
66
+ entries = []
67
+ if Dir.exists?(base)
68
+ Dir.chdir(base) { entries = Dir['**/*.*'] }
69
+ entries.each do |file|
70
+ @files << Assets::PageAsset.new(self, @pages_dir, file)
71
+ end
72
+ end
73
+ end
74
+ end
75
+
76
+ def require_plugins
77
+ if @assets_path
78
+ base = File.join(@assets_path, @plugins_dir)
79
+ entries = []
80
+ if Dir.exists?(base)
81
+ Dir.chdir(base) { entries = Dir['**/*.rb'] }
82
+ entries.each do |file|
83
+ require File.join base, file
84
+ end
85
+ end
86
+ end
87
+ end
88
+
61
89
  def add_layouts
62
90
  if @assets_path
63
91
  base = File.join(@assets_path, @layouts_dir)
@@ -155,9 +183,8 @@ module Octopress
155
183
  @includes.file file
156
184
  end
157
185
 
158
- def configs
159
- @config ||= @configs.read
160
- @config
186
+ def config
187
+ @config ||= @config_file.read
161
188
  end
162
189
  end
163
190
  end
@@ -25,23 +25,26 @@ module Octopress
25
25
  [@theme].concat(@plugins).concat(@local_plugins).compact
26
26
  end
27
27
 
28
+ def self.site=(site)
29
+ @site = site
30
+ end
31
+
28
32
  def self.site
29
33
  @site
30
34
  end
31
35
 
32
- def self.config(site=nil)
33
- @site ||= site
36
+ def self.config
34
37
  if @config
35
38
  @config
36
39
  else
37
40
  @config = {}
38
41
  @config['plugins'] = {}
39
- @config['theme'] = @theme.nil? ? {} : @theme.configs
42
+ @config['theme'] = @theme.nil? ? {} : @theme.config
40
43
 
41
44
 
42
45
  plugins.each do |p|
43
46
  unless p == @theme
44
- @config['plugins'][p.name] = p.configs
47
+ @config['plugins'][p.name] = p.config
45
48
  end
46
49
  end
47
50
 
@@ -74,12 +77,7 @@ module Octopress
74
77
  end
75
78
 
76
79
  def self.custom_dir
77
- config = @site.config
78
- if config['octopress'] and config['octopress']['custom']
79
- config['octopress']['custom']
80
- else
81
- CUSTOM_DIR
82
- end
80
+ @site.config['plugins']
83
81
  end
84
82
 
85
83
  def self.fingerprint(paths)
@@ -3,6 +3,7 @@ module Octopress
3
3
  autoload :IncludeTag, 'octopress-ink/tags/include'
4
4
  autoload :AssignTag, 'octopress-ink/tags/assign'
5
5
  autoload :ReturnTag, 'octopress-ink/tags/return'
6
+ autoload :FilterTag, 'octopress-ink/tags/filter'
6
7
  autoload :RenderTag, 'octopress-ink/tags/render'
7
8
  autoload :CaptureTag, 'octopress-ink/tags/capture'
8
9
  autoload :JavascriptTag, 'octopress-ink/tags/javascript'
@@ -10,6 +11,7 @@ module Octopress
10
11
  autoload :ContentForTag, 'octopress-ink/tags/content_for'
11
12
  autoload :YieldTag, 'octopress-ink/tags/yield'
12
13
  autoload :WrapTag, 'octopress-ink/tags/wrap'
14
+ autoload :AbortTag, 'octopress-ink/tags/abort'
13
15
  autoload :LineCommentTag, 'octopress-ink/tags/line_comment'
14
16
  end
15
17
  end