octopress-ink 1.0.0.alpha.24 → 1.0.0.alpha.25
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/octopress-ink/assets/asset.rb +19 -19
- data/lib/octopress-ink/assets/config.rb +6 -6
- data/lib/octopress-ink/assets/javascript.rb +1 -1
- data/lib/octopress-ink/assets/layout.rb +4 -4
- data/lib/octopress-ink/assets/root.rb +3 -3
- data/lib/octopress-ink/assets/sass.rb +13 -13
- data/lib/octopress-ink/assets/stylesheet.rb +1 -1
- data/lib/octopress-ink/filters.rb +115 -0
- data/lib/octopress-ink/generators/plugin_assets.rb +4 -2
- data/lib/octopress-ink/helpers/conditional.rb +1 -1
- data/lib/octopress-ink/helpers/content_for.rb +1 -1
- data/lib/octopress-ink/helpers/path.rb +2 -2
- data/lib/octopress-ink/helpers/titlecase.rb +36 -0
- data/lib/octopress-ink/helpers/var.rb +63 -3
- data/lib/octopress-ink/jekyll/hooks.rb +3 -0
- data/lib/octopress-ink/plugin.rb +15 -15
- data/lib/octopress-ink/plugins/stylesheets.rb +11 -9
- data/lib/octopress-ink/plugins.rb +78 -67
- data/lib/octopress-ink/tags/assign.rb +1 -1
- data/lib/octopress-ink/tags/include.rb +13 -3
- data/lib/octopress-ink/tags/javascript.rb +1 -5
- data/lib/octopress-ink/tags/line_comment.rb +7 -0
- data/lib/octopress-ink/tags/render.rb +12 -3
- data/lib/octopress-ink/tags/return.rb +1 -1
- data/lib/octopress-ink/tags/stylesheet.rb +1 -5
- data/lib/octopress-ink/tags/wrap.rb +3 -3
- data/lib/octopress-ink/tags/yield.rb +14 -3
- data/lib/octopress-ink/tags.rb +1 -0
- data/lib/octopress-ink/version.rb +1 -1
- data/lib/octopress-ink.rb +5 -0
- data/test/expected/test_tags/assign.html +1 -0
- data/test/expected/test_tags/content_for.html +4 -1
- data/test/expected/test_tags/include.html +4 -0
- data/test/expected/test_tags/render.html +4 -0
- data/test/expected/test_tags/wrap.html +7 -0
- data/test/site/test_tags/assign.html +1 -0
- data/test/site/test_tags/content_for.html +4 -1
- data/test/site/test_tags/include.html +4 -0
- data/test/site/test_tags/render.html +4 -0
- data/test/site/test_tags/wrap.html +7 -0
- data/test/source/test_tags/assign.html +1 -0
- data/test/source/test_tags/content_for.html +19 -4
- data/test/source/test_tags/include.html +4 -0
- data/test/source/test_tags/render.html +4 -0
- data/test/source/test_tags/return.html +1 -1
- data/test/source/test_tags/wrap.html +7 -0
- data/test/test.rb +2 -1
- metadata +5 -22
- data/test/expected/test_tags/footer.html +0 -3
- data/test/expected/test_tags/head.html +0 -4
- data/test/expected/test_tags/scripts.html +0 -4
- data/test/site/test_tags/footer.html +0 -3
- data/test/site/test_tags/head.html +0 -4
- data/test/site/test_tags/scripts.html +0 -4
- data/test/source/_layouts/content_for.html +0 -3
- data/test/source/test_tags/footer.html +0 -6
- data/test/source/test_tags/head.html +0 -10
- data/test/source/test_tags/scripts.html +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de4dedafd926d2d6222ffd41be255ff2c003e0eb
|
4
|
+
data.tar.gz: c9fa39b81fd8226df9d1184596760e1c232f719b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cce34cf01f0ba29e84a53839d8e4ad8d44d44b3ca2528c942f5c06dfa58405e0207c9f9f8d068d50f3fc168255d07bb225ffa3e9168ff0ca51592e3f1f5018b3
|
7
|
+
data.tar.gz: 2e46aed362277f732cc98ef8bded455359cda4527a6a9c6312c80cd83aa3e302d5e9d89b04bcafe8378f28eff7cc4c25502e19ff76c2a336f3a234d84d14f965
|
@@ -16,12 +16,12 @@ module Octopress
|
|
16
16
|
@file
|
17
17
|
end
|
18
18
|
|
19
|
-
def path
|
19
|
+
def path
|
20
20
|
if @found_file and !@no_cache
|
21
21
|
@found_file
|
22
22
|
else
|
23
23
|
files = []
|
24
|
-
files << user_path
|
24
|
+
files << user_path
|
25
25
|
files << plugin_path unless @plugin.type == 'local_plugin'
|
26
26
|
files = files.flatten.reject { |f| !exists? f }
|
27
27
|
|
@@ -32,17 +32,17 @@ module Octopress
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
def file(file
|
35
|
+
def file(file)
|
36
36
|
@file = file
|
37
|
-
path
|
37
|
+
path
|
38
38
|
end
|
39
39
|
|
40
40
|
def destination
|
41
41
|
File.join(@dir, @file)
|
42
42
|
end
|
43
43
|
|
44
|
-
def copy
|
45
|
-
site.static_files << StaticFile.new(path
|
44
|
+
def copy
|
45
|
+
Plugins.site.static_files << StaticFile.new(path, destination)
|
46
46
|
end
|
47
47
|
|
48
48
|
def plugin_dir
|
@@ -53,23 +53,23 @@ module Octopress
|
|
53
53
|
File.join plugin_dir, @file
|
54
54
|
end
|
55
55
|
|
56
|
-
def user_dir
|
57
|
-
File.join site.source, Plugins.custom_dir
|
56
|
+
def user_dir
|
57
|
+
File.join Plugins.site.source, Plugins.custom_dir, @dir
|
58
58
|
end
|
59
59
|
|
60
|
-
def local_plugin_path
|
61
|
-
File.join site.source, @dir, @file
|
60
|
+
def local_plugin_path
|
61
|
+
File.join Plugins.site.source, @dir, @file
|
62
62
|
end
|
63
63
|
|
64
|
-
def user_override_path
|
65
|
-
File.join user_dir
|
64
|
+
def user_override_path
|
65
|
+
File.join user_dir, @file
|
66
66
|
end
|
67
67
|
|
68
|
-
def user_path
|
68
|
+
def user_path
|
69
69
|
if @plugin.type == 'local_plugin'
|
70
|
-
local_plugin_path
|
70
|
+
local_plugin_path
|
71
71
|
else
|
72
|
-
user_override_path
|
72
|
+
user_override_path
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
@@ -82,10 +82,10 @@ module Octopress
|
|
82
82
|
# Remove files from Jekyll's static_files array so it doesn't end up in the
|
83
83
|
# compiled site directory.
|
84
84
|
#
|
85
|
-
def remove_jekyll_asset
|
86
|
-
site.static_files.clone.each do |sf|
|
87
|
-
if sf.kind_of?(Jekyll::StaticFile) && sf.path == path
|
88
|
-
site.static_files.delete(sf)
|
85
|
+
def remove_jekyll_asset
|
86
|
+
Plugins.site.static_files.clone.each do |sf|
|
87
|
+
if sf.kind_of?(Jekyll::StaticFile) && sf.path == path.to_s
|
88
|
+
Plugins.site.static_files.delete(sf)
|
89
89
|
end
|
90
90
|
end
|
91
91
|
end
|
@@ -11,15 +11,15 @@ module Octopress
|
|
11
11
|
@file = path
|
12
12
|
end
|
13
13
|
|
14
|
-
def user_dir
|
15
|
-
File.join site
|
14
|
+
def user_dir
|
15
|
+
File.join Plugins.site.source, Plugins.custom_dir, @dir
|
16
16
|
end
|
17
17
|
|
18
|
-
def local_plugin_path
|
19
|
-
File.join site
|
18
|
+
def local_plugin_path
|
19
|
+
File.join Plugins.site.source, @dir, @file
|
20
20
|
end
|
21
21
|
|
22
|
-
def read
|
22
|
+
def read
|
23
23
|
config = {}
|
24
24
|
if @plugin.type != 'local_plugin'
|
25
25
|
default = plugin_path
|
@@ -27,7 +27,7 @@ module Octopress
|
|
27
27
|
config = YAML.safe_load(File.open(default))
|
28
28
|
end
|
29
29
|
end
|
30
|
-
override = user_path
|
30
|
+
override = user_path
|
31
31
|
if exists? override
|
32
32
|
config = config.deep_merge YAML.safe_load(File.open(override))
|
33
33
|
end
|
@@ -2,18 +2,18 @@ module Octopress
|
|
2
2
|
module Assets
|
3
3
|
class Layout < Asset
|
4
4
|
|
5
|
-
def register
|
5
|
+
def register
|
6
6
|
name = "#{@plugin.namespace}:#{@file}"
|
7
7
|
name = name.split(".")[0..-2].join(".")
|
8
8
|
|
9
|
-
file = user_path
|
10
|
-
dir = user_dir
|
9
|
+
file = user_path
|
10
|
+
dir = user_dir
|
11
11
|
if !exists?(file)
|
12
12
|
file = plugin_path
|
13
13
|
dir = plugin_dir
|
14
14
|
end
|
15
15
|
|
16
|
-
site.layouts[name] = Jekyll::Layout.new(site, dir, @file)
|
16
|
+
Plugins.site.layouts[name] = Jekyll::Layout.new(Plugins.site, dir, @file)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
@@ -16,9 +16,9 @@ module Octopress
|
|
16
16
|
file_check
|
17
17
|
end
|
18
18
|
|
19
|
-
def copy
|
20
|
-
unless exists? local_plugin_path
|
21
|
-
site.static_files << StaticFile.new(plugin_path, destination)
|
19
|
+
def copy
|
20
|
+
unless exists? local_plugin_path
|
21
|
+
Plugins.site.static_files << StaticFile.new(plugin_path, destination)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -13,39 +13,39 @@ module Octopress
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def tag
|
16
|
-
"<link href='
|
16
|
+
"<link href='#{Filters.expand_url(File.join(@dir, @file))}' media='#{media}' rel='stylesheet' type='text/css'>"
|
17
17
|
end
|
18
18
|
|
19
19
|
# TODO: choose user path before local path.
|
20
|
-
def user_load_path
|
21
|
-
File.join(site.source, Plugins.custom_dir
|
20
|
+
def user_load_path
|
21
|
+
File.join(Plugins.site.source, Plugins.custom_dir, @dir, File.dirname(@file)).sub /\/\.$/, ''
|
22
22
|
end
|
23
23
|
|
24
24
|
def theme_load_path
|
25
25
|
File.expand_path(File.join(@root, @type))
|
26
26
|
end
|
27
27
|
|
28
|
-
def compile
|
28
|
+
def compile
|
29
29
|
unless @compiled
|
30
|
-
options = Plugins.sass_options
|
30
|
+
options = Plugins.sass_options
|
31
31
|
if @plugin.type == 'local_plugin'
|
32
|
-
@compiled = Plugins.compile_sass_file(path
|
32
|
+
@compiled = Plugins.compile_sass_file(path.to_s, options)
|
33
33
|
else
|
34
34
|
# If the plugin isn't a local plugin, add source paths to allow overrieds on @imports.
|
35
35
|
#
|
36
|
-
options[:load_paths] = [user_load_path
|
37
|
-
@compiled = Plugins.compile_sass(path
|
36
|
+
options[:load_paths] = [user_load_path, theme_load_path]
|
37
|
+
@compiled = Plugins.compile_sass(path.read, options)
|
38
38
|
end
|
39
39
|
end
|
40
40
|
@compiled
|
41
41
|
end
|
42
42
|
|
43
|
-
def user_override_path
|
43
|
+
def user_override_path
|
44
44
|
# Allow Sass overrides to use either syntax
|
45
45
|
if @file =~ /s[ac]ss$/
|
46
|
-
[File.join(user_dir
|
46
|
+
[File.join(user_dir, @file), File.join(user_dir, alt_syntax_file)]
|
47
47
|
else
|
48
|
-
File.join user_dir
|
48
|
+
File.join user_dir, @file
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
@@ -53,8 +53,8 @@ module Octopress
|
|
53
53
|
File.join(@dir, @file.sub(/s.ss/, 'css'))
|
54
54
|
end
|
55
55
|
|
56
|
-
def copy
|
57
|
-
site.static_files << StaticFileContent.new(compile
|
56
|
+
def copy
|
57
|
+
Plugins.site.static_files << StaticFileContent.new(compile, destination)
|
58
58
|
end
|
59
59
|
end
|
60
60
|
end
|
@@ -25,7 +25,7 @@ module Octopress
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def tag
|
28
|
-
"<link href='
|
28
|
+
"<link href='#{Filters.expand_url(File.join(@dir, @file))}' media='#{media}' rel='stylesheet' type='text/css'>"
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
module Octopress
|
2
|
+
module Filters
|
3
|
+
|
4
|
+
|
5
|
+
# Returns the site's config root or '/' if the config isn't set
|
6
|
+
#
|
7
|
+
def root
|
8
|
+
root_url = Plugins.site.config['root']
|
9
|
+
root_url.nil? ? '/' : File.join('/', root_url)
|
10
|
+
end
|
11
|
+
|
12
|
+
# Prepends input with a url fragment
|
13
|
+
#
|
14
|
+
# input - An absolute url, e.g. /images/awesome.gif
|
15
|
+
# url - The fragment to prepend the input, e.g. /blog
|
16
|
+
#
|
17
|
+
# Returns the modified url, e.g /blog
|
18
|
+
#
|
19
|
+
def expand_url(input, url=nil)
|
20
|
+
url ||= root
|
21
|
+
if input =~ /^#{url}/
|
22
|
+
input
|
23
|
+
else
|
24
|
+
File.join(url, input)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# Prepend all absolute urls with a url fragment
|
29
|
+
#
|
30
|
+
# input - The content of a page or post
|
31
|
+
# url - The fragment to prepend absolute urls
|
32
|
+
#
|
33
|
+
# Returns input with modified urls
|
34
|
+
#
|
35
|
+
def expand_urls(input, url=nil)
|
36
|
+
url ||= root
|
37
|
+
input.gsub /(\s+(href|src)\s*=\s*["|']{1})(\/[^\"'>]*)/ do
|
38
|
+
$1 + expand_url($3, url)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# Prepend all urls with the full site url
|
43
|
+
#
|
44
|
+
# input - The content of a page or post
|
45
|
+
#
|
46
|
+
# Returns input with all urls expanded to include the full site url
|
47
|
+
# e.g. /images/awesome.gif => http://example.com/images/awesome.gif
|
48
|
+
#
|
49
|
+
def full_urls(input)
|
50
|
+
url = Plugins.site.config['url']
|
51
|
+
if url.nil?
|
52
|
+
expand_urls(input)
|
53
|
+
else
|
54
|
+
File.join url, expand_urls(input)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# Prepend a url with the full site url
|
59
|
+
#
|
60
|
+
# input - a url
|
61
|
+
#
|
62
|
+
# Returns input with all urls expanded to include the full site url
|
63
|
+
# e.g. /images/awesome.gif => http://example.com/images/awesome.gif
|
64
|
+
#
|
65
|
+
def full_url(input)
|
66
|
+
url = Plugins.site.config['url']
|
67
|
+
if url.nil?
|
68
|
+
expand_url(input)
|
69
|
+
else
|
70
|
+
File.join url, expand_url(input)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
# Truncate a string at the <!--more--> marker
|
75
|
+
# input - The content of a post or page
|
76
|
+
#
|
77
|
+
# Returns only the content preceeding the marker
|
78
|
+
#
|
79
|
+
def excerpt(input)
|
80
|
+
if input.index(/<!--\s*more\s*-->/i)
|
81
|
+
input.split(/<!--\s*more\s*-->/i)[0]
|
82
|
+
else
|
83
|
+
input
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
# Checks for excerpt markers (helpful for template conditionals)
|
88
|
+
#
|
89
|
+
# input - The content of a page or post
|
90
|
+
#
|
91
|
+
# Returns true/false if the excerpt marker is found
|
92
|
+
#
|
93
|
+
def has_excerpt(input)
|
94
|
+
input =~ /<!--\s*more\s*-->/i ? true : false
|
95
|
+
end
|
96
|
+
|
97
|
+
# Returns a title cased string based on John Gruber's title case http://daringfireball.net/2008/08/title_case_update
|
98
|
+
def titlecase(input)
|
99
|
+
input.titlecase
|
100
|
+
end
|
101
|
+
|
102
|
+
# Formats a string for use as a css classname, removing illegal characters
|
103
|
+
def classify(input)
|
104
|
+
input.gsub(/ /,'-').gsub(/[^\w-]/,'').downcase
|
105
|
+
end
|
106
|
+
|
107
|
+
# Replaces newlines with space characters
|
108
|
+
def join_space(input)
|
109
|
+
input.gsub(/^\s+/,'').gsub(/\s+/, ' ')
|
110
|
+
end
|
111
|
+
|
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
|
114
|
+
end
|
115
|
+
end
|
@@ -1,8 +1,10 @@
|
|
1
1
|
module Octopress
|
2
2
|
class PluginAssets < Jekyll::Generator
|
3
3
|
def generate(site)
|
4
|
-
Plugins.
|
5
|
-
Plugins.
|
4
|
+
Plugins.config(site)
|
5
|
+
Plugins.register_layouts
|
6
|
+
Plugins.add_static_files
|
7
|
+
site = Plugins.site
|
6
8
|
end
|
7
9
|
end
|
8
10
|
end
|
@@ -21,7 +21,7 @@ module Octopress
|
|
21
21
|
|
22
22
|
def self.append_to_block(context, block, content)
|
23
23
|
converter = context.environments.first['converter']
|
24
|
-
content = converter.convert(content).
|
24
|
+
content = converter.convert(content).sub(/\n$/,'')
|
25
25
|
get_block(context, block) << content
|
26
26
|
end
|
27
27
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
module Octopress
|
2
2
|
module Helpers
|
3
3
|
module Path
|
4
|
-
FILE = /(\S+)(\s.*)/
|
4
|
+
FILE = /(\S+)(\s?)(.*)/
|
5
5
|
def self.parse(markup, context)
|
6
6
|
if markup =~ FILE
|
7
|
-
(context[$1].nil? ? $1 : context[$1]) + $
|
7
|
+
(context[$1].nil? ? $1 : context[$1]) + ' ' + ($3 || '')
|
8
8
|
else
|
9
9
|
markup
|
10
10
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class String
|
2
|
+
def titlecase
|
3
|
+
small_words = %w(a an and as at but by en for if in of on or the to v v. via vs vs.)
|
4
|
+
|
5
|
+
x = split(" ").map do |word|
|
6
|
+
# note: word could contain non-word characters!
|
7
|
+
# downcase all small_words, capitalize the rest
|
8
|
+
small_words.include?(word.gsub(/\W/, "").downcase) ? word.downcase! : word.smart_capitalize!
|
9
|
+
word
|
10
|
+
end
|
11
|
+
# capitalize first and last words
|
12
|
+
x.first.to_s.smart_capitalize!
|
13
|
+
x.last.to_s.smart_capitalize!
|
14
|
+
# small words are capitalized after colon, period, exclamation mark, question mark
|
15
|
+
x.join(" ").gsub(/(:|\.|!|\?)\s?(\W*#{small_words.join("|")}\W*)\s/) { "#{$1} #{$2.smart_capitalize} " }
|
16
|
+
end
|
17
|
+
|
18
|
+
def titlecase!
|
19
|
+
replace(titlecase)
|
20
|
+
end
|
21
|
+
|
22
|
+
def smart_capitalize
|
23
|
+
# ignore any leading crazy characters and capitalize the first real character
|
24
|
+
if self =~ /^['"\(\[']*([a-z])/
|
25
|
+
i = index($1)
|
26
|
+
x = self[i,self.length]
|
27
|
+
# word with capitals and periods mid-word are left alone
|
28
|
+
self[i,1] = self[i,1].upcase unless x =~ /[A-Z]/ or x =~ /\.\w+/
|
29
|
+
end
|
30
|
+
self
|
31
|
+
end
|
32
|
+
|
33
|
+
def smart_capitalize!
|
34
|
+
replace(smart_capitalize)
|
35
|
+
end
|
36
|
+
end
|
@@ -2,6 +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
6
|
|
6
7
|
def self.set_var(var, operator, value, context)
|
7
8
|
case operator
|
@@ -22,21 +23,80 @@ module Octopress
|
|
22
23
|
def self.get_value(vars, context)
|
23
24
|
vars = evaluate_ternary(vars, context)
|
24
25
|
vars = vars.strip.gsub(/ or /, ' || ')
|
26
|
+
filters = false
|
27
|
+
if vars =~ HAS_FILTERS
|
28
|
+
vars = $1
|
29
|
+
filters = $2
|
30
|
+
end
|
25
31
|
vars = vars.split(/ \|\| /).map { |v|
|
26
|
-
|
32
|
+
context[v.strip]
|
27
33
|
}.compact
|
28
34
|
|
29
|
-
|
35
|
+
var = vars.first
|
36
|
+
if filters
|
37
|
+
var = Liquid::Variable.new("'#{var}'"+ filters).render(context)
|
38
|
+
end
|
39
|
+
var
|
30
40
|
end
|
31
41
|
|
32
42
|
def self.evaluate_ternary(markup, context)
|
33
43
|
if markup =~ TERNARY
|
34
|
-
$1 + (Conditional.parse("if #{$2}", context) ? $3 : $4) + $5
|
44
|
+
$1 + (Conditional.parse(" if #{$2}", context) ? $3 : $4) + $5
|
35
45
|
else
|
36
46
|
markup
|
37
47
|
end
|
38
48
|
end
|
39
49
|
|
50
|
+
# Parses filters into arrays
|
51
|
+
#
|
52
|
+
# input - a string of one or more filters, e.g. "| upcase | replace:'a','b'"
|
53
|
+
#
|
54
|
+
# Returns nested arrays of filters and arguments
|
55
|
+
#
|
56
|
+
def self.parse_filters(input)
|
57
|
+
output = []
|
58
|
+
if input.match(/#{Liquid::FilterSeparator}\s*(.*)/o)
|
59
|
+
filters = Regexp.last_match(1).scan(Liquid::Variable::FilterParser)
|
60
|
+
filters.each do |f|
|
61
|
+
if matches = f.match(/\s*(\w+)/)
|
62
|
+
filtername = matches[1]
|
63
|
+
filterargs = f.scan(/(?:#{Liquid::FilterArgumentSeparator}|#{Liquid::ArgumentSeparator})\s*((?:\w+\s*\:\s*)?#{Liquid::QuotedFragment})/o).flatten
|
64
|
+
output << [filtername, filterargs]
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
output
|
69
|
+
end
|
70
|
+
|
71
|
+
# Passes input through Liquid filters
|
72
|
+
#
|
73
|
+
# content - a string to be parsed
|
74
|
+
# filters - a series of liquid filters e.g. "| upcase | replace:'a','b'"
|
75
|
+
# context - the current Liquid context object
|
76
|
+
#
|
77
|
+
# Returns a filtered string
|
78
|
+
#
|
79
|
+
def self.render_filters(content, filters, context)
|
80
|
+
filters = parse_filters(filters)
|
81
|
+
return '' if content.nil?
|
82
|
+
filters.inject(content) do |output, filter|
|
83
|
+
filterargs = []
|
84
|
+
keyword_args = {}
|
85
|
+
filter[1].to_a.each do |a|
|
86
|
+
if matches = a.match(/\A#{Liquid::TagAttributes}\z/o)
|
87
|
+
keyword_args[matches[1]] = context[matches[2]]
|
88
|
+
else
|
89
|
+
filterargs << context[a]
|
90
|
+
end
|
91
|
+
end
|
92
|
+
filterargs << keyword_args unless keyword_args.empty?
|
93
|
+
begin
|
94
|
+
output = context.invoke(filter[0], output, *filterargs)
|
95
|
+
rescue
|
96
|
+
raise "Error - filter '#{filter[0]}' could not be found."
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
40
100
|
end
|
41
101
|
end
|
42
102
|
end
|
@@ -8,6 +8,9 @@ module Jekyll
|
|
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
14
|
do_layout_orig(payload, layouts)
|
12
15
|
end
|
13
16
|
end
|
data/lib/octopress-ink/plugin.rb
CHANGED
@@ -71,8 +71,8 @@ module Octopress
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
|
-
def remove_jekyll_assets(files
|
75
|
-
files.each {|f| f.remove_jekyll_asset
|
74
|
+
def remove_jekyll_assets(files)
|
75
|
+
files.each {|f| f.remove_jekyll_asset }
|
76
76
|
end
|
77
77
|
|
78
78
|
def add_includes
|
@@ -123,40 +123,40 @@ module Octopress
|
|
123
123
|
files.each { |f| add_file(f) }
|
124
124
|
end
|
125
125
|
|
126
|
-
def stylesheet_paths
|
127
|
-
get_paths
|
126
|
+
def stylesheet_paths
|
127
|
+
get_paths @stylesheets
|
128
128
|
end
|
129
129
|
|
130
|
-
def javascript_paths
|
131
|
-
get_paths
|
130
|
+
def javascript_paths
|
131
|
+
get_paths @javascripts
|
132
132
|
end
|
133
133
|
|
134
134
|
def stylesheet_tags
|
135
|
-
get_tags
|
135
|
+
get_tags @stylesheets
|
136
136
|
end
|
137
137
|
|
138
138
|
def sass_tags
|
139
|
-
get_tags
|
139
|
+
get_tags @sass
|
140
140
|
end
|
141
141
|
|
142
142
|
def javascript_tags
|
143
|
-
get_tags
|
143
|
+
get_tags @javascripts
|
144
144
|
end
|
145
145
|
|
146
|
-
def get_paths(files
|
147
|
-
files.dup.map { |f| f.path
|
146
|
+
def get_paths(files)
|
147
|
+
files.dup.map { |f| f.path }
|
148
148
|
end
|
149
149
|
|
150
150
|
def get_tags(files)
|
151
151
|
files.dup.map { |f| f.tag }
|
152
152
|
end
|
153
153
|
|
154
|
-
def include(file
|
155
|
-
@includes.file
|
154
|
+
def include(file)
|
155
|
+
@includes.file file
|
156
156
|
end
|
157
157
|
|
158
|
-
def configs
|
159
|
-
@config ||= @configs.read
|
158
|
+
def configs
|
159
|
+
@config ||= @configs.read
|
160
160
|
@config
|
161
161
|
end
|
162
162
|
end
|
@@ -3,14 +3,14 @@
|
|
3
3
|
#
|
4
4
|
module Octopress
|
5
5
|
class StylesheetsPlugin < Octopress::Plugin
|
6
|
-
def add_files
|
6
|
+
def add_files
|
7
7
|
|
8
|
-
add_stylesheets
|
8
|
+
add_stylesheets local_stylesheets
|
9
9
|
|
10
|
-
remove_jekyll_assets
|
10
|
+
remove_jekyll_assets @sass
|
11
11
|
|
12
|
-
if Plugins.concat_css
|
13
|
-
remove_jekyll_assets
|
12
|
+
if Plugins.concat_css
|
13
|
+
remove_jekyll_assets @stylesheets
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
@@ -36,11 +36,13 @@ module Octopress
|
|
36
36
|
files
|
37
37
|
end
|
38
38
|
|
39
|
-
def local_stylesheets
|
40
|
-
|
41
|
-
|
39
|
+
def local_stylesheets
|
40
|
+
config = Plugins.site.config
|
41
|
+
source = Plugins.site.source
|
42
|
+
if config['octopress'] && config['octopress']['stylesheets']
|
43
|
+
config['octopress']['stylesheets'] || []
|
42
44
|
else
|
43
|
-
dir = File.join(
|
45
|
+
dir = File.join(source, 'stylesheets/')
|
44
46
|
css = Dir.glob(File.join(dir, '**/*.css'))
|
45
47
|
sass = Dir.glob(File.join(dir, '**/*.s[ca]ss')).reject { |f| File.basename(f) =~ /^_.*?s[ac]ss/ }
|
46
48
|
files = css.concat sass
|