Sha256: bfe641b5cbc8ee79d9d71b361ade739f24a403af398eff2af0e71bd3ef4b7009

Contents?: true

Size: 1.07 KB

Versions: 3

Compression:

Stored size: 1.07 KB

Contents

# coding: utf-8
class OpenStruct
  extend Forwardable
  def_delegator :inst, :create, :activate
  def_delegator :inst, :run, :run_application  
  
  # This assumes this OpenStruct instance represents the base,
  # and additionaly will take an optional object to use as the
  # actual base to allow for composures.
  #
  # Returns the os base
  def create_fox_components use_as_base = nil
    if use_as_base.nil?
      self.inst = fx.() if self.inst.nil?
      self.kinder.each{ |os| os.create_fox_components }
    else
      OpenStruct.new(klass: use_as_base.class,
                     kinder: [self],
                     fx: ->() {use_as_base}).create_fox_components
    end
    self
  end

  def instance_final_activate
    self.instance_result = self.instance_block.(self.inst) unless self.instance_block.nil?
    self.kinder.each{ |os| os.instance_final_activate }
    self
  end

  # launch the application
  def launch ingress: false
    create_fox_components
    instance_final_activate
    activate
    Enhancement.activate_ingress_handlers self if ingress
    run_application
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fxruby-enhancement-0.0.4 lib/fxruby-enhancement/ostruct-monkey.rb
fxruby-enhancement-0.0.3 lib/fxruby-enhancement/ostruct-monkey.rb
fxruby-enhancement-0.0.2 lib/fxruby-enhancement/ostruct-monkey.rb