concolor 0.0.1 → 1.0.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d9e9fd05bfc0ea172b309e228d210cf66f0e65fb
4
- data.tar.gz: 8d9c36c5e198bcc9520d697441139c87b954026f
2
+ SHA256:
3
+ metadata.gz: d5a41a01b07da3fbebfd84f064f85b9466f8a7fabbb464782ac6598b29e0e1c9
4
+ data.tar.gz: 0006e729b5473a84ac980cbd9f2284ec23da460dbaa1a012b9e8dca26e83f12b
5
5
  SHA512:
6
- metadata.gz: 0c5ef66dcb2e3c645ecadfa16b711b375f32620912534d62db377206b3c9cc10ed148584e6484773a8bea613c0d510cc2ac44b29e3d56bbb53d153c3ab929854
7
- data.tar.gz: f390b29a7b64b9225af2d036d5de046e8cc054327165df67884a55644735944b3461db75567bf858e3c6f4fe4c97ac33eadcbc74bc80c0401b53e241524028be
6
+ metadata.gz: d1dcb670e57eddba7fc42e7bcfb85e765ae6ca33c9e66cffed513d5926f82548a5ff7b43396f2fe48050cb6e3380e42bb9d7b9e79409d8fe62a37e757b38e863
7
+ data.tar.gz: c2c91fc48edcb91c6da5ca7d37a90a2c71ce46370f6e0b4a15f15826bd66abbf288510cf18c4ba2a65856f8200ef4f2340a0207d572e23818b19869a218c4ae2
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2015 RubyBeast
1
+ Copyright (c) 2022 BitForge
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,23 +1,87 @@
1
- # Concolor
1
+ # :computer: Concolor
2
2
 
3
- TODO: Write a gem description
3
+ With `Concolor` you can change the fore- and background colors and text decorations when rendering text on terminals supporting ANSI escape codes. It adds the `concolor` method to `String`.
4
+
5
+ [![Gem Version](https://badge.fury.io/rb/concolor.svg)](https://badge.fury.io/rb/concolor) [![Ruby CI](https://github.com/bf-rb/concolor/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/bf-rb/concolor/actions) [![GitHub](https://img.shields.io/github/license/bf-rb/concolor?label=License)](https://github.com/bf-rb/concolor/blob/main/LICENSE.txt) [![DOC](https://img.shields.io/badge/DOC-rubydoc.org-blue)](https://rubydoc.org/gems/concolor/1.0.0)
4
6
 
5
7
  ## Installation
6
8
 
7
- Add this line to your application's Gemfile:
9
+ Just install the *concolor* gem
10
+
11
+ ```bash
12
+ gem install concolor
13
+ ```
14
+
15
+ or if you use **bundler** put this in your `Gemfile`
8
16
 
9
17
  ```ruby
10
18
  gem 'concolor'
11
19
  ```
12
20
 
13
- And then execute:
21
+ ## Usage
14
22
 
15
- $ bundle
23
+ ```ruby
24
+ require 'concolor'
16
25
 
17
- Or install it yourself as:
26
+ puts 'Some text'.concolor(:bold, :red)
27
+ # "\033[31;1mSome text\033[0m"
28
+ ```
18
29
 
19
- $ gem install concolor
30
+ ### Foreground color (text)
20
31
 
21
- ## Usage
32
+ | Symbol | | code |
33
+ | :--------------- | :-------: | :--: |
34
+ | `:default` | | *29* |
35
+ | `:black` | ![#000000](https://via.placeholder.com/15/000000/000000.png) | *30* |
36
+ | `:red` | ![#CD0000](https://via.placeholder.com/15/CD0000/CD0000.png) | *31* |
37
+ | `:green` | ![#00CD00](https://via.placeholder.com/15/00CD00/00CD00.png) | *32* |
38
+ | `:yellow` | ![#CDCD00](https://via.placeholder.com/15/CDCD00/CDCD00.png) | *33* |
39
+ | `:blue` | ![#1E90FF](https://via.placeholder.com/15/1E90FF/1E90FF.png) | *34* |
40
+ | `:magenta` | ![#CD00CD](https://via.placeholder.com/15/CD00CD/CD00CD.png) | *35* |
41
+ | `:cyan` | ![#00CDCD](https://via.placeholder.com/15/00CDCD/00CDCD.png) | *36* |
42
+ | `:light_gray` | ![#E5E5E5](https://via.placeholder.com/15/E5E5E5/E5E5E5.png) | *37* |
43
+ | `:dark_gray` | ![#4C4C4C](https://via.placeholder.com/15/4C4C4C/4C4C4C.png) | *90* |
44
+ | `:light_red` | ![#FF0000](https://via.placeholder.com/15/FF0000/FF0000.png) | *91* |
45
+ | `:light_green` | ![#00FF00](https://via.placeholder.com/15/00FF00/00FF00.png) | *92* |
46
+ | `:light_yellow` | ![#FFFF00](https://via.placeholder.com/15/FFFF00/FFFF00.png) | *93* |
47
+ | `:light_blue` | ![#4682B4](https://via.placeholder.com/15/4682B4/4682B4.png) | *94* |
48
+ | `:light_magenta` | ![#FF00FF](https://via.placeholder.com/15/FF00FF/FF00FF.png) | *95* |
49
+ | `:light_cyan` | ![#00FFFF](https://via.placeholder.com/15/00FFFF/00FFFF.png) | *96* |
50
+ | `:white` | ![#FFFFFF](https://via.placeholder.com/15/FFFFFF/FFFFFF.png) | *97* |
51
+
52
+ ### Background color
53
+
54
+ | Symbol | | code |
55
+ | :------------------ | :-------: | :---: |
56
+ | `:bg_default` | | *49* |
57
+ | `:bg_black` | ![#000000](https://via.placeholder.com/15/000000/000000.png) | *40* |
58
+ | `:bg_red` | ![#CD0000](https://via.placeholder.com/15/CD0000/CD0000.png) | *41* |
59
+ | `:bg_green` | ![#00CD00](https://via.placeholder.com/15/00CD00/00CD00.png) | *42* |
60
+ | `:bg_yellow` | ![#CDCD00](https://via.placeholder.com/15/CDCD00/CDCD00.png) | *43* |
61
+ | `:bg_blue` | ![#1E90FF](https://via.placeholder.com/15/1E90FF/1E90FF.png) | *44* |
62
+ | `:bg_magenta` | ![#CD00CD](https://via.placeholder.com/15/CD00CD/CD00CD.png) | *45* |
63
+ | `:bg_cyan` | ![#00CDCD](https://via.placeholder.com/15/00CDCD/00CDCD.png) | *46* |
64
+ | `:bg_light_gray` | ![#E5E5E5](https://via.placeholder.com/15/E5E5E5/E5E5E5.png) | *47* |
65
+ | `:bg_dark_gray` | ![#4C4C4C](https://via.placeholder.com/15/4C4C4C/4C4C4C.png) | *100* |
66
+ | `:bg_light_red` | ![#FF0000](https://via.placeholder.com/15/FF0000/FF0000.png) | *101* |
67
+ | `:bg_light_green` | ![#00FF00](https://via.placeholder.com/15/00FF00/00FF00.png) | *102* |
68
+ | `:bg_light_yellow` | ![#FFFF00](https://via.placeholder.com/15/FFFF00/FFFF00.png) | *103* |
69
+ | `:bg_light_blue` | ![#4682B4](https://via.placeholder.com/15/4682B4/4682B4.png) | *104* |
70
+ | `:bg_light_magenta` | ![#FF00FF](https://via.placeholder.com/15/FF00FF/FF00FF.png) | *105* |
71
+ | `:bg_light_cyan` | ![#00FFFF](https://via.placeholder.com/15/00FFFF/00FFFF.png) | *106* |
72
+ | `:bg_white` | ![#FFFFFF](https://via.placeholder.com/15/FFFFFF/FFFFFF.png) | *107* |
73
+
74
+ ### Mode (modifying the style of text)
22
75
 
23
- TODO: Write usage instructions here
76
+ | Symbol | Description | code |
77
+ | :------------ | :---------- | :---: |
78
+ | `:reset` | Reset all SGR effects to their default | *0* |
79
+ | `:bold` | Bold or increased intensity | *1* |
80
+ | `:faint` | Faint or decreased intensity | *2* |
81
+ | `:italic` | Italic | *3* |
82
+ | `:underline` | Singly underlined | *4* |
83
+ | `:blink` | Blink (slow) | *5* |
84
+ | `:blink_fast` | Blink (fast) | *6* |
85
+ | `:reverse` | Reverse (invert the foreground and background colors) | *7* |
86
+ | `:hide` | Hidden (useful for passwords) | *8* |
87
+ | `:cross` | Cross-out | *9* |
data/Rakefile CHANGED
@@ -1 +1,12 @@
1
- require 'bundler/gem_tasks'
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ require 'rubocop/rake_task'
9
+
10
+ RuboCop::RakeTask.new
11
+
12
+ task default: %i[spec rubocop]
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Concolor
4
+ # Extension module for String class
5
+ module Extension
6
+ # @param options [Array<Symbol>]
7
+ # @return [Concolor::String]
8
+ def concolor(*options)
9
+ ::Concolor::String.new(to_s, options: options)
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Concolor
4
+ module Mappers
5
+ module BgColor
6
+ DATA = {
7
+ bg_default: 49,
8
+ bg_black: 40,
9
+ bg_red: 41,
10
+ bg_green: 42,
11
+ bg_yellow: 43,
12
+ bg_blue: 44,
13
+ bg_magenta: 45,
14
+ bg_cyan: 46,
15
+ bg_light_gray: 47,
16
+ bg_dark_gray: 100,
17
+ bg_light_red: 101,
18
+ bg_light_green: 102,
19
+ bg_light_yellow: 103,
20
+ bg_light_blue: 104,
21
+ bg_light_magenta: 105,
22
+ bg_light_cyan: 106,
23
+ bg_white: 107
24
+ }.freeze
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Concolor
4
+ module Mappers
5
+ module Color
6
+ DATA = {
7
+ default: 39,
8
+ black: 30,
9
+ red: 31,
10
+ green: 32,
11
+ yellow: 33,
12
+ blue: 34,
13
+ magenta: 35,
14
+ cyan: 36,
15
+ light_gray: 37,
16
+ dark_gray: 90,
17
+ light_red: 91,
18
+ light_green: 92,
19
+ light_yellow: 93,
20
+ light_blue: 94,
21
+ light_magenta: 95,
22
+ light_cyan: 96,
23
+ white: 97
24
+ }.freeze
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Concolor
4
+ module Mappers
5
+ module Mode
6
+ DATA = {
7
+ reset: 0,
8
+ bold: 1,
9
+ faint: 2,
10
+ italic: 3,
11
+ underline: 4,
12
+ blink: 5,
13
+ blink_fast: 6,
14
+ reverse: 7,
15
+ hide: 8,
16
+ cross: 9
17
+ }.freeze
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Concolor
4
+ # ANSI-color & modes mappers
5
+ module Mappers
6
+ autoload :Color, 'concolor/mappers/color'
7
+ autoload :BgColor, 'concolor/mappers/bg_color'
8
+ autoload :Mode, 'concolor/mappers/mode'
9
+ end
10
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Concolor
4
+ # Extension module for String class
5
+ class String
6
+ # @param str [String] some string object
7
+ # @param options [Array<Symbol>]
8
+ def initialize(str = '', options: [])
9
+ @str = str
10
+ parsed = parse_options!(options)
11
+
12
+ @color = ::Concolor::Mappers::Color::DATA[parsed[:colors].first]
13
+ @bg_color = ::Concolor::Mappers::BgColor::DATA[parsed[:bg_colors].first]
14
+ @modes = parsed[:modes].map do |mode|
15
+ Concolor::Mappers::Mode::DATA[mode]
16
+ end
17
+ end
18
+
19
+ # To string
20
+ # @return [String]
21
+ def to_s
22
+ "\033[#{style}m#{@str}\033[0m"
23
+ end
24
+
25
+ # def [](key)
26
+ # self
27
+ # end
28
+
29
+ alias inspect to_s
30
+
31
+ private
32
+
33
+ # Parse options
34
+ # @param options [Array<Symbol>]
35
+ # @return [Hash] { colors: [...], bg_colors: [...], modes: [...] }
36
+ def parse_options!(options)
37
+ parsed = { colors: [], bg_colors: [], modes: [] }
38
+ wrong = []
39
+
40
+ options.each do |opt|
41
+ if Concolor::Mappers::Color::DATA.key?(opt)
42
+ parsed[:colors].push(opt)
43
+ elsif Concolor::Mappers::Mode::DATA.key?(opt)
44
+ parsed[:modes].push(opt)
45
+ elsif Concolor::Mappers::BgColor::DATA.key?(opt)
46
+ parsed[:bg_colors].push(opt)
47
+ else
48
+ wrong.push(opt)
49
+ end
50
+ end
51
+
52
+ return parsed if wrong.empty?
53
+
54
+ raise ::ArgumentError, "Wrong options: #{wrong.join(', ')}"
55
+ end
56
+
57
+ # Get style string
58
+ # @return [String]
59
+ def style
60
+ [@color, @bg_color, @modes].flatten.compact.join(';')
61
+ end
62
+ end
63
+ end
@@ -1,4 +1,19 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  module Concolor
3
- VERSION = '0.0.1'
4
- end
4
+ # Gem version module
5
+ module Version
6
+ # x.0.0 changes that will break existing users code if they update
7
+ MAJOR = 1
8
+ # 0.x.0 changes, such as new functionality/features
9
+ MINOR = 0
10
+ # 0.0.x changes, such as small bug fixes
11
+ PATCH = 0
12
+
13
+ # Get current gem version
14
+ # @return [String]
15
+ def self.current
16
+ "#{MAJOR}.#{MINOR}.#{PATCH}"
17
+ end
18
+ end
19
+ end
data/lib/concolor.rb CHANGED
@@ -1,47 +1,15 @@
1
- # coding: utf-8
2
- require 'concolor/version'
1
+ # frozen_string_literal: true
3
2
 
3
+ # Base module
4
4
  module Concolor
5
+ autoload :Version, 'concolor/version'
6
+ autoload :Mappers, 'concolor/mappers'
7
+ autoload :String, 'concolor/string'
8
+ autoload :Extension, 'concolor/extension'
5
9
 
6
- def style(*args)
7
- style_map = {
8
- # Text color
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
-
18
- # Background color
19
- black_bg: 40,
20
- red_bg: 41,
21
- green_bg: 42,
22
- yellow_bg: 43,
23
- blue_bg: 44,
24
- magenta_bg: 45,
25
- cyan_bg: 46,
26
- white_bg: 47,
27
-
28
- # Text Style
29
- bold: 1,
30
- underline: 4
31
- }
32
-
33
- colorize_string = self.to_s
34
-
35
- args.each do |arg|
36
- if style_map.key?(arg)
37
- colorize_string = "\033[#{style_map[arg]}m" + colorize_string + "\033[0m"
38
- end
39
- end
40
-
41
- colorize_string
10
+ def self.auto_include_to(klass)
11
+ klass.send(:include, Concolor::Extension)
42
12
  end
43
13
  end
44
14
 
45
- class String
46
- include Concolor
47
- end
15
+ Concolor.auto_include_to(String)
metadata CHANGED
@@ -1,46 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: concolor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - alexmercury
8
- autorequire:
7
+ - Alex Merkulov
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-22 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: '1.7'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.7'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '10.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '10.0'
11
+ date: 2022-10-23 00:00:00.000000000 Z
12
+ dependencies: []
41
13
  description: Colorize console text
42
14
  email:
43
- - rubybeastua@gmail.com
15
+ - rormercury@gmail.com
44
16
  executables: []
45
17
  extensions: []
46
18
  extra_rdoc_files: []
@@ -49,12 +21,24 @@ files:
49
21
  - README.md
50
22
  - Rakefile
51
23
  - lib/concolor.rb
24
+ - lib/concolor/extension.rb
25
+ - lib/concolor/mappers.rb
26
+ - lib/concolor/mappers/bg_color.rb
27
+ - lib/concolor/mappers/color.rb
28
+ - lib/concolor/mappers/mode.rb
29
+ - lib/concolor/string.rb
52
30
  - lib/concolor/version.rb
53
- homepage: https://github.com/rubybeast/concolor
31
+ homepage: https://github.com/bf-rb/concolor
54
32
  licenses:
55
33
  - MIT
56
- metadata: {}
57
- post_install_message:
34
+ metadata:
35
+ homepage_uri: https://github.com/bf-rb/concolor
36
+ changelog_uri: https://github.com/bf-rb/concolor/blob/main/CHANGELOG.md
37
+ source_code_uri: https://github.com/bf-rb/concolor
38
+ documentation_uri: https://rubydoc.org/gems/concolor/1.0.0
39
+ bug_tracker_uri: https://github.com/bf-rb/concolor/issues
40
+ rubygems_mfa_required: 'true'
41
+ post_install_message:
58
42
  rdoc_options: []
59
43
  require_paths:
60
44
  - lib
@@ -62,16 +46,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
62
46
  requirements:
63
47
  - - ">="
64
48
  - !ruby/object:Gem::Version
65
- version: '0'
49
+ version: 2.7.0
66
50
  required_rubygems_version: !ruby/object:Gem::Requirement
67
51
  requirements:
68
52
  - - ">="
69
53
  - !ruby/object:Gem::Version
70
54
  version: '0'
71
55
  requirements: []
72
- rubyforge_project:
73
- rubygems_version: 2.4.5
74
- signing_key:
56
+ rubygems_version: 3.1.6
57
+ signing_key:
75
58
  specification_version: 4
76
- summary: Console color
59
+ summary: Console colorize text
77
60
  test_files: []