slimkeyfy 0.0.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.
Files changed (94) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +34 -0
  3. data/.rspec +3 -0
  4. data/Gemfile +6 -0
  5. data/Gemfile.lock +22 -0
  6. data/LICENSE +21 -0
  7. data/README.md +172 -0
  8. data/bin/slimkeyfy +5 -0
  9. data/lib/.DS_Store +0 -0
  10. data/lib/slimkeyfy/console/command_line.rb +90 -0
  11. data/lib/slimkeyfy/console/io_action.rb +30 -0
  12. data/lib/slimkeyfy/console/printer.rb +50 -0
  13. data/lib/slimkeyfy/console/translate.rb +101 -0
  14. data/lib/slimkeyfy/console.rb +8 -0
  15. data/lib/slimkeyfy/slimutils/file_utils.rb +61 -0
  16. data/lib/slimkeyfy/slimutils/hash_merging.rb +84 -0
  17. data/lib/slimkeyfy/slimutils/key_generator.rb +70 -0
  18. data/lib/slimkeyfy/slimutils/yaml_processor.rb +56 -0
  19. data/lib/slimkeyfy/slimutils.rb +8 -0
  20. data/lib/slimkeyfy/transformer/base_transformer.rb +42 -0
  21. data/lib/slimkeyfy/transformer/controller_transformer.rb +20 -0
  22. data/lib/slimkeyfy/transformer/slim_transformer.rb +92 -0
  23. data/lib/slimkeyfy/transformer/whitespacer.rb +48 -0
  24. data/lib/slimkeyfy/transformer/word.rb +49 -0
  25. data/lib/slimkeyfy/transformer.rb +9 -0
  26. data/lib/slimkeyfy/version.rb +3 -0
  27. data/lib/slimkeyfy.rb +12 -0
  28. data/slimkeyfy.gemspec +21 -0
  29. data/vendor/bundle/bin/htmldiff +25 -0
  30. data/vendor/bundle/bin/ldiff +25 -0
  31. data/vendor/bundle/bin/rspec +23 -0
  32. data/vendor/bundle/build_info/diff-lcs-1.2.5.info +1 -0
  33. data/vendor/bundle/build_info/rspec-3.0.0.info +1 -0
  34. data/vendor/bundle/build_info/rspec-core-3.0.2.info +1 -0
  35. data/vendor/bundle/build_info/rspec-expectations-3.0.2.info +1 -0
  36. data/vendor/bundle/build_info/rspec-mocks-3.0.2.info +1 -0
  37. data/vendor/bundle/build_info/rspec-support-3.0.2.info +1 -0
  38. data/vendor/bundle/gems/diff-lcs-1.2.5/.autotest +3 -0
  39. data/vendor/bundle/gems/diff-lcs-1.2.5/.gemtest +0 -0
  40. data/vendor/bundle/gems/diff-lcs-1.2.5/.hoerc +2 -0
  41. data/vendor/bundle/gems/diff-lcs-1.2.5/.rspec +2 -0
  42. data/vendor/bundle/gems/diff-lcs-1.2.5/.travis.yml +22 -0
  43. data/vendor/bundle/gems/diff-lcs-1.2.5/Contributing.rdoc +64 -0
  44. data/vendor/bundle/gems/diff-lcs-1.2.5/Gemfile +20 -0
  45. data/vendor/bundle/gems/diff-lcs-1.2.5/History.rdoc +152 -0
  46. data/vendor/bundle/gems/diff-lcs-1.2.5/License.rdoc +39 -0
  47. data/vendor/bundle/gems/diff-lcs-1.2.5/Manifest.txt +38 -0
  48. data/vendor/bundle/gems/diff-lcs-1.2.5/README.rdoc +85 -0
  49. data/vendor/bundle/gems/diff-lcs-1.2.5/Rakefile +41 -0
  50. data/vendor/bundle/gems/diff-lcs-1.2.5/autotest/discover.rb +1 -0
  51. data/vendor/bundle/gems/diff-lcs-1.2.5/bin/htmldiff +32 -0
  52. data/vendor/bundle/gems/diff-lcs-1.2.5/bin/ldiff +6 -0
  53. data/vendor/bundle/gems/diff-lcs-1.2.5/docs/COPYING.txt +339 -0
  54. data/vendor/bundle/gems/diff-lcs-1.2.5/docs/artistic.txt +127 -0
  55. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs/array.rb +7 -0
  56. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs/block.rb +37 -0
  57. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs/callbacks.rb +322 -0
  58. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs/change.rb +177 -0
  59. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs/htmldiff.rb +149 -0
  60. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs/hunk.rb +276 -0
  61. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs/internals.rb +301 -0
  62. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs/ldiff.rb +195 -0
  63. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs/string.rb +5 -0
  64. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff/lcs.rb +805 -0
  65. data/vendor/bundle/gems/diff-lcs-1.2.5/lib/diff-lcs.rb +3 -0
  66. data/vendor/bundle/gems/rspec-3.0.0/License.txt +24 -0
  67. data/vendor/bundle/gems/rspec-3.0.0/README.md +47 -0
  68. data/vendor/bundle/gems/rspec-3.0.0/lib/rspec.rb +3 -0
  69. data/vendor/bundle/gems/rspec-core-3.0.2/.document +5 -0
  70. data/vendor/bundle/gems/rspec-core-3.0.2/.yardopts +7 -0
  71. data/vendor/bundle/gems/rspec-core-3.0.2/Changelog.md +1466 -0
  72. data/vendor/bundle/gems/rspec-core-3.0.2/License.txt +25 -0
  73. data/vendor/bundle/gems/rspec-core-3.0.2/README.md +243 -0
  74. data/vendor/bundle/gems/rspec-core-3.0.2/exe/rspec +4 -0
  75. data/vendor/bundle/gems/rspec-expectations-3.0.2/.document +5 -0
  76. data/vendor/bundle/gems/rspec-expectations-3.0.2/.yardopts +6 -0
  77. data/vendor/bundle/gems/rspec-expectations-3.0.2/Changelog.md +749 -0
  78. data/vendor/bundle/gems/rspec-expectations-3.0.2/License.txt +24 -0
  79. data/vendor/bundle/gems/rspec-expectations-3.0.2/README.md +278 -0
  80. data/vendor/bundle/gems/rspec-mocks-3.0.2/.document +5 -0
  81. data/vendor/bundle/gems/rspec-mocks-3.0.2/.yardopts +6 -0
  82. data/vendor/bundle/gems/rspec-mocks-3.0.2/Changelog.md +733 -0
  83. data/vendor/bundle/gems/rspec-mocks-3.0.2/License.txt +24 -0
  84. data/vendor/bundle/gems/rspec-mocks-3.0.2/README.md +380 -0
  85. data/vendor/bundle/gems/rspec-support-3.0.2/Changelog.md +30 -0
  86. data/vendor/bundle/gems/rspec-support-3.0.2/LICENSE.txt +22 -0
  87. data/vendor/bundle/gems/rspec-support-3.0.2/README.md +17 -0
  88. data/vendor/bundle/specifications/diff-lcs-1.2.5.gemspec +68 -0
  89. data/vendor/bundle/specifications/rspec-3.0.0.gemspec +43 -0
  90. data/vendor/bundle/specifications/rspec-core-3.0.2.gemspec +66 -0
  91. data/vendor/bundle/specifications/rspec-expectations-3.0.2.gemspec +51 -0
  92. data/vendor/bundle/specifications/rspec-mocks-3.0.2.gemspec +48 -0
  93. data/vendor/bundle/specifications/rspec-support-3.0.2.gemspec +42 -0
  94. metadata +153 -0
@@ -0,0 +1,749 @@
1
+ ### 3.0.2 / 2014-06-19
2
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v3.0.1...v3.0.2)
3
+
4
+ Bug Fixes:
5
+
6
+ * Fix regression in `contain_exactly` (AKA `match_array`) that caused it
7
+ to wrongly pass when the expected array was empty. (Myron Marston, #581)
8
+ * Provide a better error message when you use the `change(obj, :msg)`
9
+ form of the change matcher but forget the message argument. (Alex
10
+ Sunderland, #585)
11
+ * Make the `contain_exactly` matcher work with arrays that contain hashes in
12
+ arbitrary ordering. (Sam Phippen, #578)
13
+
14
+ ### 3.0.1 / 2014-06-12
15
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v3.0.0...v3.0.1)
16
+
17
+ Bug Fixes:
18
+
19
+ * Add a missing `require` that would cause the `respond_to` matcher to
20
+ fail when used in a project where the rest of RSpec (e.g. core and
21
+ expecatations) weren't being used. (Myron Marston, #566)
22
+ * Structs are no longer treated as arrays when diffed. (Jon Rowe, #576)
23
+
24
+ ### 3.0.0 / 2014-06-01
25
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v3.0.0.rc1...v3.0.0)
26
+
27
+ No code changes. Just taking it out of pre-release.
28
+
29
+ ### 3.0.0.rc1 / 2014-05-18
30
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v3.0.0.beta2...v3.0.0.rc1)
31
+
32
+ Breaking Changes for 3.0.0:
33
+
34
+ * Remove `matcher_execution_context` attribute from DSL-defined
35
+ custom matchers. (Myron Marston)
36
+ * Remove `RSpec::Matchers::Pretty#_pretty_print`. (Myron Marston)
37
+ * Remove `RSpec::Matchers::Pretty#expected_to_sentence`. (Myron Marston)
38
+ * Rename `RSpec::Matchers::Configuration` constant to
39
+ `RSpec::Expectations::Configuration`. (Myron Marston)
40
+ * Prevent `have_xyz` predicate matchers using private methods.
41
+ (Adrian Gonzalez)
42
+ * Block matchers must now implement `supports_block_expectations?`.
43
+ (Myron Marston)
44
+ * Stop supporting `require 'rspec-expectations'`.
45
+ Use `require 'rspec/expectations'` instead. (Myron Marston)
46
+
47
+ Bug Fixes:
48
+
49
+ * Fix `NoMethodError` triggered by beta2 when `YARD` was loaded in
50
+ the test environment. (Myron Marston)
51
+ * Fix `be_xyz` matcher to accept a `do...end` block. (Myron Marston)
52
+ * Fix composable matcher failure message generation logic
53
+ so that it does not blow up when given `$stdout` or `$stderr`.
54
+ (Myron Marston)
55
+ * Fix `change` matcher to work properly with `IO` objects.
56
+ (Myron Marston)
57
+ * Fix `exist` matcher so that it can be used in composed matcher
58
+ expressions involving objects that do not implement `exist?` or
59
+ `exists?`. (Daniel Fone)
60
+ * Fix composable matcher match logic so that it clones matchers
61
+ before using them in order to work properly with matchers
62
+ that use internal memoization based on a given `actual` value.
63
+ (Myron Marston)
64
+ * Fix `be_xyz` and `has_xyz` predicate matchers so that they can
65
+ be used in composed matcher expressions involving objects that
66
+ do not implement the predicate method. (Daniel Fone)
67
+
68
+ Enhancements:
69
+
70
+ * Document the remaining public APIs. rspec-expectations now has 100% of
71
+ the public API documented and will remain that way (as new undocumented
72
+ methods will fail the build). (Myron Marston)
73
+ * Improve the formatting of BigDecimal objects in `eq` matcher failure
74
+ messages. (Daniel Fone)
75
+ * Improve the failure message for `be_xyz` predicate matchers so
76
+ that it includes the `inspect` output of the receiver.
77
+ (Erik Michaels-Ober, Sam Phippen)
78
+ * Add `all` matcher, to allow you to specify that a given matcher
79
+ matches all elements in a collection:
80
+ `expect([1, 3, 5]).to all( be_odd )`. (Adam Farhi)
81
+ * Add boolean aliases (`&`/`|`) for compound operators (`and`/`or`). (Adam Farhi)
82
+ * Give users a clear error when they wrongly use a value matcher
83
+ in a block expectation expression (e.g. `expect { 3 }.to eq(3)`)
84
+ or vice versa. (Myron Marston)
85
+
86
+ ### 3.0.0.beta2 / 2014-02-17
87
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v3.0.0.beta1...v3.0.0.beta2)
88
+
89
+ Breaking Changes for 3.0.0:
90
+
91
+ * Remove deprecated support for accessing the `RSpec` constant using
92
+ `Rspec` or `Spec`. (Myron Marston)
93
+ * Remove deprecated `RSpec::Expectations.differ=`. (Myron Marston)
94
+ * Remove support for deprecated `expect(...).should`. (Myron Marston)
95
+ * Explicitly disallow `expect { }.not_to change { }` with `by`,
96
+ `by_at_least`, `by_at_most` or `to`. These have never been supported
97
+ but did not raise explicit errors. (Myron Marston)
98
+ * Provide `===` rather than `==` as an alias of `matches?` for
99
+ all matchers. The semantics of `===` are closer to an RSpec
100
+ matcher than `==`. (Myron Marston)
101
+ * Remove deprecated `RSpec::Matchers::OperatorMatcher` constant.
102
+ (Myron Marston)
103
+ * Make `RSpec::Expectations::ExpectationNotMetError` subclass
104
+ `Exception` rather than `StandardError` so they can bypass
105
+ a bare `rescue` in end-user code (e.g. when an expectation is
106
+ set from within a rspec-mocks stub implementation). (Myron Marston)
107
+ * Remove Test::Unit and Minitest 4.x integration. (Myron Marston)
108
+
109
+ Enhancements:
110
+
111
+ * Simplify the failure message of the `be` matcher when matching against:
112
+ `true`, `false` and `nil`. (Sam Phippen)
113
+ * Update matcher protocol and custom matcher DSL to better align
114
+ with the newer `expect` syntax. If you want your matchers to
115
+ maintain compatibility with multiple versions of RSpec, you can
116
+ alias the new names to the old. (Myron Marston)
117
+ * `failure_message_for_should` => `failure_message`
118
+ * `failure_message_for_should_not` => `failure_message_when_negated`
119
+ * `match_for_should` => `match`
120
+ * `match_for_should_not` => `match_when_negated`
121
+ * Improve generated descriptions from `change` matcher. (Myron Marston)
122
+ * Add support for compound matcher expressions using `and` and `or`.
123
+ Simply chain them off of any existing matcher to create an expression
124
+ like `expect(alphabet).to start_with("a").and end_with("z")`.
125
+ (Eloy Espinaco)
126
+ * Add `contain_exactly` as a less ambiguous version of `match_array`.
127
+ Note that it expects the expected array to be splatted as
128
+ individual args: `expect(array).to contain_exactly(1, 2)` is
129
+ the same as `expect(array).to match_array([1, 2])`. (Myron Marston)
130
+ * Update `contain_exactly`/`match_array` so that it can match against
131
+ other non-array collections (such as a `Set`). (Myron Marston)
132
+ * Update built-in matchers so that they can accept matchers as arguments
133
+ to allow you to compose matchers in arbitrary ways. (Myron Marston)
134
+ * Add `RSpec::Matchers::Composable` mixin that can be used to make
135
+ a custom matcher composable as well. Note that custom matchers
136
+ defined via `RSpec::Matchers.define` already have this. (Myron
137
+ Marston)
138
+ * Define noun-phrase aliases for built-in matchers, which can be
139
+ used when creating composed matcher expressions that read better
140
+ and provide better failure messages. (Myron Marston)
141
+ * Add `RSpec::Machers.alias_matcher` so users can define their own
142
+ matcher aliases. The `description` of the matcher will reflect the
143
+ alternate matcher name. (Myron Marston)
144
+ * Add explicit `be_between` matcher. `be_between` has worked for a
145
+ long time as a dynamic predicate matcher, but the failure message
146
+ was suboptimal. The new matcher provides a much better failure
147
+ message. (Erik Michaels-Ober)
148
+ * Enhance the `be_between` matcher to allow for `inclusive` or `exclusive`
149
+ comparison (e.g. inclusive of min/max or exclusive of min/max).
150
+ (Pedro Gimenez)
151
+ * Make failure message for `not_to be #{operator}` less confusing by
152
+ only saying it's confusing when comparison operators are used.
153
+ (Prathamesh Sonpatki)
154
+ * Improve failure message of `eq` matcher when `Time` or `DateTime`
155
+ objects are used so that the full sub-second precision is included.
156
+ (Thomas Holmes, Jeff Wallace)
157
+ * Add `output` matcher for expecting that a block outputs `to_stdout`
158
+ or `to_stderr`. (Luca Pette, Matthias Günther)
159
+ * Forward a provided block on to the `has_xyz?` method call when
160
+ the `have_xyz` matcher is used. (Damian Galarza)
161
+ * Provide integration with Minitest 5.x. Require
162
+ `rspec/expectations/minitest_integration` after loading minitest
163
+ to use rspec-expectations with minitest. (Myron Marston)
164
+
165
+ Bug Fixes:
166
+
167
+ * Fix wrong matcher descriptions with falsey expected value (yujinakayama)
168
+ * Fix `expect { }.not_to change { }.from(x)` so that the matcher only
169
+ passes if the starting value is `x`. (Tyler Rick, Myron Marston)
170
+ * Fix hash diffing, so that it colorizes properly and doesn't consider trailing
171
+ commas when performing the diff. (Jared Norman)
172
+ * Fix built-in matchers to fail normally rather than raising
173
+ `ArgumentError` when given an object of the wrong type to match
174
+ against, so that they work well in composite matcher expressions like
175
+ `expect([1.51, "foo"]).to include(a_string_matching(/foo/), a_value_within(0.1).of(1.5))`.
176
+ (Myron Marston)
177
+
178
+ Deprecations:
179
+
180
+ * Retain support for RSpec 2 matcher protocol (e.g. for matchers
181
+ in 3rd party extension gems like `shoulda`), but it will print
182
+ a deprecation warning. (Myron Marston)
183
+
184
+ ### 3.0.0.beta1 / 2013-11-07
185
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.99.1...v3.0.0.beta1)
186
+
187
+ Breaking Changes for 3.0.0:
188
+
189
+ * Remove explicit support for 1.8.6. (Jon Rowe)
190
+ * Remove the deprecated `be_close` matcher, preferring `be_within` instead.
191
+ (Sam Phippen)
192
+ * Remove the deprecated `have`, `have_at_least` and `have_at_most` matchers.
193
+ You can continue using those matchers through https://github.com/rspec/rspec-collection_matchers,
194
+ or you can rewrite your expectations with something like
195
+ `expect(your_object.size).to eq(num)`. (Hugo Baraúna)
196
+ * Rename `be_true` and `be_false` to `be_truthy` and `be_falsey`. (Sam Phippen)
197
+ * Make `expect { }.to_not raise_error(SomeSpecificClass, message)`,
198
+ `expect { }.to_not raise_error(SomeSpecificClass)` and
199
+ `expect { }.to_not raise_error(message)` invalid, since they are prone
200
+ to hiding failures. Instead, use `expect { }.to_not raise_error` (with no
201
+ args). (Sam Phippen)
202
+ * Within `RSpec::Matchers.define` blocks, helper methods made available
203
+ either via `def self.helper` or `extend HelperModule` are no longer
204
+ available to the `match` block (or any of the others). Instead
205
+ `include` your helper module and define the helper method as an
206
+ instance method. (Myron Marston)
207
+ * Force upgrading Diff::LCS for encoding compatability with diffs. (Jon Rowe)
208
+
209
+ Enhancements:
210
+
211
+ * Support `do..end` style block with `raise_error` matcher. (Yuji Nakayama)
212
+ * Rewrote custom matcher DSL to simplify its implementation and solve a
213
+ few issues. (Myron Marston)
214
+ * Allow early `return` from within custom matcher DSL blocks. (Myron
215
+ Marston)
216
+ * The custom matcher DSL's `chain` can now accept a block. (Myron
217
+ Marston)
218
+ * Support setting an expectation on a `raise_error` matcher via a chained
219
+ `with_message` method call. (Sam Phippen)
220
+
221
+ Bug Fixes:
222
+
223
+ * Allow `include` and `match` matchers to be used from within a
224
+ DSL-defined custom matcher's `match` block. (Myron Marston)
225
+ * Correct encoding error message on diff failure (Jon Rowe)
226
+
227
+ Deprecations:
228
+
229
+ * Using the old `:should` syntax without explicitly configuring it is deprecated.
230
+ It will continue to work but will emit a deprecation warning in RSpec 3 if
231
+ you do not explicitly enable it. (Sam Phippen)
232
+
233
+ ### 2.99.1 / 2014-06-19
234
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.99.0...v2.99.1)
235
+
236
+ Bug Fixes:
237
+
238
+ * Fix typo in custom matcher `expected` deprecation warning -- it's
239
+ `expected_as_array`, not `expected_array`. (Frederick Cheung, #562)
240
+
241
+ ### 2.99.0 / 2014-06-01
242
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.99.0.rc1...v2.99.0)
243
+
244
+ Enhancements:
245
+
246
+ * Special case deprecation message for `errors_on` with `rspec-rails` to be more useful.
247
+ (Aaron Kromer)
248
+
249
+ ### 2.99.0.rc1 / 2014-05-18
250
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.99.0.beta2...2.99.0.rc1)
251
+
252
+ Deprecations:
253
+
254
+ * Deprecate `matcher_execution_context` attribute on DSL-defined
255
+ custom matchers. (Myron Marston)
256
+ * Deprecate `RSpec::Matchers::Pretty#_pretty_print`. (Myron Marston)
257
+ * Deprecate `RSpec::Matchers::Pretty#expected_to_sentence`. (Myron Marston)
258
+ * Deprecate `RSpec::Matchers::Configuration` in favor of
259
+ `RSpec::Expectations::Configuration`. (Myron Marston)
260
+ * Deprecate `be_xyz` predicate matcher on an object that doesn't respond to
261
+ `xyz?` or `xyzs?`. (Daniel Fone)
262
+ * Deprecate `have_xyz` matcher on an object that doesn't respond to `has_xyz?`.
263
+ (Daniel Fone)
264
+ * Deprecate `have_xyz` matcher on an object that has a private method `has_xyz?`.
265
+ (Jon Rowe)
266
+ * Issue a deprecation warning when a block expectation expression is
267
+ used with a matcher that doesn't explicitly support block expectations
268
+ via `supports_block_expectations?`. (Myron Marston)
269
+ * Deprecate `require 'rspec-expectations'`. Use
270
+ `require 'rspec/expectations'` instead. (Myron Marston)
271
+
272
+ ### 2.99.0.beta2 / 2014-02-17
273
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.99.0.beta1...v2.99.0.beta2)
274
+
275
+ Deprecations:
276
+
277
+ * Deprecate chaining `by`, `by_at_least`, `by_at_most` or `to` off of
278
+ `expect { }.not_to change { }`. The docs have always said these are
279
+ not supported for the negative form but now they explicitly raise
280
+ errors in RSpec 3. (Myron Marston)
281
+ * Change the semantics of `expect { }.not_to change { x }.from(y)`.
282
+ In RSpec 2.x, this expectation would only fail if `x` started with
283
+ the value of `y` and changed. If it started with a different value
284
+ and changed, it would pass. In RSpec 3, it will pass only if the
285
+ value starts at `y` and it does not change. (Myron Marston)
286
+ * Deprecate `matcher == value` as an alias for `matcher.matches?(value)`,
287
+ in favor of `matcher === value`. (Myron Marston)
288
+ * Deprecate `RSpec::Matchers::OperatorMatcher` in favor of
289
+ `RSpec::Matchers::BuiltIn::OperatorMatcher`. (Myron Marston)
290
+ * Deprecate auto-integration with Test::Unit and minitest.
291
+ Instead, include `RSpec::Matchers` in the appropriate test case
292
+ base class yourself. (Myron Marston)
293
+ * Deprecate treating `#expected` on a DSL-generated custom matcher
294
+ as an array when only 1 argument is passed to the matcher method.
295
+ In RSpec 3 it will be the single value in order to make diffs
296
+ work properly. (Jon Rowe)
297
+
298
+ ### 2.99.0.beta1 / 2013-11-07
299
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.14.4...v2.99.0.beta1)
300
+
301
+ Deprecations
302
+
303
+ * Deprecate `have`, `have_at_least` and `have_at_most`. You can continue using those
304
+ matchers through https://github.com/rspec/rspec-collection_matchers, or
305
+ you can rewrite your expectations with something like
306
+ `expect(your_object.size).to eq(num)`. (Hugo Baraúna)
307
+ * Deprecate `be_xyz` predicate matcher when `xyz?` is a private method.
308
+ (Jon Rowe)
309
+ * Deprecate `be_true`/`be_false` in favour of `be_truthy`/`be_falsey`
310
+ (for Ruby's conditional semantics) or `be true`/`be false`
311
+ (for exact equality). (Sam Phippen)
312
+ * Deprecate calling helper methods from a custom matcher with the wrong
313
+ scope. (Myron Marston)
314
+ * `def self.foo` / `extend Helper` can be used to add macro methods
315
+ (e.g. methods that call the custom matcher DSL methods), but should
316
+ not be used to define helper methods called from within the DSL
317
+ blocks.
318
+ * `def foo` / `include Helper` is the opposite: it's for helper methods
319
+ callable from within a DSL block, but not for defining macros.
320
+ * RSpec 2.x allowed helper methods defined either way to be used for
321
+ either purpose, but RSpec 3.0 will not.
322
+
323
+ ### 2.14.5 / 2014-02-01
324
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.14.4...v2.14.5)
325
+
326
+ Bug fixes
327
+
328
+ * Fix wrong matcher descriptions with falsey expected value
329
+ (yujinakayama)
330
+
331
+ ### 2.14.4 / 2013-11-06
332
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.14.3...v2.14.4)
333
+
334
+ Bug fixes
335
+
336
+ * Make the `match` matcher produce a diff output. (Jon Rowe, Ben Moss)
337
+ * Choose encoding for diff's more intelligently, and when all else fails fall
338
+ back to default internal encoding with replacing characters. (Jon Rowe)
339
+
340
+ ### 2.14.3 / 2013-09-22
341
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.14.2...v2.14.3)
342
+
343
+ Bug fixes
344
+
345
+ * Fix operator matchers (`should` syntax) when `method` is redefined on target.
346
+ (Brandon Turner)
347
+ * Fix diffing of hashes with object based keys. (Jon Rowe)
348
+ * Fix operator matchers (`should` syntax) when operator is defined via
349
+ `method_missing` (Jon Rowe)
350
+
351
+ ### 2.14.2 / 2013-08-14
352
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.14.1...v2.14.2)
353
+
354
+ Bug fixes
355
+
356
+ * Fix `be_<predicate>` matcher to not support operator chaining like the
357
+ `be` matcher does (e.g. `be == 5`). This led to some odd behaviors
358
+ since `be_<predicate> == anything` returned a `BeComparedTo` matcher
359
+ and was thus always truthy. This was a consequence of the implementation
360
+ (e.g. subclassing the basic `Be` matcher) and was not intended behavior.
361
+ (Myron Marston).
362
+ * Fix `change` matcher to compare using `==` in addition to `===`. This
363
+ is important for an expression like:
364
+ `expect {}.to change { a.class }.from(ClassA).to(ClassB)` because
365
+ `SomeClass === SomeClass` returns false. (Myron Marston)
366
+
367
+ ### 2.14.1 / 2013-08-08
368
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.14.0...2.14.1)
369
+
370
+ Bug fixes
371
+
372
+ * Ensure diff output uses the same encoding as the encoding of
373
+ the string being diff'd to prevent `Encoding::UndefinedConversionError`
374
+ errors (Jon Rowe).
375
+
376
+ ### 2.14.0 / 2013-07-06
377
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.14.0.rc1...v2.14.0)
378
+
379
+ Bug fixes
380
+
381
+ * Values that are not matchers use `#inspect`, rather than `#description` for
382
+ documentation output (Andy Lindeman, Sam Phippen).
383
+ * Make `expect(a).to be_within(x).percent_of(y)` work with negative y
384
+ (Katsuhiko Nishimra).
385
+ * Make the `be_predicate` matcher work as expected used with `expect{...}.to
386
+ change...` (Sam Phippen).
387
+
388
+ ### 2.14.0.rc1 / 2013-05-27
389
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.13.0...v2.14.0.rc1)
390
+
391
+ Enhancements
392
+
393
+ * Enhance `yield_control` so that you can specify an exact or relative
394
+ number of times: `expect { }.to yield_control.exactly(3).times`,
395
+ `expect { }.to yield_control.at_least(2).times`, etc (Bartek
396
+ Borkowski).
397
+ * Make the differ that is used when an expectation fails better handle arrays
398
+ by splitting each element of the array onto its own line. (Sam Phippen)
399
+ * Accept duck-typed strings that respond to `:to_str` as expectation messages.
400
+ (Toby Ovod-Everett)
401
+
402
+ Bug fixes
403
+
404
+ * Fix differ to not raise errors when dealing with differently-encoded
405
+ strings (Jon Rowe).
406
+ * Fix `expect(something).to be_within(x).percent_of(y)` where x and y are both
407
+ integers (Sam Phippen).
408
+ * Fix `have` matcher to handle the fact that on ruby 2.0,
409
+ `Enumerator#size` may return nil (Kenta Murata).
410
+ * Fix `expect { raise s }.to raise_error(s)` where s is an error instance
411
+ on ruby 2.0 (Sam Phippen).
412
+ * Fix `expect(object).to raise_error` passing. This now warns the user and
413
+ fails the spec (tomykaira).
414
+
415
+ Deprecations
416
+
417
+ * Deprecate `expect { }.not_to raise_error(SpecificErrorClass)` or
418
+ `expect { }.not_to raise_error("some specific message")`. Using
419
+ these was prone to hiding failures as they would allow _any other
420
+ error_ to pass. (Sam Phippen and David Chelimsky)
421
+
422
+ ### 2.13.0 / 2013-02-23
423
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.12.1...v2.13.0)
424
+
425
+ Enhancements
426
+
427
+ * Add support for percent deltas to `be_within` matcher:
428
+ `expect(value).to be_within(10).percent_of(expected)`
429
+ (Myron Marston).
430
+ * Add support to `include` matcher to allow it to be given a list
431
+ of matchers as the expecteds to match against (Luke Redpath).
432
+
433
+ Bug fixes
434
+
435
+ * Fix `change` matcher so that it dups strings in order to handle
436
+ mutated strings (Myron Marston).
437
+ * Fix `should be =~ /some regex/` / `expect(...).to be =~ /some regex/`.
438
+ Previously, these either failed with a confusing `undefined method
439
+ matches?' for false:FalseClass` error or were no-ops that didn't
440
+ actually verify anything (Myron Marston).
441
+ * Add compatibility for diff-lcs 1.2 and relax the version
442
+ constraint (Peter Goldstein).
443
+ * Fix DSL-generated matchers to allow multiple instances of the
444
+ same matcher in the same example to have different description
445
+ and failure messages based on the expected value (Myron Marston).
446
+ * Prevent `undefined method #split for Array` error when dumping
447
+ the diff of an array of multiline strings (Myron Marston).
448
+ * Don't blow up when comparing strings that are in an encoding
449
+ that is not ASCII compatible (Myron Marston).
450
+ * Remove confusing "Check the implementation of #==" message
451
+ printed for empty diffs (Myron Marston).
452
+
453
+ ### 2.12.1 / 2012-12-15
454
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.12.0...v2.12.1)
455
+
456
+ Bug fixes
457
+
458
+ * Improve the failure message for an expression like
459
+ `{}.should =~ {}`. (Myron Marston and Andy Lindeman)
460
+ * Provide a `match_regex` alias so that custom matchers
461
+ built using the matcher DSL can use it (since `match`
462
+ is a different method in that context).
463
+ (Steven Harman)
464
+
465
+ ### 2.12.0 / 2012-11-12
466
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.11.3...v2.12.0)
467
+
468
+ Enhancements
469
+
470
+ * Colorize diffs if the `--color` option is configured. (Alex Coplan)
471
+ * Include backtraces in unexpected errors handled by `raise_error`
472
+ matcher (Myron Marston)
473
+ * Print a warning when users accidentally pass a non-string argument
474
+ as an expectation message (Sam Phippen)
475
+ * `=~` and `match_array` matchers output a more useful error message when
476
+ the actual value is not an array (or an object that responds to `#to_ary`)
477
+ (Sam Phippen)
478
+
479
+ Bug fixes
480
+
481
+ * Fix `include` matcher so that `expect({}).to include(:a => nil)`
482
+ fails as it should (Sam Phippen).
483
+ * Fix `be_an_instance_of` matcher so that `Class#to_s` is used in the
484
+ description rather than `Class#inspect`, since some classes (like
485
+ `ActiveRecord::Base`) define a long, verbose `#inspect`.
486
+ (Tom Stuart)
487
+
488
+ ### 2.11.3 / 2012-09-04
489
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.11.2...v2.11.3)
490
+
491
+ Bug fixes
492
+
493
+ * Fix (and deprecate) `expect { }.should` syntax so that it works even
494
+ though it was never a documented or intended syntax. It worked as a
495
+ consequence of the implementation of `expect` in RSpec 2.10 and
496
+ earlier. (Myron Marston)
497
+ * Ensure #== is defined on built in matchers so that they can be composed.
498
+ For example:
499
+
500
+ expect {
501
+ user.emailed!
502
+ }.to change { user.last_emailed_at }.to be_within(1.second).of(Time.zone.now)
503
+
504
+ ### 2.11.2 / 2012-07-25
505
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.11.1...v2.11.2)
506
+
507
+ Bug fixes
508
+
509
+ * Define `should` and `should_not` on `Object` rather than `BasicObject`
510
+ on MacRuby. On MacRuby, `BasicObject` is defined but is not the root
511
+ of the object hierarchy. (Gabriel Gilder)
512
+
513
+ ### 2.11.1 / 2012-07-08
514
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.11.0...v2.11.1)
515
+
516
+ Bug fixes
517
+
518
+ * Constrain `actual` in `be_within` matcher to values that respond to `-` instead
519
+ of requiring a specific type.
520
+ * `Time`, for example, is a legit alternative.
521
+
522
+ ### 2.11.0 / 2012-07-07
523
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.10.0...v2.11.0)
524
+
525
+ Enhancements
526
+
527
+ * Expand `expect` syntax so that it supports expections on bare values
528
+ in addition to blocks (Myron Marston).
529
+ * Add configuration options to control available expectation syntaxes
530
+ (Myron Marston):
531
+ * `RSpec.configuration.expect_with(:rspec) { |c| c.syntax = :expect }`
532
+ * `RSpec.configuration.expect_with(:rspec) { |c| c.syntax = :should }`
533
+ * `RSpec.configuration.expect_with(:rspec) { |c| c.syntax = [:should, :expect] }`
534
+ * `RSpec.configuration.add_should_and_should_not_to Delegator`
535
+
536
+ Bug fixes
537
+
538
+ * Allow only `Numeric` values to be the "actual" in the `be_within` matcher.
539
+ This prevents confusing error messages. (Su Zhang @zhangsu)
540
+ * Define `should` and `should_not` on `BasicObject` rather than `Kernel`
541
+ on 1.9. This makes `should` and `should_not` work properly with
542
+ `BasicObject`-subclassed proxy objects like `Delegator`. (Myron
543
+ Marston)
544
+
545
+ ### 2.10.0 / 2012-05-03
546
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.9.1...v2.10.0)
547
+
548
+ Enhancements
549
+
550
+ * Add new `start_with` and `end_with` matchers (Jeremy Wadsack)
551
+ * Add new matchers for specifying yields (Myron Marston):
552
+ * `expect {...}.to yield_control`
553
+ * `expect {...}.to yield_with_args(1, 2, 3)`
554
+ * `expect {...}.to yield_with_no_args`
555
+ * `expect {...}.to yield_successive_args(1, 2, 3)`
556
+ * `match_unless_raises` takes multiple exception args
557
+
558
+ Bug fixes
559
+
560
+ * Fix `be_within` matcher to be inclusive of delta.
561
+ * Fix message-specific specs to pass on Rubinius (John Firebaugh)
562
+
563
+ ### 2.9.1 / 2012-04-03
564
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.9.0...v2.9.1)
565
+
566
+ Bug fixes
567
+
568
+ * Provide a helpful message if the diff between two objects is empty.
569
+ * Fix bug diffing single strings with multiline strings.
570
+ * Fix for error with using custom matchers inside other custom matchers
571
+ (mirasrael)
572
+ * Fix using execution context methods in nested DSL matchers (mirasrael)
573
+
574
+ ### 2.9.0 / 2012-03-17
575
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.8.0...v2.9.0)
576
+
577
+ Enhancements
578
+
579
+ * Move built-in matcher classes to RSpec::Matchers::BuiltIn to reduce pollution
580
+ of RSpec::Matchers (which is included in every example).
581
+ * Autoload files with matcher classes to improve load time.
582
+
583
+ Bug fixes
584
+
585
+ * Align `respond_to?` and `method_missing` in DSL-defined matchers.
586
+ * Clear out user-defined instance variables between invocations of DSL-defined
587
+ matchers.
588
+ * Dup the instance of a DSL generated matcher so its state is not changed by
589
+ subsequent invocations.
590
+ * Treat expected args consistently across positive and negative expectations
591
+ (thanks to Ralf Kistner for the heads up)
592
+
593
+ ### 2.8.0 / 2012-01-04
594
+
595
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.8.0.rc2...v2.8.0)
596
+
597
+ Enhancements
598
+
599
+ * Better diff output for Hash (Philippe Creux)
600
+ * Eliminate Ruby warnings (Olek Janiszewski)
601
+
602
+ ### 2.8.0.rc2 / 2011-12-19
603
+
604
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.8.0.rc1...v2.8.0.rc2)
605
+
606
+ No changes for this release. Just releasing with the other rspec gems.
607
+
608
+ ### 2.8.0.rc1 / 2011-11-06
609
+
610
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.7.0...v2.8.0.rc1)
611
+
612
+ Enhancements
613
+
614
+ * Use classes for the built-in matchers (they're faster).
615
+ * Eliminate Ruby warnings (Matijs van Zuijlen)
616
+
617
+ ### 2.7.0 / 2011-10-16
618
+
619
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.6.0...v2.7.0)
620
+
621
+ Enhancements
622
+
623
+ * `HaveMatcher` converts argument using `to_i` (Alex Bepple & Pat Maddox)
624
+ * Improved failure message for the `have_xxx` matcher (Myron Marston)
625
+ * `HaveMatcher` supports `count` (Matthew Bellantoni)
626
+ * Change matcher dups `Enumerable` before the action, supporting custom
627
+ `Enumerable` types like `CollectionProxy` in Rails (David Chelimsky)
628
+
629
+ Bug fixes
630
+
631
+ * Fix typo in `have(n).xyz` documentation (Jean Boussier)
632
+ * fix `safe_sort` for ruby 1.9.2 (`Kernel` now defines `<=>` for Object) (Peter
633
+ van Hardenberg)
634
+
635
+ ### 2.6.0 / 2011-05-12
636
+
637
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.5.0...v2.6.0)
638
+
639
+ Enhancements
640
+
641
+ * `change` matcher accepts regexps (Robert Davis)
642
+ * better descriptions for `have_xxx` matchers (Magnus Bergmark)
643
+ * `range.should cover(*values)` (Anders Furseth)
644
+
645
+ Bug fixes
646
+
647
+ * Removed non-ascii characters that were choking rcov (Geoffrey Byers)
648
+ * change matcher dups arrays and hashes so their before/after states can be
649
+ compared correctly.
650
+ * Fix the order of inclusion of RSpec::Matchers in Test::Unit::TestCase and
651
+ MiniTest::Unit::TestCase to prevent a SystemStackError (Myron Marston)
652
+
653
+ ### 2.5.0 / 2011-02-05
654
+
655
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.4.0...v2.5.0)
656
+
657
+ Enhancements
658
+
659
+ * `should exist` works with `exist?` or `exists?` (Myron Marston)
660
+ * `expect { ... }.not_to do_something` (in addition to `to_not`)
661
+
662
+ Documentation
663
+
664
+ * improved docs for raise_error matcher (James Almond)
665
+
666
+ ### 2.4.0 / 2011-01-02
667
+
668
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.3.0...v2.4.0)
669
+
670
+ No functional changes in this release, which was made to align with the
671
+ rspec-core-2.4.0 release.
672
+
673
+ Enhancements
674
+
675
+ * improved RDoc for change matcher (Jo Liss)
676
+
677
+ ### 2.3.0 / 2010-12-12
678
+
679
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.2.1...v2.3.0)
680
+
681
+ Enhancements
682
+
683
+ * diff strings when include matcher fails (Mike Sassak)
684
+
685
+ ### 2.2.0 / 2010-11-28
686
+
687
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.1.0...v2.2.0)
688
+
689
+ ### 2.1.0 / 2010-11-07
690
+
691
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.0.1...v2.1.0)
692
+
693
+ Enhancements
694
+
695
+ * `be_within(delta).of(expected)` matcher (Myron Marston)
696
+ * Lots of new Cucumber features (Myron Marston)
697
+ * Raise error if you try `should != expected` on Ruby-1.9 (Myron Marston)
698
+ * Improved failure messages from `throw_symbol` (Myron Marston)
699
+
700
+ Bug fixes
701
+
702
+ * Eliminate hard dependency on `RSpec::Core` (Myron Marston)
703
+ * `have_matcher` - use pluralize only when ActiveSupport inflections are indeed
704
+ defined (Josep M Bach)
705
+ * throw_symbol matcher no longer swallows exceptions (Myron Marston)
706
+ * fix matcher chaining to avoid name collisions (Myron Marston)
707
+
708
+ ### 2.0.0 / 2010-10-10
709
+
710
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.0.0.rc...v2.0.0)
711
+
712
+ Enhancements
713
+
714
+ * Add match_for_should_not method to matcher DSL (Myron Marston)
715
+
716
+ Bug fixes
717
+
718
+ * `respond_to` matcher works correctly with `should_not` with multiple methods
719
+ (Myron Marston)
720
+ * `include` matcher works correctly with `should_not` with multiple values
721
+ (Myron Marston)
722
+
723
+ ### 2.0.0.rc / 2010-10-05
724
+
725
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.0.0.beta.22...v2.0.0.rc)
726
+
727
+ Enhancements
728
+
729
+ * `require 'rspec/expectations'` in a T::U or MiniUnit suite (Josep M. Bach)
730
+
731
+ Bug fixes
732
+
733
+ * change by 0 passes/fails correctly (Len Smith)
734
+ * Add description to satisfy matcher
735
+
736
+ ### 2.0.0.beta.22 / 2010-09-12
737
+
738
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v2.0.0.beta.20...v2.0.0.beta.22)
739
+
740
+ Enhancements
741
+
742
+ * diffing improvements
743
+ * diff multiline strings
744
+ * don't diff single line strings
745
+ * don't diff numbers (silly)
746
+ * diff regexp + multiline string
747
+
748
+ Bug fixes
749
+ * `should[_not]` change now handles boolean values correctly