crayon 0.0.1 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +3 -4
- data/.gitignore +0 -10
- data/Gemfile +3 -0
- data/README.md +69 -0
- data/Rakefile +16 -46
- data/VERSION +1 -1
- data/lib/crayon.rb +80 -47
- data/spec/crayon_spec.rb +101 -0
- data/spec/helper.rb +8 -0
- data/spec/spec.opts +2 -0
- metadata +13 -34
- data/README.rdoc +0 -45
- data/test/helper.rb +0 -7
- data/test/test_crayon.rb +0 -27
data/.document
CHANGED
data/.gitignore
CHANGED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
# crayon
|
2
|
+
|
3
|
+
### current version : 0.0.3
|
4
|
+
|
5
|
+
[http://github.com/mikowitz/crayon][github]
|
6
|
+
|
7
|
+
## Description
|
8
|
+
|
9
|
+
A simple, flexible gem that provides an open-ended API to print colored and styled output to the terminal.
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
Install the gemcutter gem
|
14
|
+
|
15
|
+
~$ gem install gemcutter
|
16
|
+
|
17
|
+
Add gemcutter.org to your gem remote sources
|
18
|
+
|
19
|
+
~$ gem tumble
|
20
|
+
|
21
|
+
Download and install this gem
|
22
|
+
|
23
|
+
~$ gem install crayon
|
24
|
+
|
25
|
+
## Usage examples
|
26
|
+
|
27
|
+
To include this gem in a project
|
28
|
+
|
29
|
+
require 'crayon'
|
30
|
+
|
31
|
+
The following are all methods that `Crayon` understands, and should give you an idea of what is possible.
|
32
|
+
|
33
|
+
Crayon.blue("this will be printed as blue text")
|
34
|
+
Crayon.on_red("this will be printed on a red background")
|
35
|
+
Crayon.bold("this will be bold")
|
36
|
+
Crayon.underline_blue_on_yellow("this will be underlined blue text on a yellow background")
|
37
|
+
|
38
|
+
`Crayon` also provides intermediary methods `puts` and `print` which determine whether `Crayon` adds a newline to the end of the text being displayed.
|
39
|
+
By default, a newline is added.
|
40
|
+
|
41
|
+
Crayon.puts.blue("this is on a line by itself.")
|
42
|
+
Crayon.print.blue("the next line will be printed right next to this")
|
43
|
+
Crayon.puts.green("this will on the second line of output, but will create a newline.")
|
44
|
+
|
45
|
+
`puts` and `print` set an internal, persistent variable, so a specified newline presence or absence will last until `puts` or `print` is invoked again.
|
46
|
+
|
47
|
+
Crayon.print.blue("on the first line")
|
48
|
+
Crayon.green("also on the first line")
|
49
|
+
Crayon.red("also on the first line")
|
50
|
+
Crayon.puts.cyan("Also on the first line, but with a trailing newline")
|
51
|
+
Crayon.blue("On the second line by itself.")
|
52
|
+
|
53
|
+
## Flexibility
|
54
|
+
|
55
|
+
The order of elements in the method name is unimportant. For example
|
56
|
+
|
57
|
+
Color.bold_underline_blue_on_yellow("sample text")
|
58
|
+
|
59
|
+
will look the same as
|
60
|
+
|
61
|
+
Color.on_yellow_bold_blue_underline("sample text")
|
62
|
+
|
63
|
+
Check out `test/proof.rb` and `~$ rake proof` if you don't believe me.
|
64
|
+
|
65
|
+
## Copyright
|
66
|
+
|
67
|
+
Copyright (c) 2010 Michael Berkowitz. See LICENSE for details.
|
68
|
+
|
69
|
+
[github]: http://github.com/mikowitz/crayon "Crayon repository"
|
data/Rakefile
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'rubygems'
|
2
1
|
require 'rake'
|
3
2
|
|
4
3
|
begin
|
@@ -10,8 +9,6 @@ begin
|
|
10
9
|
gem.email = "michael.berkowitz@gmail.com"
|
11
10
|
gem.homepage = "http://github.com/mikowitz/crayon"
|
12
11
|
gem.authors = ["Michael Berkowitz"]
|
13
|
-
gem.add_development_dependency "tinytest", ">= 0"
|
14
|
-
gem.add_development_dependency "yard", ">= 0"
|
15
12
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
16
13
|
end
|
17
14
|
Jeweler::GemcutterTasks.new
|
@@ -19,58 +16,31 @@ rescue LoadError
|
|
19
16
|
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
20
17
|
end
|
21
18
|
|
22
|
-
require 'rake/
|
23
|
-
Rake::
|
24
|
-
|
25
|
-
|
26
|
-
test.verbose = true
|
19
|
+
require 'spec/rake/spectask'
|
20
|
+
Spec::Rake::SpecTask.new(:spec) do |spec|
|
21
|
+
spec.libs << "lib" << "spec"
|
22
|
+
spec.spec_files = FileList["spec/**/*_spec.rb"]
|
27
23
|
end
|
28
24
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
test.pattern = 'test/**/test_*.rb'
|
34
|
-
test.verbose = true
|
35
|
-
end
|
36
|
-
rescue LoadError
|
37
|
-
task :rcov do
|
38
|
-
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
39
|
-
end
|
25
|
+
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
26
|
+
spec.libs << "lib" << "spec"
|
27
|
+
spec.pattern = "spec/**/*_spec.rb"
|
28
|
+
spec.rcov = true
|
40
29
|
end
|
41
30
|
|
42
|
-
task :
|
43
|
-
|
44
|
-
begin
|
45
|
-
require 'reek/adapters/rake_task'
|
46
|
-
Reek::RakeTask.new do |t|
|
47
|
-
t.fail_on_error = true
|
48
|
-
t.verbose = false
|
49
|
-
t.source_files = 'lib/**/*.rb'
|
50
|
-
end
|
51
|
-
rescue LoadError
|
52
|
-
task :reek do
|
53
|
-
abort "Reek is not available. In order to run reek, you must: sudo gem install reek"
|
54
|
-
end
|
55
|
-
end
|
31
|
+
task :spec => :check_dependencies
|
32
|
+
task :default => :spec
|
56
33
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
RoodiTask.new do |t|
|
61
|
-
t.verbose = false
|
62
|
-
end
|
63
|
-
rescue LoadError
|
64
|
-
task :roodi do
|
65
|
-
abort "Roodi is not available. In order to run roodi, you must: sudo gem install roodi"
|
66
|
-
end
|
34
|
+
desc "'Proof is the bottom line for everyone' -- Paul Simon"
|
35
|
+
task :proof do
|
36
|
+
system "ruby test/proof.rb"
|
67
37
|
end
|
68
38
|
|
69
|
-
task :default => :test
|
70
|
-
|
71
39
|
begin
|
72
40
|
require 'yard'
|
73
|
-
YARD::Rake::YardocTask.new
|
41
|
+
YARD::Rake::YardocTask.new do |t|
|
42
|
+
t.options = ['--no-private', '-mmarkdown']
|
43
|
+
end
|
74
44
|
rescue LoadError
|
75
45
|
task :yardoc do
|
76
46
|
abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.5
|
data/lib/crayon.rb
CHANGED
@@ -1,75 +1,108 @@
|
|
1
1
|
module Crayon
|
2
2
|
extend self
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
"red" => 1,
|
9
|
-
"green" => 2,
|
10
|
-
"yellow" => 3,
|
11
|
-
"blue" => 4,
|
12
|
-
"magenta" => 5,
|
13
|
-
"cyan" => 6,
|
14
|
-
"white" => 7
|
15
|
-
}
|
16
|
-
|
17
|
-
FORMATS = {
|
18
|
-
"bold" => 1,
|
19
|
-
"underline" => 4
|
20
|
-
}
|
4
|
+
class << self
|
5
|
+
# @private
|
6
|
+
attr_accessor :foreground, :background, :formatting, :method_name, :color, :newline
|
7
|
+
end
|
21
8
|
|
9
|
+
# @private
|
10
|
+
COLORS = { "black" => 0, "red" => 1, "green" => 2, "yellow" => 3, "blue" => 4, "magenta" => 5, "cyan" => 6, "white" => 7 }
|
11
|
+
# @private
|
12
|
+
FORMATS = { "bold" => 1, "underline" => 4 }
|
13
|
+
# @private
|
22
14
|
TERMINATION_STRING = "\e[0m"
|
23
15
|
|
24
|
-
|
16
|
+
# @private
|
17
|
+
def newline?; @newline.nil? ? true : @newline; end
|
18
|
+
# @private
|
25
19
|
def io; $stderr; end
|
26
20
|
|
27
|
-
def self.print;
|
21
|
+
def self.print; @newline = false; return Crayon; end
|
28
22
|
|
29
|
-
def self.puts;
|
23
|
+
def self.puts; @newline = true; return Crayon; end
|
30
24
|
|
31
25
|
def method_missing(method_name, string)
|
32
|
-
|
33
|
-
|
26
|
+
@method_name = method_name
|
27
|
+
parse_method_name
|
28
|
+
io.print prepare_string(string)
|
29
|
+
nullify_variables
|
30
|
+
end
|
31
|
+
|
32
|
+
##
|
33
|
+
# Converts a method name into color and formatting parameters
|
34
|
+
# @example
|
35
|
+
# Crayon.parse_method_name(:bold_red_on_green) #=> "['red', 'green', ['bold']]"
|
36
|
+
# @private
|
37
|
+
def parse_method_name
|
38
|
+
@method_name = @method_name.to_s.split("_")
|
39
|
+
@background = parse_background
|
40
|
+
@foreground = parse_foreground
|
41
|
+
@formatting = parse_formatting
|
42
|
+
end
|
43
|
+
|
44
|
+
# @private
|
45
|
+
def parse_background
|
46
|
+
_idx = @method_name.index("on")
|
47
|
+
if _idx
|
48
|
+
@method_name.delete("on")
|
49
|
+
return @method_name.delete_at(_idx)
|
50
|
+
end
|
34
51
|
end
|
35
52
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
53
|
+
# @private
|
54
|
+
def parse_foreground
|
55
|
+
@method_name.find {|color| COLORS.keys.include?(color) }
|
56
|
+
end
|
57
|
+
|
58
|
+
# @private
|
59
|
+
def parse_formatting
|
60
|
+
@method_name.select {|format| FORMATS.keys.include?(format) }
|
61
|
+
end
|
62
|
+
|
63
|
+
##
|
64
|
+
# Builds output string with color escape characters.
|
65
|
+
# @example
|
66
|
+
# Crayon.prepare_string('hello', 'red', 'blue', ['underline']) #=> "\e[31m\e[44m\e[4mhello\e[0m"
|
67
|
+
# @private
|
68
|
+
def prepare_string(string) #, foreground=nil, background=nil, formatting=[])
|
69
|
+
[ prepare_foreground_color,
|
70
|
+
prepare_background_color,
|
71
|
+
prepare_formatting,
|
41
72
|
string,
|
42
|
-
TERMINATION_STRING,
|
73
|
+
(TERMINATION_STRING if @foreground || @background || !@formatting.empty?),
|
43
74
|
(newline? ? "\n" : "")
|
44
75
|
].join("")
|
45
76
|
end
|
46
77
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
_background_color = _name.delete_at(_idx)
|
52
|
-
end
|
53
|
-
_foreground_color = _name.find {|color| COLORS.keys.include?(color) }
|
54
|
-
_formatting = _name.select{|format| FORMATS.keys.include?(format) }
|
55
|
-
[_foreground_color, _background_color, _formatting]
|
78
|
+
# @private
|
79
|
+
def prepare_foreground_color
|
80
|
+
@color = @foreground
|
81
|
+
handle_color(3)
|
56
82
|
end
|
57
83
|
|
58
|
-
|
59
|
-
|
84
|
+
# @private
|
85
|
+
def prepare_background_color
|
86
|
+
@color = @background
|
87
|
+
handle_color(4)
|
60
88
|
end
|
61
89
|
|
62
|
-
|
63
|
-
|
90
|
+
# @private
|
91
|
+
def prepare_formatting
|
92
|
+
return "" if @formatting.empty?
|
93
|
+
@formatting.map{|format| "\e[#{FORMATS[format]}m"}.join("")
|
64
94
|
end
|
65
95
|
|
66
|
-
|
67
|
-
|
68
|
-
|
96
|
+
# @private
|
97
|
+
def handle_color(lead)
|
98
|
+
return "" unless @color
|
99
|
+
"\e[#{lead}#{COLORS[@color]}m"
|
69
100
|
end
|
70
101
|
|
71
|
-
|
72
|
-
|
73
|
-
|
102
|
+
# @private
|
103
|
+
def nullify_variables
|
104
|
+
@foreground, @background, @formatting = nil, nil, []
|
105
|
+
@method_name, @color = nil, nil
|
106
|
+
io.flush
|
74
107
|
end
|
75
108
|
end
|
data/spec/crayon_spec.rb
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/helper")
|
2
|
+
|
3
|
+
def test_parse_method_name(input, *output)
|
4
|
+
describe "for input :#{input}" do
|
5
|
+
before do
|
6
|
+
Crayon.method_name = input
|
7
|
+
Crayon.parse_method_name
|
8
|
+
@fore, @back, @form = output
|
9
|
+
end
|
10
|
+
after { [:foreground, :background, :formatting].each {|method| Crayon.send(:"#{method}=", nil) } }
|
11
|
+
it "should return #{@fore.inspect} for foreground" do
|
12
|
+
Crayon.foreground.should == @fore
|
13
|
+
end
|
14
|
+
it "should return #{@back.inspect} for background" do
|
15
|
+
Crayon.background.should == @back
|
16
|
+
end
|
17
|
+
it "should return #{@form.inspect} for formatting" do
|
18
|
+
Crayon.formatting.should == @form
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_prepare_string(expected_output, *args)
|
24
|
+
it "should return correctly for #{args.inspect}" do
|
25
|
+
Crayon.foreground = args.fetch(1) { nil }
|
26
|
+
Crayon.background = args.fetch(2) { nil }
|
27
|
+
Crayon.formatting = args.fetch(3) { [] }
|
28
|
+
Crayon.prepare_string(args.first).should == expected_output
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "Crayon" do
|
33
|
+
it "should, by default, add line breaks" do
|
34
|
+
Crayon.newline?.should be
|
35
|
+
end
|
36
|
+
describe "after a print command" do
|
37
|
+
before { Crayon.print }
|
38
|
+
it "should not add line breaks" do
|
39
|
+
Crayon.newline?.should_not be
|
40
|
+
end
|
41
|
+
end
|
42
|
+
describe "after a puts command" do
|
43
|
+
before { Crayon.puts }
|
44
|
+
it "should add line breaks" do
|
45
|
+
Crayon.newline?.should be
|
46
|
+
end
|
47
|
+
end
|
48
|
+
describe "method_missing" do
|
49
|
+
describe "should call :prepare string" do
|
50
|
+
before { Crayon.should_receive(:prepare_string).with("hello") }
|
51
|
+
it "when Crayon.red is called" do
|
52
|
+
Crayon.red("hello")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
describe "should unset instance variables after being called" do
|
56
|
+
before { Crayon.bold_red_on_green("hello") }
|
57
|
+
it "should unset foreground" do
|
58
|
+
Crayon.foreground.should be_nil
|
59
|
+
end
|
60
|
+
it "should unset background" do
|
61
|
+
Crayon.background.should be_nil
|
62
|
+
end
|
63
|
+
it "should unset formatting" do
|
64
|
+
Crayon.formatting.should be_empty
|
65
|
+
end
|
66
|
+
it "should unset method_name" do
|
67
|
+
Crayon.method_name.should be_nil
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
describe "parse_method_name" do
|
72
|
+
test_parse_method_name(:red, "red", nil, [])
|
73
|
+
test_parse_method_name(:on_red, nil, "red", [])
|
74
|
+
test_parse_method_name(:bold, nil, nil, ["bold"])
|
75
|
+
|
76
|
+
test_parse_method_name(:blue_on_green, "blue", "green", [])
|
77
|
+
test_parse_method_name(:bold_cyan_on_magenta, "cyan", "magenta", ["bold"])
|
78
|
+
|
79
|
+
test_parse_method_name(:red_green, "red", nil, [])
|
80
|
+
test_parse_method_name(:red_bold_underline, "red", nil, ["bold", "underline"])
|
81
|
+
test_parse_method_name(:underline_on_green_bold, nil, "green", ["underline", "bold"])
|
82
|
+
end
|
83
|
+
|
84
|
+
describe "prepare_string" do
|
85
|
+
describe "with no line break" do
|
86
|
+
before { Crayon.print }
|
87
|
+
test_prepare_string("hello", "hello")
|
88
|
+
test_prepare_string("\e[31mhello\e[0m", "hello", "red", nil)
|
89
|
+
test_prepare_string("\e[33m\e[47mhello\e[0m", "hello", "yellow", "white")
|
90
|
+
test_prepare_string("\e[4m\e[1mhello\e[0m", "hello", nil, nil, ["underline", "bold"])
|
91
|
+
end
|
92
|
+
|
93
|
+
describe "with a line break" do
|
94
|
+
before { Crayon.puts }
|
95
|
+
test_prepare_string("hello\n", "hello")
|
96
|
+
test_prepare_string("\e[31mhello\e[0m\n", "hello", "red", nil)
|
97
|
+
test_prepare_string("\e[33m\e[47mhello\e[0m\n", "hello", "yellow", "white")
|
98
|
+
test_prepare_string("\e[4m\e[1mhello\e[0m\n", "hello", nil, nil, ["underline", "bold"])
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
data/spec/helper.rb
ADDED
data/spec/spec.opts
ADDED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 5
|
9
|
+
version: 0.0.5
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Michael Berkowitz
|
@@ -14,33 +14,10 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-04-21 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
|
-
dependencies:
|
20
|
-
|
21
|
-
name: tinytest
|
22
|
-
prerelease: false
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
-
requirements:
|
25
|
-
- - ">="
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
segments:
|
28
|
-
- 0
|
29
|
-
version: "0"
|
30
|
-
type: :development
|
31
|
-
version_requirements: *id001
|
32
|
-
- !ruby/object:Gem::Dependency
|
33
|
-
name: yard
|
34
|
-
prerelease: false
|
35
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - ">="
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
segments:
|
40
|
-
- 0
|
41
|
-
version: "0"
|
42
|
-
type: :development
|
43
|
-
version_requirements: *id002
|
19
|
+
dependencies: []
|
20
|
+
|
44
21
|
description: A simple, flexible gem that provides an open-ended API to print colored and styled output to the terminal.
|
45
22
|
email: michael.berkowitz@gmail.com
|
46
23
|
executables: []
|
@@ -49,17 +26,19 @@ extensions: []
|
|
49
26
|
|
50
27
|
extra_rdoc_files:
|
51
28
|
- LICENSE
|
52
|
-
- README.
|
29
|
+
- README.md
|
53
30
|
files:
|
54
31
|
- .document
|
55
32
|
- .gitignore
|
33
|
+
- Gemfile
|
56
34
|
- LICENSE
|
57
|
-
- README.
|
35
|
+
- README.md
|
58
36
|
- Rakefile
|
59
37
|
- VERSION
|
60
38
|
- lib/crayon.rb
|
61
|
-
-
|
62
|
-
-
|
39
|
+
- spec/crayon_spec.rb
|
40
|
+
- spec/helper.rb
|
41
|
+
- spec/spec.opts
|
63
42
|
has_rdoc: true
|
64
43
|
homepage: http://github.com/mikowitz/crayon
|
65
44
|
licenses: []
|
@@ -91,5 +70,5 @@ signing_key:
|
|
91
70
|
specification_version: 3
|
92
71
|
summary: a new version of 'color' with a less common name.
|
93
72
|
test_files:
|
94
|
-
-
|
95
|
-
-
|
73
|
+
- spec/crayon_spec.rb
|
74
|
+
- spec/helper.rb
|
data/README.rdoc
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
= crayon
|
2
|
-
|
3
|
-
=== current version : 0.0.2
|
4
|
-
|
5
|
-
http://github.com/mikowitz/crayon
|
6
|
-
|
7
|
-
== Description
|
8
|
-
|
9
|
-
A simple, flexible gem that provides an open-ended API to print colored and styled output to the terminal.
|
10
|
-
|
11
|
-
== Installation
|
12
|
-
|
13
|
-
Install the gemcutter gem
|
14
|
-
~$ gem install gemcutter
|
15
|
-
Add gemcutter.org to your gem remote sources
|
16
|
-
~$ gem tumble
|
17
|
-
Download and install this gem
|
18
|
-
~$ gem install crayon
|
19
|
-
|
20
|
-
== Usage examples
|
21
|
-
|
22
|
-
To include this gem in a project
|
23
|
-
require 'crayon'
|
24
|
-
|
25
|
-
The following are all methods that <code>Crayon</code> understands, and should give you an idea of what is possible.
|
26
|
-
|
27
|
-
Crayon.blue("this will be printed as blue text")
|
28
|
-
Crayon.on_red("this will be printed on a red background")
|
29
|
-
Crayon.bold("this will be bold")
|
30
|
-
Crayon.underline_blue_on_yellow("this will be underlined blue text on a yellow background")
|
31
|
-
|
32
|
-
The order of elements in the method name is also unimportant. For example
|
33
|
-
|
34
|
-
Color.bold_underline_blue_on_yellow("sample text")
|
35
|
-
|
36
|
-
will look the same as
|
37
|
-
|
38
|
-
Color.on_yellow_bold_blue_underline("sample text")
|
39
|
-
|
40
|
-
Check out <code>test/proof.rb"</code> and <code>`rake proof`</code> if you don't believe me.
|
41
|
-
|
42
|
-
== Copyright
|
43
|
-
|
44
|
-
Copyright (c) 2010 Michael Berkowitz. See LICENSE for details.
|
45
|
-
|
data/test/helper.rb
DELETED
data/test/test_crayon.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
include TinyTest
|
4
|
-
|
5
|
-
is { Crayon.newline? } # by default?
|
6
|
-
|
7
|
-
is {
|
8
|
-
Crayon.print
|
9
|
-
not Crayon.newline?
|
10
|
-
}
|
11
|
-
|
12
|
-
is {
|
13
|
-
Crayon.puts
|
14
|
-
Crayon.newline?
|
15
|
-
}
|
16
|
-
|
17
|
-
# Crayon.parse_method_name
|
18
|
-
does { Crayon.parse_method_name(:red) == ["red", nil, []] }
|
19
|
-
does { Crayon.parse_method_name(:on_red) == [nil, "red", []] }
|
20
|
-
does { Crayon.parse_method_name(:bold) == [nil, nil, ["bold"]] }
|
21
|
-
|
22
|
-
does { Crayon.parse_method_name(:blue_on_green) == ["blue", "green", []] }
|
23
|
-
does { Crayon.parse_method_name(:bold_cyan_on_magenta) == ["cyan", "magenta", ["bold"]] }
|
24
|
-
|
25
|
-
does { Crayon.parse_method_name(:red_green) == ["red", nil, []] }
|
26
|
-
does { Crayon.parse_method_name(:red_bold_underline) == ["red", nil, ["bold", "underline"]] }
|
27
|
-
does { Crayon.parse_method_name(:underline_on_green_bold) == [nil, "green", ["underline", "bold"]] }
|