hansi 0.1.0 → 0.1.1
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 +4 -4
- data/.gitignore +2 -0
- data/.rspec +4 -0
- data/.travis.yml +2 -0
- data/Gemfile +2 -0
- data/LICENSE +22 -0
- data/README.md +230 -0
- data/hansi.gemspec +22 -0
- data/hansi.png +0 -0
- data/lib/hansi.rb +53 -0
- data/lib/hansi/ansi_code.rb +16 -0
- data/lib/hansi/color.rb +115 -0
- data/lib/hansi/color_parser.rb +93 -0
- data/lib/hansi/color_renderer.rb +20 -0
- data/lib/hansi/mode_detector.rb +200 -0
- data/lib/hansi/palettes.rb +591 -0
- data/lib/hansi/sexp_renderer.rb +27 -0
- data/lib/hansi/special.rb +25 -0
- data/lib/hansi/string_renderer.rb +103 -0
- data/lib/hansi/theme.rb +66 -0
- data/lib/hansi/themes.rb +24 -0
- data/lib/hansi/version.rb +3 -0
- data/spec/hansi/color_parser_spec.rb +17 -0
- data/spec/hansi/color_renderer_spec.rb +6 -0
- data/spec/hansi/color_spec.rb +46 -0
- data/spec/hansi/mode_detector_spec.rb +35 -0
- data/spec/hansi/sexp_renderer_spec.rb +7 -0
- data/spec/hansi/special_spec.rb +6 -0
- data/spec/hansi/string_renderer_spec.rb +32 -0
- data/spec/hansi/theme_spec.rb +36 -0
- data/spec/hansi_spec.rb +41 -0
- data/spec/support.rb +6 -0
- data/spec/support/coverage.rb +14 -0
- data/spec/support/env.rb +10 -0
- data/spec/support/escape_matcher.rb +28 -0
- data/spec/support/parse_matcher.rb +28 -0
- data/spec/support/render_matcher.rb +28 -0
- metadata +56 -5
data/spec/hansi_spec.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
describe Hansi do
|
2
|
+
describe :mode_for do
|
3
|
+
specify { Hansi.mode_for({}) .should be == 0 }
|
4
|
+
specify { Hansi.mode_for('TERM' => 'footerm-256color') .should be == 256 }
|
5
|
+
end
|
6
|
+
|
7
|
+
describe :color_names do
|
8
|
+
specify { Hansi.color_names.should include(:red) }
|
9
|
+
specify { Hansi.color_names.should include(:rebeccapurple) }
|
10
|
+
end
|
11
|
+
|
12
|
+
describe :render do
|
13
|
+
subject(:renderer) { Hansi }
|
14
|
+
|
15
|
+
context "string renderer" do
|
16
|
+
it { should render("foo *bar*") .as("\e[0m\e[10mfoo *bar*\e[0m") }
|
17
|
+
it { should render("<foo>") .as("\e[0m\e[10m<foo>\e[0m") }
|
18
|
+
it { should render("foo *bar*", "*" => :bold) .as("\e[0m\e[10mfoo \e[0m\e[10m\e[1mbar\e[0m") }
|
19
|
+
it { should render("foo \\*bar\\*", "*" => :bold) .as("\e[0m\e[10mfoo *bar*\e[0m") }
|
20
|
+
it { should render("<bold>foo</bold>", tags: true) .as("\e[0m\e[10m\e[1mfoo\e[0m") }
|
21
|
+
it { should render("foo", mode: 256, theme: :solarized) .as("\e[0m\e[38;5;66mfoo\e[0m") }
|
22
|
+
it { should render("*%s*", "*", "*" => :bold) .as("\e[0m\e[10m\e[1m*\e[0m") }
|
23
|
+
|
24
|
+
it { should_not render("<red>", tags: true) }
|
25
|
+
it { should_not render("*", "*" => :bold) }
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'sexp renderer' do
|
29
|
+
it { should render([:red, "foo"]) .as("\e[0m\e[91mfoo\e[0m") }
|
30
|
+
it { should render([:red, [:blue, "b"], "c"], join: " ") .as("\e[0m\e[91m\e[34mb\e[0m \e[0m\e[91mc\e[0m") }
|
31
|
+
it { should render([:default, "foo"], theme: :solarized) .as("\e[0m\e[90mfoo\e[0m") }
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'color renderer' do
|
35
|
+
it { should render(Hansi[:red]) .as("\e[91m") }
|
36
|
+
it { should render(Hansi[:red], "foo") .as("\e[91mfoo\e[0m") }
|
37
|
+
end
|
38
|
+
|
39
|
+
it { should_not render(Object.new) }
|
40
|
+
end
|
41
|
+
end
|
data/spec/support.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
require 'coveralls'
|
3
|
+
|
4
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
5
|
+
SimpleCov::Formatter::HTMLFormatter,
|
6
|
+
Coveralls::SimpleCov::Formatter
|
7
|
+
]
|
8
|
+
|
9
|
+
SimpleCov.start do
|
10
|
+
project_name 'hansi'
|
11
|
+
coverage_dir '.coverage'
|
12
|
+
add_filter "/spec/"
|
13
|
+
add_filter "/lib/hansi/mode_detector.rb"
|
14
|
+
end
|
data/spec/support/env.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
RSpec::Matchers.define :escape do |*args|
|
2
|
+
match do |renderer|
|
3
|
+
begin
|
4
|
+
@rendered = renderer.escape(*args)
|
5
|
+
rescue Exception => e
|
6
|
+
@exception = e
|
7
|
+
false
|
8
|
+
else
|
9
|
+
if @expected ||= nil
|
10
|
+
@rendered == @expected
|
11
|
+
else
|
12
|
+
!!@rendered
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
chain :as do |result|
|
18
|
+
@expected = result
|
19
|
+
end
|
20
|
+
|
21
|
+
failure_message do |renderer|
|
22
|
+
if @exception ||= nil
|
23
|
+
"expected %p to escape %p, but got exception: %p" % [renderer, args, @exception]
|
24
|
+
else
|
25
|
+
"expected %p to escape %p as %p, but got %p" % [render, args, @expected, @rendered]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
RSpec::Matchers.define :parse do |*args|
|
2
|
+
match do |parser|
|
3
|
+
begin
|
4
|
+
@parsed = parser.parse(*args)
|
5
|
+
rescue Exception => e
|
6
|
+
@exception = e
|
7
|
+
false
|
8
|
+
else
|
9
|
+
if @expected ||= nil
|
10
|
+
@parsed == @expected
|
11
|
+
else
|
12
|
+
!!@parsed
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
chain :as do |*result|
|
18
|
+
@expected = parser.parse(*result)
|
19
|
+
end
|
20
|
+
|
21
|
+
failure_message do |parser|
|
22
|
+
if @exception ||= nil
|
23
|
+
"expected %p to parse %p, but got exception: %p" % [parser, args, @exception]
|
24
|
+
else
|
25
|
+
"expected %p to parse %p as %p, but got %p" % [parser, args, @expected, @parsed]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
RSpec::Matchers.define :render do |*args|
|
2
|
+
match do |renderer|
|
3
|
+
begin
|
4
|
+
@rendered = renderer.render(*args)
|
5
|
+
rescue Exception => e
|
6
|
+
@exception = e
|
7
|
+
false
|
8
|
+
else
|
9
|
+
if @expected ||= nil
|
10
|
+
@rendered == @expected
|
11
|
+
else
|
12
|
+
!!@rendered
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
chain :as do |result|
|
18
|
+
@expected = result
|
19
|
+
end
|
20
|
+
|
21
|
+
failure_message do |renderer|
|
22
|
+
if @exception ||= nil
|
23
|
+
"expected %p to render %p, but got exception: %p" % [renderer, args, @exception]
|
24
|
+
else
|
25
|
+
"expected %p to render %p as %p, but got %p" % [render, args, @expected, @rendered]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hansi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Konstantin Haase
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tool
|
@@ -71,7 +71,43 @@ email: konstantin.mailinglists@googlemail.com
|
|
71
71
|
executables: []
|
72
72
|
extensions: []
|
73
73
|
extra_rdoc_files: []
|
74
|
-
files:
|
74
|
+
files:
|
75
|
+
- ".gitignore"
|
76
|
+
- ".rspec"
|
77
|
+
- ".travis.yml"
|
78
|
+
- Gemfile
|
79
|
+
- LICENSE
|
80
|
+
- README.md
|
81
|
+
- hansi.gemspec
|
82
|
+
- hansi.png
|
83
|
+
- lib/hansi.rb
|
84
|
+
- lib/hansi/ansi_code.rb
|
85
|
+
- lib/hansi/color.rb
|
86
|
+
- lib/hansi/color_parser.rb
|
87
|
+
- lib/hansi/color_renderer.rb
|
88
|
+
- lib/hansi/mode_detector.rb
|
89
|
+
- lib/hansi/palettes.rb
|
90
|
+
- lib/hansi/sexp_renderer.rb
|
91
|
+
- lib/hansi/special.rb
|
92
|
+
- lib/hansi/string_renderer.rb
|
93
|
+
- lib/hansi/theme.rb
|
94
|
+
- lib/hansi/themes.rb
|
95
|
+
- lib/hansi/version.rb
|
96
|
+
- spec/hansi/color_parser_spec.rb
|
97
|
+
- spec/hansi/color_renderer_spec.rb
|
98
|
+
- spec/hansi/color_spec.rb
|
99
|
+
- spec/hansi/mode_detector_spec.rb
|
100
|
+
- spec/hansi/sexp_renderer_spec.rb
|
101
|
+
- spec/hansi/special_spec.rb
|
102
|
+
- spec/hansi/string_renderer_spec.rb
|
103
|
+
- spec/hansi/theme_spec.rb
|
104
|
+
- spec/hansi_spec.rb
|
105
|
+
- spec/support.rb
|
106
|
+
- spec/support/coverage.rb
|
107
|
+
- spec/support/env.rb
|
108
|
+
- spec/support/escape_matcher.rb
|
109
|
+
- spec/support/parse_matcher.rb
|
110
|
+
- spec/support/render_matcher.rb
|
75
111
|
homepage: https://github.com/rkh/hansi
|
76
112
|
licenses:
|
77
113
|
- MIT
|
@@ -92,9 +128,24 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
92
128
|
version: '0'
|
93
129
|
requirements: []
|
94
130
|
rubyforge_project:
|
95
|
-
rubygems_version: 2.
|
131
|
+
rubygems_version: 2.4.3
|
96
132
|
signing_key:
|
97
133
|
specification_version: 4
|
98
134
|
summary: Hipster ANSI color library
|
99
|
-
test_files:
|
135
|
+
test_files:
|
136
|
+
- spec/hansi/color_parser_spec.rb
|
137
|
+
- spec/hansi/color_renderer_spec.rb
|
138
|
+
- spec/hansi/color_spec.rb
|
139
|
+
- spec/hansi/mode_detector_spec.rb
|
140
|
+
- spec/hansi/sexp_renderer_spec.rb
|
141
|
+
- spec/hansi/special_spec.rb
|
142
|
+
- spec/hansi/string_renderer_spec.rb
|
143
|
+
- spec/hansi/theme_spec.rb
|
144
|
+
- spec/hansi_spec.rb
|
145
|
+
- spec/support.rb
|
146
|
+
- spec/support/coverage.rb
|
147
|
+
- spec/support/env.rb
|
148
|
+
- spec/support/escape_matcher.rb
|
149
|
+
- spec/support/parse_matcher.rb
|
150
|
+
- spec/support/render_matcher.rb
|
100
151
|
has_rdoc:
|