expresenter 1.1.0 → 1.4.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: 3fa35d343813c6913d049086af460babf8a5a84b18c7058853fe956c50a3f143
4
- data.tar.gz: cbcd35e730fd41b653b7ea944a3b2d0861229e204919747e60940074964aa97d
3
+ metadata.gz: 7681f55eec320e3a594a0dd3bf83bed059059c4fe0786c21702d100cdcff4686
4
+ data.tar.gz: 120bfa0781682b31af511528a1271118329745a0348e11a9508eb20daf55c082
5
5
  SHA512:
6
- metadata.gz: 6d4e83fd46dc38ac64bae7ebf4577a0d964d11aa49e4ff88c573e294d943a3c450dc2212678b97d6976f7bc3850936db0df3f946b80da22e0d00615c76d48f97
7
- data.tar.gz: 4ad82f7aa266fc139e166821a3b18766c24c50ef5ee92fad16f013d8b4240cfd6ea135e105606dab014ea9afffccb8036b669950d0b8254cf576913aa363dba1
6
+ metadata.gz: 9b9618acf9d062eacc9ac69ac3bca457fa6bbf7172baca826ee77f21365ef994e356fbf03b983fc39403a23fdecc7abdaa32ea4e5837a1260e5bf1696f8fb60c
7
+ data.tar.gz: 02a640a1f52ea92dce4e1fc8c88128142fb3ca9f2e14b811ba654008ce769f92c0d2137b88dd734a9bf91d8b68be758c0b6d862c3cf11d8b9aef4fc87bb02646
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # Expresenter
2
2
 
3
- [![Build Status](https://api.travis-ci.org/fixrb/expresenter.svg?branch=main)][travis]
4
- [![Code Climate](https://codeclimate.com/github/fixrb/expresenter/badges/gpa.svg)][codeclimate]
5
- [![Gem Version](https://badge.fury.io/rb/expresenter.svg)][gem]
6
- [![Inline docs](https://inch-ci.org/github/fixrb/expresenter.svg?branch=main)][inchpages]
7
- [![Documentation](https://img.shields.io/:yard-docs-38c800.svg)][rubydoc]
3
+ [![Version](https://img.shields.io/github/v/tag/fixrb/expresenter?label=Version&logo=github)](https://github.com/fixrb/expresenter/releases)
4
+ [![Yard documentation](https://img.shields.io/badge/Yard-documentation-blue.svg?logo=github)](https://rubydoc.info/github/fixrb/expresenter/main)
5
+ [![CI](https://github.com/fixrb/expresenter/workflows/CI/badge.svg?branch=main)](https://github.com/fixrb/expresenter/actions?query=workflow%3Aci+branch%3Amain)
6
+ [![RuboCop](https://github.com/fixrb/expresenter/workflows/RuboCop/badge.svg?branch=main)](https://github.com/fixrb/expresenter/actions?query=workflow%3Arubocop+branch%3Amain)
7
+ [![License](https://img.shields.io/github/license/fixrb/expresenter?label=License&logo=github)](https://github.com/fixrb/expresenter/raw/main/LICENSE.md)
8
8
 
9
9
  > Expectation result presenter.
10
10
 
@@ -18,11 +18,15 @@ gem "expresenter"
18
18
 
19
19
  And then execute:
20
20
 
21
- $ bundle
21
+ ```sh
22
+ bundle
23
+ ```
22
24
 
23
25
  Or install it yourself as:
24
26
 
25
- $ gem install expresenter
27
+ ```sh
28
+ gem install expresenter
29
+ ```
26
30
 
27
31
  ## Usage
28
32
 
@@ -59,12 +63,11 @@ Failed expectations can be classified as:
59
63
  The following parameters are required to instantiate the result:
60
64
 
61
65
  * `actual`: Returned value by the challenged subject.
66
+ * `definition`: A readable string of the matcher and any expected values.
62
67
  * `error`: Any possible raised exception.
63
68
  * `expected`: The expected value.
64
69
  * `got`: The result of the boolean comparison between the actual value and the expected value through the matcher.
65
70
  * `negate`: Evaluated to a negative assertion?
66
- * `valid`: Report if the test was `true` or `false`.
67
- * `matcher`: The symbol representing a matcher.
68
71
  * `level`: The requirement level (`:MUST`, `:SHOULD` or `:MAY`).
69
72
 
70
73
  #### Examples
@@ -72,7 +75,7 @@ The following parameters are required to instantiate the result:
72
75
  A passed expectation:
73
76
 
74
77
  ```ruby
75
- result = Expresenter.call(true).new(actual: "FOO", error: nil, expected: "foo", got: true, negate: true, valid: true, matcher: :eql, level: :MUST)
78
+ result = Expresenter.call(true).new(actual: "FOO", definition: 'eq "foo"', error: nil, expected: "foo", got: true, negate: true, level: :MUST)
76
79
 
77
80
  result.failed? # => false
78
81
  result.failure? # => false
@@ -85,44 +88,40 @@ result.passed? # => true
85
88
  result.negate? # => true
86
89
  result.error? # => false
87
90
  result.success? # => true
88
- result.valid? # => true
89
- result.inspect # => "Expresenter::Pass(actual: \"FOO\", error: nil, expected: \"foo\", got: true, matcher: :eql, negate: true, level: :MUST, valid: true)"
90
- result.definition # => "eql \"foo\""
91
- result.maybe_negate # => " not"
92
- result.summary # => "expected \"FOO\" not to eql \"foo\""
91
+ result.inspect # => "Expresenter::Pass(actual: \"FOO\", definition: \"eq \\\"foo\\\"\", error: nil, expected: \"foo\", got: true, negate: true, level: :MUST)"
92
+ result.definition # => "eq \"foo\""
93
+ result.summary # => "expected \"FOO\" not to eq \"foo\""
93
94
  result.colored_char # => "\e[32m.\e[0m"
94
- result.colored_string # => "\e[32mSuccess: expected \"FOO\" not to eql \"foo\".\e[0m"
95
- result.message # => "Success: expected \"FOO\" not to eql \"foo\"."
96
- result.to_s # => "Success: expected \"FOO\" not to eql \"foo\"."
95
+ result.colored_string # => "\e[32m\e[1mSuccess\e[22m: expected \"FOO\" not to eq \"foo\".\e[0m"
96
+ result.message # => "Success: expected \"FOO\" not to eq \"foo\"."
97
+ result.to_s # => "Success: expected \"FOO\" not to eq \"foo\"."
97
98
  result.titre # => "Success"
98
99
  ```
99
100
 
100
101
  A failed expectation:
101
102
 
102
103
  ```ruby
103
- result = Expresenter.call(false).new(actual: "foo", error: Exception.new("BOOM"), expected: 42, got: true, negate: true, valid: true, matcher: :eql, level: :MUST)
104
-
105
- actual.failed? # => true
106
- actual.failure? # => false
107
- actual.info? # => false
108
- actual.warning? # => false
109
- actual.to_sym # => :error
110
- actual.char # => "E"
111
- actual.emoji # => "💥"
112
- actual.passed? # => false
113
- actual.negate? # => true
114
- actual.error? # => true
115
- actual.success? # => true
116
- actual.valid? # => true
117
- actual.inspect # => "Expresenter::Fail(actual: \"foo\", error: #<Exception: BOOM>, expected: 42, got: true, matcher: :eql, negate: true, level: :MUST, valid: true)"
118
- actual.definition # => "eql 42"
119
- actual.maybe_negate # => " not"
120
- actual.summary # => "BOOM"
121
- actual.colored_char # => "\e[32mE\e[0m"
122
- actual.colored_string # => "\e[32mException: BOOM.\e[0m"
123
- actual.message # => "Exception: BOOM."
124
- actual.to_s # => "Exception: BOOM."
125
- actual.titre # => "Exception"
104
+ result = Expresenter.call(false).new(actual: "foo", definition: "eq 42", error: Exception.new("BOOM"), expected: 42, got: true, negate: true, level: :MUST)
105
+
106
+ result.failed? # => true
107
+ result.failure? # => false
108
+ result.info? # => false
109
+ result.warning? # => false
110
+ result.to_sym # => :error
111
+ result.char # => "E"
112
+ result.emoji # => "💥"
113
+ result.passed? # => false
114
+ result.negate? # => true
115
+ result.error? # => true
116
+ result.success? # => true
117
+ result.inspect # => "Expresenter::Fail(actual: \"foo\", definition: \"eq 42\", error: #<Exception: BOOM>, expected: 42, got: true, negate: true, level: :MUST)"
118
+ result.definition # => "eq 42"
119
+ result.summary # => "BOOM"
120
+ result.colored_char # => "\e[31mE\e[0m"
121
+ result.colored_string # => "\e[31m\e[1mException\e[22m: BOOM.\e[0m"
122
+ result.message # => "Exception: BOOM."
123
+ result.to_s # => "Exception: BOOM."
124
+ result.titre # => "Exception"
126
125
  ```
127
126
 
128
127
  ### Return or Raise
@@ -132,19 +131,20 @@ To return the results which pass, and to raise the results which fail, the `with
132
131
  In this example, the result passes, the instance is therefore returned:
133
132
 
134
133
  ```ruby
135
- Expresenter.call(true).with(actual: "FOO", error: nil, expected: "foo", got: true, negate: true, valid: true, matcher: :eql, level: :MUST) # => Expresenter::Pass(actual: "FOO", error: nil, expected: "foo", got: true, matcher: :eql, negate: true, level: :MUST, valid: true)
134
+ Expresenter.call(true).with(actual: "FOO", definition: 'eq "foo"', error: nil, expected: "foo", got: true, negate: true, level: :MUST) # => Expresenter::Pass(actual: "FOO", definition: "eq \"foo\"", error: nil, expected: "foo", got: true, negate: true, level: :MUST)
136
135
  ```
137
136
 
138
137
  In this example, the result fails, so the exception is raised:
139
138
 
140
139
  ```ruby
141
- Expresenter.call(false).with(actual: "foo", error: Exception.new("BOOM"), expected: 42, got: true, negate: true, valid: true, matcher: :eql, level: :MUST)
140
+ Expresenter.call(false).with(actual: "foo", definition: "eq 40", error: Exception.new("BOOM"), expected: 42, got: true, negate: true, level: :MUST)
142
141
  ```
143
142
 
144
143
  > Traceback (most recent call last):
145
- > 3: from ./bin/console:7:in `<main>'
146
- > 2: from (irb):1
147
- > 1: from /Users/cyril/github/fixrb/expresenter/lib/expresenter/fail.rb:12:in `with'
144
+ > 4: from ./bin/console:7:in `<main>'
145
+ > 3: from (irb):42
146
+ > 2: from (irb):43:in `rescue in irb_binding'
147
+ > 1: from /Users/cyril/github/fixrb/expresenter/lib/expresenter/fail.rb:25:in `with'
148
148
  > Expresenter::Fail (Exception: BOOM.)
149
149
 
150
150
  ### More Examples
@@ -157,19 +157,13 @@ A full list of unit tests can be viewed (and executed) here:
157
157
  * Home page: https://github.com/fixrb/expresenter
158
158
  * Bugs/issues: https://github.com/fixrb/expresenter/issues
159
159
 
160
- ## Rubies
161
-
162
- * [MRI](https://www.ruby-lang.org/)
163
- * [Rubinius](https://rubinius.com/)
164
- * [JRuby](https://www.jruby.org/)
165
-
166
160
  ## Versioning
167
161
 
168
162
  __Expresenter__ follows [Semantic Versioning 2.0](https://semver.org/).
169
163
 
170
164
  ## License
171
165
 
172
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
166
+ The [gem](https://rubygems.org/gems/expresenter) is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
173
167
 
174
168
  ***
175
169
 
@@ -179,9 +173,3 @@ The gem is available as open source under the terms of the [MIT License](https:/
179
173
  src="https://github.com/fixrb/expresenter/raw/main/img/sashite.png"
180
174
  alt="Sashite" /></a>
181
175
  </p>
182
-
183
- [gem]: https://rubygems.org/gems/expresenter
184
- [travis]: https://travis-ci.org/fixrb/expresenter
185
- [codeclimate]: https://codeclimate.com/github/fixrb/expresenter
186
- [inchpages]: https://inch-ci.org/github/fixrb/expresenter
187
- [rubydoc]: https://rubydoc.info/gems/expresenter/frames
data/lib/expresenter.rb CHANGED
@@ -3,10 +3,12 @@
3
3
  # Namespace for the Expresenter library.
4
4
  #
5
5
  # @example A passed expectation result presenter.
6
- # Expresenter.call(true).with(actual: "FOO", error: nil, expected: "foo", got: true, negate: true, valid: true, matcher: :eql, level: :MUST)
6
+ # Expresenter.call(true).with(actual: "FOO", definition: 'eql "foo"', error: nil, expected: "foo", got: true, negate: true, level: :MUST) # => Expresenter::Pass(actual: "FOO", definition: "eql \"foo\"", error: nil, expected: "foo", got: true, negate: true, level: :MUST)
7
7
  module Expresenter
8
8
  # @param is_passed [Boolean] The value of an assertion.
9
+ #
9
10
  # @return [Class<Pass>, Class<Fail>] The class of the result.
11
+ #
10
12
  # @example Get the pass class result.
11
13
  # call(true) # => Pass
12
14
  def self.call(is_passed)
@@ -3,9 +3,15 @@
3
3
  module Expresenter
4
4
  # Common collection of methods.
5
5
  module Common
6
+ # White space.
7
+ SPACE = " "
8
+
6
9
  # @return [#object_id] Returned value by the challenged subject.
7
10
  attr_reader :actual
8
11
 
12
+ # @return [String] A readable string of the matcher and any expected values.
13
+ attr_reader :definition
14
+
9
15
  # @return [Exception, nil] Any possible raised exception.
10
16
  attr_reader :error
11
17
 
@@ -16,9 +22,6 @@ module Expresenter
16
22
  # actual value and the expected value through the matcher.
17
23
  attr_reader :got
18
24
 
19
- # @return [#object_id] The matcher.
20
- attr_reader :matcher
21
-
22
25
  # @return [:MUST, :SHOULD, :MAY] The requirement level of the expectation.
23
26
  attr_reader :level
24
27
 
@@ -50,40 +53,17 @@ module Expresenter
50
53
  got.equal?(true)
51
54
  end
52
55
 
53
- # The value of the boolean comparison between the actual value and the
54
- # expected value.
55
- #
56
- # @return [Boolean] The test was true or false?
57
- def valid?
58
- @valid
59
- end
60
-
61
56
  # A string containing a human-readable representation of the result.
62
57
  #
63
58
  # @return [String] The human-readable representation of the result.
64
59
  def inspect
65
- "#{self.class}(actual: #{actual.inspect}, " \
66
- "error: #{error.inspect}, " \
67
- "expected: #{expected.inspect}, " \
68
- "got: #{got.inspect}, " \
69
- "matcher: #{matcher.inspect}, " \
70
- "negate: #{negate?.inspect}, " \
71
- "level: #{level.inspect}, " \
72
- "valid: #{valid?.inspect})" \
73
- end
74
-
75
- # The readable definition.
76
- #
77
- # @return [String] A readable string of the definition.
78
- def definition
79
- [matcher, expected&.inspect].compact.join(" ")
80
- end
81
-
82
- # The negation, if any.
83
- #
84
- # @return [String] The negation, or an empty string.
85
- def maybe_negate
86
- negate? ? " not" : ""
60
+ "#{self.class}(actual: #{actual.inspect}, " \
61
+ "definition: #{definition.inspect}, " \
62
+ "error: #{error.inspect}, " \
63
+ "expected: #{expected.inspect}, " \
64
+ "got: #{got.inspect}, " \
65
+ "negate: #{negate?.inspect}, " \
66
+ "level: #{level.inspect})"
87
67
  end
88
68
 
89
69
  # The summary of the result.
@@ -95,9 +75,9 @@ module Expresenter
95
75
  elsif actual.is_a?(::Exception)
96
76
  actual.message
97
77
  elsif actual == expected
98
- "expected#{maybe_negate} to #{definition}"
78
+ ["expected", negation, "to", definition].compact.join(SPACE)
99
79
  else
100
- "expected #{actual.inspect}#{maybe_negate} to #{definition}"
80
+ ["expected", actual.inspect, negation, "to", definition].compact.join(SPACE)
101
81
  end
102
82
  end
103
83
 
@@ -112,7 +92,7 @@ module Expresenter
112
92
  #
113
93
  # @return [String] A string representing the result.
114
94
  def colored_string
115
- color(to_s)
95
+ color(to_bold_s)
116
96
  end
117
97
 
118
98
  # The representation of the result.
@@ -135,18 +115,18 @@ module Expresenter
135
115
 
136
116
  protected
137
117
 
138
- def color(str)
139
- if success?
140
- "\e[32m#{str}\e[0m"
141
- elsif info?
142
- "\e[36m#{str}\e[0m"
143
- elsif warning?
144
- "\e[33m#{str}\e[0m"
145
- elsif failure?
146
- "\e[35m#{str}\e[0m"
147
- else
148
- "\e[31m#{str}\e[0m"
149
- end
118
+ # The negation, if any.
119
+ #
120
+ # @return [String, nil] The negation, or an empty string.
121
+ def negation
122
+ "not" if negate?
123
+ end
124
+
125
+ # The representation of the result with the title in bold.
126
+ #
127
+ # @return [String] A string representing the result with the title in bold.
128
+ def to_bold_s
129
+ "\e[1m#{titre}\e[22m: #{summary}."
150
130
  end
151
131
  end
152
132
  end
@@ -5,6 +5,18 @@ require_relative "common"
5
5
  module Expresenter
6
6
  # The class that is responsible for reporting that an expectation is false.
7
7
  class Fail < ::StandardError
8
+ # Char representing a failure.
9
+ FAILURE_CHAR = "F"
10
+
11
+ # Emoji representing a failure.
12
+ FAILURE_EMOJI = "❌"
13
+
14
+ # Char representing an error.
15
+ ERROR_CHAR = "E"
16
+
17
+ # Emoji representing an error.
18
+ ERROR_EMOJI = "💥"
19
+
8
20
  include Common
9
21
 
10
22
  # @param (see Fail#initialize)
@@ -15,26 +27,23 @@ module Expresenter
15
27
 
16
28
  # Initialize method.
17
29
  #
18
- # @param actual [#object_id] Returned value by the challenged subject.
19
- # @param error [Exception, nil] Any possible raised exception.
20
- # @param expected [#object_id] The expected value.
21
- # @param got [Boolean, nil] The result of the boolean comparison
30
+ # @param actual [#object_id] Returned value by the challenged subject.
31
+ # @param definition [String] A readable string of the matcher and any
32
+ # expected values.
33
+ # @param error [Exception, nil] Any possible raised exception.
34
+ # @param expected [#object_id] The expected value.
35
+ # @param got [Boolean, nil] The result of the boolean comparison
22
36
  # between the actual value and the expected value through the matcher.
23
- # @param negate [Boolean] Evaluated to a negative assertion?
24
- # @param valid [Boolean] Report if the test was true or false?
25
- # @param matcher [Symbol] The matcher.
26
- # @param level [:MUST, :SHOULD, :MAY] The requirement level.
27
- def initialize(actual:, error:, expected:, got:, negate:, valid:,
28
- matcher:, level:)
29
-
30
- @actual = actual
31
- @error = error
32
- @expected = expected
33
- @got = got
34
- @negate = negate
35
- @valid = valid
36
- @matcher = matcher
37
- @level = level
37
+ # @param negate [Boolean] Evaluated to a negative assertion?
38
+ # @param level [:MUST, :SHOULD, :MAY] The requirement level.
39
+ def initialize(actual:, definition:, error:, expected:, got:, negate:, level:)
40
+ @actual = actual
41
+ @definition = definition
42
+ @error = error
43
+ @expected = expected
44
+ @got = got
45
+ @negate = negate
46
+ @level = level
38
47
 
39
48
  super(to_s)
40
49
  end
@@ -83,9 +92,9 @@ module Expresenter
83
92
  # @return [String] The char that identify the result.
84
93
  def char
85
94
  if failure?
86
- "F"
95
+ FAILURE_CHAR
87
96
  else
88
- "E"
97
+ ERROR_CHAR
89
98
  end
90
99
  end
91
100
 
@@ -94,9 +103,19 @@ module Expresenter
94
103
  # @return [String] The emoji that identify the result.
95
104
  def emoji
96
105
  if failure?
97
- "❌"
106
+ FAILURE_EMOJI
107
+ else
108
+ ERROR_EMOJI
109
+ end
110
+ end
111
+
112
+ protected
113
+
114
+ def color(str)
115
+ if failure?
116
+ "\e[35m#{str}\e[0m" # purple
98
117
  else
99
- "💥"
118
+ "\e[31m#{str}\e[0m" # red
100
119
  end
101
120
  end
102
121
  end
@@ -5,6 +5,24 @@ require_relative "common"
5
5
  module Expresenter
6
6
  # The class that is responsible for reporting that an expectation is true.
7
7
  class Pass
8
+ # Char representing an info.
9
+ INFO_CHAR = "I"
10
+
11
+ # Emoji representing an info.
12
+ INFO_EMOJI = "💡"
13
+
14
+ # Char representing a success.
15
+ SUCCESS_CHAR = "."
16
+
17
+ # Emoji representing a success.
18
+ SUCCESS_EMOJI = "✅"
19
+
20
+ # Char representing a warning.
21
+ WARNING_CHAR = "W"
22
+
23
+ # Emoji representing a warning.
24
+ WARNING_EMOJI = "⚠️"
25
+
8
26
  include Common
9
27
 
10
28
  # @param (see Pass#initialize)
@@ -18,25 +36,22 @@ module Expresenter
18
36
  # Initialize method.
19
37
  #
20
38
  # @param actual [#object_id] Returned value by the challenged subject.
39
+ # @param definition [String] A readable string of the matcher and any
40
+ # expected values.
21
41
  # @param error [Exception, nil] Any possible raised exception.
22
42
  # @param expected [#object_id] The expected value.
23
43
  # @param got [Boolean, nil] The result of the boolean comparison
24
44
  # between the actual value and the expected value through the matcher.
25
45
  # @param negate [Boolean] Evaluated to a negative assertion?
26
- # @param valid [Boolean] Report if the test was true or false?
27
- # @param matcher [Symbol] The matcher.
28
46
  # @param level [:MUST, :SHOULD, :MAY] The requirement level.
29
- def initialize(actual:, error:, expected:, got:, negate:, valid:,
30
- matcher:, level:)
31
-
32
- @actual = actual
33
- @error = error
34
- @expected = expected
35
- @got = got
36
- @negate = negate
37
- @valid = valid
38
- @matcher = matcher
39
- @level = level
47
+ def initialize(actual:, definition:, error:, expected:, got:, negate:, level:)
48
+ @actual = actual
49
+ @definition = definition
50
+ @error = error
51
+ @expected = expected
52
+ @got = got
53
+ @negate = negate
54
+ @level = level
40
55
  end
41
56
 
42
57
  # Did the test fail?
@@ -71,10 +86,13 @@ module Expresenter
71
86
  #
72
87
  # @return [Symbol] The identifier of the state.
73
88
  def to_sym
74
- return :success if success?
75
- return :warning if warning?
76
-
77
- :info
89
+ if success?
90
+ :success
91
+ elsif warning?
92
+ :warning
93
+ else
94
+ :info
95
+ end
78
96
  end
79
97
 
80
98
  # Express the result with one char.
@@ -82,11 +100,11 @@ module Expresenter
82
100
  # @return [String] The char that identify the result.
83
101
  def char
84
102
  if success?
85
- "."
103
+ SUCCESS_CHAR
86
104
  elsif warning?
87
- "W"
105
+ WARNING_CHAR
88
106
  else
89
- "I"
107
+ INFO_CHAR
90
108
  end
91
109
  end
92
110
 
@@ -95,11 +113,23 @@ module Expresenter
95
113
  # @return [String] The emoji that identify the result.
96
114
  def emoji
97
115
  if success?
98
- "✅"
116
+ SUCCESS_EMOJI
117
+ elsif warning?
118
+ WARNING_EMOJI
119
+ else
120
+ INFO_EMOJI
121
+ end
122
+ end
123
+
124
+ protected
125
+
126
+ def color(str)
127
+ if success?
128
+ "\e[32m#{str}\e[0m" # green
99
129
  elsif warning?
100
- "⚠️"
130
+ "\e[33m#{str}\e[0m" # yellow
101
131
  else
102
- "💡"
132
+ "\e[36m#{str}\e[0m" # blue
103
133
  end
104
134
  end
105
135
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: expresenter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyril Kato
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-12 00:00:00.000000000 Z
11
+ date: 2021-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: brutal
@@ -167,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
167
  - !ruby/object:Gem::Version
168
168
  version: '0'
169
169
  requirements: []
170
- rubygems_version: 3.1.4
170
+ rubygems_version: 3.1.6
171
171
  signing_key:
172
172
  specification_version: 4
173
173
  summary: Expectation result presenter.