mulberry_preview 0.0.8 → 0.0.9
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/app/controllers/preview_controller.rb +17 -2
- data/lib/mulberry_preview.rb +1 -0
- data/lib/mulberry_preview/engine.rb +2 -2
- data/lib/mulberry_preview/helper/action_view_extension.rb +10 -6
- data/lib/mulberry_preview/markdown/render.rb +13 -0
- data/lib/mulberry_preview/railtie.rb +1 -1
- data/lib/mulberry_preview/version.rb +1 -1
- metadata +37 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 239c91800098369fc5efeee588fd61e7d177a197
|
4
|
+
data.tar.gz: 4ed021cf156ee8bdacb82e2ca694d454e40d781d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ef6f3b39ec84bcc73f031380dc53669d075ebf84e5c3d7cff89dccded2e925a48039a455622edd0c32f1e342fb26702944f795ecbbef8fa179a703adce1e172a
|
7
|
+
data.tar.gz: 3e4fa5963f8ea911c147f603ae51cec44848ff7b1406269774476f7230b5c82fb93d695e082142bd7ca2293b67489978095ec7bfaf026fb2f270ad313c691fa3
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class PreviewController < ActionController::Base
|
2
2
|
|
3
|
-
|
3
|
+
LANGUAGES = [:ruby, :python, :java, :js, :scss, :sass, :haml, :json,
|
4
4
|
:go, :sql, :yaml, :c, :coffee, :properties, :clojure]
|
5
5
|
|
6
6
|
def index
|
@@ -9,9 +9,11 @@ class PreviewController < ActionController::Base
|
|
9
9
|
if r
|
10
10
|
mime = r.content_type
|
11
11
|
type, ext = mime[/^[^\/]+/].to_sym, mime[/(?<=\/)(x-)?(.+)/, 2].to_sym
|
12
|
-
if
|
12
|
+
if LANGUAGES.include?(ext)
|
13
13
|
@code = CodeRay.scan(r.content, ext).div(:line_numbers => :table, :css => :class)
|
14
14
|
render 'code', layout: 'coderay'
|
15
|
+
elsif :markdown == ext
|
16
|
+
render text: markdown(r.content), content_type: 'text/html'
|
15
17
|
elsif [:pdf, :html].include?(ext)
|
16
18
|
render_native(r.content, mime)
|
17
19
|
else
|
@@ -55,6 +57,19 @@ class PreviewController < ActionController::Base
|
|
55
57
|
end
|
56
58
|
|
57
59
|
private
|
60
|
+
def markdown(content)
|
61
|
+
renderer = Markdown::Render::HTML.new(hard_wrap: true, filter_html: true)
|
62
|
+
options = {
|
63
|
+
autolink: true,
|
64
|
+
no_intra_emphasis: true,
|
65
|
+
fenced_code_blocks: true,
|
66
|
+
lax_html_blocks: true,
|
67
|
+
strikethrough: true,
|
68
|
+
superscript: true
|
69
|
+
}
|
70
|
+
Redcarpet::Markdown.new(renderer, options).render(content).html_safe
|
71
|
+
end
|
72
|
+
|
58
73
|
def open_osx_file
|
59
74
|
path = params[:path]
|
60
75
|
app = 'Preview'
|
data/lib/mulberry_preview.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
module MulberryPreview
|
2
2
|
class Engine < ::Rails::Engine
|
3
|
-
initializer
|
3
|
+
initializer 'mimes' do |_app|
|
4
4
|
MIMES = YAML.load_file("#{self.class.root}/config/mimes.yml")
|
5
5
|
MIMES.each do|ext, mime|
|
6
|
-
Mime.fetch(ext) do|
|
6
|
+
Mime.fetch(ext) do|_fallback|
|
7
7
|
Mime::Type.register mime, ext
|
8
8
|
end
|
9
9
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module MulberryPreview
|
2
|
-
|
2
|
+
LANGUAGES = [:ruby, :python, :java, :js, :scss, :sass, :haml, :html, :json, :go, :sql, :yaml, :c, :coffee, :properties, :clojure]
|
3
3
|
|
4
4
|
module ActionViewExtension
|
5
5
|
def preview(r)
|
@@ -7,16 +7,20 @@ module MulberryPreview
|
|
7
7
|
ext = r.content_type[/(?<=\/)(x-)?(.+)/, 2].to_sym
|
8
8
|
case type
|
9
9
|
when :text
|
10
|
-
if
|
10
|
+
if LANGUAGES.include?(ext)
|
11
11
|
raw CodeRay.scan(r.content, ext).div(:line_numbers => :table, :css => :class)
|
12
12
|
else
|
13
|
-
raw
|
14
|
-
end
|
13
|
+
raw %{<div class="code">#{r.content}</div>}
|
14
|
+
end
|
15
|
+
when :audio
|
16
|
+
raw %{<audio src="#{preview_path(r.class, r.id)}" />}
|
17
|
+
when :video
|
18
|
+
raw %{<video src="#{preview_path(r.class, r.id)}" />}
|
15
19
|
when :image
|
16
|
-
raw
|
20
|
+
raw %{<img src="#{preview_path(r.class, r.id)}" class="img-thumbnail" />}
|
17
21
|
when :application
|
18
22
|
if :pdf == ext
|
19
|
-
raw
|
23
|
+
raw %{<iframe src="#{preview_path(r.class, r.id)}" width='860' height='800' border='0' style='border:none'></iframe>}
|
20
24
|
else
|
21
25
|
"#{r.content_type} => #{r}"
|
22
26
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
module Markdown
|
3
|
+
module Render
|
4
|
+
class HTML < Redcarpet::Render::HTML #MdEmoji::Render
|
5
|
+
def block_code(code, language)
|
6
|
+
sha = Digest::SHA1.hexdigest(code)
|
7
|
+
Rails.cache.fetch ['code', language, sha].join('-') do
|
8
|
+
CodeRay.scan(code, language).div#(:line_numbers => :table)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module MulberryPreview
|
2
2
|
class Railtie < ::Rails::Railtie #:nodoc:
|
3
|
-
initializer 'preview' do |
|
3
|
+
initializer 'preview' do |_app|
|
4
4
|
require 'mulberry_preview/helper/action_view_extension'
|
5
5
|
ActiveSupport.on_load(:action_view) do
|
6
6
|
::ActionView::Base.send :include, MulberryPreview::ActionViewExtension
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mulberry_preview
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Zhan
|
@@ -44,6 +44,40 @@ dependencies:
|
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '3'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: coderay
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '1'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: redcarpet
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '3'
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '3'
|
71
|
+
type: :runtime
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - "~>"
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '3'
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '3'
|
47
81
|
- !ruby/object:Gem::Dependency
|
48
82
|
name: sqlite3
|
49
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,12 +112,13 @@ files:
|
|
78
112
|
- lib/mulberry_preview.rb
|
79
113
|
- lib/mulberry_preview/engine.rb
|
80
114
|
- lib/mulberry_preview/helper/action_view_extension.rb
|
115
|
+
- lib/mulberry_preview/markdown/render.rb
|
81
116
|
- lib/mulberry_preview/railtie.rb
|
82
117
|
- lib/mulberry_preview/version.rb
|
83
118
|
- lib/tasks/mulberry_preview_tasks.rake
|
84
119
|
homepage: https://github.com/jameszhan/mulberry_preview
|
85
120
|
licenses:
|
86
|
-
- MIT
|
121
|
+
- MIT,
|
87
122
|
- GPL-2
|
88
123
|
metadata: {}
|
89
124
|
post_install_message:
|