tone 0.1.0 → 0.2.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
2
  SHA256:
3
- metadata.gz: 803a8df0924e05ab33d732bdcedcec8cec4a76c31fb5613127f2849425c8026b
4
- data.tar.gz: d0247c2613d4ee0dcd776e829541b8af737b720ae3bc41bb3c2470df38544e5b
3
+ metadata.gz: 9545daf90651afc61d7c2746db9b12e99cdebf768f1930d5d7933b01573dc301
4
+ data.tar.gz: 124e32e3aa2201636dc3a6a269c10145dfa5e8c41b7c0b6597ef8254cf631082
5
5
  SHA512:
6
- metadata.gz: a78cc339e5100a10fddc26d41f56550cc0961b2ee6f5c1da42d1ce2c3d5204be4ca0d1816657cc360c087e75dc6bd994f8db164da8073217e550d07eaa31c527
7
- data.tar.gz: 2c5881cda025ebb59298c7e28a1ab108b14a00f38f025e8838f35881561ae1ce30ba2d9fa59e4a51a5430d8c741a0e891a03f2aa244bfc2a61051e2584d5bb79
6
+ metadata.gz: 9894a60b8dc02cf1624904dd802f3f824b9ef326b1632beca7c763ca131ea686032296d6d33aa49b3e5a1cfb2d1c72c4d889464d95bf46150bf8dcada2e47ee1
7
+ data.tar.gz: e81e5dfa92d3e42b789759fa0ea481abd9a3e785b3a0eb72d2de9d4be685e348bc6e5b5363f982c24435f68cf2f6cbe63748ccce86e5bee4d4ad395f75c40da4
checksums.yaml.gz.sig CHANGED
Binary file
data/README.adoc CHANGED
@@ -4,6 +4,7 @@
4
4
 
5
5
  :amazing_print_link: link:https://github.com/amazing-print/amazing_print[Amazing Print]
6
6
  :pattern_matching_link: link:https://alchemists.io/articles/ruby_pattern_matching[pattern matching]
7
+ :rspec_link: link:https://rspec.info[RSpec]
7
8
 
8
9
  = Tone
9
10
 
@@ -383,6 +384,47 @@ tone.get_alias :bogus
383
384
  # Invalid alias or default: :bogus. (Tone::Error)
384
385
  ----
385
386
 
387
+ === Testing
388
+
389
+ When using this gem in your project, you might find it convenient to use the `have_color` {rspec_link} matcher. This matcher is optional and _must be manually required_ for use in your spec helper:
390
+
391
+ [source,ruby]
392
+ ----
393
+ # spec_helper.rb
394
+ require "tone/rspec/matchers/have_color"
395
+ ----
396
+
397
+ Once required, you can leverage the matcher in any spec as follows:
398
+
399
+ [source,ruby]
400
+ ----
401
+ RSpec.describe DemoPresenter do
402
+ subject(:presenter) { DemoPresenter.new color: }
403
+
404
+ let(:color) { Tone.new }
405
+
406
+ describe "#to_s" do
407
+ it "renders colored text" do
408
+ expect(presenter.to_s).to have_color(color, ["Test 0.0.0: A test.", :bold])
409
+ end
410
+ end
411
+ end
412
+ ----
413
+
414
+ The first argument _must be an instanced of Tone_ because you might have custom aliases which must be known in order to validate your spec. All subsequent arguments (one to many) that follow after the first argument can be a list of decoded tuples as would normally be answered by `Tone#decode`.
415
+
416
+ In situations where the spec fails, you'll get a formatted error so you can quickly fix as necessary:
417
+
418
+ ....
419
+ expected "\e[37mtest\e[0m\n" to have color decoded as:
420
+ ["text", :blue],
421
+ ["\n"]
422
+
423
+ but actually is:
424
+ ["test", :white],
425
+ ["\n"]
426
+ ....
427
+
386
428
  === Guidelines
387
429
 
388
430
  The following are worth considering, when using this gem, to help keep your implementation consistent.
@@ -426,14 +468,14 @@ cd tone
426
468
  bin/setup
427
469
  ----
428
470
 
429
- You use the IRB console for direct access to all objects:
471
+ You can use the IRB console for direct access to all objects:
430
472
 
431
473
  [source,bash]
432
474
  ----
433
475
  bin/console
434
476
  ----
435
477
 
436
- Lastly, there is a `bin/show` script which will display all default styles for quick visual convenience. This is the same script that was used to generate the screenshot you saw at the top of this document.
478
+ Lastly, there is a `bin/show` script which displays the default styles for quick visual reference. This is the same script used to generate the screenshots shown at the top of this document.
437
479
 
438
480
  [source,bash]
439
481
  ----
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec::Matchers.define :have_color do |color, *expected|
4
+ match do |actual|
5
+ fail ArgumentError, "First argument must be a color instance." unless color.respond_to? :decode
6
+
7
+ @decode = color.decode actual
8
+ @decode == expected
9
+ end
10
+
11
+ failure_message do |actual|
12
+ <<~MESSAGE
13
+ expected #{actual.inspect} to have color decoded as:
14
+ #{expected.map(&:inspect).join(",\n")}
15
+
16
+ but actually is:
17
+ #{@decode.map(&:inspect).join(",\n")}
18
+ MESSAGE
19
+ end
20
+ end
data/lib/tone.rb CHANGED
@@ -2,7 +2,10 @@
2
2
 
3
3
  require "zeitwerk"
4
4
 
5
- Zeitwerk::Loader.for_gem.setup
5
+ Zeitwerk::Loader.for_gem.then do |loader|
6
+ loader.ignore "#{__dir__}/rspec/matchers"
7
+ loader.setup
8
+ end
6
9
 
7
10
  # Main namespace.
8
11
  module Tone
data/tone.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "tone"
5
- spec.version = "0.1.0"
5
+ spec.version = "0.2.0"
6
6
  spec.authors = ["Brooke Kuhlmann"]
7
7
  spec.email = ["brooke@alchemists.io"]
8
8
  spec.homepage = "https://alchemists.io/projects/tone"
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tone
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -35,7 +35,7 @@ cert_chain:
35
35
  3n5C8/6Zh9DYTkpcwPSuIfAga6wf4nXc9m6JAw8AuMLaiWN/r/2s4zJsUHYERJEu
36
36
  gZGm4JqtuSg8pYjPeIJxS960owq+SfuC+jxqmRA54BisFCv/0VOJi7tiJVY=
37
37
  -----END CERTIFICATE-----
38
- date: 2023-04-10 00:00:00.000000000 Z
38
+ date: 2023-04-22 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: refinements
@@ -84,6 +84,7 @@ files:
84
84
  - lib/tone/decoder.rb
85
85
  - lib/tone/encoder.rb
86
86
  - lib/tone/error.rb
87
+ - lib/tone/rspec/matchers/have_color.rb
87
88
  - tone.gemspec
88
89
  homepage: https://alchemists.io/projects/tone
89
90
  licenses:
@@ -111,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
112
  - !ruby/object:Gem::Version
112
113
  version: '0'
113
114
  requirements: []
114
- rubygems_version: 3.4.10
115
+ rubygems_version: 3.4.12
115
116
  signing_key:
116
117
  specification_version: 4
117
118
  summary: A customizable ANSI text colorizer for your terminal.
metadata.gz.sig CHANGED
Binary file