termcolor 1.2.1 → 1.2.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/README.rdoc +3 -16
- data/Rakefile +6 -5
- data/lib/termcolor.rb +25 -20
- data/spec/termcolor_spec.rb +18 -4
- metadata +39 -55
data/README.rdoc
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
= termcolor
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
https://github.com/jugyo/termcolor
|
|
4
4
|
|
|
5
5
|
== DESCRIPTION:
|
|
6
6
|
|
|
@@ -10,25 +10,12 @@ Termcolor is a library for ANSI color formatting like HTML for output in termina
|
|
|
10
10
|
|
|
11
11
|
== SYNOPSIS:
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
'<blue>Hello</blue> <red>World!</red>'.termcolor
|
|
14
14
|
#=> "\e[34mHello\e[0m \e[31mWorld!\e[0m"
|
|
15
15
|
|
|
16
|
-
== REQUIREMENTS:
|
|
17
|
-
|
|
18
|
-
* highline
|
|
19
|
-
|
|
20
16
|
== INSTALL:
|
|
21
17
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
or
|
|
25
|
-
|
|
26
|
-
gem source -a http://gems.github.com
|
|
27
|
-
sudo gem install jugyo-termcolor
|
|
28
|
-
|
|
29
|
-
== TODO:
|
|
30
|
-
|
|
31
|
-
for windows...
|
|
18
|
+
gem install termcolor
|
|
32
19
|
|
|
33
20
|
== LICENSE:
|
|
34
21
|
|
data/Rakefile
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
$:.unshift File.dirname(__FILE__) + '/lib/'
|
|
3
3
|
require 'termcolor'
|
|
4
|
-
require '
|
|
4
|
+
require 'rspec/core'
|
|
5
|
+
require 'rspec/core/rake_task'
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
task :default => :spec
|
|
8
|
+
|
|
9
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
|
10
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
|
10
11
|
end
|
|
11
12
|
|
|
12
13
|
desc 'Generate gemspec'
|
data/lib/termcolor.rb
CHANGED
|
@@ -7,7 +7,7 @@ require 'rexml/parsers/baseparser'
|
|
|
7
7
|
require 'rexml/streamlistener'
|
|
8
8
|
|
|
9
9
|
module TermColor
|
|
10
|
-
VERSION = '1.2.
|
|
10
|
+
VERSION = '1.2.2'
|
|
11
11
|
include REXML
|
|
12
12
|
|
|
13
13
|
class << self
|
|
@@ -18,31 +18,36 @@ module TermColor
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def escape(text)
|
|
21
|
-
text
|
|
22
|
-
case match
|
|
23
|
-
when '&' then '&'
|
|
24
|
-
when '<' then '<'
|
|
25
|
-
when '>' then '>'
|
|
26
|
-
when "'" then '''
|
|
27
|
-
when '"' then '"'
|
|
28
|
-
end
|
|
29
|
-
end
|
|
21
|
+
escape_or_unescape(:escape, text)
|
|
30
22
|
end
|
|
31
23
|
|
|
32
24
|
def unescape(text)
|
|
33
|
-
text
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
end
|
|
41
|
-
end
|
|
25
|
+
escape_or_unescape(:unescape, text)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def escape_or_unescape(dir=:escape, text)
|
|
29
|
+
h = Hash[*%w(& & < < > > ' ' " ")]
|
|
30
|
+
h = h.invert if dir == :unescape
|
|
31
|
+
text.gsub(/(#{h.keys.join('|')})/){ h[$1] }
|
|
42
32
|
end
|
|
33
|
+
private :escape_or_unescape
|
|
43
34
|
|
|
44
35
|
def prepare_parse(text)
|
|
45
|
-
text.gsub(/<(\/?)(\d+)>/, '<\1_\2>')
|
|
36
|
+
tag_separate text.gsub(/<(\/?)(\d+)>/, '<\1_\2>')
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def tag_separate(text)
|
|
40
|
+
re = /<(\/*)([^\W_]+)(?:_(on_[^\W_]+))*(?:_with_([^\W_]+))*(?:_and_([^\W_]+))*>/
|
|
41
|
+
text.gsub(re) do
|
|
42
|
+
matchs = $~.captures
|
|
43
|
+
if matchs.shift.empty?
|
|
44
|
+
tag = ->t{ "<#{t}>" }
|
|
45
|
+
else
|
|
46
|
+
matchs.reverse!
|
|
47
|
+
tag = ->t{ "</#{t}>" }
|
|
48
|
+
end
|
|
49
|
+
matchs.compact.map { |word| tag[word] }.join
|
|
50
|
+
end
|
|
46
51
|
end
|
|
47
52
|
|
|
48
53
|
def test(*args)
|
data/spec/termcolor_spec.rb
CHANGED
|
@@ -24,19 +24,19 @@ module TermColor
|
|
|
24
24
|
text.should == "aa\e[34maaaaa<aaa\"aaa>aaa&aaaaa\e[0maaa"
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
it 'should parse
|
|
27
|
+
it 'should parse 4' do
|
|
28
28
|
text = TermColor.parse('aa<30>bbbbbbb<32>cccc<90>ddd</90>c</32>b</30>aaa')
|
|
29
29
|
puts text
|
|
30
|
-
text.should == "aa\e[30mbbbbbbb\e[32mcccc\e[90mddd\e[0m\e[32mc\e[0m\e[30mb\e[0maaa"
|
|
30
|
+
text.should == "aa\e[30mbbbbbbb\e[32mcccc\e[90mddd\e[0m\e[30m\e[32mc\e[0m\e[30mb\e[0maaa"
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
-
it 'should parse
|
|
33
|
+
it 'should parse 5' do
|
|
34
34
|
text = TermColor.parse('aa<f123>bbbbbbb<b321>ccccc</b321>b</f123>aaa')
|
|
35
35
|
puts text
|
|
36
36
|
text.should == "aa\e[38;5;67mbbbbbbb\e[48;5;137mccccc\e[0m\e[38;5;67mb\e[0maaa"
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
-
it 'should parse
|
|
39
|
+
it 'should parse 6' do
|
|
40
40
|
text = TermColor.parse('aa<f12>bbbbbbb<b6>ccccc</b6>b</f12>aaa')
|
|
41
41
|
puts text
|
|
42
42
|
text.should == "aa\e[38;5;244mbbbbbbb\e[48;5;238mccccc\e[0m\e[38;5;244mb\e[0maaa"
|
|
@@ -75,5 +75,19 @@ module TermColor
|
|
|
75
75
|
it 'should do colorize' do
|
|
76
76
|
TermColor.colorize('test', :green).should == "\e[32mtest\e[0m"
|
|
77
77
|
end
|
|
78
|
+
|
|
79
|
+
it 'should make separate tags for combined-style tag' do
|
|
80
|
+
h = { "<red_on_yellow>hello, world</red_on_yellow>" =>
|
|
81
|
+
"<red><on_yellow>hello, world</on_yellow></red>",
|
|
82
|
+
"<green_with_bold>hello, world</green_with_bold>" =>
|
|
83
|
+
"<green><bold>hello, world</bold></green>",
|
|
84
|
+
"<blue_on_white_with_bold_and_underline>hello</blue_on_white_with_bold_and_underline>" =>
|
|
85
|
+
"<blue><on_white><bold><underline>hello</underline></bold></on_white></blue>",
|
|
86
|
+
"<black_on_white>hello</black_on_white>term<green_with_bold>color</green_with_bold>" =>
|
|
87
|
+
"<black><on_white>hello</on_white></black>term<green><bold>color</bold></green>" }
|
|
88
|
+
h.each_pair do |combined, separated|
|
|
89
|
+
TermColor.prepare_parse(combined).should == separated
|
|
90
|
+
end
|
|
91
|
+
end
|
|
78
92
|
end
|
|
79
93
|
end
|
metadata
CHANGED
|
@@ -1,49 +1,41 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: termcolor
|
|
3
|
-
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
5
|
-
prerelease:
|
|
6
|
-
segments:
|
|
7
|
-
- 1
|
|
8
|
-
- 2
|
|
9
|
-
- 1
|
|
10
|
-
version: 1.2.1
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.2.2
|
|
5
|
+
prerelease:
|
|
11
6
|
platform: ruby
|
|
12
|
-
authors:
|
|
7
|
+
authors:
|
|
13
8
|
- jugyo
|
|
14
9
|
autorequire:
|
|
15
10
|
bindir: bin
|
|
16
11
|
cert_chain: []
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
dependencies:
|
|
21
|
-
- !ruby/object:Gem::Dependency
|
|
12
|
+
date: 2012-08-15 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
22
15
|
name: highline
|
|
23
|
-
|
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
25
17
|
none: false
|
|
26
|
-
requirements:
|
|
27
|
-
- -
|
|
28
|
-
- !ruby/object:Gem::Version
|
|
29
|
-
hash: 3
|
|
30
|
-
segments:
|
|
31
|
-
- 1
|
|
32
|
-
- 5
|
|
33
|
-
- 0
|
|
18
|
+
requirements:
|
|
19
|
+
- - ! '>='
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
34
21
|
version: 1.5.0
|
|
35
22
|
type: :runtime
|
|
36
|
-
|
|
37
|
-
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - ! '>='
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: 1.5.0
|
|
30
|
+
description: ! "Termcolor is a library for ANSI color formatting like HTML for output
|
|
31
|
+
in terminal. '<red>red</red>'.termcolor #=> \"\e[31mred\e[0m\""
|
|
38
32
|
email: jugyo.org@gmail.com
|
|
39
33
|
executables: []
|
|
40
|
-
|
|
41
34
|
extensions: []
|
|
42
|
-
|
|
43
|
-
extra_rdoc_files:
|
|
35
|
+
extra_rdoc_files:
|
|
44
36
|
- README.rdoc
|
|
45
37
|
- History.txt
|
|
46
|
-
files:
|
|
38
|
+
files:
|
|
47
39
|
- lib/termcolor.rb
|
|
48
40
|
- spec/spec_helper.rb
|
|
49
41
|
- spec/termcolor_spec.rb
|
|
@@ -51,42 +43,34 @@ files:
|
|
|
51
43
|
- README.rdoc
|
|
52
44
|
- History.txt
|
|
53
45
|
- Rakefile
|
|
54
|
-
has_rdoc: true
|
|
55
46
|
homepage: http://github.com/jugyo/termcolor
|
|
56
47
|
licenses: []
|
|
57
|
-
|
|
58
48
|
post_install_message:
|
|
59
|
-
rdoc_options:
|
|
49
|
+
rdoc_options:
|
|
60
50
|
- --main
|
|
61
51
|
- README.rdoc
|
|
62
52
|
- --exclude
|
|
63
53
|
- spec
|
|
64
|
-
require_paths:
|
|
54
|
+
require_paths:
|
|
65
55
|
- lib
|
|
66
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
|
56
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
67
57
|
none: false
|
|
68
|
-
requirements:
|
|
69
|
-
- -
|
|
70
|
-
- !ruby/object:Gem::Version
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
- 0
|
|
74
|
-
version: "0"
|
|
75
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ! '>='
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
76
63
|
none: false
|
|
77
|
-
requirements:
|
|
78
|
-
- -
|
|
79
|
-
- !ruby/object:Gem::Version
|
|
80
|
-
|
|
81
|
-
segments:
|
|
82
|
-
- 0
|
|
83
|
-
version: "0"
|
|
64
|
+
requirements:
|
|
65
|
+
- - ! '>='
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '0'
|
|
84
68
|
requirements: []
|
|
85
|
-
|
|
86
69
|
rubyforge_project: termcolor
|
|
87
|
-
rubygems_version: 1.
|
|
70
|
+
rubygems_version: 1.8.23
|
|
88
71
|
signing_key:
|
|
89
72
|
specification_version: 3
|
|
90
|
-
summary: Termcolor is a library for ANSI color formatting like HTML for output in
|
|
73
|
+
summary: Termcolor is a library for ANSI color formatting like HTML for output in
|
|
74
|
+
terminal.
|
|
91
75
|
test_files: []
|
|
92
|
-
|
|
76
|
+
has_rdoc: true
|