jekyll-commonmark-ghpages 0.1.0 → 0.1.1

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 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