octopress-escape-code 1.0.3 → 1.0.4
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/CHANGELOG.md +4 -1
- data/README.md +4 -2
- data/lib/octopress-escape-code.rb +51 -9
- data/lib/octopress-escape-code/version.rb +1 -1
- data/test/_expected/index.html +8 -1
- data/test/index.md +10 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4781e02240e67f367bed8d7ea219bd5087915b28
|
4
|
+
data.tar.gz: 875502e016e25e1ff6228221b8fc9fa8144735cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6d7a1b6d6bca0d9b5dc5332699682d12cd1186e49762198f2fe98216ec632676643869571cdcccf45fc2daa985f376bd064b4fb63acc8cd99eba1989645c679e
|
7
|
+
data.tar.gz: 6ba3c05c61ae02c72acdc3c87af69ca63a9518f2307a55dbb1014e5a0e5f500c336dbf0dc6b90c1510300cd1862c0e9e3bb0db9104f6f66fc4a63148f9b4cac8
|
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
### 1.0.
|
3
|
+
### 1.0.4 - 2014-12-10
|
4
|
+
- Added support for documentation in Octopress docs.
|
5
|
+
- Now preserving hand written raw tags inside of code blocks.
|
4
6
|
|
7
|
+
### 1.0.3 - 2014-12-10
|
5
8
|
Fixes:
|
6
9
|
- Random tabs don't trigger escapes.
|
7
10
|
- Raw tags inside of code fences are properly stripped.
|
data/README.md
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
<!---
|
2
|
+
escape_raw: true
|
3
|
+
--->
|
1
4
|
# Octopress Escape Code
|
2
5
|
|
3
6
|
Automatically escape code blocks so you can use liquid tags without worry having to surround them with unsightly
|
@@ -62,7 +65,7 @@ If you are using Markdown, you may create a code blocks by indenting four spaces
|
|
62
65
|
{% endraw %}
|
63
66
|
```
|
64
67
|
|
65
|
-
You can also define in-line code tags by surrounding text with back ticks, like this
|
68
|
+
You can also define in-line code tags by surrounding text with back ticks, like this `` `some code` `` which are automatically escaped as
|
66
69
|
well.
|
67
70
|
|
68
71
|
This inline {% raw %}`<code>`{% endraw %} tag is escaped.
|
@@ -82,7 +85,6 @@ If you prefer, you can enable it on a per page basis, by turning off automatic c
|
|
82
85
|
|
83
86
|
Then, add `escape_code: true` to the page's YAML front-matter to enable code escaping for a single page.
|
84
87
|
|
85
|
-
|
86
88
|
## Contributing
|
87
89
|
|
88
90
|
1. Fork it ( https://github.com/octopress/escape-code/fork )
|
@@ -7,34 +7,54 @@ module Octopress
|
|
7
7
|
class EscapePage < Octopress::Hooks::Page
|
8
8
|
def pre_render(page)
|
9
9
|
if Octopress::EscapeCode.escape_enabled?(page)
|
10
|
-
page.content = Octopress::EscapeCode.escape(page
|
10
|
+
page.content = Octopress::EscapeCode.escape(page)
|
11
11
|
end
|
12
12
|
end
|
13
|
+
|
14
|
+
def post_render(page)
|
15
|
+
Octopress::EscapeCode.unescape_raw(page)
|
16
|
+
end
|
13
17
|
end
|
14
18
|
|
15
19
|
class EscapePost < Octopress::Hooks::Post
|
16
20
|
def pre_render(page)
|
17
21
|
if Octopress::EscapeCode.escape_enabled?(page)
|
18
|
-
page.content = Octopress::EscapeCode.escape(page
|
22
|
+
page.content = Octopress::EscapeCode.escape(page)
|
19
23
|
end
|
20
24
|
end
|
25
|
+
|
26
|
+
def post_render(page)
|
27
|
+
Octopress::EscapeCode.unescape_raw(page)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.unescape_raw(page)
|
32
|
+
page.output.gsub!(/\*-(end)?raw-\*/, '% \1raw %')
|
21
33
|
end
|
22
34
|
|
23
35
|
def self.escape_enabled?(page)
|
24
|
-
|
25
|
-
|
36
|
+
get_config(page, 'escape_code', true)
|
37
|
+
end
|
26
38
|
|
27
|
-
|
39
|
+
def self.get_config(page, config, default = true)
|
40
|
+
site_config = page.site.config[config]
|
41
|
+
site_config = default if site_config.nil?
|
42
|
+
|
43
|
+
page_config = page.data[config]
|
28
44
|
page_config = site_config if page_config.nil?
|
29
45
|
|
30
|
-
|
46
|
+
page_config
|
31
47
|
end
|
32
48
|
|
33
|
-
def self.escape(
|
34
|
-
ext = ext.downcase
|
35
|
-
content.encode!("UTF-8")
|
49
|
+
def self.escape(page)
|
50
|
+
ext = page.ext.downcase
|
51
|
+
content = page.content.encode!("UTF-8")
|
36
52
|
md_ext = %w{.markdown .mdown .mkdn .md .mkd .mdwn .mdtxt .mdtext}
|
37
53
|
|
54
|
+
# Escape existing raw tags
|
55
|
+
#
|
56
|
+
content = content.gsub(/% (end)?raw %/, '*-\1raw-*')
|
57
|
+
|
38
58
|
# Escape markdown style code blocks
|
39
59
|
if md_ext.include?(ext)
|
40
60
|
|
@@ -58,6 +78,18 @@ module Octopress
|
|
58
78
|
"{% raw %}#{$1}{% endraw %}"
|
59
79
|
end
|
60
80
|
|
81
|
+
content = content.gsub /^( {4}[^\n].+?)\n($|\S)/m do
|
82
|
+
c1 = $1
|
83
|
+
c2 = $2
|
84
|
+
"#{c1.gsub(/{% (end)?raw %}/, '')}\n#{c2}"
|
85
|
+
end
|
86
|
+
|
87
|
+
# Escape tab indented code blocks
|
88
|
+
content = content.gsub /^(\t[^\n].+?)\n($|\S)/m do
|
89
|
+
c1 = $1
|
90
|
+
c2 = $2
|
91
|
+
"#{c1.gsub(/{% (end)?raw %}/, '')}\n#{c2}"
|
92
|
+
end
|
61
93
|
end
|
62
94
|
|
63
95
|
# Escape codefenced codeblocks
|
@@ -87,3 +119,13 @@ module Octopress
|
|
87
119
|
end
|
88
120
|
end
|
89
121
|
end
|
122
|
+
|
123
|
+
# Add documentation for this plugin
|
124
|
+
if defined? Octopress::Docs
|
125
|
+
Octopress::Docs.add({
|
126
|
+
name: "Octopress Escape Code",
|
127
|
+
description: "Automatically escape code with {% raw %} blocks, preventing internal Liquid processing.",
|
128
|
+
source_url: "https://github.com/octopress/escape-code",
|
129
|
+
path: File.expand_path(File.join(File.dirname(__FILE__), "../"))
|
130
|
+
})
|
131
|
+
end
|
data/test/_expected/index.html
CHANGED
@@ -6,7 +6,7 @@ Stuff!
|
|
6
6
|
</code></pre></div>
|
7
7
|
<p>guys!</p>
|
8
8
|
|
9
|
-
<p>Testing the <code>
|
9
|
+
<p>Testing the <code>double {% _guys_ seriously? %} ` type</code> of code thing.</p>
|
10
10
|
|
11
11
|
<p>The random tab character below shouldn't trigger an escape.</p>
|
12
12
|
|
@@ -24,3 +24,10 @@ Stuff!</code></pre></div>
|
|
24
24
|
{% foo %}
|
25
25
|
</code></pre></div>
|
26
26
|
<p>some text</p>
|
27
|
+
<div class="highlight"><pre><code class="language-text" data-lang="text">{% highlight html %}{% raw %}
|
28
|
+
<article>{{ post.content }}</article>
|
29
|
+
{% endraw %}{% endhighlight %}
|
30
|
+
</code></pre></div>
|
31
|
+
<p>Test inner space block raw replacement:</p>
|
32
|
+
<div class="highlight"><pre><code class="language-text" data-lang="text">This inline {% raw %}`<code>`{% endraw %} tag is escaped.
|
33
|
+
</code></pre></div>
|
data/test/index.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
---
|
2
2
|
escape_code: true
|
3
|
+
escape_raw: true
|
3
4
|
---
|
4
5
|
|
5
6
|
Some text
|
@@ -12,7 +13,7 @@ Stuff!
|
|
12
13
|
```
|
13
14
|
guys!
|
14
15
|
|
15
|
-
Testing the ``
|
16
|
+
Testing the ``double {% _guys_ seriously? %} ` type`` of code thing.
|
16
17
|
|
17
18
|
The random tab character below shouldn't trigger an escape.
|
18
19
|
|
@@ -34,3 +35,11 @@ Stuff!
|
|
34
35
|
stuff
|
35
36
|
{% foo %}
|
36
37
|
some text
|
38
|
+
|
39
|
+
{% highlight html %}{% raw %}
|
40
|
+
<article>{{ post.content }}</article>
|
41
|
+
{% endraw %}{% endhighlight %}
|
42
|
+
|
43
|
+
Test inner space block raw replacement:
|
44
|
+
|
45
|
+
This inline {% raw %}`<code>`{% endraw %} tag is escaped.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: octopress-escape-code
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
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-12-
|
11
|
+
date: 2014-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: octopress-hooks
|