Module: Textus::Contract::DSL
- Included in:
- Action::Base
- Defined in:
- lib/textus/contract/dsl.rb
Instance Method Summary collapse
-
#arg(name, type, required: false, positional: false, session_default: nil, description: nil, wire_name: nil, default: nil, source: nil, coerce: nil, cli_default: :__unset) ⇒ Object
rubocop:disable Metrics/ParameterLists,Layout/LineLength.
- #cli(path = nil) ⇒ Object
- #cli_stdin(mode = :__read) ⇒ Object
- #contract ⇒ Object
- #contract? ⇒ Boolean
- #summary(text = nil) ⇒ Object
- #surfaces(*list) ⇒ Object
- #verb(name = nil) ⇒ Object
- #view(surface = :default, &blk) ⇒ Object
Instance Method Details
#arg(name, type, required: false, positional: false, session_default: nil, description: nil, wire_name: nil, default: nil, source: nil, coerce: nil, cli_default: :__unset) ⇒ Object
rubocop:disable Metrics/ParameterLists,Layout/LineLength
44 45 46 47 48 49 50 51 52 53 |
# File 'lib/textus/contract/dsl.rb', line 44 def arg(name, type, required: false, positional: false, session_default: nil, description: nil, wire_name: nil, default: nil, source: nil, coerce: nil, cli_default: :__unset) # rubocop:disable Metrics/ParameterLists,Layout/LineLength raise "contract already built; declare args before reading .contract" if defined?(@contract) && @contract (@__args ||= []) << Arg.new( name: name, type: type, required: required, positional: positional, session_default: session_default, description: description, wire_name: wire_name, default: default, source: source, coerce: coerce, cli_default: cli_default ) end |
#cli(path = nil) ⇒ Object
34 35 36 37 38 39 40 41 42 |
# File 'lib/textus/contract/dsl.rb', line 34 def cli(path = nil) if path raise "contract already built; declare cli before reading .contract" if defined?(@contract) && @contract @__cli = path.to_s else @__cli end end |
#cli_stdin(mode = :__read) ⇒ Object
55 56 57 58 59 60 61 |
# File 'lib/textus/contract/dsl.rb', line 55 def cli_stdin(mode = :__read) return @__cli_stdin if mode == :__read raise "contract already built; declare cli_stdin before reading .contract" if defined?(@contract) && @contract @__cli_stdin = mode end |
#contract ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/textus/contract/dsl.rb', line 75 def contract @contract ||= Spec.new( verb: @__verb, summary: @__summary, args: (@__args || []).freeze, surfaces: (@__surfaces || []).freeze, views: ((@__views ||= {})[:default] ||= ->(v, _i) { v }) && @__views, cli: @__cli, cli_stdin: @__cli_stdin, ) end |
#contract? ⇒ Boolean
71 72 73 |
# File 'lib/textus/contract/dsl.rb', line 71 def contract? !@__verb.nil? end |
#summary(text = nil) ⇒ Object
14 15 16 17 18 19 20 21 22 |
# File 'lib/textus/contract/dsl.rb', line 14 def summary(text = nil) if text raise "contract already built; declare summary before reading .contract" if defined?(@contract) && @contract @__summary = text else @__summary end end |
#surfaces(*list) ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/textus/contract/dsl.rb', line 24 def surfaces(*list) if list.empty? @__surfaces ||= [] else raise "contract already built; declare surfaces before reading .contract" if defined?(@contract) && @contract @__surfaces = list end end |
#verb(name = nil) ⇒ Object
4 5 6 7 8 9 10 11 12 |
# File 'lib/textus/contract/dsl.rb', line 4 def verb(name = nil) if name raise "contract already built; declare verb before reading .contract" if defined?(@contract) && @contract @__verb = name else @__verb end end |
#view(surface = :default, &blk) ⇒ Object
63 64 65 66 67 68 69 |
# File 'lib/textus/contract/dsl.rb', line 63 def view(surface = :default, &blk) return (@__views ||= {})[surface] unless blk raise "contract already built; declare view before reading .contract" if defined?(@contract) && @contract (@__views ||= {})[surface] = blk end |