jekyll_prism 0.0.2 → 0.0.3

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: d3f61e0eaf6f9058e2cca5576d1b0fb81d6643e6
4
- data.tar.gz: 745239fb68984a4b4161f8140ee853e07b03a977
3
+ metadata.gz: a398817e4968243916001ca1528b3ef128cf1ec0
4
+ data.tar.gz: 173cb2f846cb487513110c4e209c63075276d3f7
5
5
  SHA512:
6
- metadata.gz: d0672b1b02bf59e43077f03e600ecfafe88ba3791ee40097622075edfa1745a13be193ee3c1d923a5ec82a7b4958d104b57f5e9ab87848bac73db6951016d8dd
7
- data.tar.gz: ef2be08da187abc96346b322c41e66d142f9c5b96f0ae4920f0f46cef842c320a69b8cb35054840148ad00a2c50de04f164b5083b99217d020b9df79b58538c4
6
+ metadata.gz: 2142b37f4d919e863ee38c672242c885fb58f85cc39bdd98755fa4052bc01f3279a2efa41030ee972ee736c2ee602b77e3745faf57a0e60d5991005d13c00106
7
+ data.tar.gz: 902af7f4ce3a0b87bb7b3de96211b29ec9167f2fe9f3388229e3eb4ae190a33ee4de8502c0c7ac5e6476ef8ef15b95d19d3a9e17906f908cda372b8ac21812df
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'jekyll_prism'
3
- s.version = '0.0.2'
3
+ s.version = '0.0.3'
4
4
  s.date = Time.now.strftime("%Y-%m-%d")
5
5
 
6
6
  s.summary = ''
@@ -1,5 +1,61 @@
1
1
  require 'liquid'
2
2
 
3
+ ##
4
+ # Helpers for defining code HTML
5
+ module PrismHelpers
6
+ def parse_args(args)
7
+ args.each_with_object({}) do |arg, hash|
8
+ value, key = arg.split('=').reverse
9
+ key ||= 'lang'
10
+ hash[key.to_sym] = value
11
+ end
12
+ end
13
+
14
+ def pre_attrs(opts)
15
+ s = ' class="'
16
+ s = add_line_numbers(s, opts)
17
+ s = add_lang(s, opts) if opts.include? :source
18
+ s << '"'
19
+ s = add_line_start(s, opts) unless [nil, 1].include? opts[:numbers]
20
+ s = add_source(s, opts) if opts.include? :source
21
+ s = add_highlights(s, opts) if opts.include? :highlights
22
+ s
23
+ end
24
+
25
+ def code_attrs(opts)
26
+ s = ' class="'
27
+ s = add_lang(s, opts) unless opts.include? :source
28
+ s << '"'
29
+ end
30
+
31
+ def add_line_numbers(s, opts)
32
+ s << 'line-numbers ' if opts.include? :numbers
33
+ s
34
+ end
35
+
36
+ def add_lang(s, opts)
37
+ s << "language-#{opts[:lang]}" if opts.include? :lang
38
+ s
39
+ end
40
+
41
+ def add_line_start(s, opts)
42
+ s << %Q( data-start="#{opts[:numbers]}")
43
+ end
44
+
45
+ def add_highlights(s, opts)
46
+ lines = if opts[:highlights] == 'all'
47
+ "1-#{opts[:linecount]}"
48
+ else
49
+ opts[:highlights]
50
+ end
51
+ s << %Q( data-line="#{lines}")
52
+ end
53
+
54
+ def add_source(s, opts)
55
+ s << %Q( data-src="#{opts[:source]}")
56
+ end
57
+ end
58
+
3
59
  ##
4
60
  # Extend Jekyll to provide Prism helper blocks and tags
5
61
  module Jekyll
@@ -7,23 +63,19 @@ module Jekyll
7
63
  # Block object for Prism hilighting
8
64
  class CodeBlock < Liquid::Block
9
65
  include Liquid::StandardFilters
66
+ include PrismHelpers
10
67
 
11
68
  def initialize(a, args, b)
12
69
  super
13
- options = args.split
14
- @lang, @linenos = options.shift 2
15
- true
70
+ @options = parse_args args.split
16
71
  end
17
72
 
18
73
  def render(_)
19
74
  code = h(super).strip
20
-
21
- linenos = @linenos == 'all' ? "1-#{code.lines.count}" : @linenos
22
- linestring = linenos.nil? ? '' : %Q( data-line="#{linenos}")
23
- langstring = @lang.nil? ? '' : %Q( class="language-#{@lang}")
75
+ @options[:linecount] = code.lines.count
24
76
 
25
77
  <<-OUTPUT
26
- <pre#{linestring}><code#{langstring}>
78
+ <pre#{pre_attrs @options}><code#{code_attrs @options}>
27
79
  #{code}
28
80
  </code></pre>
29
81
  OUTPUT
@@ -33,17 +85,17 @@ module Jekyll
33
85
  ##
34
86
  # Tag object for Prism hilighting
35
87
  class CodeTag < Liquid::Tag
88
+ include PrismHelpers
89
+
36
90
  def initialize(_, args, _)
37
91
  super
38
- options = args.split
39
- @file, @lang, @linenos = options.shift 3
92
+ args = args.split
93
+ args[0] = "source=#{args[0]}"
94
+ @options = parse_args args
40
95
  end
41
96
 
42
97
  def render(_)
43
- linestring = @linenos.nil? ? '' : %Q( data-line="#{@linenos}")
44
- langstring = @lang.nil? ? '' : %Q( class="language-#{@lang}")
45
-
46
- %Q(<pre data-src="#{@file}"#{langstring}#{linestring}></pre>)
98
+ %Q(<pre#{pre_attrs @options}></pre>)
47
99
  end
48
100
  end
49
101
  end
@@ -9,31 +9,28 @@ end
9
9
  describe Jekyll::CodeBlock do
10
10
  it 'renders code blocks' do
11
11
  code = '{% code %}foobar{% endcode %}'
12
- result = "<pre><code>\nfoobar\n</code></pre>\n"
12
+ result = "<pre class=\"\"><code class=\"\">\nfoobar\n</code></pre>\n"
13
13
  test_template code, result
14
14
  end
15
15
 
16
16
  it 'accepts a language parameter' do
17
17
  code = '{% code ruby %}foobar{% endcode %}'
18
- result = "<pre><code class=\"language-ruby\">\nfoobar\n</code></pre>\n"
18
+ result = "<pre class=\"\"><code class=\"language-ruby\">
19
+ foobar\n</code></pre>\n"
19
20
  test_template code, result
20
21
  end
21
22
 
22
23
  describe 'accepts a linenos parameter' do
23
24
  it 'as line numbers' do
24
- code = '{% code ruby 1,3-5,10 %}foobar{% endcode %}'
25
- result = "<pre data-line=\"1,3-5,10\"><code class=\"language-ruby\">
26
- foobar
27
- </code></pre>\n"
25
+ code = '{% code ruby highlights=1,3-5,10 %}foobar{% endcode %}'
26
+ result = "<pre class=\"\" data-line=\"1,3-5,10\">" \
27
+ "<code class=\"language-ruby\">\nfoobar\n</code></pre>\n"
28
28
  test_template code, result
29
29
  end
30
30
  it 'as an "all" parameter' do
31
- code = "{% code ruby all %}foo\nbar\nbaz{% endcode %}"
32
- result = "<pre data-line=\"1-3\"><code class=\"language-ruby\">
33
- foo
34
- bar
35
- baz
36
- </code></pre>\n"
31
+ code = "{% code ruby highlights=all %}foo\nbar\nbaz{% endcode %}"
32
+ result = "<pre class=\"\" data-line=\"1-3\">"\
33
+ "<code class=\"language-ruby\">\nfoo\nbar\nbaz\n</code></pre>\n"
37
34
  test_template code, result
38
35
  end
39
36
  end
@@ -42,21 +39,21 @@ end
42
39
  describe Jekyll::CodeTag do
43
40
  it 'renders external code objects' do
44
41
  code = '{% ext_code sekrit.rb %}'
45
- result = '<pre data-src="sekrit.rb"></pre>'
42
+ result = '<pre class="" data-src="sekrit.rb"></pre>'
46
43
  test_template code, result
47
44
  end
48
45
 
49
46
  it 'accepts a language parameter' do
50
47
  code = '{% ext_code sekrit.rb ruby %}'
51
- result = '<pre data-src="sekrit.rb" class="language-ruby"></pre>'
48
+ result = '<pre class="language-ruby" data-src="sekrit.rb"></pre>'
52
49
  test_template code, result
53
50
  end
54
51
 
55
52
  describe 'accepts a linenos parameter' do
56
53
  it 'as line numbers' do
57
- code = '{% ext_code sekrit.rb ruby 1,3-5,10 %}'
58
- result = '<pre data-src="sekrit.rb" ' \
59
- 'class="language-ruby" data-line="1,3-5,10"></pre>'
54
+ code = '{% ext_code sekrit.rb ruby highlights=1,3-5,10 %}'
55
+ result = '<pre class="language-ruby" data-src="sekrit.rb" ' \
56
+ 'data-line="1,3-5,10"></pre>'
60
57
  test_template code, result
61
58
  end
62
59
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll_prism
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Les Aker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-16 00:00:00.000000000 Z
11
+ date: 2014-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: liquid