l43_simple_color 0.2.0 → 0.2.1

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: e4eb4f71f5445e06dc4dac9a05dd23129551f43a1d576a0610ce04cf9192ec1d
4
- data.tar.gz: a9d0a1d7ab3d65180009ffc456e8081aebfd9e33a63436c6b490afa305eece4c
3
+ metadata.gz: 10eeebfdefb2b76a9368c0e9dff8af58c2a4e2898b53212b0fb1df37541be809
4
+ data.tar.gz: b98c3bf606f3421855b385dba90dd3ed41aac941c65656053e4c627d18e263bc
5
5
  SHA512:
6
- metadata.gz: 3c9498643606ebbf94451660ad85b775e58989843006cf53ecfd6d74d285fdb57914df3ea752d88db1af7090488dca9053a659e83bd9b33bcc50f58b8184b502
7
- data.tar.gz: da9b9c9ec8148288c02254985549d07848048cb2c2c44f80d260d4d4e33b29e137e1f3b0b9903c7456fc9a25685439b26ccbd812d889d3184100946bb79c1c60
6
+ metadata.gz: bc0f9f77944abe101cad1851f5c81a4b14ed7aa02719b494ad374714e47cdce11060467a15fe57e9bd63158ac3907697a1c524247db7b9eba59dec349bc2777b
7
+ data.tar.gz: dda276f2001d5e90932606dda820d8df70f59be2263b6d73139c6acbf08fa612f9b5dbd0b5aedfae50824d1d571b1c113be5b356c0a2a534120fe3e323ce3754
data/bin/simple_color CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
- require_relative "../lib/l43/simple_color"
4
- require_relative "../lib/l43/simple_color/cli"
3
+ $: << File.expand_path("../lib", __FILE__)
4
+ require "l43/simple_color/cli"
5
5
 
6
6
  L43::SimpleColor::Cli.run(ARGV)
7
7
 
@@ -1,20 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'colorize'
3
+ require_relative 'file_colorizer'
4
4
  module L43
5
5
  module SimpleColor
6
6
  module Cli extend self
7
- include Colorize
8
7
  def run(argv)
9
- device = make_device(argv.first)
10
- device.map { |line|
11
- puts(xcolorize!(line))
12
- }
13
- end
14
-
15
- private
16
- def make_device(fn)
17
- (fn ? File.open(fn) : $stdin).each(chomp: true)
8
+ SimpleColor.xcolorize_file(argv.first).each do |line, _|
9
+ puts line
10
+ end
18
11
  end
19
12
  end
20
13
  end
@@ -14,26 +14,18 @@ module L43
14
14
  ColorSpecRgx = %r{(?:\s|\A):[__[:alnum:]]+(?:\s|\z)}
15
15
  Meta = %r{[:\s]+}
16
16
 
17
- def colorize(str, reset: true, extended: false)
17
+ def colorize(str, reset: true, extended: false, raises: false)
18
18
  case _colorize(str, extended:)
19
19
  in String => encoded
20
20
  reset ? encoded + get_chunk(:reset) : encoded
21
- in error
22
- error
23
- end
24
- end
25
-
26
- def colorize!(str, reset: true, extended: false)
27
- case colorize(str, reset:, extended:)
28
- in [:error, msg]
29
- raise BadColor, msg
30
- in result
31
- result
21
+ in [:error, msg] => error
22
+ raises ? raise(BadColor, msg) : error
32
23
  end
33
24
  end
34
25
 
26
+ def colorize!(str, reset: true, extended: false) = colorize(str, raises: true, reset:, extended:)
35
27
  def xcolorize(str, reset: true) = colorize(str, reset:, extended: true)
36
- def xcolorize!(str, reset: true) = colorize!(str, reset:, extended: true)
28
+ def xcolorize!(str, reset: true) = colorize(str, reset:, extended: true, raises: true)
37
29
 
38
30
  private
39
31
  def _colorize(str, reset: true, extended: false)
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'l43/simple_color/colorize'
4
+ module L43
5
+ module SimpleColor
6
+ class FileColorizer
7
+ include Colorize
8
+ attr_reader :extended, :fn, :reset, :stream
9
+
10
+ def colorize_file(&blk)
11
+ return stream unless blk
12
+
13
+ stream.map(&blk)
14
+ end
15
+
16
+ private
17
+ def initialize(fn, reset:, extended: false)
18
+ @extended = extended
19
+ @fn = fn
20
+ @reset = reset
21
+ @stream = (fn ? File.open(fn) : $stdin).each(chomp: true).with_index.lazy.map(&colorize_line)
22
+ end
23
+
24
+ def colorize_line
25
+ -> line, idx do
26
+ # puts("LINE: #{line}")
27
+ case colorize(line, reset:, extended:)
28
+ in :error, msg
29
+ raise BadColor, msg + "\n\tin file:#{fn || "<:stdin>"}, line #{line.inspect}:#{idx.succ})"
30
+ in colored
31
+ [colored, idx.succ]
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ def colorize_file(fn=nil, reset: true, &blk) =
38
+ FileColorizer.new(fn, reset:).colorize_file(&blk)
39
+
40
+ def xcolorize_file(fn=nil, reset: true, &blk) =
41
+ FileColorizer.new(fn, reset:, extended: true).colorize_file(&blk)
42
+ end
43
+ end
44
+ # SPDX-License-Identifier: AGPL-3.0-or-later
@@ -2,7 +2,7 @@
2
2
 
3
3
  module L43
4
4
  module SimpleColor
5
- VERSION = '0.2.0'
5
+ VERSION = '0.2.1'
6
6
  end
7
7
  end
8
8
  # SPDX-License-Identifier: AGPL-3.0-or-later
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: l43_simple_color
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Dober
@@ -40,6 +40,7 @@ files:
40
40
  - lib/l43/simple_color/cli.rb
41
41
  - lib/l43/simple_color/color_data.rb
42
42
  - lib/l43/simple_color/colorize.rb
43
+ - lib/l43/simple_color/file_colorizer.rb
43
44
  - lib/l43/simple_color/version.rb
44
45
  homepage: https://www.codeberg.org/lab419/l43_simple_color.git
45
46
  licenses: