# typed: true # DO NOT EDIT MANUALLY # This is an autogenerated file for types exported from the `docile` gem. # Please instead update this file by running `bin/tapioca gem docile`. # Docile keeps your Ruby DSLs tame and well-behaved. # # source://docile//lib/docile/version.rb#3 module Docile extend ::Docile::Execution private # Execute a block in the context of an object whose methods represent the # commands in a DSL. # # Use this method to execute an *imperative* DSL, which means that: # # 1. Each command mutates the state of the DSL context object # 2. The return value of each command is ignored # 3. The final return value is the original context object # # @example Use a String as a DSL # Docile.dsl_eval("Hello, world!") do # reverse! # upcase! # end # #=> "!DLROW ,OLLEH" # @example Use an Array as a DSL # Docile.dsl_eval([]) do # push 1 # push 2 # pop # push 3 # end # #=> [1, 3] # @note Use with an *imperative* DSL (commands modify the context object) # @param dsl [Object] context object whose methods make up the DSL # @param args [Array] arguments to be passed to the block # @param block [Proc] the block of DSL commands to be executed against the # `dsl` context object # @return [Object] the `dsl` context object after executing the block # # source://docile//lib/docile.rb#45 def dsl_eval(dsl, *args, **_arg2, &block); end # Execute a block in the context of an immutable object whose methods, # and the methods of their return values, represent the commands in a DSL. # # Use this method to execute a *functional* DSL, which means that: # # 1. The original DSL context object is never mutated # 2. Each command returns the next DSL context object # 3. The final return value is the value returned by the last command # # @example Use a frozen String as a DSL # Docile.dsl_eval_immutable("I'm immutable!".freeze) do # reverse # upcase # end # #=> "!ELBATUMMI M'I" # @example Use a Float as a DSL # Docile.dsl_eval_immutable(84.5) do # fdiv(2) # floor # end # #=> 42 # @note Use with a *functional* DSL (commands return successor # context objects) # @param dsl [Object] immutable context object whose methods make up the # initial DSL # @param args [Array] arguments to be passed to the block # @param block [Proc] the block of DSL commands to be executed against the # `dsl` context object and successor return values # @return [Object] the return value of the final command in the block # # source://docile//lib/docile.rb#128 def dsl_eval_immutable(dsl, *args, **_arg2, &block); end # Execute a block in the context of an object whose methods represent the # commands in a DSL, and return *the block's return value*. # # Use this method to execute an *imperative* DSL, which means that: # # 1. Each command mutates the state of the DSL context object # 2. The return value of each command is ignored # 3. The final return value is the original context object # # @example Use a String as a DSL # Docile.dsl_eval_with_block_return("Hello, world!") do # reverse! # upcase! # first # end # #=> "!" # @example Use an Array as a DSL # Docile.dsl_eval_with_block_return([]) do # push "a" # push "b" # pop # push "c" # length # end # #=> 2 # @note Use with an *imperative* DSL (commands modify the context object) # @param dsl [Object] context object whose methods make up the DSL # @param args [Array] arguments to be passed to the block # @param block [Proc] the block of DSL commands to be executed against the # `dsl` context object # @return [Object] the return value from executing the block # # source://docile//lib/docile.rb#87 def dsl_eval_with_block_return(dsl, *args, **_arg2, &block); end class << self # Execute a block in the context of an object whose methods represent the # commands in a DSL. # # Use this method to execute an *imperative* DSL, which means that: # # 1. Each command mutates the state of the DSL context object # 2. The return value of each command is ignored # 3. The final return value is the original context object # # @example Use a String as a DSL # Docile.dsl_eval("Hello, world!") do # reverse! # upcase! # end # #=> "!DLROW ,OLLEH" # @example Use an Array as a DSL # Docile.dsl_eval([]) do # push 1 # push 2 # pop # push 3 # end # #=> [1, 3] # @note Use with an *imperative* DSL (commands modify the context object) # @param dsl [Object] context object whose methods make up the DSL # @param args [Array] arguments to be passed to the block # @param block [Proc] the block of DSL commands to be executed against the # `dsl` context object # @return [Object] the `dsl` context object after executing the block # # source://docile//lib/docile.rb#45 def dsl_eval(dsl, *args, **_arg2, &block); end # Execute a block in the context of an immutable object whose methods, # and the methods of their return values, represent the commands in a DSL. # # Use this method to execute a *functional* DSL, which means that: # # 1. The original DSL context object is never mutated # 2. Each command returns the next DSL context object # 3. The final return value is the value returned by the last command # # @example Use a frozen String as a DSL # Docile.dsl_eval_immutable("I'm immutable!".freeze) do # reverse # upcase # end # #=> "!ELBATUMMI M'I" # @example Use a Float as a DSL # Docile.dsl_eval_immutable(84.5) do # fdiv(2) # floor # end # #=> 42 # @note Use with a *functional* DSL (commands return successor # context objects) # @param dsl [Object] immutable context object whose methods make up the # initial DSL # @param args [Array] arguments to be passed to the block # @param block [Proc] the block of DSL commands to be executed against the # `dsl` context object and successor return values # @return [Object] the return value of the final command in the block # # source://docile//lib/docile.rb#128 def dsl_eval_immutable(dsl, *args, **_arg2, &block); end # Execute a block in the context of an object whose methods represent the # commands in a DSL, and return *the block's return value*. # # Use this method to execute an *imperative* DSL, which means that: # # 1. Each command mutates the state of the DSL context object # 2. The return value of each command is ignored # 3. The final return value is the original context object # # @example Use a String as a DSL # Docile.dsl_eval_with_block_return("Hello, world!") do # reverse! # upcase! # first # end # #=> "!" # @example Use an Array as a DSL # Docile.dsl_eval_with_block_return([]) do # push "a" # push "b" # pop # push "c" # length # end # #=> 2 # @note Use with an *imperative* DSL (commands modify the context object) # @param dsl [Object] context object whose methods make up the DSL # @param args [Array] arguments to be passed to the block # @param block [Proc] the block of DSL commands to be executed against the # `dsl` context object # @return [Object] the return value from executing the block # # source://docile//lib/docile.rb#87 def dsl_eval_with_block_return(dsl, *args, **_arg2, &block); end end end # This is used to remove entries pointing to Docile's source files # from {Exception#backtrace} and {Exception#backtrace_locations}. # # If {NoMethodError} is caught then the exception object will be extended # by this module to add filter functionalities. # # @api private # # source://docile//lib/docile/backtrace_filter.rb#11 module Docile::BacktraceFilter # @api private # # source://docile//lib/docile/backtrace_filter.rb#14 def backtrace; end # @api private # # source://docile//lib/docile/backtrace_filter.rb#19 def backtrace_locations; end end # @api private # # source://docile//lib/docile/backtrace_filter.rb#12 Docile::BacktraceFilter::FILTER_PATTERN = T.let(T.unsafe(nil), Regexp) # Operates in the same manner as {FallbackContextProxy}, but replacing # the primary `receiver` object with the result of each proxied method. # # This is useful for implementing DSL evaluation for immutable context # objects. # # # @api private # @see Docile.dsl_eval_immutable # # source://docile//lib/docile/chaining_fallback_context_proxy.rb#17 class Docile::ChainingFallbackContextProxy < ::Docile::FallbackContextProxy # Proxy methods as in {FallbackContextProxy#method_missing}, replacing # `receiver` with the returned value. # # @api private # # source://docile//lib/docile/chaining_fallback_context_proxy.rb#20 def method_missing(method, *args, **_arg2, &block); end end # A namespace for functions relating to the execution of a block against a # proxy object. # # @api private # # source://docile//lib/docile/execution.rb#8 module Docile::Execution private # Execute a block in the context of an object whose methods represent the # commands in a DSL, using a specific proxy class. # # @api private # @param dsl [Object] context object whose methods make up the # (initial) DSL # @param proxy_type [FallbackContextProxy, ChainingFallbackContextProxy] which class to instantiate as proxy context # @param args [Array] arguments to be passed to the block # @param block [Proc] the block of DSL commands to be executed # @return [Object] the return value of the block # # source://docile//lib/docile/execution.rb#19 def exec_in_proxy_context(dsl, proxy_type, *args, **_arg3, &block); end class << self # Execute a block in the context of an object whose methods represent the # commands in a DSL, using a specific proxy class. # # @api private # @param dsl [Object] context object whose methods make up the # (initial) DSL # @param proxy_type [FallbackContextProxy, ChainingFallbackContextProxy] which class to instantiate as proxy context # @param args [Array] arguments to be passed to the block # @param block [Proc] the block of DSL commands to be executed # @return [Object] the return value of the block # # source://docile//lib/docile/execution.rb#19 def exec_in_proxy_context(dsl, proxy_type, *args, **_arg3, &block); end end end # A proxy object with a primary receiver as well as a secondary # fallback receiver. # # Will attempt to forward all method calls first to the primary receiver, # and then to the fallback receiver if the primary does not handle that # method. # # This is useful for implementing DSL evaluation in the context of an object. # # # @api private # @see Docile.dsl_eval # # source://docile//lib/docile/fallback_context_proxy.rb#20 class Docile::FallbackContextProxy # @api private # @param receiver [Object] the primary proxy target to which all methods # initially will be forwarded # @param fallback [Object] the fallback proxy target to which any methods # not handled by `receiver` will be forwarded # @return [FallbackContextProxy] a new instance of FallbackContextProxy # # source://docile//lib/docile/fallback_context_proxy.rb#46 def initialize(receiver, fallback); end # @api private # @return [Array] Instance variable names, excluding # {NON_PROXIED_INSTANCE_VARIABLES} # # source://docile//lib/docile/fallback_context_proxy.rb#85 def instance_variables; end # Proxy all methods, excluding {NON_PROXIED_METHODS}, first to `receiver` # and then to `fallback` if not found. # # @api private # # source://docile//lib/docile/fallback_context_proxy.rb#91 def method_missing(method, *args, **_arg2, &block); end end # The set of methods which will **not** fallback from the block's context # to the dsl object. # # @api private # # source://docile//lib/docile/fallback_context_proxy.rb#30 Docile::FallbackContextProxy::NON_FALLBACK_METHODS = T.let(T.unsafe(nil), Set) # The set of instance variables which are local to this object and hidden. # All other instance variables will be copied in and out of this object # from the scope in which this proxy was created. # # @api private # # source://docile//lib/docile/fallback_context_proxy.rb#35 Docile::FallbackContextProxy::NON_PROXIED_INSTANCE_VARIABLES = T.let(T.unsafe(nil), Set) # The set of methods which will **not** be proxied, but instead answered # by this object directly. # # @api private # # source://docile//lib/docile/fallback_context_proxy.rb#23 Docile::FallbackContextProxy::NON_PROXIED_METHODS = T.let(T.unsafe(nil), Set) # The current version of this library # # source://docile//lib/docile/version.rb#5 Docile::VERSION = T.let(T.unsafe(nil), String)