l43_color 0.1.2 → 0.2.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
2
  SHA256:
3
- metadata.gz: 1319a310056d8ca08661853d85d0a6e8d0ce20f5e4e46972de8806c70485176a
4
- data.tar.gz: 7e51e78e7bf42304435c07ceef25e3062c46ddc210f94a8ea30b1028126c1171
3
+ metadata.gz: 50de1fa647eec1ef69ad5a21d43be810479d582cb5255fd8aba64ab381b48b92
4
+ data.tar.gz: 7f8247bf354159f32d64a51d02b78bf7c30b63303d22119f90479d1f2dc69dad
5
5
  SHA512:
6
- metadata.gz: ff55e1e19bc5a3594fc9613edc1a18f6a36ec68b8348bfc59987727ce6dd12b1fcbfb59d59a64bed12ed30d430a44b7dec7cff13c9965f2a30729fb26af02042
7
- data.tar.gz: f4b0fe27d91d40b50926a374081df1673ddbbffc7fbcc54b3bce6a8b410380135aaa2ae4c7635eedabe92784337d9640b96b681782917645f1e4cf56b714c87b
6
+ metadata.gz: d76f0b3f4ac1641c53558f17a14c9e54949823fba5a4560a80d3a6c47e74333df334c5d7013e8c72debb2cc2c68006d873fce6060f8df9d16381be86334ef4cd
7
+ data.tar.gz: 8a9374bef5e7b250a2b76ecda000760799cf7c02b39d3eae6cc3e5551a6065cd86d53e008e156e88af358c359c5cf6bec0637a442129651c279fe39ade9f3170
data/README.md CHANGED
@@ -15,6 +15,10 @@ for input.
15
15
 
16
16
  The behavior and use of this gem is documented here by means of [speculations](https://rubygems.org/gems/speculate_about)
17
17
 
18
+ ## New in v0.2: Colorschemes
19
+
20
+ Documented in [`L43::Color::Colorschemes](speculations/colorschemes.md)
21
+
18
22
  ### Context: Backbone Functionality, issuing ANSI codes
19
23
 
20
24
  Given the L43::Color module
@@ -32,7 +36,8 @@ Then we can ask for ANSI codes
32
36
 
33
37
  And if we try a nonexisting color we get an error
34
38
  ```ruby
35
- expect { L43::Color.ansi_code("no_color") }.to raise_error(IndexError, "key not found: :no_color")
39
+ expect { L43::Color.ansi_code("no_color") }
40
+ .to raise_error(L43::Color::UndefinedColorCode, "no_color is not a color code")
36
41
  ```
37
42
 
38
43
  ### Context: Injecting color methods into strings
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'l43/open_object'
4
+ module L43
5
+ module Color
6
+ module Colorschemes extend self
7
+ Colorscheme = L43::OpenObject.def_class(
8
+ args: [:blue, :bold],
9
+ emph: :bold,
10
+ env_var: [:green, :bold],
11
+ error: [:red, :bold],
12
+ option: [:cyan, :bold],
13
+ remark: :dim,
14
+ warn: [:yellow, :bold]
15
+ )
16
+ DefaultColorscheme = Colorscheme.new
17
+
18
+ def replace_kewords(*chunks, colorscheme: DefaultColorscheme)
19
+ chunks.flatten.map { _replace_kwd it, colorscheme: }
20
+ end
21
+
22
+ private
23
+ def _replace_kwd(chunk, colorscheme:)
24
+ case chunk
25
+ when Symbol
26
+ colorscheme.fetch(chunk, chunk)
27
+ else
28
+ chunk
29
+ end
30
+ end
31
+ end
32
+
33
+ class << self
34
+ def colorscheme
35
+ @colorscheme || Colorschemes::DefaultColorscheme
36
+ end
37
+
38
+ def set_colorscheme(colorscheme_name)
39
+ @colorscheme = Colorschemes.get_colorscheme(colorscheme_name)
40
+ end
41
+ end
42
+
43
+ end
44
+ end
45
+ # SPDX-License-Identifier: AGPL-3.0-or-later
@@ -5,6 +5,11 @@ module L43
5
5
  module Color
6
6
  module Output
7
7
 
8
+ def cs_colorize(*chunks, reset: true, indent: 2)
9
+ chunks = Color::Colorschemes.replace_kewords(chunks, colorscheme: Color.colorscheme)
10
+ colorize(*chunks, reset:, indent:)
11
+ end
12
+
8
13
  def colorize(*chunks, reset: true, indent: 2)
9
14
  reset = reset ? :reset : ''
10
15
  [*chunks.flatten.map { _format_chunk it, indent: }, reset].flatten.map(&_to_code).join
data/lib/l43/color.rb CHANGED
@@ -3,10 +3,14 @@
3
3
  require_relative 'color/definitions'
4
4
  module L43
5
5
  module Color extend self
6
- VERSION = "0.1.2"
6
+ VERSION = "0.2.0"
7
+
8
+ UndefinedColorCode = Class.new(RuntimeError)
7
9
 
8
10
  def ansi_code(name)
9
- Definitions::COLOR_DEFINITIONS.fetch(name.downcase.to_sym)
11
+ Definitions::COLOR_DEFINITIONS.fetch(name.downcase.to_sym) do |bad_code|
12
+ raise UndefinedColorCode, "#{bad_code} is not a color code"
13
+ end
10
14
  end
11
15
 
12
16
  end
metadata CHANGED
@@ -1,14 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: l43_color
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Dober
8
8
  bindir: bin
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
- dependencies: []
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: l43_open_object
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: 0.2.6
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: 0.2.6
12
26
  description: |
13
27
  Colorize text with ANSI colors.
14
28
  Parse and render files with
@@ -23,6 +37,7 @@ files:
23
37
  - bin/colorize
24
38
  - lib/l43/color.rb
25
39
  - lib/l43/color/cli.rb
40
+ - lib/l43/color/colorschemes.rb
26
41
  - lib/l43/color/definitions.rb
27
42
  - lib/l43/color/methods.rb
28
43
  - lib/l43/color/output.rb