Class: Eco::API::UseCases::UseCaseIO

Inherits:
BaseIO show all
Includes:
Chain
Defined in:
lib/eco/api/usecases/use_case_io.rb,
lib/eco/api/usecases/use_case_io/chain.rb

Overview

Note:

Same as Eco::API::UseCases::BaseIO but:

  • includes type of usecase
  • provides a helper to chain InputOutput between usecases

InputOutput class for usecases.

Defined Under Namespace

Modules: Chain

Constant Summary

Constants included from BaseCase::Model

BaseCase::Model::MODELS

Constants included from BaseCase::Type

BaseCase::Type::TYPES

Instance Attribute Summary collapse

Attributes inherited from BaseIO

#data, #input, #options, #output, #session

Attributes included from Language::AuxiliarLogger

#logger

Instance Method Summary collapse

Methods included from Chain

#chain

Methods inherited from BaseIO

#base, #io, #people

Methods included from BaseIO::Chaining

#chained, #process_case

Methods included from Language::AuxiliarLogger

#log

Methods included from Language::Methods::DslAble

#evaluate, #method_missing, #respond_to_missing?

Methods included from Language::Klass::InheritableClassVars

#inheritable_attrs, #inheritable_class_vars, #inherited

Methods included from Language::Klass::Naming

#instance_variable_name, #to_constant

Methods included from Language::Klass::Hierarchy

#descendants, #descendants?

Methods included from Language::Klass::Builder

#new_class

Methods included from Language::Klass::Uid

#uid

Methods included from Language::Klass::Resolver

#class_resolver, #resolve_class

Methods included from Language::Klass::Const

#if_const, #redef_without_warning

Constructor Details

#initialize(usecase:, job: nil, **kargs) ⇒ UseCaseIO

Returns a new instance of UseCaseIO.

Parameters:

See Also:



18
19
20
21
22
# File 'lib/eco/api/usecases/use_case_io.rb', line 18

def initialize(usecase:, job: nil, **kargs)
  self.usecase = usecase
  @job         = job
  super(**kargs)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Eco::Language::Methods::DslAble

Instance Attribute Details

#usecaseEco::API::UseCases::UseCase

the usecase this InputOuput is linked to

Returns:



9
10
11
# File 'lib/eco/api/usecases/use_case_io.rb', line 9

def usecase
  @usecase
end

Instance Method Details

#modelSymbol

Returns the model of the UseCase this InputOuput is linked to.

Returns:

  • (Symbol)

    the model of the UseCase this InputOuput is linked to



48
49
50
# File 'lib/eco/api/usecases/use_case_io.rb', line 48

def model
  usecase.model
end

#model=(_value) ⇒ Object



56
57
58
# File 'lib/eco/api/usecases/use_case_io.rb', line 56

def model=(_value)
  raise "Can't modify model: depends on the usecase linked to this IO object"
end

#new(usecase:, **kargs) ⇒ Eco::API::UseCases::UseCaseIO

Parameters:

Returns:

See Also:



27
28
29
30
31
32
# File 'lib/eco/api/usecases/use_case_io.rb', line 27

def new(usecase:, **kargs)
  default = { usecase: usecase }
  default.merge!(job: @job) if @job

  super(**default.merge(kargs))
end

#params(keyed: false, all: false) ⇒ Object

Same as its superclass but adding usecase and job parameters

See Also:



62
63
64
65
66
67
68
69
70
71
72
# File 'lib/eco/api/usecases/use_case_io.rb', line 62

def params(keyed: false, all: false)
  super.tap do |res|
    if keyed
      res.merge!(usecase: usecase)
      res.merge!(job: @job) if @job
    else
      res.push(usecase)
      res.push(@job) if @job
    end
  end
end

#typeSymbol

Returns the type of the UseCase this InputOuput is linked to.

Returns:

  • (Symbol)

    the type of the UseCase this InputOuput is linked to



43
44
45
# File 'lib/eco/api/usecases/use_case_io.rb', line 43

def type
  usecase.type
end

#type=(_value) ⇒ Object



52
53
54
# File 'lib/eco/api/usecases/use_case_io.rb', line 52

def type=(_value)
  raise "Can't modify type: depends on the usecase linked to this IO object"
end