redcarpet-render-seeing_is_believing 0.1.0 → 0.2.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 +3 -1
- data/CHANGELOG.md +9 -0
- data/README.md +14 -4
- data/lib/redcarpet/render/seeing_is_believing.rb +4 -2
- data/lib/redcarpet/render/seeing_is_believing/enricher.rb +33 -5
- data/lib/redcarpet/render/seeing_is_believing/options.rb +19 -0
- data/lib/redcarpet/render/seeing_is_believing/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 994ea9eff8c6cc2193109d282d4750a1ba3d34d5
|
4
|
+
data.tar.gz: e8227910b3bb41cc607ca143b55d6e0787642e5f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1a1ec1a15f342fdf3d8a1b9bfd05a2927a525dbfc99a094690625925ecf093532808e87653607e3133bbe265c2a7c9cbeb73bb6be837de592ef93744247356f
|
7
|
+
data.tar.gz: dd58fba896fdee7426a91065e8e8152034e2ea6b75aa8d81e68369aa6ae0f258efd21a23cbf0b33aba84ae7fb8526b620f04076c6a965c4580e0717b2d0c4a6a
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
# Redcarpet::Render::SeeingIsBelieving
|
2
2
|
|
3
|
+
[![Build Status](https://travis-ci.org/odlp/redcarpet-render-seeing_is_believing.svg?branch=master)](https://travis-ci.org/odlp/redcarpet-render-seeing_is_believing)
|
4
|
+
|
3
5
|
Powerup the Ruby examples in your markdown. Combines the excellent
|
4
6
|
[Redcarpet][redcarpet] (a markdown parser) with [Seeing Is Believing][sib],
|
5
|
-
which
|
7
|
+
which shows the evaluated result from each line of code.
|
6
8
|
|
7
9
|
If your markdown includes a fenced code block with `ruby+` specified as the
|
8
10
|
language:
|
@@ -23,11 +25,11 @@ require "redcarpet-render-seeing_is_believing"
|
|
23
25
|
require "redcarpet"
|
24
26
|
|
25
27
|
class MyCustomHtmlRenderer < Redcarpet::Render::HTML
|
28
|
+
prepend Redcarpet::Render::SeeingIsBelieving
|
29
|
+
|
26
30
|
def block_code(code, language)
|
27
31
|
"<pre><code>#{code}</code></pre>"
|
28
32
|
end
|
29
|
-
|
30
|
-
prepend Redcarpet::Render::SeeingIsBelieving
|
31
33
|
end
|
32
34
|
|
33
35
|
Redcarpet::Markdown.new(MyCustomHtmlRenderer, fenced_code_blocks: true).
|
@@ -56,7 +58,15 @@ Redcarpet::Markdown.new(MyCustomHtmlRenderer, fenced_code_blocks: true).
|
|
56
58
|
[redcarpet]: https://github.com/vmg/redcarpet
|
57
59
|
[sib]: https://github.com/JoshCheek/seeing_is_believing
|
58
60
|
|
61
|
+
## Options
|
62
|
+
|
63
|
+
You can pass additional options after the `ruby+` language hint:
|
64
|
+
|
65
|
+
- `ruby+e`: Hints exceptions are expected, and should be displayed. Exceptions
|
66
|
+
are hidden by default.
|
67
|
+
|
59
68
|
## TODO
|
60
69
|
|
61
|
-
- Ignore exceptions / failed evaluations by default
|
62
70
|
- Allow comments to be scoped to specific lines
|
71
|
+
- Wrap comments to the following line when the overall length is greater than
|
72
|
+
80 chars
|
@@ -1,12 +1,14 @@
|
|
1
1
|
require "redcarpet/render/seeing_is_believing/enricher"
|
2
|
+
require "redcarpet/render/seeing_is_believing/options"
|
2
3
|
require "redcarpet/render/seeing_is_believing/version"
|
3
4
|
|
4
5
|
module Redcarpet
|
5
6
|
module Render
|
6
7
|
module SeeingIsBelieving
|
7
8
|
def block_code(code, language)
|
8
|
-
if language
|
9
|
-
|
9
|
+
if language.start_with? "ruby+"
|
10
|
+
options = Options.parse(language)
|
11
|
+
enriched_code = Enricher.new(options).process(code)
|
10
12
|
super(enriched_code, "ruby")
|
11
13
|
else
|
12
14
|
super(code, language)
|
@@ -1,31 +1,59 @@
|
|
1
1
|
require "seeing_is_believing"
|
2
|
+
require_relative "options"
|
2
3
|
|
3
4
|
module Redcarpet
|
4
5
|
module Render
|
5
6
|
module SeeingIsBelieving
|
6
7
|
class Enricher
|
8
|
+
def initialize(options = Options.new)
|
9
|
+
@options = options
|
10
|
+
end
|
11
|
+
|
7
12
|
def process(code)
|
8
13
|
code.split("\n").
|
9
14
|
zip(evaluate_code(code)).
|
10
|
-
map(&
|
15
|
+
map(&combine_code_with_result).
|
11
16
|
join("\n")
|
12
17
|
end
|
13
18
|
|
14
19
|
private
|
15
20
|
|
21
|
+
attr_reader :options
|
22
|
+
|
16
23
|
def evaluate_code(code)
|
17
|
-
::SeeingIsBelieving.call(code).result
|
24
|
+
eval_result = ::SeeingIsBelieving.call(code).result
|
25
|
+
combine_eval_lines_and_exceptions(eval_result)
|
18
26
|
end
|
19
27
|
|
20
|
-
def
|
21
|
-
|
28
|
+
def combine_eval_lines_and_exceptions(result)
|
29
|
+
(1..result.num_lines).map do |line_number|
|
30
|
+
eval_lines = result[line_number]
|
31
|
+
exception = exception_for_line(result.exceptions, line_number)
|
32
|
+
|
22
33
|
if eval_lines.any?
|
23
|
-
|
34
|
+
eval_lines.join(" ")
|
35
|
+
elsif exception
|
36
|
+
"#{exception.class_name}: #{exception.message}"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def exception_for_line(exceptions, line_number)
|
42
|
+
if options.show_exceptions
|
43
|
+
exceptions.detect { |ex| ex.line_number == line_number }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def combine_code_with_result
|
48
|
+
proc do |code_line, eval_line|
|
49
|
+
if eval_line
|
50
|
+
"#{code_line} # => #{eval_line}"
|
24
51
|
else
|
25
52
|
code_line
|
26
53
|
end
|
27
54
|
end
|
28
55
|
end
|
56
|
+
|
29
57
|
end
|
30
58
|
end
|
31
59
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Redcarpet
|
2
|
+
module Render
|
3
|
+
module SeeingIsBelieving
|
4
|
+
class Options
|
5
|
+
attr_reader :show_exceptions
|
6
|
+
|
7
|
+
def self.parse(language)
|
8
|
+
options = language.partition("+").last
|
9
|
+
|
10
|
+
new(show_exceptions: options.include?("e"))
|
11
|
+
end
|
12
|
+
|
13
|
+
def initialize(show_exceptions: false)
|
14
|
+
@show_exceptions = show_exceptions
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redcarpet-render-seeing_is_believing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oli Peate
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-01-
|
11
|
+
date: 2018-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redcarpet
|
@@ -146,6 +146,7 @@ files:
|
|
146
146
|
- ".gitignore"
|
147
147
|
- ".rspec"
|
148
148
|
- ".travis.yml"
|
149
|
+
- CHANGELOG.md
|
149
150
|
- Gemfile
|
150
151
|
- README.md
|
151
152
|
- Rakefile
|
@@ -153,6 +154,7 @@ files:
|
|
153
154
|
- bin/setup
|
154
155
|
- lib/redcarpet/render/seeing_is_believing.rb
|
155
156
|
- lib/redcarpet/render/seeing_is_believing/enricher.rb
|
157
|
+
- lib/redcarpet/render/seeing_is_believing/options.rb
|
156
158
|
- lib/redcarpet/render/seeing_is_believing/version.rb
|
157
159
|
- redcarpet-render-seeing_is_believing.gemspec
|
158
160
|
homepage: https://github.com/odlp/redcarpet-render-seeing_is_believing
|