Skip to content

Commit bbee330

Browse files
author
Yuki Izumi
committed
Revert #537 temporarily for final 1.4 release
1 parent ec0eb75 commit bbee330

9 files changed

Lines changed: 51 additions & 54 deletions

File tree

github-markup.gemspec

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ Gem::Specification.new do |s|
1616
s.test_files = s.files.grep(%r{^(test|spec|features)/})
1717
s.require_paths = %w[lib]
1818

19-
s.add_dependency "github-linguist", "~> 5.0", ">= 5.0.8"
2019
s.add_dependency "rinku"
2120
s.add_development_dependency 'rake', '~> 12'
2221
s.add_development_dependency 'activesupport', '~> 4.0'

lib/github/markup.rb

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def preload!
3737
def render(filename, content = nil)
3838
content ||= File.read(filename)
3939

40-
if impl = renderer(filename, content)
40+
if impl = renderer(filename)
4141
impl.render(content)
4242
else
4343
content
@@ -53,9 +53,9 @@ def render_s(symbol, content)
5353
content
5454
end
5555
end
56-
57-
def markup(symbol, gem_name, pattern, opts = {}, &block)
58-
markup_impl(symbol, GemImplementation.new(pattern, gem_name, &block))
56+
57+
def markup(symbol, file, pattern, opts = {}, &block)
58+
markup_impl(symbol, GemImplementation.new(pattern, file, &block))
5959
end
6060

6161
def markup_impl(symbol, impl)
@@ -65,30 +65,24 @@ def markup_impl(symbol, impl)
6565
markups[symbol] = impl
6666
end
6767

68-
def command(symbol, command, languages, name, &block)
68+
def command(symbol, command, regexp, name, &block)
6969
if File.exist?(file = File.dirname(__FILE__) + "/commands/#{command}")
7070
command = file
7171
end
7272

73-
markup_impl(symbol, CommandImplementation.new(languages, command, name, &block))
73+
markup_impl(symbol, CommandImplementation.new(regexp, command, name, &block))
7474
end
7575

76-
def can_render?(filename, content)
77-
!!renderer(filename, content)
76+
def can_render?(filename)
77+
!!renderer(filename)
7878
end
7979

80-
def renderer(filename, content)
81-
language = language(filename, content)
80+
def renderer(filename)
8281
markup_impls.find { |impl|
83-
impl.match?(language)
82+
impl.match?(filename)
8483
}
8584
end
8685

87-
def language(filename, content)
88-
blob = Linguist::Blob.new(filename, content)
89-
return Linguist.detect(blob, allow_empty: true)
90-
end
91-
9286
# Define markups
9387
markups_rb = File.dirname(__FILE__) + '/markups.rb'
9488
instance_eval File.read(markups_rb), markups_rb

lib/github/markup/command_implementation.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ class CommandError < RuntimeError
1515
class CommandImplementation < Implementation
1616
attr_reader :command, :block, :name
1717

18-
def initialize(languages, command, name, &block)
19-
super languages
18+
def initialize(regexp, command, name, &block)
19+
super regexp
2020
@command = command.to_s
2121
@block = block
2222
@name = name

lib/github/markup/gem_implementation.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ module Markup
55
class GemImplementation < Implementation
66
attr_reader :gem_name, :renderer
77

8-
def initialize(languages, gem_name, &renderer)
9-
super languages
8+
def initialize(regexp, gem_name, &renderer)
9+
super regexp
1010
@gem_name = gem_name.to_s
1111
@renderer = renderer
1212
end

lib/github/markup/implementation.rb

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
module GitHub
22
module Markup
33
class Implementation
4-
attr_reader :languages
4+
attr_reader :regexp
55

6-
def initialize(languages)
7-
@languages = languages
6+
def initialize(regexp)
7+
@regexp = regexp
88
end
99

1010
def load
@@ -15,8 +15,13 @@ def render(content)
1515
raise NotImplementedError, "subclasses of GitHub::Markup::Implementation must define #render"
1616
end
1717

18-
def match?(language)
19-
languages.include? language
18+
def match?(filename)
19+
file_ext_regexp =~ filename
20+
end
21+
22+
private
23+
def file_ext_regexp
24+
@file_ext_regexp ||= /\.(#{regexp})\z/
2025
end
2126
end
2227
end

lib/github/markup/markdown.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class Markdown < Implementation
2828
}
2929

3030
def initialize
31-
super([Linguist::Language["Markdown"], Linguist::Language["RMarkdown"], Linguist::Language["Literate CoffeeScript"]])
31+
super(/md|rmd|mkdn?|mdwn|mdown|markdown|litcoffee/i)
3232
end
3333

3434
def load

lib/github/markup/rdoc.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ module GitHub
66
module Markup
77
class RDoc < Implementation
88
def initialize
9-
super([Linguist::Language["RDoc"]])
9+
super(/rdoc/)
1010
end
1111

1212
def render(content)

lib/github/markups.rb

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,42 @@
11
require "github/markup/markdown"
22
require "github/markup/rdoc"
33
require "shellwords"
4-
require "linguist"
54

65
markup_impl(::GitHub::Markups::MARKUP_MARKDOWN, ::GitHub::Markup::Markdown.new)
76

8-
markup(::GitHub::Markups::MARKUP_TEXTILE, :redcloth, [Linguist::Language["Textile"]]) do |content|
7+
markup(::GitHub::Markups::MARKUP_TEXTILE, :redcloth, /textile/) do |content|
98
RedCloth.new(content).to_html
109
end
1110

1211
markup_impl(::GitHub::Markups::MARKUP_RDOC, GitHub::Markup::RDoc.new)
1312

14-
markup(::GitHub::Markups::MARKUP_ORG, 'org-ruby', [Linguist::Language["Org"]]) do |content|
13+
markup(::GitHub::Markups::MARKUP_ORG, 'org-ruby', /org/) do |content|
1514
Orgmode::Parser.new(content, {
1615
:allow_include_files => false,
1716
:skip_syntax_highlight => true
1817
}).to_html
1918
end
2019

21-
markup(::GitHub::Markups::MARKUP_CREOLE, :creole, [Linguist::Language["Creole"]]) do |content|
20+
markup(::GitHub::Markups::MARKUP_CREOLE, :creole, /creole/) do |content|
2221
Creole.creolize(content)
2322
end
2423

25-
markup(::GitHub::Markups::MARKUP_MEDIAWIKI, :wikicloth, [Linguist::Language["MediaWiki"]]) do |content|
24+
markup(::GitHub::Markups::MARKUP_MEDIAWIKI, :wikicloth, /mediawiki|wiki/) do |content|
2625
wikicloth = WikiCloth::WikiCloth.new(:data => content)
2726
WikiCloth::WikiBuffer::HTMLElement::ESCAPED_TAGS << 'tt' unless WikiCloth::WikiBuffer::HTMLElement::ESCAPED_TAGS.include?('tt')
2827
wikicloth.to_html(:noedit => true)
2928
end
3029

31-
markup(::GitHub::Markups::MARKUP_ASCIIDOC, :asciidoctor, [Linguist::Language["AsciiDoc"]]) do |content|
30+
markup(::GitHub::Markups::MARKUP_ASCIIDOC, :asciidoctor, /adoc|asc(iidoc)?/) do |content|
3231
Asciidoctor::Compliance.unique_id_start_index = 1
3332
Asciidoctor.convert(content, :safe => :secure, :attributes => %w(showtitle=@ idprefix idseparator=- env=github env-github source-highlighter=html-pipeline))
3433
end
3534

3635
command(
3736
::GitHub::Markups::MARKUP_RST,
3837
"python2 -S #{Shellwords.escape(File.dirname(__FILE__))}/commands/rest2html",
39-
[Linguist::Language["reStructuredText"]],
38+
/re?st(\.txt)?/,
4039
"restructuredtext"
4140
)
4241

43-
command(::GitHub::Markups::MARKUP_POD, :pod2html, [Linguist::Language["Pod"]], "pod")
42+
command(::GitHub::Markups::MARKUP_POD, :pod2html, /pod/, "pod")

test/markup_test.rb

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -77,35 +77,35 @@ def call
7777
end
7878

7979
def test_knows_what_it_can_and_cannot_render
80-
assert_equal false, GitHub::Markup.can_render?('README.html', '<h1>Title</h1>')
81-
assert_equal true, GitHub::Markup.can_render?('README.markdown', '=== Title')
82-
assert_equal true, GitHub::Markup.can_render?('README.rmd', '=== Title')
83-
assert_equal true, GitHub::Markup.can_render?('README.Rmd', '=== Title')
84-
assert_equal false, GitHub::Markup.can_render?('README.cmd', 'echo 1')
85-
assert_equal true, GitHub::Markup.can_render?('README.litcoffee', 'Title')
80+
assert_equal false, GitHub::Markup.can_render?('README.html')
81+
assert_equal true, GitHub::Markup.can_render?('README.markdown')
82+
assert_equal true, GitHub::Markup.can_render?('README.rmd')
83+
assert_equal true, GitHub::Markup.can_render?('README.Rmd')
84+
assert_equal false, GitHub::Markup.can_render?('README.cmd')
85+
assert_equal true, GitHub::Markup.can_render?('README.litcoffee')
8686
end
8787

8888
def test_each_render_has_a_name
89-
assert_equal "markdown", GitHub::Markup.renderer('README.md', '=== Title').name
90-
assert_equal "redcloth", GitHub::Markup.renderer('README.textile', '* One').name
91-
assert_equal "rdoc", GitHub::Markup.renderer('README.rdoc', '* One').name
92-
assert_equal "org-ruby", GitHub::Markup.renderer('README.org', '* Title').name
93-
assert_equal "creole", GitHub::Markup.renderer('README.creole', '= Title =').name
94-
assert_equal "wikicloth", GitHub::Markup.renderer('README.wiki', '<h1>Title</h1>').name
95-
assert_equal "asciidoctor", GitHub::Markup.renderer('README.adoc', '== Title').name
96-
assert_equal "restructuredtext", GitHub::Markup.renderer('README.rst', 'Title').name
97-
assert_equal "pod", GitHub::Markup.renderer('README.pod', '=begin').name
89+
assert_equal "markdown", GitHub::Markup.renderer('README.md').name
90+
assert_equal "redcloth", GitHub::Markup.renderer('README.textile').name
91+
assert_equal "rdoc", GitHub::Markup.renderer('README.rdoc').name
92+
assert_equal "org-ruby", GitHub::Markup.renderer('README.org').name
93+
assert_equal "creole", GitHub::Markup.renderer('README.creole').name
94+
assert_equal "wikicloth", GitHub::Markup.renderer('README.wiki').name
95+
assert_equal "asciidoctor", GitHub::Markup.renderer('README.adoc').name
96+
assert_equal "restructuredtext", GitHub::Markup.renderer('README.rst').name
97+
assert_equal "pod", GitHub::Markup.renderer('README.pod').name
9898
end
9999

100100
def test_rendering_by_symbol
101101
assert_equal '<p><code>test</code></p>', GitHub::Markup.render_s(GitHub::Markups::MARKUP_MARKDOWN, '`test`').strip
102102
end
103103

104104
def test_raises_error_if_command_exits_non_zero
105-
GitHub::Markup.command(:doesntmatter, 'test/fixtures/fail.sh', [Linguist::Language['Java']], 'fail')
106-
assert GitHub::Markup.can_render?('README.java', 'stop swallowing errors')
105+
GitHub::Markup.command(:doesntmatter, 'test/fixtures/fail.sh', /fail/, 'fail')
106+
assert GitHub::Markup.can_render?('README.fail')
107107
begin
108-
GitHub::Markup.render('README.java', "stop swallowing errors")
108+
GitHub::Markup.render('README.fail', "stop swallowing errors")
109109
rescue GitHub::Markup::CommandError => e
110110
assert_equal "failure message", e.message
111111
else

0 commit comments

Comments
 (0)