tone 0.1.0 → 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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.adoc +44 -2
- data/lib/tone/rspec/matchers/have_color.rb +20 -0
- data/lib/tone.rb +4 -1
- data/tone.gemspec +1 -1
- data.tar.gz.sig +0 -0
- metadata +4 -3
- metadata.gz.sig +0 -0
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 9545daf90651afc61d7c2746db9b12e99cdebf768f1930d5d7933b01573dc301
         | 
| 4 | 
            +
              data.tar.gz: 124e32e3aa2201636dc3a6a269c10145dfa5e8c41b7c0b6597ef8254cf631082
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 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  | 
| 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
    
    
    
        data/tone.gemspec
    CHANGED
    
    
    
        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. | 
| 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- | 
| 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. | 
| 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 |