reveal-ck 3.3.1 → 3.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -1
- data/lib/reveal-ck/builders/create_slides_html.rb +1 -1
- data/lib/reveal-ck/commands/start_web_server.rb +1 -0
- data/lib/reveal-ck/config.rb +1 -1
- data/lib/reveal-ck/markdown.rb +6 -2
- data/lib/reveal-ck/markdown/post_processor.rb +7 -0
- data/lib/reveal-ck/markdown/pre_processor.rb +5 -97
- data/lib/reveal-ck/markdown/pre_processor_for_dividers.rb +58 -0
- data/lib/reveal-ck/markdown/pre_processor_for_emoji.rb +32 -0
- data/lib/reveal-ck/markdown/pre_processor_transforms.rb +110 -0
- data/lib/reveal-ck/markdown/slide_markdown_template.rb +22 -10
- data/lib/reveal-ck/version.rb +1 -1
- data/spec/lib/reveal-ck/commands/serve_spec.rb +0 -36
- data/spec/lib/reveal-ck/markdown/post_processor_spec.rb +28 -0
- data/spec/lib/reveal-ck/markdown/pre_processor_spec.rb +54 -0
- data/spec/lib/reveal-ck/markdown/slide_markdown_template_spec.rb +3 -23
- metadata +31 -17
- data/lib/reveal-ck/markdown/slide_markdown.rb +0 -28
- data/spec/lib/reveal-ck/markdown/slide_markdown_spec.rb +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5abc61d7b21417c0840e9f633b5d4331f112667f
|
4
|
+
data.tar.gz: 9091ea11615acc60b96eb4ca7dde87186056b7de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8be33144aab193ddd52aacf0db6f923b318e0f21b1f9f9cf348bbaf86ac26bc4a1224811f3daa9715ab69d982dc57da2c34f6a7cc2ed6c40fdc5e6a5022352ca
|
7
|
+
data.tar.gz: 0056e09318624ac5c94efd88d1cf9decf9a6d1df063c0956b2aca1c72e4e51dd76014bff3af526e732148bf2a6a45335c24f29f21360f1d1d87ad63413709986
|
data/README.md
CHANGED
@@ -66,4 +66,6 @@ like to [ask a question or log a bug please do so][new-issue]!
|
|
66
66
|
[![Test Coverage](https://codeclimate.com/github/jedcn/reveal-ck/badges/coverage.svg)](https://codeclimate.com/github/jedcn/reveal-ck)
|
67
67
|
|
68
68
|
If you're a ruby developer and you want to get going with local
|
69
|
-
development, please see [CONTRIBUTING.md]
|
69
|
+
development, please see [.github/CONTRIBUTING.md][CONTRIBUTING.md].
|
70
|
+
|
71
|
+
[CONTRIBUTING.md]: .github/CONTRIBUTING.md
|
data/lib/reveal-ck/config.rb
CHANGED
data/lib/reveal-ck/markdown.rb
CHANGED
@@ -1,15 +1,19 @@
|
|
1
1
|
module RevealCK
|
2
|
-
# This module defines how reveal-ck works with
|
2
|
+
# This module defines how reveal-ck works with kramdown to produce
|
3
3
|
# slides from markdown.
|
4
4
|
module Markdown
|
5
5
|
REVEALCK_SYMBOL_FOR_DIVIDER = '<div>DIVIDER</div>'.freeze
|
6
|
+
REVEALCK_SYMBOL_FOR_NOTES_OPEN = '<div>NOTES_OPEN</div>'.freeze
|
7
|
+
REVEALCK_SYMBOL_FOR_NOTES_CLOSE = '<div>NOTES_CLOSE</div>'.freeze
|
6
8
|
REVEALCK_SYMBOL_FOR_VERTICAL_START = '<div>VERTICAL_START</div>'.freeze
|
7
9
|
REVEALCK_SYMBOL_FOR_VERTICAL_END = '<div>VERTICAL_END</div>'.freeze
|
8
10
|
REVEALCK_SYMBOL_FOR_EMOJI_UNDERSCORE = 'EU'.freeze
|
9
11
|
end
|
10
12
|
end
|
11
13
|
|
12
|
-
require_relative 'markdown/
|
14
|
+
require_relative 'markdown/pre_processor_for_emoji'
|
15
|
+
require_relative 'markdown/pre_processor_for_dividers'
|
16
|
+
require_relative 'markdown/pre_processor_transforms'
|
13
17
|
require_relative 'markdown/pre_processor'
|
14
18
|
require_relative 'markdown/post_processor'
|
15
19
|
require_relative 'markdown/slide_markdown_template'
|
@@ -15,6 +15,7 @@ module RevealCK
|
|
15
15
|
handle_start
|
16
16
|
handle_end
|
17
17
|
transform_symbols_to_sections
|
18
|
+
transform_notes_symbols_to_asides
|
18
19
|
end
|
19
20
|
|
20
21
|
private
|
@@ -59,6 +60,12 @@ module RevealCK
|
|
59
60
|
replace(vertical_end_symbol, vertical_end)
|
60
61
|
end
|
61
62
|
|
63
|
+
def transform_notes_symbols_to_asides
|
64
|
+
replace(RevealCK::Markdown::REVEALCK_SYMBOL_FOR_NOTES_OPEN,
|
65
|
+
'<aside class="notes">')
|
66
|
+
replace(RevealCK::Markdown::REVEALCK_SYMBOL_FOR_NOTES_CLOSE, '</aside>')
|
67
|
+
end
|
68
|
+
|
62
69
|
def replace(old, new)
|
63
70
|
@doc = doc.gsub(old, new)
|
64
71
|
end
|
@@ -11,108 +11,16 @@ module RevealCK
|
|
11
11
|
|
12
12
|
def process
|
13
13
|
strip_whitespace
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
transform_slide_dividers_to_divider_symbols
|
19
|
-
transform_slide_verticals_to_vertical_symbols
|
20
|
-
@doc.lstrip
|
14
|
+
PreProcessorForEmoji.new(doc).process
|
15
|
+
PreProcessorForDividers.new(doc).process
|
16
|
+
PreProcessorTransforms.new(doc).process
|
17
|
+
doc.lstrip
|
21
18
|
end
|
22
19
|
|
23
20
|
private
|
24
21
|
|
25
22
|
def strip_whitespace
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
def protect_emojis
|
30
|
-
@doc = doc.gsub(emoji_regex) do |emoji|
|
31
|
-
emoji.gsub(/_/, emoji_underscore_symbol)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def add_first_slide_divider_if_needed
|
36
|
-
return if doc.start_with?(slide_divider)
|
37
|
-
return if doc.start_with?(slide_vertical)
|
38
|
-
prepend(slide_divider)
|
39
|
-
end
|
40
|
-
|
41
|
-
def add_last_slide_divider_if_needed
|
42
|
-
return if doc.end_with?(slide_divider)
|
43
|
-
return if doc.end_with?(slide_vertical)
|
44
|
-
append(slide_divider)
|
45
|
-
end
|
46
|
-
|
47
|
-
def transform_slide_dividers_to_divider_symbols
|
48
|
-
@doc =
|
49
|
-
doc.gsub(slide_divider_regex,
|
50
|
-
newline_wrapped(divider_symbol))
|
51
|
-
end
|
52
|
-
|
53
|
-
def transform_slide_verticals_to_vertical_symbols
|
54
|
-
count = 0
|
55
|
-
@doc = doc.gsub(slide_vertical_regex) do
|
56
|
-
count += 1
|
57
|
-
if count.odd?
|
58
|
-
newline_wrapped(vertical_start_symbol)
|
59
|
-
else
|
60
|
-
newline_wrapped(vertical_end_symbol)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
def add_last_slide_vertical_if_needed
|
66
|
-
return unless doc.scan(slide_vertical_regex).size.odd?
|
67
|
-
append(slide_vertical)
|
68
|
-
end
|
69
|
-
|
70
|
-
def emoji_regex
|
71
|
-
/:[a-z\d_\-\+]*:/
|
72
|
-
end
|
73
|
-
|
74
|
-
def slide_divider
|
75
|
-
'---'
|
76
|
-
end
|
77
|
-
|
78
|
-
def slide_divider_regex
|
79
|
-
/^---$/
|
80
|
-
end
|
81
|
-
|
82
|
-
def slide_vertical
|
83
|
-
'***'
|
84
|
-
end
|
85
|
-
|
86
|
-
def slide_vertical_regex
|
87
|
-
/^\*\*\*$/
|
88
|
-
end
|
89
|
-
|
90
|
-
def prepend(s)
|
91
|
-
@doc = "#{s}\n#{doc}"
|
92
|
-
end
|
93
|
-
|
94
|
-
def append(s)
|
95
|
-
@doc = "#{doc}\n#{s}"
|
96
|
-
end
|
97
|
-
|
98
|
-
def newline_wrapped(s)
|
99
|
-
"\n#{s}\n"
|
100
|
-
end
|
101
|
-
|
102
|
-
def emoji_underscore_symbol
|
103
|
-
RevealCK::Markdown::REVEALCK_SYMBOL_FOR_EMOJI_UNDERSCORE
|
104
|
-
end
|
105
|
-
|
106
|
-
def divider_symbol
|
107
|
-
RevealCK::Markdown::REVEALCK_SYMBOL_FOR_DIVIDER
|
108
|
-
end
|
109
|
-
|
110
|
-
def vertical_start_symbol
|
111
|
-
RevealCK::Markdown::REVEALCK_SYMBOL_FOR_VERTICAL_START
|
112
|
-
end
|
113
|
-
|
114
|
-
def vertical_end_symbol
|
115
|
-
RevealCK::Markdown::REVEALCK_SYMBOL_FOR_VERTICAL_END
|
23
|
+
doc.strip!
|
116
24
|
end
|
117
25
|
end
|
118
26
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module RevealCK
|
2
|
+
module Markdown
|
3
|
+
# This class embodies the preprocessing that starts with a
|
4
|
+
# traditional Markdown document and turns it into something that
|
5
|
+
# can later "become" reveal.js slides.
|
6
|
+
class PreProcessorForDividers
|
7
|
+
attr_reader :doc
|
8
|
+
def initialize(doc)
|
9
|
+
@doc = doc
|
10
|
+
end
|
11
|
+
|
12
|
+
def process
|
13
|
+
add_first_slide_divider_if_needed
|
14
|
+
add_last_slide_vertical_if_needed
|
15
|
+
add_last_slide_divider_if_needed
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def add_first_slide_divider_if_needed
|
21
|
+
return if doc.start_with?(slide_divider)
|
22
|
+
return if doc.start_with?(slide_vertical)
|
23
|
+
prepend(slide_divider)
|
24
|
+
end
|
25
|
+
|
26
|
+
def add_last_slide_divider_if_needed
|
27
|
+
return if doc.end_with?(slide_divider)
|
28
|
+
return if doc.end_with?(slide_vertical)
|
29
|
+
append(slide_divider)
|
30
|
+
end
|
31
|
+
|
32
|
+
def add_last_slide_vertical_if_needed
|
33
|
+
return unless doc.scan(slide_vertical_regex).size.odd?
|
34
|
+
append(slide_vertical)
|
35
|
+
end
|
36
|
+
|
37
|
+
def slide_divider
|
38
|
+
'---'
|
39
|
+
end
|
40
|
+
|
41
|
+
def slide_vertical
|
42
|
+
'***'
|
43
|
+
end
|
44
|
+
|
45
|
+
def slide_vertical_regex
|
46
|
+
/^\*\*\*$/
|
47
|
+
end
|
48
|
+
|
49
|
+
def prepend(s)
|
50
|
+
doc.insert(0, "#{s}\n")
|
51
|
+
end
|
52
|
+
|
53
|
+
def append(s)
|
54
|
+
doc.insert(doc.size, "\n#{s}")
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module RevealCK
|
2
|
+
module Markdown
|
3
|
+
# This class knows how to modify emoji so that underscores within
|
4
|
+
# emoji are not considered as indicators of markdown emphasis.
|
5
|
+
class PreProcessorForEmoji
|
6
|
+
attr_reader :doc
|
7
|
+
def initialize(doc)
|
8
|
+
@doc = doc
|
9
|
+
end
|
10
|
+
|
11
|
+
def process
|
12
|
+
protect_emojis
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def protect_emojis
|
18
|
+
doc.gsub!(emoji_regex) do |emoji|
|
19
|
+
emoji.gsub(/_/, emoji_underscore_symbol)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def emoji_regex
|
24
|
+
/:[a-z\d_\-\+]*:/
|
25
|
+
end
|
26
|
+
|
27
|
+
def emoji_underscore_symbol
|
28
|
+
RevealCK::Markdown::REVEALCK_SYMBOL_FOR_EMOJI_UNDERSCORE
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
module RevealCK
|
2
|
+
module Markdown
|
3
|
+
# This class gives special meaning to legitimate markdown within
|
4
|
+
# slides. This "slides markdown" is transformed into symbols that
|
5
|
+
# are not markdown. Later on these will be transformed into HTML
|
6
|
+
# meanings.
|
7
|
+
#
|
8
|
+
# For example,
|
9
|
+
#
|
10
|
+
# * --- becomes <div>DIVIDER</div>
|
11
|
+
# * ```notes becomes <div>NOTES_OPEN</div>
|
12
|
+
#
|
13
|
+
class PreProcessorTransforms
|
14
|
+
attr_reader :doc
|
15
|
+
def initialize(doc)
|
16
|
+
@doc = doc
|
17
|
+
end
|
18
|
+
|
19
|
+
def process
|
20
|
+
transform_slide_notes_to_notes_symbols
|
21
|
+
transform_slide_dividers_to_divider_symbols
|
22
|
+
transform_slide_verticals_to_vertical_symbols
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def transform_slide_notes_to_notes_symbols
|
28
|
+
match = find_next_notes_match(0)
|
29
|
+
while match
|
30
|
+
match_start = match.offset(0)[0]
|
31
|
+
match_end = match.offset(0)[1]
|
32
|
+
replace_notes_open_with_symbol(match_start, match_end - match_start)
|
33
|
+
close_start = find_next_notes_close(match_start)
|
34
|
+
replace_notes_close_with_symbol(close_start) if close_start
|
35
|
+
match = find_next_notes_match(match_start)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def find_next_notes_match(current)
|
40
|
+
doc.match(slide_notes_regex, current)
|
41
|
+
end
|
42
|
+
|
43
|
+
def find_next_notes_close(current)
|
44
|
+
doc.index('```', current)
|
45
|
+
end
|
46
|
+
|
47
|
+
def replace_notes_open_with_symbol(start, length)
|
48
|
+
doc.slice!(start, length)
|
49
|
+
doc.insert(start, notes_open_symbol)
|
50
|
+
end
|
51
|
+
|
52
|
+
def replace_notes_close_with_symbol(start)
|
53
|
+
doc.slice!(start, 3)
|
54
|
+
doc.insert(start, notes_close_symbol)
|
55
|
+
end
|
56
|
+
|
57
|
+
def transform_slide_dividers_to_divider_symbols
|
58
|
+
doc.gsub!(slide_divider_regex, divider_symbol)
|
59
|
+
end
|
60
|
+
|
61
|
+
def transform_slide_verticals_to_vertical_symbols
|
62
|
+
count = 0
|
63
|
+
doc.gsub!(slide_vertical_regex) do
|
64
|
+
count += 1
|
65
|
+
if count.odd?
|
66
|
+
vertical_start_symbol
|
67
|
+
else
|
68
|
+
vertical_end_symbol
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
def slide_notes_regex
|
74
|
+
/^```notes?$/
|
75
|
+
end
|
76
|
+
|
77
|
+
def slide_divider_regex
|
78
|
+
/^---$/
|
79
|
+
end
|
80
|
+
|
81
|
+
def slide_vertical_regex
|
82
|
+
/^\*\*\*$/
|
83
|
+
end
|
84
|
+
|
85
|
+
def newline_wrapped(s)
|
86
|
+
"\n#{s}\n"
|
87
|
+
end
|
88
|
+
|
89
|
+
def notes_open_symbol
|
90
|
+
newline_wrapped(RevealCK::Markdown::REVEALCK_SYMBOL_FOR_NOTES_OPEN)
|
91
|
+
end
|
92
|
+
|
93
|
+
def notes_close_symbol
|
94
|
+
newline_wrapped(RevealCK::Markdown::REVEALCK_SYMBOL_FOR_NOTES_CLOSE)
|
95
|
+
end
|
96
|
+
|
97
|
+
def divider_symbol
|
98
|
+
newline_wrapped(RevealCK::Markdown::REVEALCK_SYMBOL_FOR_DIVIDER)
|
99
|
+
end
|
100
|
+
|
101
|
+
def vertical_start_symbol
|
102
|
+
newline_wrapped(RevealCK::Markdown::REVEALCK_SYMBOL_FOR_VERTICAL_START)
|
103
|
+
end
|
104
|
+
|
105
|
+
def vertical_end_symbol
|
106
|
+
newline_wrapped(RevealCK::Markdown::REVEALCK_SYMBOL_FOR_VERTICAL_END)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
@@ -1,25 +1,37 @@
|
|
1
1
|
require 'tilt/template'
|
2
|
+
require 'kramdown'
|
2
3
|
|
3
4
|
module RevealCK
|
4
5
|
module Markdown
|
5
6
|
#
|
6
|
-
# Public: This class allows
|
7
|
+
# Public: This class allows Kramdown to hook into Tilt 2.0. See
|
7
8
|
# https://github.com/rtomayko/tilt.
|
8
9
|
#
|
9
10
|
class SlideMarkdownTemplate < ::Tilt::Template
|
10
11
|
# Must be implemented by all subclasses of Tilt::Template
|
11
|
-
def prepare
|
12
|
+
def prepare; end
|
13
|
+
|
14
|
+
def pre_process(input)
|
15
|
+
PreProcessor.new(input).process
|
16
|
+
end
|
17
|
+
|
18
|
+
def post_process(input)
|
19
|
+
PostProcessor.new(input).process
|
20
|
+
end
|
21
|
+
|
22
|
+
def kramdown_options
|
23
|
+
{
|
24
|
+
auto_ids: false,
|
25
|
+
input: 'GFM',
|
26
|
+
syntax_highlighter: nil
|
27
|
+
}
|
12
28
|
end
|
13
29
|
|
14
30
|
def evaluate(*)
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
strikethrough: true,
|
20
|
-
highlight: true
|
21
|
-
)
|
22
|
-
@output = markdown.render(data)
|
31
|
+
pre_process_result = pre_process(data)
|
32
|
+
kramdown_result =
|
33
|
+
Kramdown::Document.new(pre_process_result, kramdown_options).to_html
|
34
|
+
post_process(kramdown_result)
|
23
35
|
end
|
24
36
|
end
|
25
37
|
end
|
data/lib/reveal-ck/version.rb
CHANGED
@@ -84,42 +84,6 @@ module RevealCK
|
|
84
84
|
expect_new_and_run(RevealCK::Commands::StartWebServer)
|
85
85
|
build_serve.run
|
86
86
|
end
|
87
|
-
|
88
|
-
it 'actually listens for file system changes' do
|
89
|
-
serve_ui = double
|
90
|
-
allow(ServeUI)
|
91
|
-
.to(receive(:new))
|
92
|
-
.and_return(serve_ui)
|
93
|
-
allow(serve_ui)
|
94
|
-
.to(receive(:message))
|
95
|
-
|
96
|
-
Dir.mktmpdir do |dir|
|
97
|
-
Dir.chdir(dir) do
|
98
|
-
print_banner = double
|
99
|
-
allow(PrintBanner)
|
100
|
-
.to(receive(:new))
|
101
|
-
.and_return(print_banner)
|
102
|
-
allow(print_banner)
|
103
|
-
.to(receive(:run))
|
104
|
-
|
105
|
-
# Don't stub out ListenToRebuildSlides
|
106
|
-
allow_new_and_run(RevealCK::Commands::ListenToReloadBrowser)
|
107
|
-
allow_new_and_run(RevealCK::Commands::StartWebServer)
|
108
|
-
|
109
|
-
serve = build_serve
|
110
|
-
serve.run
|
111
|
-
expect(serve)
|
112
|
-
.to(receive(:rebuild_slides))
|
113
|
-
File.open('slides.md', 'w') do |file|
|
114
|
-
file.puts('Slides')
|
115
|
-
end
|
116
|
-
# Creating the file will trigger the call back. But need
|
117
|
-
# to wait else the expecation of :rebuild_slides will
|
118
|
-
# fail-- it's not instantaneous
|
119
|
-
sleep 0.5
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
87
|
end
|
124
88
|
end
|
125
89
|
end
|
@@ -17,6 +17,34 @@ module RevealCK
|
|
17
17
|
expect(output).to include ':non-potable_water:'
|
18
18
|
end
|
19
19
|
|
20
|
+
context 'handling notes' do
|
21
|
+
let :transformed_notes do
|
22
|
+
<<-eos
|
23
|
+
<div>DIVIDER</div>
|
24
|
+
|
25
|
+
|
26
|
+
<div>NOTES_OPEN</div>
|
27
|
+
|
28
|
+
This is a note
|
29
|
+
|
30
|
+
<div>NOTES_CLOSE</div>
|
31
|
+
|
32
|
+
|
33
|
+
<div>DIVIDER</div>
|
34
|
+
eos
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'translates <div>NOTES_OPEN</div> into <aside class="notes">' do
|
38
|
+
output = PostProcessor.new(transformed_notes).process
|
39
|
+
expect(output).to include "\n<aside class=\"notes\">\n"
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'translates <div>NOTES_CLOSE</div> into </aside>' do
|
43
|
+
output = PostProcessor.new(transformed_notes).process
|
44
|
+
expect(output).to include "\n</aside>\n"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
20
48
|
context 'without vertical slides' do
|
21
49
|
let :three_slide_input do
|
22
50
|
<<-eos
|
@@ -3,6 +3,60 @@ require 'spec_helper'
|
|
3
3
|
module RevealCK
|
4
4
|
module Markdown
|
5
5
|
describe PreProcessor do
|
6
|
+
describe 'handling ```notes' do
|
7
|
+
let :notes_input do
|
8
|
+
<<-eos
|
9
|
+
```notes
|
10
|
+
This is a note
|
11
|
+
```
|
12
|
+
eos
|
13
|
+
end
|
14
|
+
|
15
|
+
let :note_input do
|
16
|
+
<<-eos
|
17
|
+
```note
|
18
|
+
This is a note
|
19
|
+
```
|
20
|
+
eos
|
21
|
+
end
|
22
|
+
|
23
|
+
let :transformed_notes do
|
24
|
+
<<-eos
|
25
|
+
<div>DIVIDER</div>
|
26
|
+
|
27
|
+
|
28
|
+
<div>NOTES_OPEN</div>
|
29
|
+
|
30
|
+
This is a note
|
31
|
+
|
32
|
+
<div>NOTES_CLOSE</div>
|
33
|
+
|
34
|
+
|
35
|
+
<div>DIVIDER</div>
|
36
|
+
eos
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'transforms ```notes into <div>NOTES_OPEN</div>' do
|
40
|
+
output = PreProcessor.new(notes_input).process
|
41
|
+
expect(output).to include '<div>NOTES_OPEN</div>'
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'transforms ```note into <div>NOTES_OPEN</div>' do
|
45
|
+
output = PreProcessor.new(note_input).process
|
46
|
+
expect(output).to include '<div>NOTES_OPEN</div>'
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'transforms the trailing ``` into <div>NOTES_CLOSE</div>' do
|
50
|
+
output = PreProcessor.new(note_input).process
|
51
|
+
expect(output).to include '<div>NOTES_CLOSE</div>'
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'transforms both open and close and adds some newlines' do
|
55
|
+
output = PreProcessor.new(notes_input).process
|
56
|
+
expect(output).to eq transformed_notes
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
6
60
|
it 'protects _s within emoji by turning them into a temporary token' do
|
7
61
|
input = ':money_with_wings:'
|
8
62
|
output = PreProcessor.new(input).process
|
@@ -57,40 +57,20 @@ eos
|
|
57
57
|
eos
|
58
58
|
expect(output).to include '<pre><code>'
|
59
59
|
expect(output).to include '</code></pre>'
|
60
|
-
expect(output).to include '<p>
|
60
|
+
expect(output).to include '<p>"&"</p>'
|
61
61
|
end
|
62
62
|
|
63
|
-
it 'wraps ```ruby code in a <pre> and <code class="ruby">' do
|
63
|
+
it 'wraps ```ruby code in a <pre> and <code class="language-ruby">' do
|
64
64
|
output = render_markdown <<-eos
|
65
65
|
```ruby
|
66
66
|
def adder(a, b); a + b; end
|
67
67
|
```
|
68
68
|
eos
|
69
|
-
expect(output).to include '<pre><code class="ruby">'
|
69
|
+
expect(output).to include '<pre><code class="language-ruby">'
|
70
70
|
expect(output).to include '</code></pre>'
|
71
71
|
expect(output).to include 'a + b'
|
72
72
|
end
|
73
73
|
|
74
|
-
it 'creates an <aside class="notes"> when it sees a ```notes' do
|
75
|
-
output = render_markdown <<-eos
|
76
|
-
```notes
|
77
|
-
This is a note
|
78
|
-
```
|
79
|
-
eos
|
80
|
-
expect(output).to include "<aside class='notes'"
|
81
|
-
expect(output).to include 'This is a note'
|
82
|
-
end
|
83
|
-
|
84
|
-
it 'creates an <aside class="notes"> when it sees a ```note' do
|
85
|
-
output = render_markdown <<-eos
|
86
|
-
```note
|
87
|
-
This is a note
|
88
|
-
```
|
89
|
-
eos
|
90
|
-
expect(output).to include "<aside class='notes'"
|
91
|
-
expect(output).to include 'This is a note'
|
92
|
-
end
|
93
|
-
|
94
74
|
it 'works when there is no space surrounding the ---' do
|
95
75
|
output = render_markdown <<-eos
|
96
76
|
# Your headline
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reveal-ck
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jed Northridge
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: docile
|
@@ -108,6 +108,20 @@ dependencies:
|
|
108
108
|
- - '='
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: 2.1.0
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: kramdown
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 1.13.1
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 1.13.1
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: listen
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -165,61 +179,61 @@ dependencies:
|
|
165
179
|
- !ruby/object:Gem::Version
|
166
180
|
version: 10.4.2
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
182
|
+
name: rinku
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
170
184
|
requirements:
|
171
185
|
- - '='
|
172
186
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
187
|
+
version: 1.7.3
|
174
188
|
type: :runtime
|
175
189
|
prerelease: false
|
176
190
|
version_requirements: !ruby/object:Gem::Requirement
|
177
191
|
requirements:
|
178
192
|
- - '='
|
179
193
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
194
|
+
version: 1.7.3
|
181
195
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
196
|
+
name: slim
|
183
197
|
requirement: !ruby/object:Gem::Requirement
|
184
198
|
requirements:
|
185
199
|
- - '='
|
186
200
|
- !ruby/object:Gem::Version
|
187
|
-
version:
|
201
|
+
version: 3.0.6
|
188
202
|
type: :runtime
|
189
203
|
prerelease: false
|
190
204
|
version_requirements: !ruby/object:Gem::Requirement
|
191
205
|
requirements:
|
192
206
|
- - '='
|
193
207
|
- !ruby/object:Gem::Version
|
194
|
-
version:
|
208
|
+
version: 3.0.6
|
195
209
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
210
|
+
name: tilt
|
197
211
|
requirement: !ruby/object:Gem::Requirement
|
198
212
|
requirements:
|
199
213
|
- - '='
|
200
214
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
215
|
+
version: 2.0.1
|
202
216
|
type: :runtime
|
203
217
|
prerelease: false
|
204
218
|
version_requirements: !ruby/object:Gem::Requirement
|
205
219
|
requirements:
|
206
220
|
- - '='
|
207
221
|
- !ruby/object:Gem::Version
|
208
|
-
version:
|
222
|
+
version: 2.0.1
|
209
223
|
- !ruby/object:Gem::Dependency
|
210
|
-
name:
|
224
|
+
name: thor
|
211
225
|
requirement: !ruby/object:Gem::Requirement
|
212
226
|
requirements:
|
213
227
|
- - '='
|
214
228
|
- !ruby/object:Gem::Version
|
215
|
-
version:
|
229
|
+
version: 0.19.1
|
216
230
|
type: :runtime
|
217
231
|
prerelease: false
|
218
232
|
version_requirements: !ruby/object:Gem::Requirement
|
219
233
|
requirements:
|
220
234
|
- - '='
|
221
235
|
- !ruby/object:Gem::Version
|
222
|
-
version:
|
236
|
+
version: 0.19.1
|
223
237
|
- !ruby/object:Gem::Dependency
|
224
238
|
name: aruba
|
225
239
|
requirement: !ruby/object:Gem::Requirement
|
@@ -489,7 +503,9 @@ files:
|
|
489
503
|
- lib/reveal-ck/markdown.rb
|
490
504
|
- lib/reveal-ck/markdown/post_processor.rb
|
491
505
|
- lib/reveal-ck/markdown/pre_processor.rb
|
492
|
-
- lib/reveal-ck/markdown/
|
506
|
+
- lib/reveal-ck/markdown/pre_processor_for_dividers.rb
|
507
|
+
- lib/reveal-ck/markdown/pre_processor_for_emoji.rb
|
508
|
+
- lib/reveal-ck/markdown/pre_processor_transforms.rb
|
493
509
|
- lib/reveal-ck/markdown/slide_markdown_template.rb
|
494
510
|
- lib/reveal-ck/misc.rb
|
495
511
|
- lib/reveal-ck/misc/remove_extension.rb
|
@@ -554,7 +570,6 @@ files:
|
|
554
570
|
- spec/lib/reveal-ck/config_spec.rb
|
555
571
|
- spec/lib/reveal-ck/markdown/post_processor_spec.rb
|
556
572
|
- spec/lib/reveal-ck/markdown/pre_processor_spec.rb
|
557
|
-
- spec/lib/reveal-ck/markdown/slide_markdown_spec.rb
|
558
573
|
- spec/lib/reveal-ck/markdown/slide_markdown_template_spec.rb
|
559
574
|
- spec/lib/reveal-ck/misc/remove_extension_spec.rb
|
560
575
|
- spec/lib/reveal-ck/presentation_dsl_spec.rb
|
@@ -635,7 +650,6 @@ test_files:
|
|
635
650
|
- spec/lib/reveal-ck/config_spec.rb
|
636
651
|
- spec/lib/reveal-ck/markdown/post_processor_spec.rb
|
637
652
|
- spec/lib/reveal-ck/markdown/pre_processor_spec.rb
|
638
|
-
- spec/lib/reveal-ck/markdown/slide_markdown_spec.rb
|
639
653
|
- spec/lib/reveal-ck/markdown/slide_markdown_template_spec.rb
|
640
654
|
- spec/lib/reveal-ck/misc/remove_extension_spec.rb
|
641
655
|
- spec/lib/reveal-ck/presentation_dsl_spec.rb
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'cgi'
|
2
|
-
require 'redcarpet'
|
3
|
-
|
4
|
-
module RevealCK
|
5
|
-
module Markdown
|
6
|
-
# This class defines what "Slide Markdown" is.
|
7
|
-
class SlideMarkdown < Redcarpet::Render::HTML
|
8
|
-
def preprocess(doc)
|
9
|
-
PreProcessor.new(doc).process
|
10
|
-
end
|
11
|
-
|
12
|
-
def postprocess(doc)
|
13
|
-
PostProcessor.new(doc).process
|
14
|
-
end
|
15
|
-
|
16
|
-
def block_code(code, language)
|
17
|
-
escaped = CGI.escape_html(code)
|
18
|
-
if language.nil?
|
19
|
-
"<pre><code>#{escaped}</code></pre>"
|
20
|
-
elsif language == 'notes' || language == 'note'
|
21
|
-
"<aside class='notes'>#{escaped}</aside>"
|
22
|
-
else
|
23
|
-
"<pre><code class=\"#{language}\">#{escaped}</code></pre>"
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|