tdiary-style-gfm 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +6 -3
- data/lib/tdiary/style/gfm/version.rb +1 -1
- data/lib/tdiary/style/gfm.rb +36 -4
- data/spec/tdiary/style/gfm_spec.rb +19 -5
- data/tdiary-style-gfm.gemspec +1 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1dac1dabf34213a56e17ccaa5758418af83e5f43
|
4
|
+
data.tar.gz: c83cbe2fcb8baaa9774ab5414a0bbbc2b36ccaee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01c40e2f8a84880827d8b64bdeed5485905ca7611fe83d4a1c212ee9f51117227df421abf3e2a9b88efa4b649746e750f038306134195460e1a395a5e2eb3c2b
|
7
|
+
data.tar.gz: aef4277b16355da84abf58b7d4b1d24740eeeb4649a1d734bb95c28bfa22186818869747e81d767eb4da5e9389e5a8f2cd78d4e7f58d9a94d161d0b83b3bb4d1
|
data/.travis.yml
CHANGED
data/lib/tdiary/style/gfm.rb
CHANGED
@@ -56,17 +56,18 @@ module TDiary
|
|
56
56
|
|
57
57
|
# 1. Stash plugin calls
|
58
58
|
plugin_stashes = []
|
59
|
-
r
|
59
|
+
plugin_blocks, replaced_r = extract_plugin_blocks_and_replace(r)
|
60
|
+
plugin_blocks.each do |plugin_block|
|
60
61
|
# Convert `{{ }}' to erb tags
|
61
|
-
plugin_stashes.push([
|
62
|
-
"@@tdiary_style_gfm_plugin#{plugin_stashes.length - 1}@@"
|
62
|
+
plugin_stashes.push(["{{#{plugin_block}}}", "<%=#{plugin_block}%>"])
|
63
63
|
end
|
64
|
+
r = replaced_r
|
64
65
|
|
65
66
|
# 2. Apply markdown conversion
|
66
67
|
r = GitHub::Markdown.to_html(r, :gfm) do |code, lang|
|
67
68
|
begin
|
68
69
|
formatter = Rouge::Formatters::HTMLPygments.new(Rouge::Formatters::HTML.new, 'highlight')
|
69
|
-
lexer = Rouge::Lexer.
|
70
|
+
lexer = Rouge::Lexer.find_fancy(lang)
|
70
71
|
formatter.format(lexer.lex(code))
|
71
72
|
rescue Exception => ex
|
72
73
|
"<div class=\"highlight\"><pre>#{CGI.escapeHTML(code)}</pre></div>"
|
@@ -150,6 +151,37 @@ module TDiary
|
|
150
151
|
r
|
151
152
|
end
|
152
153
|
end
|
154
|
+
|
155
|
+
def extract_plugin_blocks_and_replace(text)
|
156
|
+
s = StringScanner.new(text)
|
157
|
+
blocks = []
|
158
|
+
count = 0
|
159
|
+
replaced_text = ""
|
160
|
+
while chunk = s.scan_until(/\{\{/)
|
161
|
+
chunk[-2, 2] = ""
|
162
|
+
replaced_text << chunk
|
163
|
+
if plugin_str = extract_plugin_block(s)
|
164
|
+
replaced_text << "@@tdiary_style_gfm_plugin#{count}@@"
|
165
|
+
blocks << plugin_str
|
166
|
+
count += 1
|
167
|
+
end
|
168
|
+
end
|
169
|
+
replaced_text << s.rest
|
170
|
+
return blocks, replaced_text
|
171
|
+
end
|
172
|
+
|
173
|
+
def extract_plugin_block(s)
|
174
|
+
pos = s.pos
|
175
|
+
buf = ""
|
176
|
+
while chunk = s.scan_until(/\}\}/)
|
177
|
+
buf << chunk
|
178
|
+
buf.chomp!("}}")
|
179
|
+
return buf
|
180
|
+
end
|
181
|
+
s.pos = pos
|
182
|
+
nil
|
183
|
+
end
|
184
|
+
|
153
185
|
end
|
154
186
|
|
155
187
|
class GfmDiary
|
@@ -203,8 +203,8 @@ http://example.com is example.com
|
|
203
203
|
<div class="section">
|
204
204
|
<%=section_enter_proc( Time.at( 1041346800 ) )%>
|
205
205
|
<h3><%= subtitle_proc( Time.at( 1041346800 ), "subTitle" ) %></h3>
|
206
|
-
<pre class="highlight"><code><span class="vi">@foo</span>
|
207
|
-
</code></pre>
|
206
|
+
<div class="highlight"><pre class="highlight"><code><span class="vi">@foo</span>
|
207
|
+
</code></pre></div>
|
208
208
|
<p><a href="http://example.com">http://example.com</a> is example.com</p>
|
209
209
|
<%=section_leave_proc( Time.at( 1041346800 ) )%>
|
210
210
|
</div>
|
@@ -243,6 +243,13 @@ http://example.com is example.com
|
|
243
243
|
|
244
244
|
{{plugin "val", 'val'}}
|
245
245
|
|
246
|
+
{{plugin <<EOS, 'val'
|
247
|
+
valval
|
248
|
+
valval
|
249
|
+
vaoooo
|
250
|
+
EOS
|
251
|
+
}}
|
252
|
+
|
246
253
|
EOF
|
247
254
|
@diary.append(source)
|
248
255
|
|
@@ -253,6 +260,13 @@ http://example.com is example.com
|
|
253
260
|
<p><%=plugin 'val'%></p>
|
254
261
|
|
255
262
|
<p><%=plugin "val", 'val'%></p>
|
263
|
+
|
264
|
+
<p><%=plugin <<EOS, 'val'
|
265
|
+
valval
|
266
|
+
valval
|
267
|
+
vaoooo
|
268
|
+
EOS
|
269
|
+
%></p>
|
256
270
|
<%=section_leave_proc( Time.at( 1041346800 ) )%>
|
257
271
|
</div>
|
258
272
|
EOF
|
@@ -324,10 +338,10 @@ http://example.com is example.com
|
|
324
338
|
<div class="section">
|
325
339
|
<%=section_enter_proc( Time.at( 1041346800 ) )%>
|
326
340
|
<h3><%= subtitle_proc( Time.at( 1041346800 ), "subTitle" ) %></h3>
|
327
|
-
<pre class="highlight"><code> <span class="k">def</span> <span class="nf">class</span>
|
341
|
+
<div class="highlight"><pre class="highlight"><code> <span class="k">def</span> <span class="nf">class</span>
|
328
342
|
<span class="vi">@foo</span> <span class="o">=</span> <span class="s1">'bar'</span>
|
329
343
|
<span class="k">end</span>
|
330
|
-
</code></pre><%=section_leave_proc( Time.at( 1041346800 ) )%>
|
344
|
+
</code></pre></div><%=section_leave_proc( Time.at( 1041346800 ) )%>
|
331
345
|
</div>
|
332
346
|
EOF
|
333
347
|
end
|
@@ -447,7 +461,7 @@ http://example.com is example.com
|
|
447
461
|
<div class="section">
|
448
462
|
<%=section_enter_proc( Time.at( 1041346800 ) )%>
|
449
463
|
<h3><%= subtitle_proc( Time.at( 1041346800 ), "subTitle" ) %></h3>
|
450
|
-
<p><img src='
|
464
|
+
<p><img src='//www.webpagefx.com/tools/emoji-cheat-sheet/graphics/emojis/sushi.png' width='20' height='20' title='sushi' alt='sushi' class='emoji' /> は美味しい</p>
|
451
465
|
<%=section_leave_proc( Time.at( 1041346800 ) )%>
|
452
466
|
</div>
|
453
467
|
EOF
|
data/tdiary-style-gfm.gemspec
CHANGED
@@ -12,6 +12,7 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.summary = %q{GFM Style for tDiary}
|
13
13
|
spec.homepage = "https://github.com/tdiary/tdiary-style-gfm"
|
14
14
|
spec.license = "GPL-3.0"
|
15
|
+
spec.required_ruby_version = ">= 2.2.0"
|
15
16
|
|
16
17
|
spec.files = `git ls-files`.split($/)
|
17
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tdiary-style-gfm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SHIBATA Hiroshi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-08-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: github-markdown
|
@@ -140,7 +140,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
140
140
|
requirements:
|
141
141
|
- - ">="
|
142
142
|
- !ruby/object:Gem::Version
|
143
|
-
version:
|
143
|
+
version: 2.2.0
|
144
144
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
145
|
requirements:
|
146
146
|
- - ">="
|
@@ -148,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
148
148
|
version: '0'
|
149
149
|
requirements: []
|
150
150
|
rubyforge_project:
|
151
|
-
rubygems_version: 2.6.
|
151
|
+
rubygems_version: 2.6.12
|
152
152
|
signing_key:
|
153
153
|
specification_version: 4
|
154
154
|
summary: GFM Style for tDiary
|