camille 0.5.11 → 0.5.12

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: 9d5030e35bf654863f03d80dbd09f8adb03b335f3f66d52c745404f6344e7efc
4
- data.tar.gz: 7cc7a7000f5ce205f8edabfa31046933b7c7e04a71b18a270a8a080b37ed0c71
3
+ metadata.gz: 321511ba40eb05246be9d567a74ac7c753287088b22e282207d6affe5cd2c7b6
4
+ data.tar.gz: 4f7bec2b9a36f8dec419131cbbd1a98e3d4735f20155320b2419e6e2fe6600e4
5
5
  SHA512:
6
- metadata.gz: 746548d7942f95c217ad8763add318a2dab939dbe2fb1abbd26d88b3c7da76023f58946a5622b15d5e3107ea7a88bfb919c78526eac78dbd6f9520d4f6e11469
7
- data.tar.gz: 5460ccaaa044c4a4a1255b68d3df78e1f251931a725b26ff36155dd29695c0422097287c07efb0f405d2928aa088022c03fd8bbf64ed652c64f450a688c9d1c1
6
+ metadata.gz: 676055618b2b681f821b3a2d0fa87bf0f60f52e0416aad2dbdbc51eb4186bd19c699f4a121265cba56d5a1128f241f1e9f3bd32a9d1779dca58cc902b888fd71
7
+ data.tar.gz: e6545da7d1c98881b0fac58802b16c2a50ad2447039b9802d3617caf5f89d3ce68e67aaa2871f338b636fc463fb813f21ef1a040d13f5f43e70bf9ee890e2b29
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.5.12
4
+
5
+ ### Added
6
+
7
+ * Added `.test` to `Camille::Type`
8
+ * Added error details to `Camille::TypeError#inspect` and `#to_s`
9
+
10
+ ### Changed
11
+
12
+ * Removed `Camille::TypeError#print` since details are now in `#inspect`
13
+
3
14
  ## 0.5.11
4
15
 
5
16
  ### Changed
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- camille (0.5.11)
4
+ camille (0.5.12)
5
5
  rails (>= 6.1, < 8)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -128,6 +128,17 @@ Each custom type is considered a type alias in TypeScript. And `alias_of` define
128
128
  type Product = {id: number, name: string}
129
129
  ```
130
130
 
131
+ You can perform a type check on a value using `test`, which might be handy in testing:
132
+
133
+ ```ruby
134
+ error = Camille::Types::Product.test(hash)
135
+ if error.nil?
136
+ # the hash is accepted by Camille::Types::Product type
137
+ else
138
+ p error
139
+ end
140
+ ```
141
+
131
142
  ### Available syntax for types
132
143
 
133
144
  Camille supports most of the type syntax in TypeScript. Below is a list of types that you can use in type and schema definition.
data/lib/camille/type.rb CHANGED
@@ -26,6 +26,15 @@ module Camille
26
26
  @underlying.transform_and_check transformed
27
27
  end
28
28
 
29
+ def test value
30
+ error, _ = transform_and_check value
31
+ error
32
+ end
33
+
34
+ def self.test value
35
+ new.test value
36
+ end
37
+
29
38
  def self.klass_name
30
39
  name.gsub(/^Camille::Types::/, '')
31
40
  end
@@ -18,8 +18,14 @@ module Camille
18
18
  !!@message
19
19
  end
20
20
 
21
- def print io = STDOUT
22
- Camille::TypeErrorPrinter.new(self).print io
21
+ def inspect
22
+ string_io = StringIO.new
23
+ Camille::TypeErrorPrinter.new(self).print string_io
24
+ "#<Camille::TypeError\n#{string_io.string}>"
25
+ end
26
+
27
+ def to_s
28
+ inspect
23
29
  end
24
30
  end
25
31
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Camille
4
- VERSION = "0.5.11"
4
+ VERSION = "0.5.12"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: camille
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.11
4
+ version: 0.5.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - 辻彩
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-10 00:00:00.000000000 Z
11
+ date: 2023-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails