ask-tools 0.1.2 → 0.1.3

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: d96e703071657b83c628b1ee0ef7d810a41b4792e349c2b821211d0289db7888
4
- data.tar.gz: 5f2e7ef5d18005f88e31149721351a0b1f361ac54fdda073294c9d27762acdf5
3
+ metadata.gz: 8d01f01b47e797c394a9cc5cdc1c3232c68eefe868467e9f566e5b4a12b4fe64
4
+ data.tar.gz: 288e2acd5fbb771f4267f053c240c568014477b27fcf7c182121e2df05f484f8
5
5
  SHA512:
6
- metadata.gz: 247461f2d7527f39653bf6fcbc35026ca5bd03d4943066d881aa364cf50191845d0707ee21bc233ba620698f6ed3110535f89f28af989de354cc735907166a8f
7
- data.tar.gz: 16a50fc193ed557e585064b2804bab91481f38e57529a55f42c5b39af6698690654faa3d1084ee9bda636d623d6d7aa9e98b404de99bc36064e45a7705b2d772
6
+ metadata.gz: 5620cac66589fa5d51e92e71175f2b210fd0b468489e8210a6b0d72b262771e9316810fd2869368846ce56e9accca11e9ad8cf1873a6fb6a14de4d4839cce0d3
7
+ data.tar.gz: c96941efe222b6f611c46dabf22c8c5b301001400d47454919c3a0476351ff67da7207fbe46674bfa76581b8cb2ccb18bd2aa801fe704b1956db2bb48409b0e7
@@ -48,6 +48,49 @@ module Ask
48
48
  @provider_params ||= {}
49
49
  end
50
50
 
51
+ def params_schema
52
+ @params_schema ||= begin
53
+ if @params_schema_definition
54
+ deep_stringify_keys(resolve_params_schema(@params_schema_definition))
55
+ elsif @parameters && @parameters.any?
56
+ build_schema_from_params
57
+ else
58
+ nil
59
+ end
60
+ end
61
+ end
62
+
63
+ def build_schema_from_params
64
+ properties = parameters.to_h do |_name, param|
65
+ schema = { type: param.type }
66
+ schema[:description] = param.description if param.description
67
+ schema[:items] = { type: "string" } if param.type == "array"
68
+ [param.name.to_s, schema]
69
+ end
70
+ required = parameters.select { |_, p| p.required }.keys.map(&:to_s)
71
+ { type: "object", properties: properties, required: required, additionalProperties: false }
72
+ end
73
+
74
+ def resolve_params_schema(definition)
75
+ case definition
76
+ when Proc
77
+ schema_class = Ask::Schema.create(&definition)
78
+ schema_class.new.to_json_schema.dig(:schema)
79
+ when Hash then definition
80
+ when ->(d) { d.respond_to?(:to_json_schema) }
81
+ definition.to_json_schema.dig(:schema)
82
+ else nil
83
+ end
84
+ end
85
+
86
+ def deep_stringify_keys(obj)
87
+ case obj
88
+ when Hash then obj.each_with_object({}) { |(k, v), h| h[k.to_s] = deep_stringify_keys(v) }
89
+ when Array then obj.map { |v| deep_stringify_keys(v) }
90
+ else obj
91
+ end
92
+ end
93
+
51
94
  private
52
95
 
53
96
  def validate_param_type!(type, name)
data/lib/ask/version.rb CHANGED
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ask
4
4
  module Tools
5
- VERSION = "0.1.2"
5
+ VERSION = "0.1.3"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ask-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kaka Ruto