concolor 0.0.1 → 1.0.0

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
- 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: []