Sha256: 63e383950e3b20eb6a7f476393b6d243b479b578fab9f8897d3ed178028e6dd5
Contents?: true
Size: 1.41 KB
Versions: 1
Compression:
Stored size: 1.41 KB
Contents
# frozen_string_literal: true module Strict module Methods class Dsl < BasicObject class << self def run(&) dsl = new dsl.instance_eval(&) ::Strict::Methods::Configuration.new( parameters: dsl.__strict_dsl_internal_parameters.values, returns: dsl.__strict_dsl_internal_returns ) end end include ::Strict::Dsl::Validatable attr_reader :__strict_dsl_internal_parameters, :__strict_dsl_internal_returns def initialize @__strict_dsl_internal_parameters = {} @__strict_dsl_internal_returns = ::Strict::Return.make end def returns(*args, **kwargs) self.__strict_dsl_internal_returns = ::Strict::Return.make(*args, **kwargs) nil end def strict_parameter(*args, **kwargs) parameter = ::Strict::Parameter.make(*args, **kwargs) __strict_dsl_internal_parameters[parameter.name] = parameter nil end def method_missing(name, *args, **kwargs) if respond_to_missing?(name) strict_parameter(name, *args, **kwargs) else super end end def respond_to_missing?(method_name, _include_private = nil) first_letter = method_name.to_s.each_char.first first_letter.eql?(first_letter.downcase) end private attr_writer :__strict_dsl_internal_returns end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
strict-1.0.0 | lib/strict/methods/dsl.rb |