blog-generator 0.2.1 → 0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/blog-generator/post.rb +33 -13
- 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: 2cf3093b6c8dbf159c433177cf149ee398adc783
|
4
|
+
data.tar.gz: bd20c2a6c5889890067f6e20c622b32aa0bec78d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2c6dde16d351c39d026414e0a35170a1d7b93728327c6cbb4329259f35241b06436f426826dc9fda1c88062cd16b169e9999e4a917a931ac65aba60e8823760e
|
7
|
+
data.tar.gz: b8c6d66fd754bc063c4332aaed3b1530be6e6c2927be0f170aa3c43e107a3d00d15ed8b49953846e030dfe8b0e6ee1b344ba702be5d18701c9f56edc8bf86e44
|
data/lib/blog-generator/post.rb
CHANGED
@@ -2,6 +2,7 @@ require 'json'
|
|
2
2
|
require 'date'
|
3
3
|
require 'yaml'
|
4
4
|
require 'nokogiri'
|
5
|
+
require 'cgi'
|
5
6
|
|
6
7
|
module BlogGenerator
|
7
8
|
class Post
|
@@ -71,18 +72,37 @@ module BlogGenerator
|
|
71
72
|
|
72
73
|
def body
|
73
74
|
@body ||= begin
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
75
|
+
process_body(nokogiri_raw_document.dup)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def process_body(document)
|
80
|
+
document.css('#excerpt').remove
|
81
|
+
document.css('img[src^="/assets/"]').each do |img|
|
82
|
+
absolute_url = img.attribute('src').value
|
83
|
+
asset_path = "..#{absolute_url}" # This is extremely shakey, it depends on us being in api.botanicus.me.
|
84
|
+
if File.exists?(asset_path)
|
85
|
+
img['src'] = image_binary_data(asset_path)
|
86
|
+
else
|
87
|
+
raise "Asset #{asset_path} doesn't exist."
|
84
88
|
end
|
85
|
-
|
89
|
+
end
|
90
|
+
|
91
|
+
document.css('body').inner_html.strip
|
92
|
+
end
|
93
|
+
|
94
|
+
def post_processed_body
|
95
|
+
@post_processed_body ||= post_process_body(self.body.to_s)
|
96
|
+
end
|
97
|
+
|
98
|
+
# This is a terrible hack to make unescaped code possible.
|
99
|
+
def post_process_body(text)
|
100
|
+
regexp = /<code lang="(\w+)">\n?(.*?)<\/code>/m
|
101
|
+
original_body_matches = self.raw_body.scan(regexp)
|
102
|
+
|
103
|
+
text.gsub(regexp).with_index do |pre, index|
|
104
|
+
language, code = original_body_matches[index]
|
105
|
+
"<pre><code class=\"#{language}\">#{CGI.escapeHTML(code)}</code></pre>"
|
86
106
|
end
|
87
107
|
end
|
88
108
|
|
@@ -104,7 +124,7 @@ module BlogGenerator
|
|
104
124
|
end
|
105
125
|
|
106
126
|
def as_json
|
107
|
-
@metadata.merge(body: self.
|
127
|
+
@metadata.merge(body: self.post_processed_body).tap do |metadata|
|
108
128
|
metadata[:published_at] && metadata[:published_at] = DateTime.parse(metadata[:published_at])
|
109
129
|
metadata[:updated_at] && metadata[:updated_at] = DateTime.parse(metadata[:updated_at])
|
110
130
|
end
|
@@ -127,7 +147,7 @@ module BlogGenerator
|
|
127
147
|
|
128
148
|
#{excerpt}
|
129
149
|
|
130
|
-
#{self.
|
150
|
+
#{self.post_processed_body}
|
131
151
|
EOF
|
132
152
|
end
|
133
153
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blog-generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.3'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James C Russell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-02-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|