jekyll-commonmark-ghpages 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c780cb17633fa27a1f3886464808fd5e86fae540
4
- data.tar.gz: 9a1e6f8304237daeb268971d26be53eee813ab8c
3
+ metadata.gz: ac80a98f74de18d13c9b303f8229ae3bd098e6a2
4
+ data.tar.gz: 2135a7a930e6a7c6b2e28653664fd4a14473f288
5
5
  SHA512:
6
- metadata.gz: 4929460a719c3245cb06cd51e688e534782f4d2c103e00a10e8c590cb3bfa4eca0c82b9968531869e6d9224434dec75a03468c51a2d32a4e1cd36ba7a01163b4
7
- data.tar.gz: b3fdf15208da60ad54a024905fd75b1a2726f624e7126add1cce14fdff499b417dc7b3a9e880a9b5dabcd3af3652bf611e52c02267acf0f51f7b512d23a35a0d
6
+ metadata.gz: bc2ea6be7b6bfc484b19166b8033d15c6e7b65e32faa54b5527e61e598f3bb5a09034eb5fd2e6aaeb5bbbed9229ab81a70725f366f76ecaebfaef71ecb428e3a
7
+ data.tar.gz: cfcd1c2e6db80661c50c146fac8cecb7415db2286e28550011172399820c2653b7669bbe94ce7a85099c99f21575ec79cbbb163fee0c40c1b624ecf47cd53bf8
@@ -3,7 +3,7 @@
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "jekyll-commonmark-ghpages"
5
5
  spec.summary = "CommonMark generator for Jekyll"
6
- spec.version = "0.1.0"
6
+ spec.version = "0.1.1"
7
7
  spec.authors = ["Ashe Connor"]
8
8
  spec.email = "kivikakk@github.com"
9
9
  spec.homepage = "https://github.com/github/jekyll-commonmark-ghpages"
@@ -16,6 +16,7 @@ Gem::Specification.new do |spec|
16
16
 
17
17
  spec.add_runtime_dependency "jekyll-commonmark", "~> 1"
18
18
  spec.add_runtime_dependency "commonmarker", "~> 0.17.6"
19
+ spec.add_runtime_dependency "rouge", "~> 2"
19
20
 
20
21
  spec.add_development_dependency "rspec", "~> 3.0"
21
22
  spec.add_development_dependency "rake"
@@ -4,9 +4,11 @@
4
4
  require "commonmarker"
5
5
  require "jekyll"
6
6
  require "jekyll-commonmark"
7
+ require "rouge"
7
8
 
8
- # A customized version of CommonMarker::HtmlRenderer which outputs
9
- # Kramdown-style header IDs.
9
+ # A customized version of CommonMarker::HtmlRenderer which:
10
+ # - outputs Kramdown-style header IDs.
11
+ # - performs syntax highlighting in code blocks.
10
12
  class JekyllCommonMarkCustomRenderer < ::CommonMarker::HtmlRenderer
11
13
  def header(node)
12
14
  block do
@@ -22,6 +24,35 @@ class JekyllCommonMarkCustomRenderer < ::CommonMarker::HtmlRenderer
22
24
  end
23
25
  end
24
26
 
27
+ def code_block(node)
28
+ lang = if node.fence_info && !node.fence_info.empty?
29
+ node.fence_info.split(/\s+/)[0]
30
+ end
31
+
32
+ content = node.string_content
33
+
34
+ if lang && lexer = ::Rouge::Lexer.find_fancy(lang, content)
35
+ block do
36
+ out("<div class=\"language-#{lang} highlighter-rouge\">")
37
+ out(::Rouge::Formatters::HTMLLegacy.new(css_class: 'highlight').format(lexer.lex(content)))
38
+ out("</div>")
39
+ end
40
+ return
41
+ end
42
+
43
+ if option_enabled?(:GITHUB_PRE_LANG)
44
+ out("<pre#{sourcepos(node)}")
45
+ out(' lang="', lang, '"') if lang
46
+ out('><code>')
47
+ else
48
+ out("<pre#{sourcepos(node)}><code")
49
+ out(' class="language-', lang, '">') if lang
50
+ out('>')
51
+ end
52
+ out(escape_html(content))
53
+ out('</code></pre>')
54
+ end
55
+
25
56
  private
26
57
 
27
58
  def generate_id(str)
@@ -2,11 +2,19 @@ require "spec_helper"
2
2
 
3
3
  describe JekyllCommonMarkCustomRenderer do
4
4
  let(:renderer) { JekyllCommonMarkCustomRenderer.new }
5
- let(:doc) { CommonMarker.render_doc("# Hello\n\n## Hi, world!") }
6
5
  subject { renderer.render(doc) }
7
6
 
8
- it { is_expected.to match %r{<h1 id="hello">Hello</h1>} }
9
- it { is_expected.to match %r{<h2 id="hi-world">Hi, world!</h2>} }
7
+ context "headers" do
8
+ let(:doc) { CommonMarker.render_doc("# Hello\n\n## Hi, world!") }
9
+ it { is_expected.to match %r{<h1 id="hello">Hello</h1>} }
10
+ it { is_expected.to match %r{<h2 id="hi-world">Hi, world!</h2>} }
11
+ end
12
+
13
+ context "code blocks" do
14
+ let(:doc) { CommonMarker.render_doc("```ruby\nputs \"Hi!\"\n```\n") }
15
+ it { is_expected.to match %r{<div class="language-ruby highlighter-rouge">} }
16
+ it { is_expected.to match %r{<code><span class=".*?">puts</span> <span class=".*?">"Hi!"</span>} }
17
+ end
10
18
  end
11
19
 
12
20
  describe Jekyll::Converters::Markdown::CommonMarkGhPages do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-commonmark-ghpages
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ashe Connor
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-21 00:00:00.000000000 Z
11
+ date: 2017-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll-commonmark
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.17.6
41
+ - !ruby/object:Gem::Dependency
42
+ name: rouge
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rspec
43
57
  requirement: !ruby/object:Gem::Requirement