jekyll-ultraviolet 0.0.1 → 0.0.2
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.
- data/jekyll-ultraviolet.gemspec +4 -0
- data/lib/jekyll/ultraviolet.rb +21 -11
- data/lib/jekyll/ultraviolet/version.rb +1 -1
- data/spec/spec_helper.rb +2 -0
- data/spec/support/highlighting.rb +43 -0
- data/spec/ultraviolet_spec.rb +30 -0
- metadata +44 -5
data/jekyll-ultraviolet.gemspec
CHANGED
@@ -13,4 +13,8 @@ Gem::Specification.new do |gem|
|
|
13
13
|
gem.name = "jekyll-ultraviolet"
|
14
14
|
gem.require_paths = ["lib"]
|
15
15
|
gem.version = Jekyll::Ultraviolet::VERSION
|
16
|
+
|
17
|
+
gem.add_dependency "liquid"
|
18
|
+
gem.add_dependency "spox-ultraviolet"
|
19
|
+
gem.add_development_dependency "rspec", "~> 2.6.0"
|
16
20
|
end
|
data/lib/jekyll/ultraviolet.rb
CHANGED
@@ -1,30 +1,40 @@
|
|
1
|
-
require
|
1
|
+
require "uv"
|
2
|
+
require "liquid"
|
3
|
+
# Psych can't parse some of the syntax/theme files
|
4
|
+
YAML::ENGINE.yamler = "syck"
|
2
5
|
|
3
6
|
module Jekyll
|
4
7
|
module Ultraviolet
|
5
|
-
class << self; attr_accessor :theme
|
6
|
-
|
7
|
-
def self.initialize
|
8
|
-
@theme = "twilight"
|
9
|
-
end
|
10
|
-
|
8
|
+
class << self; attr_accessor :theme end
|
9
|
+
|
11
10
|
class Block < Liquid::Block
|
12
11
|
include Liquid::StandardFilters
|
13
|
-
|
12
|
+
|
14
13
|
def initialize(tag, lang, tokens)
|
15
14
|
super
|
16
|
-
@
|
15
|
+
@theme = "twilight"
|
16
|
+
@lang = lang.strip rescue "ruby"
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
def render(context)
|
20
20
|
output = []
|
21
21
|
output << context["pygments_prefix"]
|
22
|
-
output << Uv.parse(super.join, "xhtml", @lang, false,
|
22
|
+
output << Uv.parse(remove_leading_spaces(super.join), "xhtml", @lang, false, theme)
|
23
23
|
output << context["pygments_suffix"]
|
24
24
|
output.join
|
25
25
|
rescue LoadError
|
26
26
|
raise "Ultraviolet not installed."
|
27
27
|
end
|
28
|
+
|
29
|
+
def remove_leading_spaces(text)
|
30
|
+
padding = text.match(/\n?(\s+)/)[1]
|
31
|
+
return text if padding == "\n"
|
32
|
+
text.each_line.map { |l| l.gsub(/^#{padding}/, "") }.join
|
33
|
+
end
|
34
|
+
|
35
|
+
def theme
|
36
|
+
Jekyll::Ultraviolet.theme || @theme
|
37
|
+
end
|
28
38
|
end
|
29
39
|
end
|
30
40
|
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
module HighlighedTextHelpers
|
2
|
+
def text
|
3
|
+
<<-TEXT
|
4
|
+
This is a code example:
|
5
|
+
{% uv ruby %}
|
6
|
+
def awesome
|
7
|
+
puts "AWESOME"
|
8
|
+
end
|
9
|
+
{% enduv %}
|
10
|
+
And other stuff.
|
11
|
+
TEXT
|
12
|
+
end
|
13
|
+
|
14
|
+
def expected
|
15
|
+
<<-TEXT
|
16
|
+
This is a code example:
|
17
|
+
<pre class="twilight">
|
18
|
+
<span class="Keyword">def</span> <span class="Entity">awesome</span>
|
19
|
+
puts <span class="String"><span class="String">"</span>AWESOME<span class="String">"</span></span>
|
20
|
+
<span class="Keyword">end</span>
|
21
|
+
</pre>
|
22
|
+
And other stuff.
|
23
|
+
TEXT
|
24
|
+
end
|
25
|
+
|
26
|
+
def text_python
|
27
|
+
<<-TEXT
|
28
|
+
This is Python:
|
29
|
+
{% uv python %}
|
30
|
+
len(0)
|
31
|
+
{% enduv %}
|
32
|
+
TEXT
|
33
|
+
end
|
34
|
+
|
35
|
+
def expected_python
|
36
|
+
<<-TEXT
|
37
|
+
This is Python:
|
38
|
+
<pre class="twilight">
|
39
|
+
<span class="SupportFunction">len</span>(<span class="Constant">0</span>)
|
40
|
+
</pre>
|
41
|
+
TEXT
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Jekyll::Ultraviolet do
|
4
|
+
include HighlighedTextHelpers
|
5
|
+
|
6
|
+
before do
|
7
|
+
Jekyll::Ultraviolet.theme = nil
|
8
|
+
end
|
9
|
+
|
10
|
+
def rendered(source)
|
11
|
+
Liquid::Template.parse(source).render
|
12
|
+
end
|
13
|
+
|
14
|
+
it "parses uv blocks into syntax highlighted code" do
|
15
|
+
rendered(text).should == expected
|
16
|
+
end
|
17
|
+
|
18
|
+
it "allow indenting within {% uv %} but proportionately remove it in output" do
|
19
|
+
rendered(text).split("\n")[2].should =~ /^[^\s]+/
|
20
|
+
end
|
21
|
+
|
22
|
+
it "allows the theme to be set" do
|
23
|
+
Jekyll::Ultraviolet.theme = "amy"
|
24
|
+
rendered(text).should =~ /<pre class="amy">/
|
25
|
+
end
|
26
|
+
|
27
|
+
it "supports specifying a language" do
|
28
|
+
rendered(text_python).should == expected_python
|
29
|
+
end
|
30
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-ultraviolet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,41 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
13
|
-
dependencies:
|
12
|
+
date: 2011-10-15 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: liquid
|
16
|
+
requirement: &70367021988580 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70367021988580
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: spox-ultraviolet
|
27
|
+
requirement: &70367021979020 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70367021979020
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rspec
|
38
|
+
requirement: &70367021978240 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 2.6.0
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70367021978240
|
14
47
|
description: Ultraviolet syntax highlighting in Jekyll
|
15
48
|
email:
|
16
49
|
- me@mattenoble.com
|
@@ -24,6 +57,9 @@ files:
|
|
24
57
|
- jekyll-ultraviolet.gemspec
|
25
58
|
- lib/jekyll/ultraviolet.rb
|
26
59
|
- lib/jekyll/ultraviolet/version.rb
|
60
|
+
- spec/spec_helper.rb
|
61
|
+
- spec/support/highlighting.rb
|
62
|
+
- spec/ultraviolet_spec.rb
|
27
63
|
homepage:
|
28
64
|
licenses: []
|
29
65
|
post_install_message:
|
@@ -44,8 +80,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
44
80
|
version: '0'
|
45
81
|
requirements: []
|
46
82
|
rubyforge_project:
|
47
|
-
rubygems_version: 1.8.
|
83
|
+
rubygems_version: 1.8.10
|
48
84
|
signing_key:
|
49
85
|
specification_version: 3
|
50
86
|
summary: Ultraviolet syntax highlighting in Jekyll
|
51
|
-
test_files:
|
87
|
+
test_files:
|
88
|
+
- spec/spec_helper.rb
|
89
|
+
- spec/support/highlighting.rb
|
90
|
+
- spec/ultraviolet_spec.rb
|