makeup 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,2 @@
1
+ coverage
2
+ test/reports
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - rbx-18mode
5
+ - rbx-19mode
6
+ - 1.8.7
7
+ - ree
data/Gemfile CHANGED
@@ -1,3 +1,7 @@
1
1
  source "http://rubygems.org"
2
2
 
3
3
  gemspec
4
+
5
+ gem "ci_reporter"
6
+ gem "rcov", :platforms => :ruby_18
7
+ gem "simplecov", :platforms => :ruby_19
@@ -1,30 +1,51 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- makeup (0.3.0)
4
+ makeup (0.4.0)
5
+ github-linguist (~> 2.8)
5
6
  github-markup (~> 0.7)
6
7
  htmlentities (~> 4.3)
7
- pygments.rb (~> 0.2)
8
+ pygments.rb (~> 0.4)
8
9
 
9
10
  GEM
10
11
  remote: http://rubygems.org/
11
12
  specs:
12
- github-markup (0.7.4)
13
+ builder (3.2.2)
14
+ charlock_holmes (0.6.9.4)
15
+ ci_reporter (1.9.0)
16
+ builder (>= 2.1.2)
17
+ escape_utils (0.3.2)
18
+ github-linguist (2.8.5)
19
+ charlock_holmes (~> 0.6.6)
20
+ escape_utils (~> 0.3.1)
21
+ mime-types (~> 1.19)
22
+ pygments.rb (~> 0.4.2)
23
+ github-markup (0.7.5)
13
24
  htmlentities (4.3.1)
25
+ mime-types (1.23)
14
26
  minitest (2.12.1)
27
+ multi_json (1.7.7)
15
28
  posix-spawn (0.3.6)
16
- pygments.rb (0.3.2)
29
+ pygments.rb (0.4.2)
17
30
  posix-spawn (~> 0.3.6)
18
31
  yajl-ruby (~> 1.1.0)
19
32
  rake (0.9.2.2)
33
+ rcov (1.0.0)
20
34
  redcarpet (2.2.0)
35
+ simplecov (0.7.1)
36
+ multi_json (~> 1.0)
37
+ simplecov-html (~> 0.7.1)
38
+ simplecov-html (0.7.1)
21
39
  yajl-ruby (1.1.0)
22
40
 
23
41
  PLATFORMS
24
42
  ruby
25
43
 
26
44
  DEPENDENCIES
45
+ ci_reporter
27
46
  makeup!
28
47
  minitest (~> 2.0)
29
48
  rake (~> 0.9)
49
+ rcov
30
50
  redcarpet (= 2.2.0)
51
+ simplecov
data/Rakefile CHANGED
@@ -1,10 +1,21 @@
1
1
  require "rake/testtask"
2
+ require "ci/reporter/rake/minitest"
2
3
  require "bundler/gem_tasks"
3
4
 
4
5
  Rake::TestTask.new("test") do |test|
6
+ test.libs << "lib"
5
7
  test.libs << "test"
6
8
  test.pattern = "test/**/*_test.rb"
7
9
  test.verbose = true
8
10
  end
9
11
 
12
+ if RUBY_VERSION < "1.9"
13
+ require "rcov/rcovtask"
14
+ Rcov::RcovTask.new do |t|
15
+ t.libs << "test"
16
+ t.test_files = FileList["test/**/*_test.rb"]
17
+ t.rcov_opts += %w{--exclude gems,ruby/1.}
18
+ end
19
+ end
20
+
10
21
  task :default => :test
data/Readme.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Makeup
2
2
 
3
+ <a href="http://travis-ci.org/cjohansen/makeup" class="travis">
4
+ <img src="https://secure.travis-ci.org/cjohansen/makeup.png">
5
+ </a>
6
+
3
7
  Makeup provides markup rendering and syntax highlighting in one glorious
4
8
  package. It can also syntax highlight "fenced code blocks" in markdown files.
5
9
 
@@ -1,8 +1,9 @@
1
1
  # encoding: utf-8
2
2
  # --
3
3
  # The MIT License (MIT)
4
+ # Christian Johansen
4
5
  #
5
- # Copyright (C) 2012 Gitorious AS
6
+ # Copyright (C) 2013 Gitorious AS
6
7
  #
7
8
  # Permission is hereby granted, free of charge, to any person obtaining a copy
8
9
  # of this software and associated documentation files (the "Software"), to deal
@@ -22,9 +23,6 @@
22
23
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
24
  # SOFTWARE.
24
25
  #++
25
- require "makeup/markup"
26
+ require "makeup/version"
27
+ require "makeup/syntax_highlighter"
26
28
  require "makeup/syntax_highlighter"
27
-
28
- module Makeup
29
- VERSION = "0.3.0"
30
- end
@@ -24,6 +24,7 @@
24
24
  #++
25
25
  require "pygments"
26
26
  require "htmlentities"
27
+ require "linguist"
27
28
 
28
29
  module Makeup
29
30
  CodeBlock = Struct.new(:lexer, :code)
@@ -36,43 +37,21 @@ module Makeup
36
37
  def highlight(path, code, options = {})
37
38
  options[:lexer] ||= lexer(path, code)
38
39
  lexer = Pygments::Lexer.find(options[:lexer])
39
- CodeBlock.new(lexer && lexer.aliases.first,
40
- Pygments.highlight(code, highlight_options(options)))
40
+ code = lexer.nil? ? code : Pygments.highlight(code, highlight_options(options))
41
+ CodeBlock.new(lexer && lexer.aliases.first, code)
41
42
  rescue MentosError => e
42
43
  # "MentosError" is what Pyments.rb raises when an unknown lexer is
43
44
  # attempted used
44
45
  CodeBlock.new(nil, @entities.encode(code))
45
46
  end
46
47
 
47
- def lexer(path, code = nil)
48
- self.class.lexer(path.split(".").pop, code)
48
+ def lexer(path, code = nil, mode = nil)
49
+ self.class.lexer(path, code, mode)
49
50
  end
50
51
 
51
- def self.lexer(suffix, code = nil)
52
- return @@lexer_aliases[suffix] if @@lexer_aliases[suffix]
53
- lexer = Pygments::Lexer.find_by_extname(".#{suffix}")
54
- return lexer.aliases.first || lexer.name if lexer
55
- shebang_language(shebang(code)) || suffix
56
- end
57
-
58
- def self.shebang(code)
59
- first_line = (code || "").split("\n")[0]
60
- first_line =~ /^#!/ ? first_line : nil
61
- end
62
-
63
- def self.shebang_language(shebang)
64
- shebang = @@lexer_shebangs.find { |s| (shebang || "") =~ s[:pattern] }
65
- shebang && shebang[:lexer]
66
- end
67
-
68
- def self.add_lexer_alias(extension, lexer)
69
- @@lexer_aliases ||= {}
70
- @@lexer_aliases[extension] = lexer
71
- end
72
-
73
- def self.add_lexer_shebang(pattern, lexer)
74
- @@lexer_shebangs ||= []
75
- @@lexer_shebangs << { :pattern => pattern, :lexer => lexer }
52
+ def self.lexer(path, code = nil, mode = nil)
53
+ lexer = Linguist::Language.detect(path, code, mode)
54
+ lexer && (lexer.aliases.first || lexer.name)
76
55
  end
77
56
 
78
57
  private
@@ -84,11 +63,3 @@ module Makeup
84
63
  end
85
64
  end
86
65
  end
87
-
88
- Makeup::SyntaxHighlighter.add_lexer_alias("txt", "text")
89
- Makeup::SyntaxHighlighter.add_lexer_alias("ru", "rb")
90
- Makeup::SyntaxHighlighter.add_lexer_alias("Rakefile", "rb")
91
- Makeup::SyntaxHighlighter.add_lexer_alias("Gemfile", "rb")
92
- Makeup::SyntaxHighlighter.add_lexer_alias("Gemfile.lock", "yaml")
93
-
94
- Makeup::SyntaxHighlighter.add_lexer_shebang(/\bruby\b/, "rb")
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+ # --
3
+ # The MIT License (MIT)
4
+ #
5
+ # Copyright (C) 2013 Gitorious AS
6
+ #
7
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ # of this software and associated documentation files (the "Software"), to deal
9
+ # in the Software without restriction, including without limitation the rights
10
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ # copies of the Software, and to permit persons to whom the Software is
12
+ # furnished to do so, subject to the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be included in all
15
+ # copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ # SOFTWARE.
24
+ #++
25
+
26
+ module Makeup
27
+ VERSION = "0.4.0"
28
+ end
@@ -1,6 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  dir = File.expand_path(File.dirname(__FILE__))
3
- require File.join(dir, "lib", "makeup")
3
+ require File.join(dir, "lib", "makeup/version.rb")
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "makeup"
@@ -17,7 +17,8 @@ markdown files.
17
17
 
18
18
  s.rubyforge_project = "makeup"
19
19
 
20
- s.add_dependency "pygments.rb", "~>0.2"
20
+ s.add_dependency "pygments.rb", "~>0.4"
21
+ s.add_dependency "github-linguist", "~>2.8"
21
22
  s.add_dependency "github-markup", "~> 0.7"
22
23
  s.add_dependency "htmlentities", "~> 4.3"
23
24
 
@@ -63,7 +63,7 @@ describe Makeup::Markup do
63
63
  assert_equal 2, html.scan(/common-lisp/).length
64
64
  end
65
65
  end
66
-
66
+
67
67
  describe "#render" do
68
68
  it "should detect end of code blocks properly" do
69
69
  html = @renderer.render("file.md", <<-MD)
@@ -87,7 +87,7 @@ class Bonjour
87
87
  end
88
88
  ```
89
89
  MD
90
-
90
+
91
91
  assert_equal 2, html.scan(/rb/).length
92
92
  end
93
93
  end
@@ -62,14 +62,6 @@ describe Makeup::SyntaxHighlighter do
62
62
  assert_match "Hey<span class=\"nt\">&lt;/h1&gt;</span>", html
63
63
  end
64
64
 
65
- it "highlights file with custom suffix" do
66
- Makeup::SyntaxHighlighter.add_lexer_alias("derp", "rb")
67
- html = highlight("file.derp", "class File")
68
-
69
- assert_match "<span class=\"k\">class</span>", html
70
- assert_match "<span class=\"nc\">File</span>", html
71
- end
72
-
73
65
  it "skips highlighting if lexer is missing" do
74
66
  html = highlight("file.trololol", "Yeah yeah yeah")
75
67
 
@@ -79,30 +71,7 @@ describe Makeup::SyntaxHighlighter do
79
71
 
80
72
  describe "#lexer" do
81
73
  it "uses known suffix" do
82
- assert_equal "rb", @highlighter.lexer("file.rb")
83
- end
84
-
85
- it "uses registered suffix" do
86
- Makeup::SyntaxHighlighter.add_lexer_alias("blarg", "blarg")
87
- assert_equal "blarg", @highlighter.lexer("file.blarg")
88
- end
89
-
90
- it "uses registered lexer" do
91
- Makeup::SyntaxHighlighter.add_lexer_alias("bg", "blarg")
92
- assert_equal "blarg", @highlighter.lexer("file.bg")
93
- end
94
-
95
- it "uses known shebang" do
96
- assert_equal "rb", @highlighter.lexer("some-binary", "#!/usr/bin/env ruby\n")
97
- end
98
-
99
- it "uses registered shebang" do
100
- Makeup::SyntaxHighlighter.add_lexer_shebang(/\bnode\b/, "js")
101
- assert_equal "js", @highlighter.lexer("some-binary", "#!/usr/bin/env node\n")
102
- end
103
-
104
- it "uses filename for unknown lexer" do
105
- assert_equal "some-binary", @highlighter.lexer("some-binary", "class Person\nend")
74
+ assert_equal "ruby", @highlighter.lexer("file.rb")
106
75
  end
107
76
  end
108
77
  end
@@ -22,6 +22,11 @@
22
22
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
23
  # SOFTWARE.
24
24
  #++
25
+ if RUBY_VERSION > "1.9"
26
+ require "simplecov"
27
+ SimpleCov.start
28
+ end
29
+
25
30
  require "bundler/setup"
26
31
  require "minitest/autorun"
27
32
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: makeup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-08 00:00:00.000000000 Z
12
+ date: 2013-07-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: pygments.rb
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '0.2'
21
+ version: '0.4'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,23 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: '0.2'
29
+ version: '0.4'
30
+ - !ruby/object:Gem::Dependency
31
+ name: github-linguist
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '2.8'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '2.8'
30
46
  - !ruby/object:Gem::Dependency
31
47
  name: github-markup
32
48
  requirement: !ruby/object:Gem::Requirement
@@ -121,6 +137,8 @@ executables: []
121
137
  extensions: []
122
138
  extra_rdoc_files: []
123
139
  files:
140
+ - .gitignore
141
+ - .travis.yml
124
142
  - Gemfile
125
143
  - Gemfile.lock
126
144
  - Rakefile
@@ -129,6 +147,7 @@ files:
129
147
  - lib/makeup/code_block_parser.rb
130
148
  - lib/makeup/markup.rb
131
149
  - lib/makeup/syntax_highlighter.rb
150
+ - lib/makeup/version.rb
132
151
  - makeup.gemspec
133
152
  - test/makeup/markup_test.rb
134
153
  - test/makeup/syntax_highlighter_test.rb
@@ -153,8 +172,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
172
  version: '0'
154
173
  requirements: []
155
174
  rubyforge_project: makeup
156
- rubygems_version: 1.8.23
175
+ rubygems_version: 1.8.25
157
176
  signing_key:
158
177
  specification_version: 3
159
178
  summary: Pretty markup
160
179
  test_files: []
180
+ has_rdoc: