tucana 0.0.21 → 0.0.23

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: e177b3a8212936efd876bcdbb5c8c4eab237f1c7b82431e2053e277d1f1f378f
4
- data.tar.gz: 3328223eb22d4fcd56045438c4d3defa6efcca8e68c3d67ffb54dea3be50a4d9
3
+ metadata.gz: ce6f7626c79b50cb3214aaf008dea1d6941a25c28312a7b37ecb27ee0406e213
4
+ data.tar.gz: 6d9ad235ce1e934adce2f4428abb571c42a1a4645ae7f661b1bb942219d9e4d9
5
5
  SHA512:
6
- metadata.gz: 7bd45602aeb658034fab19cfa2c228bc140b7937e4e749dcff8313222c91172af25b04674c6375731f6f048f7a3a5fdebc184e55c6e9f16886bff5409553cc2a
7
- data.tar.gz: 361fc0bbcf4efbaf76a86a97e449847cd30ef71a2b7d467c1b6f9dd91b6f9f583695fd37eb9823892cd893bd6ac8664e45ac4470a16526f8d96aaa74461acbfc
6
+ metadata.gz: 3d21af9f90e103746fa16473b113e8dbb0f64753717d97137e8cfbe3c05644cf6378e822c820a17b5e40e8da1ff3f68ab574bd3de82b7e041cd497348f8d1985
7
+ data.tar.gz: ab2318010493a501945a7480c20a993fc7d5294e3354f502a00e32f2cf0e4e0fde16c88045df7b3f52a8d9640b66f60f7abca8e2a24e8ef93e32e8dd2b14ad50
@@ -0,0 +1,100 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tucana
4
+ module Shared
5
+ UnexpectedRuleType = Class.new(Tucana::Error)
6
+
7
+ DataTypeRule.class_eval do
8
+ def variant
9
+ self.config
10
+ end
11
+
12
+ def rule_config
13
+ case variant
14
+ when :contains_key
15
+ self.contains_key
16
+ when :contains_type
17
+ self.contains_type
18
+ when :item_of_collection
19
+ self.item_of_collection
20
+ when :number_range
21
+ self.number_range
22
+ when :regex
23
+ self.regex
24
+ else
25
+ raise UnexpectedRuleType, "Unknown rule type #{variant}"
26
+ end
27
+ end
28
+
29
+ def create(variant, config)
30
+ case variant
31
+ when :contains_key
32
+ self.contains_key = DataTypeContainsKeyRuleConfig.new(config)
33
+ when :contains_type
34
+ self.contains_type = DataTypeContainsTypeRuleConfig.new(config)
35
+ when :item_of_collection
36
+ self.item_of_collection = DataTypeItemOfCollectionRuleConfig.from_hash(config)
37
+ when :number_range
38
+ self.number_range = DataTypeNumberRangeRuleConfig.new(config)
39
+ when :regex
40
+ self.regex = DataTypeRegexRuleConfig.new(config)
41
+ else
42
+ raise UnexpectedRuleType, "Unknown rule type #{variant}"
43
+ end
44
+
45
+ self
46
+ end
47
+
48
+ def self.create(variant, config)
49
+ self.new.create(variant, config)
50
+ end
51
+ end
52
+
53
+ DataTypeContainsKeyRuleConfig.class_eval do
54
+ def to_h
55
+ {
56
+ key: self.key,
57
+ data_type_identifier: self.data_type_identifier,
58
+ }
59
+ end
60
+ end
61
+
62
+ DataTypeContainsTypeRuleConfig.class_eval do
63
+ def to_h
64
+ {
65
+ data_type_identifier: self.data_type_identifier,
66
+ }
67
+ end
68
+ end
69
+
70
+ DataTypeItemOfCollectionRuleConfig.class_eval do
71
+ def to_h
72
+ {
73
+ items: self.items.map { |item| item.to_ruby(true) },
74
+ }
75
+ end
76
+
77
+ def self.from_hash(hash)
78
+ new(items: hash.fetch(:items).map { |item| Value.from_ruby(item) })
79
+ end
80
+ end
81
+
82
+ DataTypeNumberRangeRuleConfig.class_eval do
83
+ def to_h
84
+ {
85
+ from: self.from,
86
+ to: self.to,
87
+ steps: self.steps,
88
+ }
89
+ end
90
+ end
91
+
92
+ DataTypeRegexRuleConfig.class_eval do
93
+ def to_h
94
+ {
95
+ pattern: self.pattern,
96
+ }
97
+ end
98
+ end
99
+ end
100
+ end
@@ -4,5 +4,5 @@
4
4
  # to update the version, run "bundle exec rake release:version[NEW_VERSION]".
5
5
 
6
6
  module Tucana
7
- VERSION = "0.0.21"
7
+ VERSION = "0.0.23"
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tucana
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.21
4
+ version: 0.0.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Niklas van Schrick
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-04-28 00:00:00.000000000 Z
11
+ date: 2025-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: grpc
@@ -104,6 +104,7 @@ files:
104
104
  - lib/tucana/generated/shared/shared.struct_pb.rb
105
105
  - lib/tucana/generated/shared/shared.test_execution_pb.rb
106
106
  - lib/tucana/generated/shared/shared.translation_pb.rb
107
+ - lib/tucana/shared/shared.data_type.rb
107
108
  - lib/tucana/shared/shared.struct.rb
108
109
  - lib/tucana/version.rb
109
110
  homepage: https://github.com/code0-tech/tucana