xeme 1.0 → 1.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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +44 -11
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2dd9c9b62b1d0d2f4db4657ff6880cea68476a47ca4e366da77eab004d5ad71f
4
- data.tar.gz: b15afd00d574e1382597d43df90f50668e0c8a651f2623ab5447af0d717bd404
3
+ metadata.gz: 6f0167b2bc464df9ea9f19613a320fdae68341e4da43fba5a85f4c5d0644c5e7
4
+ data.tar.gz: 9a74cb9a9026cc9f3877c4232301fb88d611634f38ac755007cb56e76ffde52c
5
5
  SHA512:
6
- metadata.gz: 800b710d55a2745c7591a8c5867c5b97125750d525b9ed941f8826093c60efac36f03a135ca9104728ffe849351d176f257a0dc13382a25a87b5d2e9f553653f
7
- data.tar.gz: 90c33ffa2e86e06895176ce1a16aa06fef19991fb0c7fbcadc8cb79f9480d6fc4ee1764e162d8b5e3e00993c07523926d38befb74c1a3b9ef22193b968eb64ff
6
+ metadata.gz: 2d563da48a8c9a49ba3b5e9cec5da9843e84bf32ca28032699cd9ee94f38e9d9a422fe27aa03b10d852a1ad00a22bcf3e4097620fd68bdcb617e6789401ff2a9
7
+ data.tar.gz: 732c7cf90ed366fefa4bc9c3ac5abf3128e83ac3da33c0819af172b6683993250e118d7407e0d7fafe9459f566d5b70e66d9b87271881ef7fb31263583f4217c
data/README.md CHANGED
@@ -109,7 +109,7 @@ The usual:
109
109
  gem install xeme
110
110
  ```
111
111
 
112
- ### Using the Xeme gem
112
+ ### Basic Xeme concepts
113
113
 
114
114
  Xeme (the gem) is a thin layer over a hash that implements the Xeme format. (For
115
115
  the rest of this document "Xeme" refers to the Ruby class, not the format.)
@@ -138,7 +138,7 @@ xeme['errors'] = []
138
138
  xeme['errors'].push({'id'=>'my-error'})
139
139
  ```
140
140
 
141
- #### Success and failure
141
+ ### Success and failure
142
142
 
143
143
  Because a xeme isn't considered successful until it has been explicitly declared
144
144
  so, a new xeme is considered to indicate failure. However, because there are no
@@ -188,7 +188,7 @@ xeme.try_succeed
188
188
  puts xeme.success? # => false
189
189
  ```
190
190
 
191
- #### Creating and using messages
191
+ ### Creating and using messages
192
192
 
193
193
  Messages in a xeme provide a way to indicate errors (i.e. fatal errors),
194
194
  warnings (non-fatal errors), notes (not an error at all), and promises (guides
@@ -206,12 +206,12 @@ xeme.note 'my-note'
206
206
  xeme.promise 'my-promise'
207
207
  ```
208
208
 
209
- `error`, `warning`, and `note` each create a message for their own type.
210
- Although it is not required, it's usually a good idea to give a string as the
211
- first parameter. That string will be set to the `id` element in the resulting
212
- hash, as seen in the example above.
209
+ `#error`, `#warning`, `#note`, and `#promise` each create a message for their
210
+ own type. Although it is not required, it's usually a good idea to give a string
211
+ as the first parameter. That string will be set to the `id` element in the
212
+ resulting hash, as seen in the example above.
213
213
 
214
- `errors`, `warnings`, and `notes` return arrays for each type.
214
+ `#errors`, `#warnings`, `#notes`, and `#promises` return arrays for each type.
215
215
 
216
216
  ```ruby
217
217
  xeme.errors.each do |e|
@@ -261,7 +261,39 @@ err['database-error'] = 'some database error'
261
261
  err['commands'] = ['a', 'b', 'c']
262
262
  ```
263
263
 
264
- #### Nesting xemes
264
+ ### Creating metainformation
265
+
266
+ The `#meta` method returns the `meta` element in the xeme hash, creating it if
267
+ necessary. The hash will be automatically populated with a timestamp and a UUID.
268
+ If you gave the xeme an identifier when you created it, that id will stored in
269
+ the meta hash:
270
+
271
+ ```ruby
272
+ xeme = Xeme.new('my-xeme')
273
+ puts xeme.meta
274
+ ```
275
+
276
+ This produces a `meta` hash like this:
277
+
278
+ ```ruby
279
+ {
280
+ "uuid"=>"4e736a8f-314e-470a-8209-6811a7b2d38c",
281
+ "timestamp"=>2023-05-29 19:22:37.26152866 -0400,
282
+ "id"=>"my-xeme"
283
+ }
284
+ ```
285
+
286
+ If you don't pass in an id then the meta hash isn't created. However, you can
287
+ always create and use the meta hash by calling the `#meta` method. The timestamp
288
+ and UUID will be automatically created.
289
+
290
+ ```ruby
291
+ xeme = Xeme.new
292
+ xeme.meta['foo'] = 'bar'
293
+ xeme.meta.class # => Hash
294
+ ```
295
+
296
+ ### Nesting xemes
265
297
 
266
298
  In complex testing situations it can be useful to nest results within other
267
299
  results. To nest a xeme within another xeme, use the `#nest` method:
@@ -332,7 +364,7 @@ puts xeme['errors']
332
364
  ```
333
365
 
334
366
 
335
- #### Resolving xemes
367
+ ### Resolving xemes
336
368
 
337
369
  A xeme can contain contradictory information. For example, if `success` is true
338
370
  but there are errors, then the xeme should be considered as failed. If there are
@@ -376,4 +408,5 @@ mike@idocs.com
376
408
  | version | date | notes |
377
409
  |---------|--------------|-------------------------------|
378
410
  | 0.1 | Jan 7, 2020 | Initial upload. |
379
- | 1.0 | May 29, 2023 | Complete overhaul. Not backward compatible. |
411
+ | 1.0 | May 29, 2023 | Complete overhaul. Not backward compatible. |
412
+ | 1.1 | May 29, 2023 | Added and cleaned up documentation. No change to funcationality. |
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xeme
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.0'
4
+ version: '1.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike O'Sullivan