ex_aequo 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 924b4f22f2046635087a0cb06cb7b5df172503192affbd528a8abfe159dd034d
4
- data.tar.gz: c193578103f9d284ff20a251fde1d316b2971c87323743c70829b9737594bc90
3
+ metadata.gz: aae17031917aa3f9f0321d0f71f66e55a132f53220de7614edea1aced743b989
4
+ data.tar.gz: f47174e7f94bb872469c44dc13a2aef2f1ad418d39ac743fec13359a934e5b46
5
5
  SHA512:
6
- metadata.gz: 36064ab0e650bfa6565278f6c6d2d15e358f5c41b0d01d1216972b7ea99564b9db8c1d5ec3346085daae4b153111dc7d0d192c36c445105843a14185f96db730
7
- data.tar.gz: 9a33c2e3065aed18c944790bf8b78ea3db2135891af65a1dcc914acb8477338e9ecbdede51700c0dc042f8518c239c1719d7fdb33feaf416de68d556ce560641
6
+ metadata.gz: 16bf984e4980c795890f5665ede3d3515c1c33872a023b346c689c2ffb83b293eb2ce06b76b363d6dc55c87f641c0cf72566b8dbad7456a742ffc0bb41d30a5f
7
+ data.tar.gz: 4294e88bd872a53906aa7155cdb53e0808ea4424a47170578b7faef553bcdee0ee11ef11e69abdea0a8855ab6942affe895124ce877529d3c8e388834cfb1688
data/README.md CHANGED
@@ -1,12 +1,18 @@
1
1
  [![CI](https://gitlab.com/robert_dober/rb_ex_aequo/workflows/CI/badge.svg)](https://gitlab.com/robert_dober/rb_ex_aequo/actions)
2
2
  [![Coverage Status](https://coveralls.io/repos/gitlab/robert_dober/rb_ex_aequo/badge.svg?branch=master)](https://coveralls.io/gitlab/robert_dober/rb_ex_aequo?branch=master)
3
- [![Gem Version](https://badge.fury.io/rb/rb_ex_aequo.svg)](http://badge.fury.io/rb/rb_ex_aequo)
4
- [![Gem Downloads](https://img.shields.io/gem/dt/rb_ex_aequo.svg)](https://rubygems.org/gems/rb_ex_aequo)
3
+ [![Gem Version](https://badge.fury.io/rb/ex_aequo.svg)](http://badge.fury.io/rb/ex_aequo)
4
+ [![Gem Downloads](https://img.shields.io/gem/dt/ex_aequo.svg)](https://rubygems.org/gems/ex_aequo)
5
5
 
6
- # RbExAequo
6
+ # ExAequo
7
+
8
+ gem install ex_aequo
7
9
 
8
10
  Some Tools
9
11
 
12
+
13
+
14
+ ##
15
+
10
16
  ## LICENSE
11
17
 
12
18
  Copyright 2022 Robert Dober robert.dober@gmail.com
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ExAequo
4
+ module Color
5
+ module Ansi
6
+ extend self
7
+
8
+ AnsiColorEscape = {
9
+ black: 30,
10
+ red: 31,
11
+ green: 32,
12
+ yellow: 33,
13
+ blue: 34,
14
+ magenta: 35,
15
+ cyan: 36,
16
+ white: 37
17
+ }.freeze
18
+
19
+ def ansi(name)
20
+ case AnsiColorEscape.fetch(name.to_s.downcase.to_sym, nil)
21
+ in nil
22
+ raise IllegalColor, "#{name} is not one of the 8 legal basic ansi color names: #{_legal_ansi_color_names}"
23
+ in value
24
+ "\e[#{value}m"
25
+ end
26
+ end
27
+
28
+ private
29
+
30
+ def _legal_ansi_color_names
31
+ AnsiColorEscape.keys.inspect
32
+ end
33
+ end
34
+ end
35
+ end
36
+ # SPDX-License-Identifier: Apache-2.0
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ExAequo
4
+ module Color
5
+ module Ansi256
6
+ extend self
7
+
8
+ def ansi256(color)
9
+ case color
10
+ in 1..256
11
+ "\e[38;5;#{color}m"
12
+ else
13
+ raise IllegalColor, "#{color.inspect} is not a color number between 1 and 256"
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ # SPDX-License-Identifier: Apache-2.0
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ExAequo
4
+ module Color
5
+ module Colorizer
6
+ extend self
7
+
8
+ def colorize(text, rgb: nil, ansi: nil, ansi256: nil, reset: true)
9
+ unless [rgb, ansi, ansi256].compact.size == 1
10
+ raise ArgumentError, 'need to specify exactly one of the following keyword arguments: :ansi, :ansi256, :rgb'
11
+ end
12
+
13
+ [
14
+ ExAequo::Color.rgb(*Array(rgb)),
15
+ text,
16
+ reset ? ExAequo::Color.reset : nil
17
+ ].join
18
+ end
19
+ end
20
+ end
21
+ end
22
+ # SPDX-License-Identifier: Apache-2.0
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ExAequo
4
+ module Color
5
+ module Rgb
6
+ extend self
7
+
8
+ def rgb(red, green = nil, blue = nil)
9
+ if green && blue
10
+ _rgb(red, green, blue)
11
+ else
12
+ raise ArgumentError, 'takes 1 or 3 parameters, given two' if green
13
+
14
+ _rgb(*_hex_to_triple(red))
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def _check_rgb(red, green, blue)
21
+ if _check_rgb_byte(red) && _check_rgb_byte(green) && _check_rgb_byte(blue)
22
+ :ok
23
+ else
24
+ "#{[red, green, blue]} is not a legal rgb specification, need three bytes (0..255)"
25
+ end
26
+ end
27
+
28
+ def _check_rgb_byte(byte)
29
+ case byte
30
+ in 0..255
31
+ true
32
+ else
33
+ false
34
+ end
35
+ end
36
+
37
+ LeadingHashRgx = %r{\A#}
38
+ def _hex_to_triple(hex)
39
+ chex = hex.sub(LeadingHashRgx, '')
40
+ case chex.grapheme_clusters.each_slice(2).map(&:join).map { Integer(_1, 16) }
41
+ in r, g, b
42
+ [r, g, b]
43
+ else
44
+ raise IllegalColor, "#{hex} is not a legal rgb hex string"
45
+ end
46
+ rescue ArgumentError
47
+ raise IllegalColor, "#{hex} is not a legal rgb hex string"
48
+ end
49
+
50
+ def _rgb(red, green, blue)
51
+ case _check_rgb(red, green, blue)
52
+ in :ok
53
+ "\e[38;2;#{red};#{green};#{blue}m"
54
+ in message
55
+ raise IllegalColor, message
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ # SPDX-License-Identifier: Apache-2.0
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'color/ansi'
4
+ require_relative 'color/ansi256'
5
+ require_relative 'color/rgb'
6
+
7
+ require_relative 'color/colorizer'
8
+
9
+ module ExAequo
10
+ module Color
11
+ extend self
12
+
13
+ class IllegalColor < RuntimeError; end
14
+
15
+ def ansi(color)
16
+ ExAequo::Color::Ansi.ansi(color)
17
+ end
18
+
19
+ def ansi256(color)
20
+ ExAequo::Color::Ansi256.ansi256(color)
21
+ end
22
+
23
+ def colorize(text, **params)
24
+ if ENV['NO_COLOR']
25
+ text
26
+ else
27
+ ExAequo::Color::Colorizer.colorize(text, **params)
28
+ end
29
+ end
30
+
31
+ def reset
32
+ "\e[0m"
33
+ end
34
+
35
+ def rgb(*args)
36
+ ExAequo::Color::Rgb.rgb(*args)
37
+ end
38
+ end
39
+ end
40
+ # SPDX-License-Identifier: Apache-2.0
@@ -2,7 +2,7 @@
2
2
 
3
3
  module ExAequo
4
4
  module Version
5
- VERSION = '0.1.0'
5
+ VERSION = '0.1.1'
6
6
  end
7
7
  end
8
8
  # SPDX-License-Identifier: Apache-2.0
data/lib/ex_aequo.rb ADDED
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ExAequo
4
+ end
5
+ require_relative 'ex_aequo/color'
6
+ require_relative 'ex_aequo/version'
7
+ # SPDX-License-Identifier: Apache-2.0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ex_aequo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Dober
@@ -20,6 +20,12 @@ extra_rdoc_files: []
20
20
  files:
21
21
  - LICENSE
22
22
  - README.md
23
+ - lib/ex_aequo.rb
24
+ - lib/ex_aequo/color.rb
25
+ - lib/ex_aequo/color/ansi.rb
26
+ - lib/ex_aequo/color/ansi256.rb
27
+ - lib/ex_aequo/color/colorizer.rb
28
+ - lib/ex_aequo/color/rgb.rb
23
29
  - lib/ex_aequo/version.rb
24
30
  homepage: https://gitlab.com/robert_dober/rb_ex_aequo
25
31
  licenses: