octopress-ink 1.0.0.alpha.24 → 1.0.0.alpha.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|