literati 0.0.1 → 0.0.2
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.
- data/lib/literati.rb +42 -5
- data/literati.gemspec +1 -1
- data/test/test_literati.rb +3 -7
- metadata +3 -3
data/lib/literati.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
|
3
3
|
module Literati
|
4
|
-
VERSION = '0.0.
|
4
|
+
VERSION = '0.0.2'
|
5
5
|
|
6
6
|
# Render the given content to HTML.
|
7
7
|
#
|
@@ -13,20 +13,57 @@ module Literati
|
|
13
13
|
end
|
14
14
|
|
15
15
|
# A simple class to wrap passing the right arguments to RedCarpet.
|
16
|
-
class
|
16
|
+
class MarkdownRenderer
|
17
|
+
class GitHubWrapper
|
18
|
+
def initialize(content)
|
19
|
+
@content = content
|
20
|
+
end
|
21
|
+
|
22
|
+
def to_html
|
23
|
+
GitHub::Markdown.render(@content)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
17
27
|
# Create a new compatibility instance.
|
18
28
|
#
|
19
29
|
# content - The Markdown content to render.
|
20
30
|
def initialize(content)
|
21
|
-
require 'redcarpet/compat'
|
22
31
|
@content = content
|
23
32
|
end
|
24
33
|
|
34
|
+
def determine_markdown_renderer
|
35
|
+
@markdown = if installed?('github/markdown')
|
36
|
+
GitHubWrapper.new(@content)
|
37
|
+
elsif installed?('redcarpet/compat')
|
38
|
+
Markdown.new(@content, :fenced_code, :safelink, :autolink)
|
39
|
+
elsif installed?('redcarpet')
|
40
|
+
RedcarpetCompat.new(@content)
|
41
|
+
elsif installed?('rdiscount')
|
42
|
+
RDiscount.new(@content)
|
43
|
+
elsif installed?('maruku')
|
44
|
+
Maruku.new(@content)
|
45
|
+
elsif installed?('kramdown')
|
46
|
+
Kramdown::Document.new(@content)
|
47
|
+
elsif installed?('bluecloth')
|
48
|
+
BlueCloth.new(@content)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def installed?(file)
|
53
|
+
begin
|
54
|
+
require file
|
55
|
+
true
|
56
|
+
rescue LoadError
|
57
|
+
false
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
25
61
|
# Render the Markdown content to HTML. We use GFM-esque options here.
|
26
62
|
#
|
27
63
|
# Returns an HTML string.
|
28
64
|
def to_html
|
29
|
-
|
65
|
+
determine_markdown_renderer
|
66
|
+
@markdown.to_html
|
30
67
|
end
|
31
68
|
end
|
32
69
|
|
@@ -43,7 +80,7 @@ module Literati
|
|
43
80
|
# content - The literate Haskell code string
|
44
81
|
# markdowner - The class we'll use to render the HTML (defaults
|
45
82
|
# to our RedCarpet wrapper).
|
46
|
-
def initialize(content, markdowner =
|
83
|
+
def initialize(content, markdowner = MarkdownRenderer)
|
47
84
|
@bare_content = content
|
48
85
|
@markdown = to_markdown
|
49
86
|
@markdown_class = markdowner
|
data/literati.gemspec
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
|
|
13
13
|
## If your rubyforge_project name is different, then edit it and comment out
|
14
14
|
## the sub! line in the Rakefile
|
15
15
|
s.name = 'literati'
|
16
|
-
s.version = '0.0.
|
16
|
+
s.version = '0.0.2'
|
17
17
|
s.date = '2012-10-31'
|
18
18
|
s.rubyforge_project = 'literati'
|
19
19
|
|
data/test/test_literati.rb
CHANGED
@@ -44,15 +44,11 @@ class LiteratiTest < Test::Unit::TestCase
|
|
44
44
|
end
|
45
45
|
|
46
46
|
context "HTML rendering" do
|
47
|
-
test "renders to HTML using
|
48
|
-
Literati::
|
47
|
+
test "renders to HTML using our Smart Renderer™ by default" do
|
48
|
+
Literati::MarkdownRenderer.any_instance.expects(:to_html)
|
49
49
|
Literati.render("markdown\n\n> codes\n\nmoar markdown")
|
50
50
|
end
|
51
|
-
|
52
|
-
test "RedCarpet options are turned on properly" do
|
53
|
-
assert_match /class=\"haskell\"/m, Literati.render("markdown\n\n> codes\n\nmoar markdown")
|
54
|
-
end
|
55
|
-
|
51
|
+
|
56
52
|
test "can use other Markdown class" do
|
57
53
|
DummyRenderer.any_instance.expects(:to_html)
|
58
54
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: literati
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jeremy McAnally
|