Sha256: a40cf033ac8e9b6f093d51a9937f207e4129ac45a8ac43a0b3006488b1515615

Contents?: true

Size: 755 Bytes

Versions: 3

Compression:

Stored size: 755 Bytes

Contents

# frozen_string_literal: true

module PUNK
  class Runnable < Settings
    include Validatable

    def self.args(*args)
      PUNK.store.runnable ||= {}
      return PUNK.store.runnable[name] if PUNK.store.runnable.key?(name)
      PUNK.store.runnable[name] = args
    end

    def method_missing(key, *args, &block)
      val = super
      val = val.to_h if val.class == self.class || val.class.instance_of?(self.class)
      val
    end

    def respond_to_missing?(key, *args) # rubocop:disable Lint/UselessMethodDefinition
      super
    end

    private

    def _init_runnable(kwargs)
      args = self.class.args || []
      load(args.zip(Array.new(args.length, nil)).to_h)
      load(kwargs.select { |k, _| args.include?(k) })
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
punk-0.0.3 lib/punk/framework/runnable.rb
punk-0.0.2 lib/punk/framework/runnable.rb
punk-0.0.1 lib/punk/framework/runnable.rb