kolorit 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +21 -0
- data/README.md +130 -0
- data/lib/kolorit/linux.rb +132 -30
- data/lib/kolorit/version.rb +46 -1
- data/lib/kolorit/windows.rb +24 -0
- data/lib/kolorit.rb +23 -11
- metadata +40 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb708f14550d48ef0bc7715e54948c60310eae2b1b630c664727edec7ffd5a20
|
4
|
+
data.tar.gz: b03cb0001044f58e519b414235b49e9e6574e7af3c55f4a26dd2d67b8c768205
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7abc3838e802e519a0c1657ba29994abefb11aa331a9d147ffbea2529437e33ee9abb9f51f2be6ece8a6eed9d8dff691257504a7f733e28065ae0a52c64c05dd
|
7
|
+
data.tar.gz: e25dd52f426f1107cee3755d63001a7842692673e18f3342d18d5af342493be42f5ca0e24891d933338a0730b74b2625f25a5838a4c8a4332de5e03bd3f0b7b3
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2022 Alex3Dev
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
# Kolorit
|
2
|
+
|
3
|
+
![GIF Preview](demo.gif)
|
4
|
+
|
5
|
+
Still in early development stage, meaning windows support should come in near future.
|
6
|
+
For now, windows 10 users should be able to use it with `win32console` gem, but it's not tested yet.
|
7
|
+
|
8
|
+
Kolorit allow you to easily colorize any string, integer, array, hash, without touching core classes.
|
9
|
+
Use methods `#colorize` and `#kolorize` for power of Ruby blocks.
|
10
|
+
|
11
|
+
# How to install
|
12
|
+
|
13
|
+
GitHub repo is always updated before rubygems.
|
14
|
+
```bash
|
15
|
+
git clone https://www.github.com/alx3dev/kolorit.git
|
16
|
+
cd kolorit
|
17
|
+
bundle install
|
18
|
+
```
|
19
|
+
|
20
|
+
Install from rubygems:
|
21
|
+
```bash
|
22
|
+
gem install kolorit
|
23
|
+
```
|
24
|
+
|
25
|
+
# How to use:
|
26
|
+
|
27
|
+
- Include kolorit methods, allow use on string, integer, array, hash
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
# you can call method on string only if you include module outside of main namespace.
|
31
|
+
# that's what happen when you require kolorit
|
32
|
+
|
33
|
+
require 'kolorit'
|
34
|
+
'this is red string'.red
|
35
|
+
|
36
|
+
```
|
37
|
+
|
38
|
+
- Inlcude kolorit module to be used where you need it
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
# if you include it inside another class/module, call methods with arguments
|
42
|
+
|
43
|
+
require 'kolorit/linux' # or 'kolorit/windows'
|
44
|
+
|
45
|
+
include Kolorit::Linux # or ::Windows
|
46
|
+
|
47
|
+
blue 'some string'
|
48
|
+
red 'red bold string'
|
49
|
+
```
|
50
|
+
|
51
|
+
`#colorize` accept color as first argument, and string as second
|
52
|
+
`#kolorize` accept string as first argument and color as second
|
53
|
+
|
54
|
+
Both of this methods also accept block - `#colorize` block should return `:color`,
|
55
|
+
while `#kolorize` block should return `'string'` to be colorized.
|
56
|
+
|
57
|
+
You can allow methods to automatically `#puts` or `#print` colorized string:
|
58
|
+
|
59
|
+
```ruby
|
60
|
+
# this call without arguments is same as with :puts
|
61
|
+
Kolorit.output :puts
|
62
|
+
# or
|
63
|
+
Kolorit.output :print
|
64
|
+
|
65
|
+
# everything else is same as false
|
66
|
+
Kolorit.output false
|
67
|
+
```
|
68
|
+
|
69
|
+
Enable or disable colorization globally:
|
70
|
+
|
71
|
+
```ruby
|
72
|
+
Kolorit.disable
|
73
|
+
# or
|
74
|
+
Kolorit.enable
|
75
|
+
```
|
76
|
+
|
77
|
+
> Examples are better then documentation, so until I write docs...
|
78
|
+
|
79
|
+
**[example 1]**
|
80
|
+
```ruby
|
81
|
+
colorize(:green) do
|
82
|
+
if RUBY_VERSION.start_with?('3')
|
83
|
+
'Happy Coding!'.bold
|
84
|
+
else
|
85
|
+
'You should try Ruby 3, it is much better!'
|
86
|
+
end
|
87
|
+
end
|
88
|
+
```
|
89
|
+
|
90
|
+
**[example 2]**
|
91
|
+
```ruby
|
92
|
+
def color_line(param)
|
93
|
+
|
94
|
+
# check if kolorit is enabled (default: true)
|
95
|
+
status = Kolorit.enabled?
|
96
|
+
|
97
|
+
# enable kolorit if disabled
|
98
|
+
Kolorit.enable
|
99
|
+
|
100
|
+
# colorize param based on it's class
|
101
|
+
colorize(:cyan) do
|
102
|
+
case param.class.name
|
103
|
+
when 'String'
|
104
|
+
:green
|
105
|
+
when 'Integer'
|
106
|
+
:yellow
|
107
|
+
else
|
108
|
+
:gray
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
# keep module status same as before method action
|
113
|
+
Kolorit.disable unless status
|
114
|
+
end
|
115
|
+
```
|
116
|
+
|
117
|
+
**[example 3]**
|
118
|
+
```ruby
|
119
|
+
# enable automated #puts or #print
|
120
|
+
Kolorit.output :puts
|
121
|
+
|
122
|
+
# define message to print
|
123
|
+
message = 'Thank you Matz, for Amazing Ruby '
|
124
|
+
|
125
|
+
# print bold cyan message based on block evaluation
|
126
|
+
colorize(:bold) { RUBY_VERSION[0] == '3' ? message + '3' : message + 'language'}.cyan
|
127
|
+
|
128
|
+
# disable output
|
129
|
+
Kolorit.output false
|
130
|
+
```
|
data/lib/kolorit/linux.rb
CHANGED
@@ -1,52 +1,154 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative 'version' unless defined? Kolorit::VERSION
|
4
|
+
|
3
5
|
module Kolorit
|
6
|
+
##
|
7
|
+
# Color codes for Linux systems.
|
8
|
+
# Allow use of color methods in many different ways.
|
9
|
+
#
|
10
|
+
# Include methods outside of main module to use them directly
|
11
|
+
# on string (or integer, array, hash). This is done when you call
|
12
|
+
# `require 'kolorit'`. You can also just include it in class
|
13
|
+
# where you want to use it:
|
14
|
+
#
|
15
|
+
# @example Include Kolorit::Linux in just one class
|
16
|
+
#
|
17
|
+
# class MyClass
|
18
|
+
# require 'kolorit/linux'
|
19
|
+
# include Kolorit::Linux
|
20
|
+
# # rest_of_code
|
21
|
+
# end
|
22
|
+
#
|
23
|
+
# @example Use color named methods
|
24
|
+
#
|
25
|
+
# red 'Hello Red Ruby!'
|
26
|
+
# # or
|
27
|
+
# green 'Hello Green Ruby!'
|
28
|
+
#
|
29
|
+
# @example Use colorize/kolorize methods
|
30
|
+
#
|
31
|
+
# colorize :red, 'Hello Red Ruby!'
|
32
|
+
# # or
|
33
|
+
# kolorize 'Ruby goes green, again!', :green
|
34
|
+
#
|
35
|
+
# @example Colorize also accept block
|
36
|
+
#
|
37
|
+
# # colorize accept color as first argument
|
38
|
+
#
|
39
|
+
# colorize(:green) do
|
40
|
+
# case @var = SomeClass.call_some_method
|
41
|
+
# when 'some response'
|
42
|
+
# "do_something_with_response #{@var}"
|
43
|
+
# else
|
44
|
+
# # in this situation #red has precedence over #green
|
45
|
+
# red("Returned Error for #{@var}")
|
46
|
+
# end
|
47
|
+
# end
|
48
|
+
#
|
49
|
+
# # kolorize accept string as first argument
|
50
|
+
#
|
51
|
+
# kolorize(@result) { @result.is_a?(String) ? :green : :red }
|
52
|
+
#
|
53
|
+
# @see Kolorit
|
54
|
+
# @see https://www.github.com/alx3dev/kolorit/README.md
|
55
|
+
#
|
4
56
|
module Linux
|
5
|
-
def
|
57
|
+
def red(str = nil)
|
58
|
+
kolor(31, str)
|
59
|
+
end
|
60
|
+
|
61
|
+
def green(str = nil)
|
62
|
+
kolor(32, str)
|
63
|
+
end
|
64
|
+
|
65
|
+
def yellow(str = nil)
|
66
|
+
kolor(33, str)
|
67
|
+
end
|
6
68
|
|
7
|
-
def
|
69
|
+
def blue(str = nil)
|
70
|
+
kolor(34, str)
|
71
|
+
end
|
8
72
|
|
9
|
-
def
|
73
|
+
def pink(str = nil)
|
74
|
+
kolor(35, str)
|
75
|
+
end
|
10
76
|
|
11
|
-
def
|
77
|
+
def cyan(str = nil)
|
78
|
+
kolor(36, str)
|
79
|
+
end
|
12
80
|
|
13
|
-
def
|
81
|
+
def gray(str = nil)
|
82
|
+
kolor(37, str)
|
83
|
+
end
|
14
84
|
|
15
|
-
def
|
85
|
+
def bold(str = nil)
|
86
|
+
kolor(1, str)
|
87
|
+
end
|
16
88
|
|
17
|
-
def
|
89
|
+
def italic(str = nil)
|
90
|
+
kolor(3, str)
|
91
|
+
end
|
18
92
|
|
19
|
-
def
|
93
|
+
def underline(str = nil)
|
94
|
+
kolor(4, str)
|
95
|
+
end
|
20
96
|
|
21
|
-
def
|
97
|
+
def blink(str = nil)
|
98
|
+
kolor(5, str)
|
99
|
+
end
|
22
100
|
|
23
|
-
def
|
101
|
+
def reverse_color(str = nil)
|
102
|
+
kolor(7, str)
|
103
|
+
end
|
24
104
|
|
25
|
-
|
105
|
+
alias inverse reverse_color
|
26
106
|
|
27
|
-
def
|
107
|
+
def colorize(color, string = nil, &blk)
|
108
|
+
string = yield(blk) if block_given?
|
109
|
+
color = KOLORS[color.to_sym] unless color.is_a?(Integer)
|
110
|
+
kolor color, string
|
111
|
+
end
|
28
112
|
|
29
|
-
def
|
113
|
+
def kolorize(string, color = nil, &blk)
|
114
|
+
color = yield(blk) if block_given?
|
115
|
+
color = KOLORS[color.to_sym] unless color.is_a?(Integer)
|
116
|
+
kolor color, string
|
117
|
+
end
|
30
118
|
|
31
119
|
private
|
32
120
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
121
|
+
def kolor(color, param = nil)
|
122
|
+
param = self if param.nil?
|
123
|
+
string = color_style color, param
|
124
|
+
unless (1..7).include? color
|
125
|
+
case Kolorit.output?
|
126
|
+
when :puts then puts string
|
127
|
+
when :print then print string
|
128
|
+
end
|
129
|
+
end
|
130
|
+
string
|
131
|
+
end
|
132
|
+
|
133
|
+
def color_style(color, param)
|
134
|
+
return param unless Kolorit.enabled?
|
135
|
+
|
136
|
+
style = case color
|
137
|
+
when 1 then 22 # bold
|
138
|
+
when 3 then 23 # italic
|
139
|
+
when 4 then 24 # underline
|
140
|
+
when 5 then 25 # blink
|
141
|
+
when 7 then 27 # reverse_kolor
|
142
|
+
else 0
|
143
|
+
end
|
144
|
+
"\e[#{color}m#{param}\e[#{style}m"
|
50
145
|
end
|
51
146
|
end
|
147
|
+
##
|
148
|
+
# Lookup for color-code by name.
|
149
|
+
#
|
150
|
+
KOLORS = { red: 31, green: 32, yellow: 33,
|
151
|
+
blue: 34, pink: 35, cyan: 36,
|
152
|
+
gray: 37, bold: 1, italic: 3,
|
153
|
+
underline: 4, blink: 5, inverse: 7 }.freeze
|
52
154
|
end
|
data/lib/kolorit/version.rb
CHANGED
@@ -1,6 +1,51 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
#
|
4
|
+
# Check if we need **win32console** gem.
|
5
|
+
# Defined here because we need it in _.gemspec_ file.
|
6
|
+
#
|
7
|
+
# Check either to puts/print or just return colorized string
|
8
|
+
# Disable/Enable globally
|
9
|
+
#
|
3
10
|
module Kolorit
|
4
11
|
# gem version
|
5
|
-
VERSION = '0.
|
12
|
+
VERSION = '0.2.0'
|
13
|
+
|
14
|
+
class << self
|
15
|
+
def win_32_console?
|
16
|
+
win? && cygwin?
|
17
|
+
end
|
18
|
+
|
19
|
+
def win?
|
20
|
+
ENV['OS'] == 'Windows_NT'
|
21
|
+
end
|
22
|
+
|
23
|
+
def cygwin?
|
24
|
+
RUBY_PLATFORM =~ /cygwin/
|
25
|
+
end
|
26
|
+
|
27
|
+
def enabled?
|
28
|
+
@enable != false
|
29
|
+
end
|
30
|
+
|
31
|
+
def enable(color: true)
|
32
|
+
@enable = color.is_a? TrueClass
|
33
|
+
end
|
34
|
+
alias enable= enable
|
35
|
+
|
36
|
+
def disable
|
37
|
+
enable color: false
|
38
|
+
end
|
39
|
+
|
40
|
+
def output?
|
41
|
+
@output
|
42
|
+
end
|
43
|
+
|
44
|
+
def output(settings = :puts)
|
45
|
+
@output = settings
|
46
|
+
@output = nil if settings.is_a? FalseClass
|
47
|
+
@output = :puts if settings.is_a? TrueClass
|
48
|
+
end
|
49
|
+
alias output= output
|
50
|
+
end
|
6
51
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'version' unless defined? Kolorit::VERSION
|
4
|
+
|
5
|
+
module Kolorit
|
6
|
+
##
|
7
|
+
# Require `win32console` to work on windows 10.
|
8
|
+
#
|
9
|
+
module Windows
|
10
|
+
begin
|
11
|
+
raise StandardError, 'Windows require Cygwin' unless Kolorit.win_32_console?
|
12
|
+
|
13
|
+
require 'win32console'
|
14
|
+
rescue LoadError => e
|
15
|
+
raise 'Run: $ gem install win32console' if e.message =~ /win32console/
|
16
|
+
|
17
|
+
raise e.message
|
18
|
+
end
|
19
|
+
# Windows without cygwin is not supported, so if we come this far,
|
20
|
+
# include Linux color codes.
|
21
|
+
require_relative 'linux' unless defined? Kolorit::Linux
|
22
|
+
include Kolorit::Linux
|
23
|
+
end
|
24
|
+
end
|
data/lib/kolorit.rb
CHANGED
@@ -1,19 +1,31 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative 'kolorit/version'
|
3
|
+
require_relative 'kolorit/version' unless defined? Kolorit::VERSION
|
4
4
|
|
5
|
+
##
|
6
|
+
# Colorize terminal output without touching String class.
|
7
|
+
# Work for Linux and Mac, require `win32console` for Windows.
|
8
|
+
#
|
9
|
+
# @example Use it any way you like
|
10
|
+
# require 'kolorit'
|
11
|
+
#
|
12
|
+
# puts colorize :red, 'this is red string'
|
13
|
+
#
|
14
|
+
# puts blue 'this is blue string'
|
15
|
+
#
|
16
|
+
# puts 'this is green string'.green
|
17
|
+
#
|
18
|
+
# puts cyan 'this is cyan string, make it bold!'.bold
|
19
|
+
#
|
20
|
+
# @see Kolorit::Linux
|
21
|
+
#
|
5
22
|
module Kolorit
|
6
23
|
end
|
7
24
|
|
8
|
-
if
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
# include Kolorit::Windows unless RUBY_PLATFORM =~ /cygwin/
|
13
|
-
end
|
14
|
-
else
|
25
|
+
if Kolorit.win? && !defined?(Kolorit::Windows)
|
26
|
+
require_relative 'kolorit/windows'
|
27
|
+
include(Kolorit::Windows)
|
28
|
+
elsif !defined?(Kolorit::Linux)
|
15
29
|
require_relative 'kolorit/linux'
|
16
|
-
|
17
|
-
include Kolorit::Linux
|
18
|
-
end
|
30
|
+
include(Kolorit::Linux)
|
19
31
|
end
|
metadata
CHANGED
@@ -1,27 +1,59 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kolorit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- alx3dev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
12
|
-
dependencies:
|
11
|
+
date: 2022-02-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '13.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '13.0'
|
13
41
|
description: |
|
14
|
-
|
15
|
-
for
|
42
|
+
Colorize terminal output without touching core classes.
|
43
|
+
Work for Linux and Mac, require `win32console` for Windows.
|
44
|
+
Use on any class, auto #puts or #print, with power of ruby blocks.
|
16
45
|
email:
|
17
46
|
- alx3dev@gmail.com
|
18
47
|
executables: []
|
19
48
|
extensions: []
|
20
49
|
extra_rdoc_files: []
|
21
50
|
files:
|
51
|
+
- LICENSE
|
52
|
+
- README.md
|
22
53
|
- lib/kolorit.rb
|
23
54
|
- lib/kolorit/linux.rb
|
24
55
|
- lib/kolorit/version.rb
|
56
|
+
- lib/kolorit/windows.rb
|
25
57
|
homepage: https://www.github.com/alx3dev/kolorit
|
26
58
|
licenses:
|
27
59
|
- MIT
|
@@ -30,7 +62,7 @@ metadata:
|
|
30
62
|
homepage_uri: https://www.github.com/alx3dev/kolorit
|
31
63
|
source_code_uri: https://www.github.com/alx3dev/kolorit
|
32
64
|
changelog_uri: https://www.github.com/alx3dev/kolorit/CHANGELOG.md
|
33
|
-
documentation_uri: https://rubydoc.info/gems/kolorit
|
65
|
+
documentation_uri: https://rubydoc.info/gems/kolorit/0.2.0
|
34
66
|
post_install_message:
|
35
67
|
rdoc_options: []
|
36
68
|
require_paths:
|
@@ -40,17 +72,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
40
72
|
- - ">="
|
41
73
|
- !ruby/object:Gem::Version
|
42
74
|
version: 2.6.0
|
43
|
-
- - "<"
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: 4.0.0
|
46
75
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
47
76
|
requirements:
|
48
77
|
- - ">="
|
49
78
|
- !ruby/object:Gem::Version
|
50
79
|
version: '0'
|
51
80
|
requirements: []
|
52
|
-
rubygems_version: 3.
|
81
|
+
rubygems_version: 3.3.6
|
53
82
|
signing_key:
|
54
83
|
specification_version: 4
|
55
|
-
summary: Colorize terminal output
|
84
|
+
summary: Colorize terminal output on Linux, Mac and Windows.
|
56
85
|
test_files: []
|