Module: Steroids::Extensions::MethodExtension
- Included in:
- ProcExtension
- Defined in:
- lib/steroids/extensions/method_extension.rb
Instance Method Summary collapse
-
#apply(*given_arguments, **given_options, &block) ⇒ Object
TODO: Use *arguments.extract_options instead!.
-
#arguments ⇒ Object
——————————————————————————————– Parameters ——————————————————————————————–.
- #dynamic_arguments_for(given_arguments, given_options) ⇒ Object
- #dynamic_options_for(given_options) ⇒ Object
- #options ⇒ Object
- #rest? ⇒ Boolean
- #spread? ⇒ Boolean
Instance Method Details
#apply(*given_arguments, **given_options, &block) ⇒ Object
TODO: Use *arguments.extract_options instead!
9 10 11 12 13 |
# File 'lib/steroids/extensions/method_extension.rb', line 9 def apply(*given_arguments, **, &block) applied_arguments = dynamic_arguments_for(given_arguments, ) = () self.yield(*applied_arguments, **, &block) end |
#arguments ⇒ Object
Parameters
44 45 46 |
# File 'lib/steroids/extensions/method_extension.rb', line 44 def arguments self.parameters.select { |key,v| key == :req || key == :opt }.map { |argument| argument.second } end |
#dynamic_arguments_for(given_arguments, given_options) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/steroids/extensions/method_extension.rb', line 15 def dynamic_arguments_for(given_arguments, ) return given_arguments if self.rest? expected_arguments_count = self.least_arguments.count non_nil_given_arguments_count = given_arguments.take_while(&:present?).count applied_arguments = given_arguments.first([expected_arguments_count, non_nil_given_arguments_count].max) return applied_arguments if self.spread? && self..any? applied_arguments << if applied_arguments.count < self.arguments.count && .any? applied_arguments end |
#dynamic_options_for(given_options) ⇒ Object
27 28 29 30 31 |
# File 'lib/steroids/extensions/method_extension.rb', line 27 def () return if self.spread? .select { |key| self..include?(key) } end |
#options ⇒ Object
48 49 50 |
# File 'lib/steroids/extensions/method_extension.rb', line 48 def self.parameters.select { |key,v| key == :key || key == :keyreq }.map { |option| option.second } end |
#rest? ⇒ Boolean
56 57 58 |
# File 'lib/steroids/extensions/method_extension.rb', line 56 def rest? !!self.parameters.find { |parameter| parameter.first == :rest } end |
#spread? ⇒ Boolean
52 53 54 |
# File 'lib/steroids/extensions/method_extension.rb', line 52 def spread? !!self.parameters.find { |parameter| parameter.first == :keyrest } end |