albino 1.3.0 → 1.3.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/Gemfile +2 -0
- data/README.md +29 -0
- data/albino.gemspec +5 -4
- data/lib/albino.rb +28 -7
- data/lib/albino/multi.rb +9 -6
- data/test/albino_test.rb +43 -0
- data/test/multi_albino_test.rb +12 -0
- metadata +12 -9
- data/README +0 -3
data/Gemfile
ADDED
data/README.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Albino: a ruby wrapper for pygmentize
|
|
2
|
+
|
|
3
|
+
This project is an extraction from GitHub.
|
|
4
|
+
|
|
5
|
+
For this and other extractions, see [http://github.com/github]()
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
sudo easy_install pygments
|
|
10
|
+
gem install albino
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
### Simple
|
|
15
|
+
|
|
16
|
+
require 'albino'
|
|
17
|
+
puts Albino.colorize('puts "Hello World"', :ruby)
|
|
18
|
+
|
|
19
|
+
### Advanced
|
|
20
|
+
|
|
21
|
+
require 'albino'
|
|
22
|
+
@syntaxer = Albino.new(File.new('albino.rb'), :ruby, :bbcode)
|
|
23
|
+
puts @syntaxer.colorize
|
|
24
|
+
|
|
25
|
+
### Multi
|
|
26
|
+
|
|
27
|
+
require 'albino/multi'
|
|
28
|
+
ruby, python = Albino::Multi.colorize([ ['1+2',:ruby], ['1-2',:python] ])
|
|
29
|
+
|
data/albino.gemspec
CHANGED
|
@@ -13,8 +13,8 @@ Gem::Specification.new do |s|
|
|
|
13
13
|
## If your rubyforge_project name is different, then edit it and comment out
|
|
14
14
|
## the sub! line in the Rakefile
|
|
15
15
|
s.name = 'albino'
|
|
16
|
-
s.version = '1.3.
|
|
17
|
-
s.date = '2011-03-
|
|
16
|
+
s.version = '1.3.2'
|
|
17
|
+
s.date = '2011-03-06'
|
|
18
18
|
s.rubyforge_project = 'albino'
|
|
19
19
|
|
|
20
20
|
## Make sure your summary is short. The description may be as long
|
|
@@ -33,7 +33,7 @@ Gem::Specification.new do |s|
|
|
|
33
33
|
## require 'NAME.rb' or'/lib/NAME/file.rb' can be as require 'NAME/file.rb'
|
|
34
34
|
s.require_paths = %w[lib]
|
|
35
35
|
|
|
36
|
-
s.add_dependency('posix-spawn')
|
|
36
|
+
s.add_dependency('posix-spawn', '>= 0.3.3')
|
|
37
37
|
s.add_development_dependency('mocha')
|
|
38
38
|
|
|
39
39
|
## Leave this section as-is. It will be automatically generated from the
|
|
@@ -41,8 +41,9 @@ Gem::Specification.new do |s|
|
|
|
41
41
|
## THE MANIFEST COMMENTS, they are used as delimiters by the task.
|
|
42
42
|
# = MANIFEST =
|
|
43
43
|
s.files = %w[
|
|
44
|
+
Gemfile
|
|
44
45
|
LICENSE
|
|
45
|
-
README
|
|
46
|
+
README.md
|
|
46
47
|
Rakefile
|
|
47
48
|
albino.gemspec
|
|
48
49
|
lib/albino.rb
|
data/lib/albino.rb
CHANGED
|
@@ -10,7 +10,7 @@ require 'posix-spawn'
|
|
|
10
10
|
#
|
|
11
11
|
# Use like so:
|
|
12
12
|
#
|
|
13
|
-
# @syntaxer = Albino.new('
|
|
13
|
+
# @syntaxer = Albino.new('puts "Hello World"', :ruby)
|
|
14
14
|
# puts @syntaxer.colorize
|
|
15
15
|
#
|
|
16
16
|
# This'll print out an HTMLized, Ruby-highlighted version
|
|
@@ -18,12 +18,16 @@ require 'posix-spawn'
|
|
|
18
18
|
#
|
|
19
19
|
# To use another formatter, pass it as the third argument:
|
|
20
20
|
#
|
|
21
|
-
# @syntaxer = Albino.new('
|
|
21
|
+
# @syntaxer = Albino.new('puts "Hello World"', :ruby, :bbcode)
|
|
22
22
|
# puts @syntaxer.colorize
|
|
23
23
|
#
|
|
24
24
|
# You can also use the #colorize class method:
|
|
25
25
|
#
|
|
26
|
-
# puts Albino.colorize('
|
|
26
|
+
# puts Albino.colorize('puts "Hello World"', :ruby)
|
|
27
|
+
#
|
|
28
|
+
# To format a file, pass a file stream:
|
|
29
|
+
#
|
|
30
|
+
# puts Albino.colorize(File.new('/some/file.rb'), :ruby)
|
|
27
31
|
#
|
|
28
32
|
# Another also: you get a #to_s, for somewhat nicer use in Rails views.
|
|
29
33
|
#
|
|
@@ -47,14 +51,22 @@ class Albino
|
|
|
47
51
|
class ShellArgumentError < ArgumentError; end
|
|
48
52
|
include POSIX::Spawn
|
|
49
53
|
|
|
50
|
-
VERSION = '1.3.
|
|
54
|
+
VERSION = '1.3.2'
|
|
51
55
|
|
|
52
56
|
class << self
|
|
53
|
-
attr_accessor :bin, :
|
|
57
|
+
attr_accessor :bin, :timeout_threshold
|
|
58
|
+
attr_reader :default_encoding
|
|
59
|
+
|
|
60
|
+
def default_encoding=(encoding)
|
|
61
|
+
# make sure the encoding is valid
|
|
62
|
+
Encoding.find(encoding) if defined?(Encoding)
|
|
63
|
+
|
|
64
|
+
@default_encoding = encoding
|
|
65
|
+
end
|
|
54
66
|
end
|
|
55
67
|
|
|
56
68
|
self.timeout_threshold = 10
|
|
57
|
-
self.default_encoding = '
|
|
69
|
+
self.default_encoding = 'utf-8'
|
|
58
70
|
self.bin = 'pygmentize'
|
|
59
71
|
|
|
60
72
|
def self.colorize(*args)
|
|
@@ -64,6 +76,7 @@ class Albino
|
|
|
64
76
|
def initialize(target, lexer = :text, format = :html, encoding = self.class.default_encoding)
|
|
65
77
|
@target = target
|
|
66
78
|
@options = { :l => lexer, :f => format, :O => "encoding=#{encoding}" }
|
|
79
|
+
@encoding = encoding
|
|
67
80
|
end
|
|
68
81
|
|
|
69
82
|
def execute(options = {})
|
|
@@ -75,7 +88,15 @@ class Albino
|
|
|
75
88
|
end
|
|
76
89
|
|
|
77
90
|
def colorize(options = {})
|
|
78
|
-
execute(options).out
|
|
91
|
+
out = execute(options).out
|
|
92
|
+
|
|
93
|
+
# markdown requires block elements on their own line
|
|
94
|
+
out.sub!(%r{</pre></div>\Z}, "</pre>\n</div>")
|
|
95
|
+
|
|
96
|
+
# covert output to the encoding we told pygmentize to use
|
|
97
|
+
out.force_encoding(@encoding) if out.respond_to?(:force_encoding)
|
|
98
|
+
|
|
99
|
+
out
|
|
79
100
|
end
|
|
80
101
|
alias_method :to_s, :colorize
|
|
81
102
|
|
data/lib/albino/multi.rb
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'albino'
|
|
2
2
|
|
|
3
3
|
class Albino
|
|
4
|
-
if !const_defined?(:ShellArgumentError)
|
|
5
|
-
class ShellArgumentError < ArgumentError; end
|
|
6
|
-
end
|
|
7
|
-
|
|
8
4
|
# Wrapper for a custom multipygmentize script. Passes multiple code
|
|
9
5
|
# fragments in STDIN to Python. This assumes both Python and pygments are
|
|
10
6
|
# installed.
|
|
@@ -86,8 +82,15 @@ class Albino
|
|
|
86
82
|
|
|
87
83
|
memo << code << SEPARATOR
|
|
88
84
|
end.join("")
|
|
85
|
+
|
|
89
86
|
child = Child.new(self.class.bin, options)
|
|
90
|
-
pieces = child.out.split(SEPARATOR)
|
|
87
|
+
pieces = child.out.split(SEPARATOR).each do |code|
|
|
88
|
+
# markdown requires block elements on their own line
|
|
89
|
+
code.sub!(%r{</pre></div>\Z}, "</pre>\n</div>")
|
|
90
|
+
|
|
91
|
+
# albino::multi assumes utf8 encoding
|
|
92
|
+
code.force_encoding('UTF-8') if code.respond_to?(:force_encoding)
|
|
93
|
+
end
|
|
91
94
|
@multi ? pieces : pieces.first
|
|
92
95
|
end
|
|
93
96
|
|
data/test/albino_test.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
1
3
|
require 'rubygems'
|
|
2
4
|
require 'albino'
|
|
3
5
|
require 'test/unit'
|
|
@@ -23,12 +25,23 @@ class AlbinoTest < Test::Unit::TestCase
|
|
|
23
25
|
assert_equal '', @syntaxer.colorize(:f => 'html+c#-dump')
|
|
24
26
|
end
|
|
25
27
|
|
|
28
|
+
def test_markdown_compatible
|
|
29
|
+
code = Albino.colorize('1+2', :ruby)
|
|
30
|
+
assert_no_match %r{</pre></div>\Z}, code
|
|
31
|
+
end
|
|
32
|
+
|
|
26
33
|
def test_works_with_strings
|
|
27
34
|
syntaxer = Albino.new("class New\nend", :ruby)
|
|
28
35
|
assert_match %r(highlight), code=syntaxer.colorize
|
|
29
36
|
assert_match %(<span class="nc">New</span>\n), code
|
|
30
37
|
end
|
|
31
38
|
|
|
39
|
+
def test_works_with_utf8_strings
|
|
40
|
+
code = Albino.new("# é", :bash).colorize
|
|
41
|
+
assert_match %r(highlight), code
|
|
42
|
+
assert_match %(<span class="c"># é</span>), code
|
|
43
|
+
end
|
|
44
|
+
|
|
32
45
|
def test_works_with_files
|
|
33
46
|
contents = "class New\nend"
|
|
34
47
|
syntaxer = Albino.new(contents, :ruby)
|
|
@@ -42,6 +55,36 @@ class AlbinoTest < Test::Unit::TestCase
|
|
|
42
55
|
end
|
|
43
56
|
end
|
|
44
57
|
|
|
58
|
+
def test_default_encoding
|
|
59
|
+
assert_equal Albino.default_encoding, 'utf-8'
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def test_change_encoding
|
|
63
|
+
before = Albino.default_encoding
|
|
64
|
+
|
|
65
|
+
assert_equal Albino.default_encoding, 'utf-8'
|
|
66
|
+
Albino.default_encoding = 'ascii'
|
|
67
|
+
assert_equal Albino.default_encoding, 'ascii'
|
|
68
|
+
ensure
|
|
69
|
+
Albino.default_encoding = before
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def test_invalid_encoding
|
|
73
|
+
before = Albino.default_encoding
|
|
74
|
+
Albino.default_encoding = 'binary'
|
|
75
|
+
|
|
76
|
+
assert_equal Albino.colorize('class Baño; end', :ruby), ''
|
|
77
|
+
ensure
|
|
78
|
+
Albino.default_encoding = before
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def test_custom_encoding
|
|
82
|
+
code = Albino.new('1+2', :ruby, :html, 'ascii').colorize
|
|
83
|
+
if code.respond_to?(:encoding)
|
|
84
|
+
assert_equal code.encoding.to_s, 'US-ASCII'
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
45
88
|
def test_aliases_to_s
|
|
46
89
|
syntaxer = Albino.new(File.new(__FILE__), :ruby)
|
|
47
90
|
assert_equal @syntaxer.colorize, syntaxer.to_s
|
data/test/multi_albino_test.rb
CHANGED
|
@@ -15,6 +15,18 @@ class MultiTest < Test::Unit::TestCase
|
|
|
15
15
|
assert_no_match regex, syntaxer.colorize
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
+
def test_markdown_compatible
|
|
19
|
+
code = Albino::Multi.colorize('1+2', :ruby)
|
|
20
|
+
assert_no_match %r{</pre></div>\Z}, code
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_forces_utf8
|
|
24
|
+
code = Albino::Multi.colorize('1+2', :ruby)
|
|
25
|
+
if code.respond_to?(:encoding)
|
|
26
|
+
assert_equal 'UTF-8', code.encoding.to_s
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
18
30
|
def test_works_with_strings
|
|
19
31
|
syntaxer = Albino::Multi.new("class New\nend", :ruby)
|
|
20
32
|
assert_match %r(highlight), code=syntaxer.colorize
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: albino
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
5
|
-
prerelease:
|
|
4
|
+
hash: 31
|
|
5
|
+
prerelease:
|
|
6
6
|
segments:
|
|
7
7
|
- 1
|
|
8
8
|
- 3
|
|
9
|
-
-
|
|
10
|
-
version: 1.3.
|
|
9
|
+
- 2
|
|
10
|
+
version: 1.3.2
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Chris Wanstrath
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2011-03-
|
|
18
|
+
date: 2011-03-06 00:00:00 -08:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|
|
@@ -26,10 +26,12 @@ dependencies:
|
|
|
26
26
|
requirements:
|
|
27
27
|
- - ">="
|
|
28
28
|
- !ruby/object:Gem::Version
|
|
29
|
-
hash:
|
|
29
|
+
hash: 21
|
|
30
30
|
segments:
|
|
31
31
|
- 0
|
|
32
|
-
|
|
32
|
+
- 3
|
|
33
|
+
- 3
|
|
34
|
+
version: 0.3.3
|
|
33
35
|
type: :runtime
|
|
34
36
|
version_requirements: *id001
|
|
35
37
|
- !ruby/object:Gem::Dependency
|
|
@@ -55,8 +57,9 @@ extensions: []
|
|
|
55
57
|
extra_rdoc_files: []
|
|
56
58
|
|
|
57
59
|
files:
|
|
60
|
+
- Gemfile
|
|
58
61
|
- LICENSE
|
|
59
|
-
- README
|
|
62
|
+
- README.md
|
|
60
63
|
- Rakefile
|
|
61
64
|
- albino.gemspec
|
|
62
65
|
- lib/albino.rb
|
|
@@ -94,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
94
97
|
requirements: []
|
|
95
98
|
|
|
96
99
|
rubyforge_project: albino
|
|
97
|
-
rubygems_version: 1.
|
|
100
|
+
rubygems_version: 1.4.2
|
|
98
101
|
signing_key:
|
|
99
102
|
specification_version: 2
|
|
100
103
|
summary: Ruby wrapper for pygmentize.
|
data/README
DELETED