octopress-ink 1.0.0.alpha.22 → 1.0.0.alpha.23
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.rb +1 -0
- data/lib/octopress-ink/assets/config.rb +2 -2
- data/lib/octopress-ink/helpers/path.rb +29 -1
- data/lib/octopress-ink/helpers/var.rb +7 -5
- data/lib/octopress-ink/jekyll/hooks.rb +20 -0
- data/lib/octopress-ink/tags.rb +1 -0
- data/lib/octopress-ink/tags/include.rb +2 -0
- data/lib/octopress-ink/tags/render.rb +62 -0
- data/lib/octopress-ink/version.rb +1 -1
- data/test/_config.yml +1 -0
- data/test/expected/test_tags/head.html +1 -1
- data/test/expected/test_tags/include.html +4 -0
- data/test/expected/test_tags/render.html +30 -0
- data/test/site/test_tags/include.html +4 -0
- data/test/site/test_tags/render.html +30 -0
- data/test/source/test_render/_f.html +1 -0
- data/test/source/test_render/_var.html +1 -0
- data/test/source/test_tags/_test_render.md +4 -0
- data/test/source/test_tags/include.html +4 -0
- data/test/source/test_tags/render.html +32 -0
- data/test/test.rb +1 -1
- metadata +15 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37ae1d79d24dfabbbe224a384bc2867a41911996
|
4
|
+
data.tar.gz: 1b2b6d06f7877c7387482c6516ed2947f67144e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5c703a3ce89c9e3f2551b09d3baec20c96945200ae6a9b94e330183cfaac09f33b520a41b34a69097ed3d5621e98a62c8c63f79ace419896125a5450ebad63f
|
7
|
+
data.tar.gz: fe8902c99f7f4bba176594b9aa6da57cd1d1969b70706033f9e94e4f3e03643b6d4c1d1f407a36d98741e23d86dd2bda596974bbcfeb0addb3265d58667c1143
|
data/lib/octopress-ink.rb
CHANGED
@@ -28,6 +28,7 @@ Liquid::Template.register_tag('include', Octopress::Tags::IncludeTag)
|
|
28
28
|
Liquid::Template.register_tag('assign', Octopress::Tags::AssignTag)
|
29
29
|
Liquid::Template.register_tag('capture', Octopress::Tags::CaptureTag)
|
30
30
|
Liquid::Template.register_tag('return', Octopress::Tags::ReturnTag)
|
31
|
+
Liquid::Template.register_tag('render', Octopress::Tags::RenderTag)
|
31
32
|
Liquid::Template.register_tag('octopress_js', Octopress::Tags::JavascriptTag)
|
32
33
|
Liquid::Template.register_tag('octopress_css', Octopress::Tags::StylesheetTag)
|
33
34
|
Liquid::Template.register_tag('content_for', Octopress::Tags::ContentForBlock)
|
@@ -24,12 +24,12 @@ module Octopress
|
|
24
24
|
if @plugin.type != 'local_plugin'
|
25
25
|
default = plugin_path
|
26
26
|
if exists? default
|
27
|
-
config = YAML
|
27
|
+
config = YAML.safe_load(File.open(default))
|
28
28
|
end
|
29
29
|
end
|
30
30
|
override = user_path(site)
|
31
31
|
if exists? override
|
32
|
-
config = config.deep_merge YAML
|
32
|
+
config = config.deep_merge YAML.safe_load(File.open(override))
|
33
33
|
end
|
34
34
|
config
|
35
35
|
end
|
@@ -1,7 +1,7 @@
|
|
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
7
|
(context[$1].nil? ? $1 : context[$1]) + $2
|
@@ -9,6 +9,34 @@ module Octopress
|
|
9
9
|
markup
|
10
10
|
end
|
11
11
|
end
|
12
|
+
|
13
|
+
# Allow paths to begin from the directory of the context page or
|
14
|
+
# have absolute paths
|
15
|
+
#
|
16
|
+
# Input:
|
17
|
+
# - file: "file.html"
|
18
|
+
# - context: A Jekyll context object
|
19
|
+
#
|
20
|
+
# Returns the full path to a file
|
21
|
+
#
|
22
|
+
def self.expand(file, context)
|
23
|
+
root = context.registers[:site].source
|
24
|
+
|
25
|
+
# If local file, e.g. ./somefile
|
26
|
+
if file =~ /^\.\/(.+)/
|
27
|
+
local_dir = File.dirname context.registers[:page]['path']
|
28
|
+
File.join root, local_dir, $1
|
29
|
+
|
30
|
+
# If absolute or relative to a user directory, e.g. /Users/Bob/somefile or ~/somefile
|
31
|
+
elsif file =~ /^[\/~]/
|
32
|
+
Pathname.new(file).expand_path
|
33
|
+
|
34
|
+
# Otherwise, assume relative to site root
|
35
|
+
else
|
36
|
+
File.join root, file
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
12
40
|
end
|
13
41
|
end
|
14
42
|
end
|
@@ -20,9 +20,7 @@ module Octopress
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def self.get_value(vars, context)
|
23
|
-
|
24
|
-
vars = $1 + evaluate_ternary($2, $3, $4, context) + $5
|
25
|
-
end
|
23
|
+
vars = evaluate_ternary(vars, context)
|
26
24
|
vars = vars.strip.gsub(/ or /, ' || ')
|
27
25
|
vars = vars.split(/ \|\| /).map { |v|
|
28
26
|
Liquid::Variable.new(v.strip).render(context)
|
@@ -31,8 +29,12 @@ module Octopress
|
|
31
29
|
vars.empty? ? nil : vars.first
|
32
30
|
end
|
33
31
|
|
34
|
-
def self.evaluate_ternary(
|
35
|
-
|
32
|
+
def self.evaluate_ternary(markup, context)
|
33
|
+
if markup =~ TERNARY
|
34
|
+
$1 + (Conditional.parse("if #{$2}", context) ? $3 : $4) + $5
|
35
|
+
else
|
36
|
+
markup
|
37
|
+
end
|
36
38
|
end
|
37
39
|
|
38
40
|
end
|
@@ -11,4 +11,24 @@ module Jekyll
|
|
11
11
|
do_layout_orig(payload, layouts)
|
12
12
|
end
|
13
13
|
end
|
14
|
+
|
15
|
+
# Create a new page class to allow partials to trigger Jekyll Page Hooks.
|
16
|
+
class ConvertiblePage
|
17
|
+
include Convertible
|
18
|
+
|
19
|
+
attr_accessor :name, :content, :site, :ext, :output, :data
|
20
|
+
|
21
|
+
def initialize(site, name, content)
|
22
|
+
@site = site
|
23
|
+
@name = name
|
24
|
+
@ext = File.extname(name)
|
25
|
+
@content = content
|
26
|
+
@data = { layout: "no_layout" } # hack
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
def render(payload)
|
31
|
+
do_layout(payload, { no_layout: nil })
|
32
|
+
end
|
33
|
+
end
|
14
34
|
end
|
data/lib/octopress-ink/tags.rb
CHANGED
@@ -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 :RenderTag, 'octopress-ink/tags/render'
|
6
7
|
autoload :CaptureTag, 'octopress-ink/tags/capture'
|
7
8
|
autoload :JavascriptTag, 'octopress-ink/tags/javascript'
|
8
9
|
autoload :StylesheetTag, 'octopress-ink/tags/stylesheet'
|
@@ -11,6 +11,7 @@ module Octopress
|
|
11
11
|
def render(context)
|
12
12
|
markup = Helpers::Conditional.parse(@markup, context)
|
13
13
|
return unless markup
|
14
|
+
markup = Helpers::Var.evaluate_ternary(markup, context)
|
14
15
|
markup = Helpers::Path.parse(markup, context)
|
15
16
|
|
16
17
|
include_tag = Jekyll::Tags::IncludeTag.new('include', markup, [])
|
@@ -29,6 +30,7 @@ module Octopress
|
|
29
30
|
context['include'] = include_tag.parse_params(context)
|
30
31
|
partial.render!(context)
|
31
32
|
}.strip
|
33
|
+
|
32
34
|
# Otherwise, use Jekyll's default include tag
|
33
35
|
else
|
34
36
|
include_tag.render(context).strip
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Octopress
|
2
|
+
module Tags
|
3
|
+
class RenderTag < Liquid::Tag
|
4
|
+
SYNTAX = /(\S+)(.+)/
|
5
|
+
|
6
|
+
def initialize(tag_name, markup, tokens)
|
7
|
+
super
|
8
|
+
@og_markup = @markup = markup
|
9
|
+
if markup =~ /^(\s*raw\s)?(.+?)(\sraw\s*)?$/
|
10
|
+
@markup = $2
|
11
|
+
@raw = true unless $1.nil? and $3.nil?
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def render(context)
|
16
|
+
markup = Helpers::Conditional.parse(@markup, context)
|
17
|
+
return unless markup
|
18
|
+
markup = Helpers::Var.evaluate_ternary(markup, context)
|
19
|
+
markup = Helpers::Path.parse(markup, context)
|
20
|
+
|
21
|
+
content = read(markup, context)
|
22
|
+
|
23
|
+
if content =~ /\A-{3}(.+[^\A])-{3}\n(.+)/m
|
24
|
+
local_vars = YAML.safe_load($1.strip)
|
25
|
+
content = $2.strip
|
26
|
+
end
|
27
|
+
|
28
|
+
return content if @raw
|
29
|
+
|
30
|
+
include_tag = Jekyll::Tags::IncludeTag.new('include', markup, [])
|
31
|
+
|
32
|
+
partial = Liquid::Template.parse(content)
|
33
|
+
content = context.stack {
|
34
|
+
context['include'] = include_tag.parse_params(context)
|
35
|
+
context['page'] = context['page'].deep_merge(local_vars) if local_vars
|
36
|
+
partial.render!(context)
|
37
|
+
}.strip
|
38
|
+
|
39
|
+
parse_convertible(content, context)
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
def read(markup, context)
|
44
|
+
path = markup.match(SYNTAX)[1]
|
45
|
+
@path = Helpers::Path.expand(path, context)
|
46
|
+
begin
|
47
|
+
Pathname.new(@path).read
|
48
|
+
rescue
|
49
|
+
raise IOError.new "Render failed: {% #{@tag_name} #{@og_markup}%}. The file '#{path}' could not be found at #{@path}."
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def parse_convertible(content, context)
|
54
|
+
page = Jekyll::ConvertiblePage.new(context.registers[:site], @path, content)
|
55
|
+
page.render({})
|
56
|
+
page.output.strip
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
data/test/_config.yml
CHANGED
@@ -20,6 +20,10 @@ Yo Dawg, I heard you like includes. → Yo Dawg, I heard you like includes.
|
|
20
20
|
'' → ''
|
21
21
|
Yo Dawg, I heard you like includes. → Yo Dawg, I heard you like includes.
|
22
22
|
|
23
|
+
## Ternary include
|
24
|
+
, I heard you like includes. → , I heard you like includes.
|
25
|
+
Testing Include → Testing Include
|
26
|
+
|
23
27
|
## Theme Include override
|
24
28
|
include from theme override → include from theme override
|
25
29
|
|
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
## Simple render
|
8
|
+
Testing Render → Testing Render
|
9
|
+
Testing Render whatever → Testing Render whatever
|
10
|
+
|
11
|
+
## File name stored in variable
|
12
|
+
Testing Render → Testing Render
|
13
|
+
|
14
|
+
## Post conditional render
|
15
|
+
'' → ''
|
16
|
+
Testing Render → Testing Render
|
17
|
+
|
18
|
+
## Test Variables
|
19
|
+
kittens → kittens
|
20
|
+
|
21
|
+
## Ternary include
|
22
|
+
kittens → kittens
|
23
|
+
Testing Render → Testing Render
|
24
|
+
|
25
|
+
## Render markdown with local vars
|
26
|
+
<p><strong>page vars</strong></p> → <p><strong>page vars</strong></p>
|
27
|
+
|
28
|
+
## Render raw
|
29
|
+
Testing Render {{ include.var }} → Testing Render {{ include.var }}
|
30
|
+
|
@@ -20,6 +20,10 @@ Yo Dawg, I heard you like includes. → Yo Dawg, I heard you like includes.
|
|
20
20
|
'' → ''
|
21
21
|
Yo Dawg, I heard you like includes. → Yo Dawg, I heard you like includes.
|
22
22
|
|
23
|
+
## Ternary include
|
24
|
+
, I heard you like includes. → , I heard you like includes.
|
25
|
+
Testing Include → Testing Include
|
26
|
+
|
23
27
|
## Theme Include override
|
24
28
|
include from theme override → include from theme override
|
25
29
|
|
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
## Simple render
|
8
|
+
Testing Render → Testing Render
|
9
|
+
Testing Render whatever → Testing Render whatever
|
10
|
+
|
11
|
+
## File name stored in variable
|
12
|
+
Testing Render → Testing Render
|
13
|
+
|
14
|
+
## Post conditional render
|
15
|
+
'' → ''
|
16
|
+
Testing Render → Testing Render
|
17
|
+
|
18
|
+
## Test Variables
|
19
|
+
kittens → kittens
|
20
|
+
|
21
|
+
## Ternary include
|
22
|
+
kittens → kittens
|
23
|
+
Testing Render → Testing Render
|
24
|
+
|
25
|
+
## Render markdown with local vars
|
26
|
+
<p><strong>page vars</strong></p> → <p><strong>page vars</strong></p>
|
27
|
+
|
28
|
+
## Render raw
|
29
|
+
Testing Render {{ include.var }} → Testing Render {{ include.var }}
|
30
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
Testing Render {{ include.var }}
|
@@ -0,0 +1 @@
|
|
1
|
+
{% assign bar = site.render_test %}{{ bar }}
|
@@ -23,6 +23,10 @@ Yo Dawg, I heard you like includes. → {% include theme:greet.html greeting="Yo
|
|
23
23
|
'' → '{% include theme:greet.html greeting="Yo Dawg" unless some_bool %}'
|
24
24
|
Yo Dawg, I heard you like includes. → {% include theme:greet.html greeting="Yo Dawg" if some_bool %}
|
25
25
|
|
26
|
+
## Ternary include
|
27
|
+
, I heard you like includes. → {% include (false ? foo.html : theme:greet.html) %}
|
28
|
+
Testing Include → {% include (some_bool ? foo.html : theme:greet.html) %}
|
29
|
+
|
26
30
|
## Theme Include override
|
27
31
|
include from theme override → {% include theme:bar.html %}
|
28
32
|
|
@@ -0,0 +1,32 @@
|
|
1
|
+
---
|
2
|
+
layout: nil
|
3
|
+
---
|
4
|
+
{% assign file = 'test_render/_f.html' %}
|
5
|
+
{% assign file2 = 'test_render/_var.html' %}
|
6
|
+
{% assign relative = './_test_render.md' %}
|
7
|
+
{% assign some_bool = true %}
|
8
|
+
{% assign test_var = 'variable' %}
|
9
|
+
|
10
|
+
## Simple render
|
11
|
+
Testing Render → {% render test_render/_f.html %}
|
12
|
+
Testing Render whatever → {% render test_render/_f.html var="whatever" %}
|
13
|
+
|
14
|
+
## File name stored in variable
|
15
|
+
Testing Render → {% render file %}
|
16
|
+
|
17
|
+
## Post conditional render
|
18
|
+
'' → '{% render file unless true %}'
|
19
|
+
Testing Render → {% render file if some_bool %}
|
20
|
+
|
21
|
+
## Test Variables
|
22
|
+
kittens → {% render test_render/_var.html %}
|
23
|
+
|
24
|
+
## Ternary include
|
25
|
+
kittens → {% render (false ? file : file2) %}
|
26
|
+
Testing Render → {% render (some_bool ? file : file2) %}
|
27
|
+
|
28
|
+
## Render markdown with local vars
|
29
|
+
<p><strong>page vars</strong></p> → {% render relative %}
|
30
|
+
|
31
|
+
## Render raw
|
32
|
+
{% raw %}Testing Render {{ include.var }}{% endraw %} → {% render raw file %}
|
data/test/test.rb
CHANGED
@@ -39,7 +39,7 @@ end
|
|
39
39
|
build
|
40
40
|
|
41
41
|
def test_tags(dir)
|
42
|
-
tags = %w{content_for footer head include scripts assign capture wrap}
|
42
|
+
tags = %w{content_for footer head include scripts assign capture wrap render}
|
43
43
|
tags.each { |file| test("test_tags/#{file}.html", dir) }
|
44
44
|
end
|
45
45
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: octopress-ink
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.alpha.
|
4
|
+
version: 1.0.0.alpha.23
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Mathis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -124,6 +124,7 @@ files:
|
|
124
124
|
- lib/octopress-ink/tags/head.rb
|
125
125
|
- lib/octopress-ink/tags/include.rb
|
126
126
|
- lib/octopress-ink/tags/javascript.rb
|
127
|
+
- lib/octopress-ink/tags/render.rb
|
127
128
|
- lib/octopress-ink/tags/return.rb
|
128
129
|
- lib/octopress-ink/tags/scripts.rb
|
129
130
|
- lib/octopress-ink/tags/stylesheet.rb
|
@@ -161,6 +162,7 @@ files:
|
|
161
162
|
- test/expected/test_tags/footer.html
|
162
163
|
- test/expected/test_tags/head.html
|
163
164
|
- test/expected/test_tags/include.html
|
165
|
+
- test/expected/test_tags/render.html
|
164
166
|
- test/expected/test_tags/scripts.html
|
165
167
|
- test/expected/test_tags/wrap.html
|
166
168
|
- test/sass_compact/stylesheets/all-e10f647557c9d610df6df40a458bc823.css
|
@@ -185,6 +187,7 @@ files:
|
|
185
187
|
- test/site/test_tags/footer.html
|
186
188
|
- test/site/test_tags/head.html
|
187
189
|
- test/site/test_tags/include.html
|
190
|
+
- test/site/test_tags/render.html
|
188
191
|
- test/site/test_tags/return.html
|
189
192
|
- test/site/test_tags/scripts.html
|
190
193
|
- test/site/test_tags/wrap.html
|
@@ -232,12 +235,16 @@ files:
|
|
232
235
|
- test/source/test_layouts/plugin_layout.html
|
233
236
|
- test/source/test_layouts/theme.html
|
234
237
|
- test/source/test_layouts/theme_override.html
|
238
|
+
- test/source/test_render/_f.html
|
239
|
+
- test/source/test_render/_var.html
|
240
|
+
- test/source/test_tags/_test_render.md
|
235
241
|
- test/source/test_tags/assign.html
|
236
242
|
- test/source/test_tags/capture.html
|
237
243
|
- test/source/test_tags/content_for.html
|
238
244
|
- test/source/test_tags/footer.html
|
239
245
|
- test/source/test_tags/head.html
|
240
246
|
- test/source/test_tags/include.html
|
247
|
+
- test/source/test_tags/render.html
|
241
248
|
- test/source/test_tags/return.html
|
242
249
|
- test/source/test_tags/scripts.html
|
243
250
|
- test/source/test_tags/wrap.html
|
@@ -297,6 +304,7 @@ test_files:
|
|
297
304
|
- test/expected/test_tags/footer.html
|
298
305
|
- test/expected/test_tags/head.html
|
299
306
|
- test/expected/test_tags/include.html
|
307
|
+
- test/expected/test_tags/render.html
|
300
308
|
- test/expected/test_tags/scripts.html
|
301
309
|
- test/expected/test_tags/wrap.html
|
302
310
|
- test/sass_compact/stylesheets/all-e10f647557c9d610df6df40a458bc823.css
|
@@ -321,6 +329,7 @@ test_files:
|
|
321
329
|
- test/site/test_tags/footer.html
|
322
330
|
- test/site/test_tags/head.html
|
323
331
|
- test/site/test_tags/include.html
|
332
|
+
- test/site/test_tags/render.html
|
324
333
|
- test/site/test_tags/return.html
|
325
334
|
- test/site/test_tags/scripts.html
|
326
335
|
- test/site/test_tags/wrap.html
|
@@ -368,12 +377,16 @@ test_files:
|
|
368
377
|
- test/source/test_layouts/plugin_layout.html
|
369
378
|
- test/source/test_layouts/theme.html
|
370
379
|
- test/source/test_layouts/theme_override.html
|
380
|
+
- test/source/test_render/_f.html
|
381
|
+
- test/source/test_render/_var.html
|
382
|
+
- test/source/test_tags/_test_render.md
|
371
383
|
- test/source/test_tags/assign.html
|
372
384
|
- test/source/test_tags/capture.html
|
373
385
|
- test/source/test_tags/content_for.html
|
374
386
|
- test/source/test_tags/footer.html
|
375
387
|
- test/source/test_tags/head.html
|
376
388
|
- test/source/test_tags/include.html
|
389
|
+
- test/source/test_tags/render.html
|
377
390
|
- test/source/test_tags/return.html
|
378
391
|
- test/source/test_tags/scripts.html
|
379
392
|
- test/source/test_tags/wrap.html
|