marksmith 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +21 -21
- data/app/assets/javascripts/list_continuation_controller-full.esm.js +1 -1
- data/app/assets/javascripts/list_continuation_controller-no-stimulus.esm.js +1 -1
- data/app/assets/javascripts/marksmith_controller-full.esm.js +1 -1
- data/app/assets/javascripts/marksmith_controller-no-stimulus.esm.js +1 -1
- data/app/components/marksmith/markdown_field/show_component.html.erb +1 -1
- data/app/controllers/marksmith/markdown_previews_controller.rb +1 -1
- data/app/models/marksmith/renderer.rb +20 -4
- data/lib/marksmith/configuration.rb +1 -0
- data/lib/marksmith/helper.rb +1 -1
- data/lib/marksmith/version.rb +1 -1
- metadata +2 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd1c156bdd01e593e1ed5a364b646b028e736a7e0d67763110cce1e08ccb4d08
|
4
|
+
data.tar.gz: 12cdfb76d754cd011892b76790784cc122f5500213ab5f18318e353fdd531013
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5908c41dc5a0b241a3db237ad8c6bf08e8868cb57517ff621bafb47564fd328ab7cb24b225c638b252d24e0c44852ea285af5aa95709b0fc0ab9e12aaf4ffe1
|
7
|
+
data.tar.gz: 5437ee09dccfd514e25d2fcd4874acb7cf126fe5ae26d4839ae6061daedcbdeabdb259a6dba550fdfa87b9d44d3a3f769046d17a50539a2d545390ac958ce57b
|
data/README.md
CHANGED
@@ -154,8 +154,8 @@ end
|
|
154
154
|
|
155
155
|
## Built-in preview renderer
|
156
156
|
|
157
|
-
The renderer is powered by [`Redcarpet`](https://github.com/vmg/redcarpet).
|
158
|
-
It supports basic styles
|
157
|
+
The renderer is powered by [`Commonmarker`](https://github.com/gjtorikian/commonmarker) by default but it can be changed to [`Redcarpet`](https://github.com/vmg/redcarpet) in the configuration or add your own logic by customizing the `Marksmith::Renderer` model.
|
158
|
+
It supports basic styles like headings, `strong`, `italic` and others.
|
159
159
|
|
160
160
|
In your `show.html.erb` view or the place where you want to render the compiled markup use the `marksmithed` helper and it will run the content through the renderer.
|
161
161
|
|
@@ -172,31 +172,31 @@ In your `show.html.erb` view or the place where you want to render the compiled
|
|
172
172
|
> sanitize(body, tags: %w(table th tr td span) + ActionView::Helpers::SanitizeHelper.sanitizer_vendor.safe_list_sanitizer.allowed_tags.to_a)
|
173
173
|
> ```
|
174
174
|
|
175
|
-
|
175
|
+
## Customize the renderer
|
176
176
|
|
177
|
-
|
177
|
+
Marksmith comes with a default renderer that uses `Commonmarker` by default but it can be changed to `Redcarpet` in the configuration.
|
178
178
|
|
179
179
|
```ruby
|
180
|
-
#
|
181
|
-
|
180
|
+
# config/initializers/marksmith.rb
|
181
|
+
Marksmith.configure do |config|
|
182
|
+
config.parser = "redcarpet"
|
183
|
+
end
|
184
|
+
```
|
185
|
+
|
186
|
+
### Add your own renderer
|
182
187
|
|
188
|
+
You can completely customize the renderer by overriding the `Marksmith::Renderer` model.
|
189
|
+
|
190
|
+
```ruby
|
191
|
+
# app/models/marksmith/renderer.rb
|
183
192
|
module Marksmith
|
184
193
|
class Renderer
|
185
|
-
def
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
space_after_headers: true,
|
192
|
-
hard_wrap: true,
|
193
|
-
autolink: true,
|
194
|
-
strikethrough: true,
|
195
|
-
underline: true,
|
196
|
-
highlight: true,
|
197
|
-
quote: true,
|
198
|
-
with_toc_data: true
|
199
|
-
)
|
194
|
+
def initialize(body:)
|
195
|
+
@body = body
|
196
|
+
end
|
197
|
+
|
198
|
+
def render
|
199
|
+
# Your custom renderer logic here
|
200
200
|
end
|
201
201
|
end
|
202
202
|
end
|
@@ -1,3 +1,3 @@
|
|
1
1
|
<%= field_wrapper **field_wrapper_args, full_width: true do %>
|
2
|
-
<%= render partial: "marksmith/shared/rendered_body", locals: { body: Marksmith::Renderer.new
|
2
|
+
<%= render partial: "marksmith/shared/rendered_body", locals: { body: Marksmith::Renderer.new(body: @field.value).render } %>
|
3
3
|
<% end %>
|
@@ -1,8 +1,24 @@
|
|
1
|
-
require "redcarpet"
|
2
|
-
|
3
1
|
module Marksmith
|
4
2
|
class Renderer
|
5
|
-
def
|
3
|
+
def initialize(body:)
|
4
|
+
@body = body
|
5
|
+
end
|
6
|
+
|
7
|
+
def render
|
8
|
+
if Marksmith.configuration.parser == "commonmarker"
|
9
|
+
render_commonmarker
|
10
|
+
else
|
11
|
+
render_redcarpet
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def render_commonmarker
|
16
|
+
# commonmarker expects an utf-8 encoded string
|
17
|
+
body = @body.to_s.dup.force_encoding('utf-8')
|
18
|
+
Commonmarker.to_html(body)
|
19
|
+
end
|
20
|
+
|
21
|
+
def render_redcarpet
|
6
22
|
::Redcarpet::Markdown.new(
|
7
23
|
::Redcarpet::Render::HTML,
|
8
24
|
tables: true,
|
@@ -16,7 +32,7 @@ module Marksmith
|
|
16
32
|
highlight: true,
|
17
33
|
quote: true,
|
18
34
|
with_toc_data: true
|
19
|
-
)
|
35
|
+
).render(@body)
|
20
36
|
end
|
21
37
|
end
|
22
38
|
end
|
data/lib/marksmith/helper.rb
CHANGED
data/lib/marksmith/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: marksmith
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adrian Marin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-02-
|
11
|
+
date: 2025-02-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: redcarpet
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
27
|
description: Marksmith is a GitHub-style markdown editor for Ruby on Rails applications.
|
42
28
|
email:
|
43
29
|
- adrian@adrianthedev.com
|