blob: e4e798e5b9b81f87e091d6b74cabf591484360a7 (
about) (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
require 'cgi'
CODE_BLOCK = /<td class="rouge-code"><pre>(.*?)<\/pre><\/td>/m
module Jekyll
class PlainTextGenerator < Generator
safe true
def generate(site)
site.collections.each do |collection|
collection_name, collection_documents = collection
if collection_name != "slides"
collection_documents.docs.each do |document|
n = 0
Renderer
.new(site, document) # create a renderer for the document
.run # generate the HTML string
.scan(CODE_BLOCK) # match all occurrences of regexp
.each do |code_block| # iterate on each match
unhighlighted_code = code_block[0] # regexp only defines 1 match (only 1 parens)
.gsub(/<span class=".*?">(.*?)<\/span>/m, '\1')
content = CGI.unescapeHTML unhighlighted_code
name = "#{document.url}.#{n}.txt"
plain = PlaintextPageWithoutAFile.new(site, site.source, '', name)
plain.content = content
site.pages << plain
n += 1
end
end
end
end
end
end
# Taken from:
# https://github.com/jekyll/jekyll-feed/blob/c552b8ef7bd7a4babcfb5aec2b22283a5bc354dd/lib/jekyll-feed/page-without-a-file.rb#L4
class PlaintextPageWithoutAFile < Jekyll::Page
def read_yaml(*)
@data ||= {
"plaintext" => true,
"generated" => true
}
end
end
end
|