Class: Textus::Contract::Spec
- Inherits:
-
Data
- Object
- Data
- Textus::Contract::Spec
- Defined in:
- lib/textus/contract/spec.rb
Instance Attribute Summary collapse
-
#args ⇒ Object
readonly
Returns the value of attribute args.
-
#cli ⇒ Object
readonly
Returns the value of attribute cli.
-
#cli_stdin ⇒ Object
readonly
Returns the value of attribute cli_stdin.
-
#summary ⇒ Object
readonly
Returns the value of attribute summary.
-
#surfaces ⇒ Object
readonly
Returns the value of attribute surfaces.
-
#verb ⇒ Object
readonly
Returns the value of attribute verb.
-
#views ⇒ Object
readonly
Returns the value of attribute views.
Instance Method Summary collapse
- #cli? ⇒ Boolean
- #cli_group ⇒ Object
- #cli_leaf ⇒ Object
- #cli_path ⇒ Object
- #cli_words ⇒ Object
- #input_schema ⇒ Object
- #mcp? ⇒ Boolean
- #required_args ⇒ Object
- #view(surface = :default) ⇒ Object
Instance Attribute Details
#args ⇒ Object (readonly)
Returns the value of attribute args
3 4 5 |
# File 'lib/textus/contract/spec.rb', line 3 def args @args end |
#cli ⇒ Object (readonly)
Returns the value of attribute cli
3 4 5 |
# File 'lib/textus/contract/spec.rb', line 3 def cli @cli end |
#cli_stdin ⇒ Object (readonly)
Returns the value of attribute cli_stdin
3 4 5 |
# File 'lib/textus/contract/spec.rb', line 3 def cli_stdin @cli_stdin end |
#summary ⇒ Object (readonly)
Returns the value of attribute summary
3 4 5 |
# File 'lib/textus/contract/spec.rb', line 3 def summary @summary end |
#surfaces ⇒ Object (readonly)
Returns the value of attribute surfaces
3 4 5 |
# File 'lib/textus/contract/spec.rb', line 3 def surfaces @surfaces end |
#verb ⇒ Object (readonly)
Returns the value of attribute verb
3 4 5 |
# File 'lib/textus/contract/spec.rb', line 3 def verb @verb end |
#views ⇒ Object (readonly)
Returns the value of attribute views
3 4 5 |
# File 'lib/textus/contract/spec.rb', line 3 def views @views end |
Instance Method Details
#cli? ⇒ Boolean
5 |
# File 'lib/textus/contract/spec.rb', line 5 def cli? = surfaces.include?(:cli) |
#cli_group ⇒ Object
10 |
# File 'lib/textus/contract/spec.rb', line 10 def cli_group = cli_words.size > 1 ? cli_words.first : nil |
#cli_leaf ⇒ Object
11 |
# File 'lib/textus/contract/spec.rb', line 11 def cli_leaf = cli_words.last |
#cli_path ⇒ Object
8 |
# File 'lib/textus/contract/spec.rb', line 8 def cli_path = cli || verb.to_s |
#cli_words ⇒ Object
9 |
# File 'lib/textus/contract/spec.rb', line 9 def cli_words = cli_path.split |
#input_schema ⇒ Object
15 16 17 18 19 20 21 22 |
# File 'lib/textus/contract/spec.rb', line 15 def input_schema props = args.to_h do |a| h = { "type" => Contract.json_type(a.type) } h["description"] = a.description if a.description [a.wire.to_s, h] end { type: "object", properties: props, required: required_args.map { |a| a.wire.to_s } } end |
#mcp? ⇒ Boolean
4 |
# File 'lib/textus/contract/spec.rb', line 4 def mcp? = surfaces.include?(:mcp) |
#required_args ⇒ Object
13 |
# File 'lib/textus/contract/spec.rb', line 13 def required_args = args.select(&:required) |
#view(surface = :default) ⇒ Object
7 |
# File 'lib/textus/contract/spec.rb', line 7 def view(surface = :default) = views[surface] || views.fetch(:default) |