markdown-rails 2.1.0 → 2.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/Rakefile +4 -2
- data/lib/generators/markdown_rails/install/templates/app/markdown/application_markdown.rb +9 -8
- data/lib/generators/markdown_rails/install/templates/config/initializers/markdown.rb +1 -1
- data/lib/markdown-rails/handler.rb +24 -20
- data/lib/markdown-rails/renderer/base.rb +3 -1
- data/lib/markdown-rails/renderer/rails.rb +40 -13
- data/lib/markdown-rails/version.rb +1 -1
- metadata +17 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2cce6aedcf3e854a5907729d8ef780db22f9c69a20e92dd34603a4dcbfb6e699
|
|
4
|
+
data.tar.gz: 13374d49447c0d025e5d17a84f927c9027b7031c8a0c938ba3e64a44e179c66d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: eaf381f89c5d0105ef005a3008e71fac4ae726c5bc137f02c8a4e6b291ca95f491a018ee008248ada11af0842f2ae0efefa3b561ed061c1ab2450dfc5b4b1cea
|
|
7
|
+
data.tar.gz: 7d2e28141e71907f81a0fed9efca8b673708c9031adfdd19b94ed59823f51cd350687018ed74091085ebb949a736fa40fc8e3edc9c9103461ac434653d712f82
|
data/Rakefile
CHANGED
|
@@ -9,17 +9,18 @@ class ApplicationMarkdown < MarkdownRails::Renderer::Rails
|
|
|
9
9
|
# Run `bundle add rouge` and uncomment the include below for syntax highlighting
|
|
10
10
|
# include MarkdownRails::Helper::Rouge
|
|
11
11
|
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
12
|
+
# The renderer has access to the view_context, which provides access to:
|
|
13
|
+
# - View helpers (image_tag, link_to, content_tag, etc.)
|
|
14
|
+
# - Asset helpers (image_path, image_url, asset_path, etc.)
|
|
15
|
+
# - URL helpers (root_path, user_path, etc.)
|
|
15
16
|
#
|
|
16
|
-
#
|
|
17
|
+
# Many common helpers are already delegated. You can add more by uncommenting
|
|
18
|
+
# and extending the delegate list in your subclass:
|
|
17
19
|
#
|
|
18
20
|
# delegate \
|
|
19
|
-
# :
|
|
20
|
-
# :
|
|
21
|
-
#
|
|
22
|
-
# to: :helpers
|
|
21
|
+
# :current_user,
|
|
22
|
+
# :some_custom_helper,
|
|
23
|
+
# to: :view_context
|
|
23
24
|
|
|
24
25
|
# These flags control features in the Redcarpet renderer, which you can read
|
|
25
26
|
# about at https://github.com/vmg/redcarpet#and-its-like-really-simple-to-use
|
|
@@ -2,18 +2,38 @@ module MarkdownRails
|
|
|
2
2
|
# We cannot use MarkdownRails because it conflicts with RDiscount's Markdown class
|
|
3
3
|
class Handler
|
|
4
4
|
DEFAULT_EXTENSION = :md
|
|
5
|
+
@@handlers = {}
|
|
5
6
|
|
|
6
|
-
def initialize(&block)
|
|
7
|
+
def initialize(extension, &block)
|
|
8
|
+
@extension = extension
|
|
7
9
|
@markdown = block
|
|
10
|
+
@@handlers[@extension] = self
|
|
8
11
|
end
|
|
9
12
|
|
|
10
13
|
def call(template, source = template.source)
|
|
11
|
-
|
|
14
|
+
# Generate code that fetches the handler and calls the block at render time
|
|
15
|
+
extension = @extension
|
|
16
|
+
<<~RUBY
|
|
17
|
+
begin
|
|
18
|
+
handler = MarkdownRails::Handler.handler_for(#{extension.inspect})
|
|
19
|
+
renderer = handler.create_renderer
|
|
20
|
+
renderer.view_context = self
|
|
21
|
+
renderer.renderer.render(#{source.inspect}).html_safe
|
|
22
|
+
end
|
|
23
|
+
RUBY
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def create_renderer
|
|
27
|
+
@markdown.call
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.handler_for(extension)
|
|
31
|
+
@@handlers[extension]
|
|
12
32
|
end
|
|
13
33
|
|
|
14
34
|
def self.handle(*extensions, &block)
|
|
15
35
|
Array(extensions).each do |extension|
|
|
16
|
-
handler = new &block
|
|
36
|
+
handler = new(extension, &block)
|
|
17
37
|
ActionView::Template.register_template_handler extension, handler
|
|
18
38
|
end
|
|
19
39
|
end
|
|
@@ -23,21 +43,5 @@ module MarkdownRails
|
|
|
23
43
|
def self.register_default
|
|
24
44
|
handle(DEFAULT_EXTENSION) { MarkdownRails::Renderer::Rails.new }
|
|
25
45
|
end
|
|
26
|
-
|
|
27
|
-
private
|
|
28
|
-
|
|
29
|
-
def markdown
|
|
30
|
-
@cache = nil unless cache_enabled?
|
|
31
|
-
@cache ||= @markdown.call
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def renderer
|
|
35
|
-
@renderer = nil unless cache_enabled?
|
|
36
|
-
@renderer ||= markdown.renderer
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def cache_enabled?
|
|
40
|
-
::Rails.configuration.cache_classes
|
|
41
|
-
end
|
|
42
46
|
end
|
|
43
|
-
end
|
|
47
|
+
end
|
|
@@ -16,7 +16,9 @@ module MarkdownRails
|
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
def renderer
|
|
19
|
-
|
|
19
|
+
# I can get away passing fatures into this class because they don't
|
|
20
|
+
# overlap and RedCarpet is happy accepting both.
|
|
21
|
+
::Redcarpet::Markdown.new(self.class.new(**features), **features)
|
|
20
22
|
end
|
|
21
23
|
|
|
22
24
|
private
|
|
@@ -3,15 +3,31 @@ module MarkdownRails
|
|
|
3
3
|
class Rails < Base
|
|
4
4
|
include ::Rails.application.routes.url_helpers
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
attr_accessor :view_context
|
|
7
|
+
|
|
8
|
+
def initialize(**options)
|
|
9
|
+
super(**options)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def image(link, title, alt)
|
|
13
|
+
image_tag link, title: title, alt: alt
|
|
14
|
+
end
|
|
13
15
|
|
|
16
|
+
def view_context
|
|
17
|
+
@view_context ||= self.class.default_view_context
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Delegate view helpers to view_context since they need view state.
|
|
21
|
+
# The view_context has all helpers properly configured with @output_buffer, etc.
|
|
22
|
+
# For custom helpers, access them via view_context:
|
|
23
|
+
# view_context.my_custom_helper
|
|
24
|
+
# Or delegate them explicitly in your subclass:
|
|
25
|
+
# delegate :my_custom_helper, to: :view_context
|
|
14
26
|
delegate \
|
|
27
|
+
:render,
|
|
28
|
+
:link_to,
|
|
29
|
+
:button_to,
|
|
30
|
+
:mail_to,
|
|
15
31
|
:asset_digest_path,
|
|
16
32
|
:asset_path,
|
|
17
33
|
:asset_url,
|
|
@@ -26,21 +42,32 @@ module MarkdownRails
|
|
|
26
42
|
:video_path,
|
|
27
43
|
:video_tag,
|
|
28
44
|
:video_url,
|
|
45
|
+
:javascript_include_tag,
|
|
46
|
+
:stylesheet_link_tag,
|
|
29
47
|
:tag,
|
|
30
48
|
:content_tag,
|
|
31
49
|
:request,
|
|
32
50
|
:turbo_frame_tag,
|
|
33
51
|
:controller,
|
|
34
52
|
:raw,
|
|
35
|
-
|
|
53
|
+
:safe_join,
|
|
54
|
+
:capture,
|
|
55
|
+
to: :view_context
|
|
36
56
|
|
|
37
|
-
def
|
|
38
|
-
|
|
57
|
+
def renderer
|
|
58
|
+
# Override Base#renderer to pass view_context to the new instance
|
|
59
|
+
new_instance = self.class.new(**features)
|
|
60
|
+
new_instance.view_context = view_context
|
|
61
|
+
::Redcarpet::Markdown.new(new_instance, **features)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def self.default_view_context
|
|
65
|
+
::ApplicationController.new.view_context
|
|
39
66
|
end
|
|
40
67
|
|
|
41
|
-
|
|
42
|
-
def
|
|
43
|
-
|
|
68
|
+
private
|
|
69
|
+
def features
|
|
70
|
+
Hash[Array(enable).map{ |feature| [ feature, true ] }]
|
|
44
71
|
end
|
|
45
72
|
end
|
|
46
73
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: markdown-rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Brad Gessler
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 2025-11-04 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: railties
|
|
@@ -66,6 +65,20 @@ dependencies:
|
|
|
66
65
|
- - ">="
|
|
67
66
|
- !ruby/object:Gem::Version
|
|
68
67
|
version: 3.0.0
|
|
68
|
+
- !ruby/object:Gem::Dependency
|
|
69
|
+
name: rspec-rails
|
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - "~>"
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '6.0'
|
|
75
|
+
type: :development
|
|
76
|
+
prerelease: false
|
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - "~>"
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '6.0'
|
|
69
82
|
description: Markdown Rails is a comprehensive stack for rendering Markdown templates
|
|
70
83
|
and partials in Rails.
|
|
71
84
|
email:
|
|
@@ -100,7 +113,6 @@ metadata:
|
|
|
100
113
|
homepage_uri: https://github.com/sitepress/markdown-rails
|
|
101
114
|
source_code_uri: https://github.com/sitepress/markdown-rails
|
|
102
115
|
changelog_uri: https://github.com/sitepress/markdown-rails
|
|
103
|
-
post_install_message:
|
|
104
116
|
rdoc_options: []
|
|
105
117
|
require_paths:
|
|
106
118
|
- lib
|
|
@@ -115,8 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
115
127
|
- !ruby/object:Gem::Version
|
|
116
128
|
version: '0'
|
|
117
129
|
requirements: []
|
|
118
|
-
rubygems_version: 3.
|
|
119
|
-
signing_key:
|
|
130
|
+
rubygems_version: 3.6.2
|
|
120
131
|
specification_version: 4
|
|
121
132
|
summary: Markdown templates and partials in Rails.
|
|
122
133
|
test_files: []
|