markdown_views 0.4.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/LICENSE.txt +1 -1
- data/README.md +59 -18
- data/Rakefile +7 -1
- data/app/assets/stylesheets/rouge.base16.dark.css +78 -0
- data/app/assets/stylesheets/rouge.base16.light.css +77 -0
- data/app/assets/stylesheets/rouge.base16.monokai.dark.css +78 -0
- data/app/assets/stylesheets/rouge.base16.monokai.light.css +77 -0
- data/app/assets/stylesheets/rouge.base16.solarized.dark.css +78 -0
- data/app/assets/stylesheets/rouge.base16.solarized.light.css +77 -0
- data/app/assets/stylesheets/rouge.colorful.css +170 -0
- data/app/assets/stylesheets/rouge.github.css +209 -0
- data/app/assets/stylesheets/rouge.gruvbox.dark.css +84 -0
- data/app/assets/stylesheets/rouge.gruvbox.light.css +84 -0
- data/app/assets/stylesheets/rouge.igorpro.css +32 -0
- data/app/assets/stylesheets/rouge.molokai.css +208 -0
- data/app/assets/stylesheets/rouge.monokai.css +210 -0
- data/app/assets/stylesheets/rouge.monokai.sublime.css +187 -0
- data/app/assets/stylesheets/rouge.pastie.css +146 -0
- data/app/assets/stylesheets/rouge.thankful_eyes.css +173 -0
- data/app/assets/stylesheets/rouge.tulip.css +164 -0
- data/lib/markdown_views.rb +2 -4
- data/lib/markdown_views/config.rb +17 -25
- data/lib/markdown_views/renderer.rb +34 -33
- data/lib/markdown_views/version.rb +1 -1
- data/markdown_views.gemspec +4 -4
- metadata +30 -14
- data/app/assets/stylesheets/coderay.css +0 -131
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f81c4a73e77188401ab48d61d0c2d74b046d47bac8564a0d614415c79b549a01
|
4
|
+
data.tar.gz: 1c65711a9128b8be0011b5ab9a63a3f0f800397414b54fbd1290e085f8b7ec37
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61d705a6332849bc8a9d54c392cb1f5075b0ce3f08af7870a878d5c5d9c3cf87964fbc9ea263c0f08a4f3310c22b382b5289c0bd062eaaca5bf3acfc9282f6a5
|
7
|
+
data.tar.gz: 1a22c8e30aae4fc4ff9e8c5795c70273f4bb054682ddc0e005289ed5a4680d028bf414a9b8444aee02d352a52339bb429413d964f1d3365772b1d28b6e30d47c
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,13 +1,39 @@
|
|
1
1
|
# MarkdownViews
|
2
2
|
|
3
|
-
|
3
|
+
MarkdownViews enables Rails 5+ to process .md templates as part of `app/views/`, with optional preprocessing of ERB, HAML, etc. A `markdown()` helper is also provided for when you need Markdown for only part of a view.
|
4
4
|
|
5
|
-
|
5
|
+
It uses CommonMarker for markdown processing and Rouge for syntax highlighting.
|
6
6
|
|
7
|
-
Just create views as `some_action.html.md` instead of `some_action.html.erb`.
|
8
7
|
|
8
|
+
## Usage: Views
|
9
9
|
|
10
|
-
|
10
|
+
Just create views as `some_action.html.md` instead of `some_action.html.erb` and write them with Markdown instead of HTML. You can still use ERB (or HAML, etc -- see below).
|
11
|
+
|
12
|
+
# My page title
|
13
|
+
|
14
|
+
Hello, **<%= current_user.first_name %>**.
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
def syntax_highlighting
|
18
|
+
'works too!'
|
19
|
+
end
|
20
|
+
```
|
21
|
+
|
22
|
+
|
23
|
+
## Usage: Helper
|
24
|
+
|
25
|
+
MarkdownViews also includes a simple Markdown rendering helper.
|
26
|
+
|
27
|
+
<%= markdown('## Some markdown text') %>
|
28
|
+
|
29
|
+
<%= markdown do %>
|
30
|
+
## Some markdown text
|
31
|
+
<% end %>
|
32
|
+
|
33
|
+
|
34
|
+
## Configuration
|
35
|
+
|
36
|
+
By default, all HTML comments are stripped from the output. Occasionally this can cause issues with inline Javascript or otherwise be undesired. To disable, add the following to an initializer:
|
11
37
|
|
12
38
|
MarkdownViews.strip_comments = false
|
13
39
|
|
@@ -16,30 +42,31 @@ By default, all .md files are preprocessed with ERB (making them effectively .md
|
|
16
42
|
MarkdownViews.preprocessor = :erb
|
17
43
|
MarkdownViews.preprocessor = nil
|
18
44
|
|
19
|
-
|
45
|
+
CommonMarker's rendering can also be configured. See CommonMarker's documentation for available options.
|
20
46
|
|
21
|
-
MarkdownViews.
|
47
|
+
MarkdownViews.parsing_opts -= %i(UNSAFE)
|
22
48
|
|
23
|
-
MarkdownViews.rendering_opts
|
49
|
+
MarkdownViews.rendering_opts -= %i(UNSAFE TABLE_PREFER_STYLE_ATTRIBUTES)
|
24
50
|
|
25
|
-
|
51
|
+
MarkdownViews.extensions -= %i(autolink)
|
26
52
|
|
27
|
-
|
53
|
+
Likewise, Rouge can be configured:
|
28
54
|
|
29
|
-
|
55
|
+
# Use inline formatting:
|
56
|
+
MarkdownViews.rouge_opts.merge! formatter: Rouge::Formatters::HTMLInline.new('pastie')
|
30
57
|
|
31
|
-
|
58
|
+
# Enable line numbers:
|
59
|
+
MarkdownViews.rouge_opts.merge!(
|
60
|
+
formatter: Rouge::Formatters::HTMLTable.new(Rouge::Formatters::HTML.new, code_class: 'rouge-highlight'),
|
61
|
+
wrap: false
|
62
|
+
)
|
32
63
|
|
64
|
+
The standard CSS themes from Rouge are available via the asset pipeline. To use one, add it to your `application.css`:
|
33
65
|
|
34
|
-
|
66
|
+
*= require rouge.monokai
|
35
67
|
|
36
|
-
|
68
|
+
See `app/assets/stylesheets/` for the complete list.
|
37
69
|
|
38
|
-
<%= markdown('## Some markdown text') %>
|
39
|
-
|
40
|
-
<%= markdown do %>
|
41
|
-
## Some markdown text
|
42
|
-
<% end %>
|
43
70
|
|
44
71
|
## Installation
|
45
72
|
|
@@ -51,6 +78,20 @@ And then execute:
|
|
51
78
|
|
52
79
|
$ bundle
|
53
80
|
|
81
|
+
|
82
|
+
## Gem versions
|
83
|
+
|
84
|
+
The 0.x series used RedCarpet and CodeRay.
|
85
|
+
(There was no 1.x series.)
|
86
|
+
The 2.x series uses CommonMarker and Rouge.
|
87
|
+
|
88
|
+
#### Upgrading from 0.x to 2.x
|
89
|
+
|
90
|
+
The configuration options have changed. The defaults are roughly the same as before. However, if you had customized them previously, then it will need to be revisited.
|
91
|
+
|
92
|
+
Similarly, the provided stylesheets for syntax highlighting have been changed. If you were importing the 'coderay' stylesheet before, then a new stylesheet will need to be selected. Try 'rouge.colorful' or one of the others included in app/assets/stylesheets.
|
93
|
+
|
94
|
+
|
54
95
|
## Contributing
|
55
96
|
|
56
97
|
1. Fork it ( http://github.com/<my-github-username>/markdown_views/fork )
|
data/Rakefile
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
2
|
|
3
3
|
task :generate_stylesheet do
|
4
|
-
|
4
|
+
%w( base16.light base16.dark base16.solarized.light base16.solarized.dark
|
5
|
+
base16.monokai.light base16.monokai.dark colorful github
|
6
|
+
gruvbox.light gruvbox.dark igorpro molokai monokai monokai.sublime
|
7
|
+
pastie thankful_eyes tulip
|
8
|
+
).each do |theme|
|
9
|
+
`rougify style #{theme} --scope .rouge-highlight > app/assets/stylesheets/rouge.#{theme}.css`
|
10
|
+
end
|
5
11
|
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
.rouge-highlight table td { padding: 5px; }
|
2
|
+
.rouge-highlight table pre { margin: 0; }
|
3
|
+
.rouge-highlight, .rouge-highlight .w {
|
4
|
+
color: #d0d0d0;
|
5
|
+
background-color: #151515;
|
6
|
+
}
|
7
|
+
.rouge-highlight .err {
|
8
|
+
color: #151515;
|
9
|
+
background-color: #ac4142;
|
10
|
+
}
|
11
|
+
.rouge-highlight .c, .rouge-highlight .cd, .rouge-highlight .cm, .rouge-highlight .c1, .rouge-highlight .cs {
|
12
|
+
color: #505050;
|
13
|
+
}
|
14
|
+
.rouge-highlight .cp {
|
15
|
+
color: #f4bf75;
|
16
|
+
}
|
17
|
+
.rouge-highlight .nt {
|
18
|
+
color: #f4bf75;
|
19
|
+
}
|
20
|
+
.rouge-highlight .o, .rouge-highlight .ow {
|
21
|
+
color: #d0d0d0;
|
22
|
+
}
|
23
|
+
.rouge-highlight .p, .rouge-highlight .pi {
|
24
|
+
color: #d0d0d0;
|
25
|
+
}
|
26
|
+
.rouge-highlight .gi {
|
27
|
+
color: #90a959;
|
28
|
+
}
|
29
|
+
.rouge-highlight .gd {
|
30
|
+
color: #ac4142;
|
31
|
+
}
|
32
|
+
.rouge-highlight .gh {
|
33
|
+
color: #6a9fb5;
|
34
|
+
background-color: #151515;
|
35
|
+
font-weight: bold;
|
36
|
+
}
|
37
|
+
.rouge-highlight .k, .rouge-highlight .kn, .rouge-highlight .kp, .rouge-highlight .kr, .rouge-highlight .kv {
|
38
|
+
color: #aa759f;
|
39
|
+
}
|
40
|
+
.rouge-highlight .kc {
|
41
|
+
color: #d28445;
|
42
|
+
}
|
43
|
+
.rouge-highlight .kt {
|
44
|
+
color: #d28445;
|
45
|
+
}
|
46
|
+
.rouge-highlight .kd {
|
47
|
+
color: #d28445;
|
48
|
+
}
|
49
|
+
.rouge-highlight .s, .rouge-highlight .sb, .rouge-highlight .sc, .rouge-highlight .sd, .rouge-highlight .s2, .rouge-highlight .sh, .rouge-highlight .sx, .rouge-highlight .s1 {
|
50
|
+
color: #90a959;
|
51
|
+
}
|
52
|
+
.rouge-highlight .sr {
|
53
|
+
color: #75b5aa;
|
54
|
+
}
|
55
|
+
.rouge-highlight .si {
|
56
|
+
color: #8f5536;
|
57
|
+
}
|
58
|
+
.rouge-highlight .se {
|
59
|
+
color: #8f5536;
|
60
|
+
}
|
61
|
+
.rouge-highlight .nn {
|
62
|
+
color: #f4bf75;
|
63
|
+
}
|
64
|
+
.rouge-highlight .nc {
|
65
|
+
color: #f4bf75;
|
66
|
+
}
|
67
|
+
.rouge-highlight .no {
|
68
|
+
color: #f4bf75;
|
69
|
+
}
|
70
|
+
.rouge-highlight .na {
|
71
|
+
color: #6a9fb5;
|
72
|
+
}
|
73
|
+
.rouge-highlight .m, .rouge-highlight .mf, .rouge-highlight .mh, .rouge-highlight .mi, .rouge-highlight .il, .rouge-highlight .mo, .rouge-highlight .mb, .rouge-highlight .mx {
|
74
|
+
color: #90a959;
|
75
|
+
}
|
76
|
+
.rouge-highlight .ss {
|
77
|
+
color: #90a959;
|
78
|
+
}
|
@@ -0,0 +1,77 @@
|
|
1
|
+
.rouge-highlight table td { padding: 5px; }
|
2
|
+
.rouge-highlight table pre { margin: 0; }
|
3
|
+
.rouge-highlight, .rouge-highlight .w {
|
4
|
+
color: #303030;
|
5
|
+
}
|
6
|
+
.rouge-highlight .err {
|
7
|
+
color: #151515;
|
8
|
+
background-color: #ac4142;
|
9
|
+
}
|
10
|
+
.rouge-highlight .c, .rouge-highlight .cd, .rouge-highlight .cm, .rouge-highlight .c1, .rouge-highlight .cs {
|
11
|
+
color: #505050;
|
12
|
+
}
|
13
|
+
.rouge-highlight .cp {
|
14
|
+
color: #f4bf75;
|
15
|
+
}
|
16
|
+
.rouge-highlight .nt {
|
17
|
+
color: #f4bf75;
|
18
|
+
}
|
19
|
+
.rouge-highlight .o, .rouge-highlight .ow {
|
20
|
+
color: #d0d0d0;
|
21
|
+
}
|
22
|
+
.rouge-highlight .p, .rouge-highlight .pi {
|
23
|
+
color: #d0d0d0;
|
24
|
+
}
|
25
|
+
.rouge-highlight .gi {
|
26
|
+
color: #90a959;
|
27
|
+
}
|
28
|
+
.rouge-highlight .gd {
|
29
|
+
color: #ac4142;
|
30
|
+
}
|
31
|
+
.rouge-highlight .gh {
|
32
|
+
color: #6a9fb5;
|
33
|
+
background-color: #151515;
|
34
|
+
font-weight: bold;
|
35
|
+
}
|
36
|
+
.rouge-highlight .k, .rouge-highlight .kn, .rouge-highlight .kp, .rouge-highlight .kr, .rouge-highlight .kv {
|
37
|
+
color: #aa759f;
|
38
|
+
}
|
39
|
+
.rouge-highlight .kc {
|
40
|
+
color: #d28445;
|
41
|
+
}
|
42
|
+
.rouge-highlight .kt {
|
43
|
+
color: #d28445;
|
44
|
+
}
|
45
|
+
.rouge-highlight .kd {
|
46
|
+
color: #d28445;
|
47
|
+
}
|
48
|
+
.rouge-highlight .s, .rouge-highlight .sb, .rouge-highlight .sc, .rouge-highlight .sd, .rouge-highlight .s2, .rouge-highlight .sh, .rouge-highlight .sx, .rouge-highlight .s1 {
|
49
|
+
color: #90a959;
|
50
|
+
}
|
51
|
+
.rouge-highlight .sr {
|
52
|
+
color: #75b5aa;
|
53
|
+
}
|
54
|
+
.rouge-highlight .si {
|
55
|
+
color: #8f5536;
|
56
|
+
}
|
57
|
+
.rouge-highlight .se {
|
58
|
+
color: #8f5536;
|
59
|
+
}
|
60
|
+
.rouge-highlight .nn {
|
61
|
+
color: #f4bf75;
|
62
|
+
}
|
63
|
+
.rouge-highlight .nc {
|
64
|
+
color: #f4bf75;
|
65
|
+
}
|
66
|
+
.rouge-highlight .no {
|
67
|
+
color: #f4bf75;
|
68
|
+
}
|
69
|
+
.rouge-highlight .na {
|
70
|
+
color: #6a9fb5;
|
71
|
+
}
|
72
|
+
.rouge-highlight .m, .rouge-highlight .mf, .rouge-highlight .mh, .rouge-highlight .mi, .rouge-highlight .il, .rouge-highlight .mo, .rouge-highlight .mb, .rouge-highlight .mx {
|
73
|
+
color: #90a959;
|
74
|
+
}
|
75
|
+
.rouge-highlight .ss {
|
76
|
+
color: #90a959;
|
77
|
+
}
|
@@ -0,0 +1,78 @@
|
|
1
|
+
.rouge-highlight table td { padding: 5px; }
|
2
|
+
.rouge-highlight table pre { margin: 0; }
|
3
|
+
.rouge-highlight, .rouge-highlight .w {
|
4
|
+
color: #f8f8f2;
|
5
|
+
background-color: #272822;
|
6
|
+
}
|
7
|
+
.rouge-highlight .err {
|
8
|
+
color: #272822;
|
9
|
+
background-color: #f92672;
|
10
|
+
}
|
11
|
+
.rouge-highlight .c, .rouge-highlight .cd, .rouge-highlight .cm, .rouge-highlight .c1, .rouge-highlight .cs {
|
12
|
+
color: #75715e;
|
13
|
+
}
|
14
|
+
.rouge-highlight .cp {
|
15
|
+
color: #f4bf75;
|
16
|
+
}
|
17
|
+
.rouge-highlight .nt {
|
18
|
+
color: #f4bf75;
|
19
|
+
}
|
20
|
+
.rouge-highlight .o, .rouge-highlight .ow {
|
21
|
+
color: #f8f8f2;
|
22
|
+
}
|
23
|
+
.rouge-highlight .p, .rouge-highlight .pi {
|
24
|
+
color: #f8f8f2;
|
25
|
+
}
|
26
|
+
.rouge-highlight .gi {
|
27
|
+
color: #a6e22e;
|
28
|
+
}
|
29
|
+
.rouge-highlight .gd {
|
30
|
+
color: #f92672;
|
31
|
+
}
|
32
|
+
.rouge-highlight .gh {
|
33
|
+
color: #66d9ef;
|
34
|
+
background-color: #272822;
|
35
|
+
font-weight: bold;
|
36
|
+
}
|
37
|
+
.rouge-highlight .k, .rouge-highlight .kn, .rouge-highlight .kp, .rouge-highlight .kr, .rouge-highlight .kv {
|
38
|
+
color: #ae81ff;
|
39
|
+
}
|
40
|
+
.rouge-highlight .kc {
|
41
|
+
color: #fd971f;
|
42
|
+
}
|
43
|
+
.rouge-highlight .kt {
|
44
|
+
color: #fd971f;
|
45
|
+
}
|
46
|
+
.rouge-highlight .kd {
|
47
|
+
color: #fd971f;
|
48
|
+
}
|
49
|
+
.rouge-highlight .s, .rouge-highlight .sb, .rouge-highlight .sc, .rouge-highlight .sd, .rouge-highlight .s2, .rouge-highlight .sh, .rouge-highlight .sx, .rouge-highlight .s1 {
|
50
|
+
color: #a6e22e;
|
51
|
+
}
|
52
|
+
.rouge-highlight .sr {
|
53
|
+
color: #a1efe4;
|
54
|
+
}
|
55
|
+
.rouge-highlight .si {
|
56
|
+
color: #cc6633;
|
57
|
+
}
|
58
|
+
.rouge-highlight .se {
|
59
|
+
color: #cc6633;
|
60
|
+
}
|
61
|
+
.rouge-highlight .nn {
|
62
|
+
color: #f4bf75;
|
63
|
+
}
|
64
|
+
.rouge-highlight .nc {
|
65
|
+
color: #f4bf75;
|
66
|
+
}
|
67
|
+
.rouge-highlight .no {
|
68
|
+
color: #f4bf75;
|
69
|
+
}
|
70
|
+
.rouge-highlight .na {
|
71
|
+
color: #66d9ef;
|
72
|
+
}
|
73
|
+
.rouge-highlight .m, .rouge-highlight .mf, .rouge-highlight .mh, .rouge-highlight .mi, .rouge-highlight .il, .rouge-highlight .mo, .rouge-highlight .mb, .rouge-highlight .mx {
|
74
|
+
color: #a6e22e;
|
75
|
+
}
|
76
|
+
.rouge-highlight .ss {
|
77
|
+
color: #a6e22e;
|
78
|
+
}
|
@@ -0,0 +1,77 @@
|
|
1
|
+
.rouge-highlight table td { padding: 5px; }
|
2
|
+
.rouge-highlight table pre { margin: 0; }
|
3
|
+
.rouge-highlight, .rouge-highlight .w {
|
4
|
+
color: #49483e;
|
5
|
+
}
|
6
|
+
.rouge-highlight .err {
|
7
|
+
color: #272822;
|
8
|
+
background-color: #f92672;
|
9
|
+
}
|
10
|
+
.rouge-highlight .c, .rouge-highlight .cd, .rouge-highlight .cm, .rouge-highlight .c1, .rouge-highlight .cs {
|
11
|
+
color: #75715e;
|
12
|
+
}
|
13
|
+
.rouge-highlight .cp {
|
14
|
+
color: #f4bf75;
|
15
|
+
}
|
16
|
+
.rouge-highlight .nt {
|
17
|
+
color: #f4bf75;
|
18
|
+
}
|
19
|
+
.rouge-highlight .o, .rouge-highlight .ow {
|
20
|
+
color: #f8f8f2;
|
21
|
+
}
|
22
|
+
.rouge-highlight .p, .rouge-highlight .pi {
|
23
|
+
color: #f8f8f2;
|
24
|
+
}
|
25
|
+
.rouge-highlight .gi {
|
26
|
+
color: #a6e22e;
|
27
|
+
}
|
28
|
+
.rouge-highlight .gd {
|
29
|
+
color: #f92672;
|
30
|
+
}
|
31
|
+
.rouge-highlight .gh {
|
32
|
+
color: #66d9ef;
|
33
|
+
background-color: #272822;
|
34
|
+
font-weight: bold;
|
35
|
+
}
|
36
|
+
.rouge-highlight .k, .rouge-highlight .kn, .rouge-highlight .kp, .rouge-highlight .kr, .rouge-highlight .kv {
|
37
|
+
color: #ae81ff;
|
38
|
+
}
|
39
|
+
.rouge-highlight .kc {
|
40
|
+
color: #fd971f;
|
41
|
+
}
|
42
|
+
.rouge-highlight .kt {
|
43
|
+
color: #fd971f;
|
44
|
+
}
|
45
|
+
.rouge-highlight .kd {
|
46
|
+
color: #fd971f;
|
47
|
+
}
|
48
|
+
.rouge-highlight .s, .rouge-highlight .sb, .rouge-highlight .sc, .rouge-highlight .sd, .rouge-highlight .s2, .rouge-highlight .sh, .rouge-highlight .sx, .rouge-highlight .s1 {
|
49
|
+
color: #a6e22e;
|
50
|
+
}
|
51
|
+
.rouge-highlight .sr {
|
52
|
+
color: #a1efe4;
|
53
|
+
}
|
54
|
+
.rouge-highlight .si {
|
55
|
+
color: #cc6633;
|
56
|
+
}
|
57
|
+
.rouge-highlight .se {
|
58
|
+
color: #cc6633;
|
59
|
+
}
|
60
|
+
.rouge-highlight .nn {
|
61
|
+
color: #f4bf75;
|
62
|
+
}
|
63
|
+
.rouge-highlight .nc {
|
64
|
+
color: #f4bf75;
|
65
|
+
}
|
66
|
+
.rouge-highlight .no {
|
67
|
+
color: #f4bf75;
|
68
|
+
}
|
69
|
+
.rouge-highlight .na {
|
70
|
+
color: #66d9ef;
|
71
|
+
}
|
72
|
+
.rouge-highlight .m, .rouge-highlight .mf, .rouge-highlight .mh, .rouge-highlight .mi, .rouge-highlight .il, .rouge-highlight .mo, .rouge-highlight .mb, .rouge-highlight .mx {
|
73
|
+
color: #a6e22e;
|
74
|
+
}
|
75
|
+
.rouge-highlight .ss {
|
76
|
+
color: #a6e22e;
|
77
|
+
}
|