term-ansicolor 1.7.2 → 1.8.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: 45d5c44dfe80380872b30c025fbbdb6da398482fce8adf8cbdb6353d81b6ca61
4
- data.tar.gz: eed4f4cb1203e4ced32f053125e668ce6e9ffcca589b177cabcb40a675cc6e14
3
+ metadata.gz: 9718f060556740778ada5aec7993d0ed9e4b61548b037f437255c2b01697dafa
4
+ data.tar.gz: 2f8eebac308b3c1d46436916c4dd7e37d71bfce3bb4376ed0b88027da1a1af9e
5
5
  SHA512:
6
- metadata.gz: 85098f326b4e01c3d3e0ae17dfcf00d3b76897625d5db09de1ca7c172b140b1250b05f98578a8534caf21032f24949a8a9ab81912d2d819a85aad4024c91b097
7
- data.tar.gz: 23af07f3f3652f7867adab58eb360ed8f5d2adae614508ac92877d8aa6fbfd7e5a31501eb4dcb29f3ce0971f80e22b18a8667759d6d5dc78a30ef25abfcc3e53
6
+ metadata.gz: 3a59e5c5c1ba7d9ece81227fc207be44959ac5c6f9d2b6c89c35a16563217f0f36c70c1ea33fa8a7ed89fc9e47e0a3ebf9827401e08b89b770b2f9a1c28c9701
7
+ data.tar.gz: a842928574662464fd5ad2bbd18bb9bcf0a45b1bd354e674462004ca07f60d3f36ef8b18bccb60faeba08f416f19652be501e51f17b216fce96f8068d7efdec5
data/.all_images.yml CHANGED
@@ -11,6 +11,7 @@ script: &script |-
11
11
  rake test
12
12
 
13
13
  images:
14
+ ruby:3.3-alpine: *script
14
15
  ruby:3.2-alpine: *script
15
16
  ruby:3.1-alpine: *script
16
17
  ruby:3.0-alpine: *script
data/.tool-versions CHANGED
@@ -1 +1 @@
1
- ruby 3.2.3
1
+ ruby 3.3.0
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.7.2
1
+ 1.8.0
data/examples/example.rb CHANGED
@@ -88,3 +88,5 @@ print [
88
88
  uncolored { "not red anymore".red },
89
89
  uncolored("not red anymore".red)
90
90
  ].map { |x| x + "\n" } * ''
91
+
92
+ puts "Use the " + "Source".hyperlink("https://github.com/flori/term-ansicolor") + ", Luke!"
@@ -0,0 +1,34 @@
1
+ require 'tins/terminal'
2
+
3
+ module Term
4
+ module ANSIColor
5
+ module Hyperlink
6
+ def hyperlink(link, string = nil, id: nil, as_link: false)
7
+ block_given? && string != nil && !respond_to?(:to_str) and
8
+ raise ArgumentError,
9
+ "Require either the string argument or a block argument"
10
+ if link.nil?
11
+ link = ''
12
+ end
13
+ if as_link && !link.empty?
14
+ string ||= link
15
+ end
16
+ result = ''
17
+ if Term::ANSIColor.coloring?
18
+ result = "\e]8;#{"id=#{id}" unless id.nil?};" << link.to_str << "\e\\"
19
+ end
20
+ if block_given?
21
+ result << yield.to_s
22
+ elsif string.respond_to?(:to_str)
23
+ result << string.to_str
24
+ elsif respond_to?(:to_str)
25
+ result << to_str
26
+ else
27
+ return result # only switch on
28
+ end
29
+ result << "\e]8;;\e\\" if Term::ANSIColor.coloring?
30
+ result
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,6 +1,6 @@
1
1
  module Term::ANSIColor
2
2
  # Term::ANSIColor version
3
- VERSION = '1.7.2'
3
+ VERSION = '1.8.0'
4
4
  VERSION_ARRAY = VERSION.split('.').map(&:to_i) # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
@@ -15,8 +15,9 @@ module Term
15
15
  require 'term/ansicolor/attribute/intense_color8'
16
16
  require 'term/ansicolor/attribute/color256'
17
17
  require 'term/ansicolor/movement'
18
-
19
18
  include Term::ANSIColor::Movement
19
+ require 'term/ansicolor/hyperlink'
20
+ include Term::ANSIColor::Hyperlink
20
21
 
21
22
  # :stopdoc:
22
23
  ATTRIBUTE_NAMES = Attribute.named_attributes.map(&:name)
@@ -95,7 +96,7 @@ module Term
95
96
  elsif respond_to?(:to_str)
96
97
  result << to_str
97
98
  else
98
- return result #only switch on
99
+ return result # only switch on
99
100
  end
100
101
  result << "\e[0m" if Term::ANSIColor.coloring?
101
102
  result.extend(Term::ANSIColor)
@@ -1,31 +1,31 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: term-ansicolor 1.7.2 ruby lib
2
+ # stub: term-ansicolor 1.8.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "term-ansicolor".freeze
6
- s.version = "1.7.2"
6
+ s.version = "1.8.0".freeze
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
10
10
  s.authors = ["Florian Frank".freeze]
11
- s.date = "2024-03-15"
11
+ s.date = "2024-04-13"
12
12
  s.description = "This library uses ANSI escape sequences to control the attributes of terminal output".freeze
13
13
  s.email = "flori@ping.de".freeze
14
14
  s.executables = ["term_cdiff".freeze, "term_colortab".freeze, "term_decolor".freeze, "term_display".freeze, "term_mandel".freeze, "term_snow".freeze]
15
- s.extra_rdoc_files = ["README.md".freeze, "lib/term/ansicolor.rb".freeze, "lib/term/ansicolor/attribute.rb".freeze, "lib/term/ansicolor/attribute/color256.rb".freeze, "lib/term/ansicolor/attribute/color8.rb".freeze, "lib/term/ansicolor/attribute/intense_color8.rb".freeze, "lib/term/ansicolor/attribute/text.rb".freeze, "lib/term/ansicolor/hsl_triple.rb".freeze, "lib/term/ansicolor/movement.rb".freeze, "lib/term/ansicolor/ppm_reader.rb".freeze, "lib/term/ansicolor/rgb_color_metrics.rb".freeze, "lib/term/ansicolor/rgb_triple.rb".freeze, "lib/term/ansicolor/version.rb".freeze]
16
- s.files = [".all_images.yml".freeze, ".gitignore".freeze, ".tool-versions".freeze, "CHANGES".freeze, "COPYING".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "bin/term_cdiff".freeze, "bin/term_colortab".freeze, "bin/term_decolor".freeze, "bin/term_display".freeze, "bin/term_mandel".freeze, "bin/term_snow".freeze, "examples/example.rb".freeze, "examples/lambda-red-plain.ppm".freeze, "examples/lambda-red.png".freeze, "examples/lambda-red.ppm".freeze, "lib/term/ansicolor.rb".freeze, "lib/term/ansicolor/.keep".freeze, "lib/term/ansicolor/attribute.rb".freeze, "lib/term/ansicolor/attribute/color256.rb".freeze, "lib/term/ansicolor/attribute/color8.rb".freeze, "lib/term/ansicolor/attribute/intense_color8.rb".freeze, "lib/term/ansicolor/attribute/text.rb".freeze, "lib/term/ansicolor/hsl_triple.rb".freeze, "lib/term/ansicolor/movement.rb".freeze, "lib/term/ansicolor/ppm_reader.rb".freeze, "lib/term/ansicolor/rgb_color_metrics.rb".freeze, "lib/term/ansicolor/rgb_triple.rb".freeze, "lib/term/ansicolor/version.rb".freeze, "term-ansicolor.gemspec".freeze, "tests/ansicolor_test.rb".freeze, "tests/attribute_test.rb".freeze, "tests/hsl_triple_test.rb".freeze, "tests/ppm_reader_test.rb".freeze, "tests/rgb_color_metrics_test.rb".freeze, "tests/rgb_triple_test.rb".freeze, "tests/test_helper.rb".freeze]
15
+ s.extra_rdoc_files = ["README.md".freeze, "lib/term/ansicolor.rb".freeze, "lib/term/ansicolor/attribute.rb".freeze, "lib/term/ansicolor/attribute/color256.rb".freeze, "lib/term/ansicolor/attribute/color8.rb".freeze, "lib/term/ansicolor/attribute/intense_color8.rb".freeze, "lib/term/ansicolor/attribute/text.rb".freeze, "lib/term/ansicolor/hsl_triple.rb".freeze, "lib/term/ansicolor/hyperlink.rb".freeze, "lib/term/ansicolor/movement.rb".freeze, "lib/term/ansicolor/ppm_reader.rb".freeze, "lib/term/ansicolor/rgb_color_metrics.rb".freeze, "lib/term/ansicolor/rgb_triple.rb".freeze, "lib/term/ansicolor/version.rb".freeze]
16
+ s.files = [".all_images.yml".freeze, ".gitignore".freeze, ".tool-versions".freeze, "CHANGES".freeze, "COPYING".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "bin/term_cdiff".freeze, "bin/term_colortab".freeze, "bin/term_decolor".freeze, "bin/term_display".freeze, "bin/term_mandel".freeze, "bin/term_snow".freeze, "examples/example.rb".freeze, "examples/lambda-red-plain.ppm".freeze, "examples/lambda-red.png".freeze, "examples/lambda-red.ppm".freeze, "lib/term/ansicolor.rb".freeze, "lib/term/ansicolor/.keep".freeze, "lib/term/ansicolor/attribute.rb".freeze, "lib/term/ansicolor/attribute/color256.rb".freeze, "lib/term/ansicolor/attribute/color8.rb".freeze, "lib/term/ansicolor/attribute/intense_color8.rb".freeze, "lib/term/ansicolor/attribute/text.rb".freeze, "lib/term/ansicolor/hsl_triple.rb".freeze, "lib/term/ansicolor/hyperlink.rb".freeze, "lib/term/ansicolor/movement.rb".freeze, "lib/term/ansicolor/ppm_reader.rb".freeze, "lib/term/ansicolor/rgb_color_metrics.rb".freeze, "lib/term/ansicolor/rgb_triple.rb".freeze, "lib/term/ansicolor/version.rb".freeze, "term-ansicolor.gemspec".freeze, "tests/ansicolor_test.rb".freeze, "tests/attribute_test.rb".freeze, "tests/hsl_triple_test.rb".freeze, "tests/hyperlink_test.rb".freeze, "tests/ppm_reader_test.rb".freeze, "tests/rgb_color_metrics_test.rb".freeze, "tests/rgb_triple_test.rb".freeze, "tests/test_helper.rb".freeze]
17
17
  s.homepage = "https://github.com/flori/term-ansicolor".freeze
18
18
  s.licenses = ["Apache-2.0".freeze]
19
19
  s.rdoc_options = ["--title".freeze, "Term-ansicolor - Ruby library that colors strings using ANSI escape sequences".freeze, "--main".freeze, "README.md".freeze]
20
- s.rubygems_version = "3.4.19".freeze
20
+ s.rubygems_version = "3.5.3".freeze
21
21
  s.summary = "Ruby library that colors strings using ANSI escape sequences".freeze
22
- s.test_files = ["tests/ansicolor_test.rb".freeze, "tests/attribute_test.rb".freeze, "tests/hsl_triple_test.rb".freeze, "tests/ppm_reader_test.rb".freeze, "tests/rgb_color_metrics_test.rb".freeze, "tests/rgb_triple_test.rb".freeze, "tests/test_helper.rb".freeze]
22
+ s.test_files = ["tests/ansicolor_test.rb".freeze, "tests/attribute_test.rb".freeze, "tests/hsl_triple_test.rb".freeze, "tests/hyperlink_test.rb".freeze, "tests/ppm_reader_test.rb".freeze, "tests/rgb_color_metrics_test.rb".freeze, "tests/rgb_triple_test.rb".freeze, "tests/test_helper.rb".freeze]
23
23
 
24
24
  s.specification_version = 4
25
25
 
26
- s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.14.0"])
27
- s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
28
- s.add_development_dependency(%q<test-unit>.freeze, [">= 0"])
29
- s.add_development_dependency(%q<utils>.freeze, [">= 0"])
30
- s.add_runtime_dependency(%q<tins>.freeze, ["~> 1.0"])
26
+ s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.15.0".freeze])
27
+ s.add_development_dependency(%q<simplecov>.freeze, [">= 0".freeze])
28
+ s.add_development_dependency(%q<test-unit>.freeze, [">= 0".freeze])
29
+ s.add_development_dependency(%q<utils>.freeze, [">= 0".freeze])
30
+ s.add_runtime_dependency(%q<tins>.freeze, ["~> 1.0".freeze])
31
31
  end
@@ -0,0 +1,54 @@
1
+ class HyperlinkTest < Test::Unit::TestCase
2
+ include Term::ANSIColor
3
+
4
+ def setup
5
+ @link = 'https://foo.example.com'
6
+ end
7
+
8
+ def test_hyperlink_switch_on
9
+ assert_equal(
10
+ "\e]8;;#@link\e\\",
11
+ hyperlink(@link)
12
+ )
13
+ end
14
+
15
+ def test_hyperlink_switch_off
16
+ assert_equal(
17
+ "\e]8;;\e\\",
18
+ hyperlink(nil)
19
+ )
20
+ end
21
+
22
+ def test_hyperlink_as_link
23
+ assert_equal(
24
+ hyperlink(@link, as_link: true),
25
+ "\e]8;;#@link\e\\#@link\e]8;;\e\\",
26
+ )
27
+ end
28
+
29
+ def test_hyperlink_two_args
30
+ assert_equal(
31
+ "\e]8;;#@link\e\\foo\e]8;;\e\\",
32
+ hyperlink(@link, 'foo')
33
+ )
34
+ end
35
+
36
+ def test_hyperlink_two_args_with_id
37
+ assert_equal(
38
+ "\e]8;id=666;#@link\e\\foo\e]8;;\e\\",
39
+ hyperlink(@link, 'foo', id: 666)
40
+ )
41
+ end
42
+
43
+ def test_hyperlink_block_arg
44
+ assert_raise(ArgumentError) { hyperlink(@link, 'bar') { 'baz' } }
45
+ assert_equal(
46
+ "\e]8;;#@link\e\\foo\e]8;;\e\\",
47
+ hyperlink(@link) { 'foo' }
48
+ )
49
+ end
50
+
51
+ def test_with_stringy_self
52
+ assert_equal "\e]8;;#@link\e\\foo\e]8;;\e\\", "foo".hyperlink(@link)
53
+ end
54
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: term-ansicolor
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.2
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-15 00:00:00.000000000 Z
11
+ date: 2024-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem_hadar
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.14.0
19
+ version: 1.15.0
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.14.0
26
+ version: 1.15.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: simplecov
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -100,6 +100,7 @@ extra_rdoc_files:
100
100
  - lib/term/ansicolor/attribute/intense_color8.rb
101
101
  - lib/term/ansicolor/attribute/text.rb
102
102
  - lib/term/ansicolor/hsl_triple.rb
103
+ - lib/term/ansicolor/hyperlink.rb
103
104
  - lib/term/ansicolor/movement.rb
104
105
  - lib/term/ansicolor/ppm_reader.rb
105
106
  - lib/term/ansicolor/rgb_color_metrics.rb
@@ -133,6 +134,7 @@ files:
133
134
  - lib/term/ansicolor/attribute/intense_color8.rb
134
135
  - lib/term/ansicolor/attribute/text.rb
135
136
  - lib/term/ansicolor/hsl_triple.rb
137
+ - lib/term/ansicolor/hyperlink.rb
136
138
  - lib/term/ansicolor/movement.rb
137
139
  - lib/term/ansicolor/ppm_reader.rb
138
140
  - lib/term/ansicolor/rgb_color_metrics.rb
@@ -142,6 +144,7 @@ files:
142
144
  - tests/ansicolor_test.rb
143
145
  - tests/attribute_test.rb
144
146
  - tests/hsl_triple_test.rb
147
+ - tests/hyperlink_test.rb
145
148
  - tests/ppm_reader_test.rb
146
149
  - tests/rgb_color_metrics_test.rb
147
150
  - tests/rgb_triple_test.rb
@@ -169,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
172
  - !ruby/object:Gem::Version
170
173
  version: '0'
171
174
  requirements: []
172
- rubygems_version: 3.4.19
175
+ rubygems_version: 3.5.3
173
176
  signing_key:
174
177
  specification_version: 4
175
178
  summary: Ruby library that colors strings using ANSI escape sequences
@@ -177,6 +180,7 @@ test_files:
177
180
  - tests/ansicolor_test.rb
178
181
  - tests/attribute_test.rb
179
182
  - tests/hsl_triple_test.rb
183
+ - tests/hyperlink_test.rb
180
184
  - tests/ppm_reader_test.rb
181
185
  - tests/rgb_color_metrics_test.rb
182
186
  - tests/rgb_triple_test.rb