jekyll_prism 0.0.2 → 0.0.3

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