Module: Artoo::Basic
- Included in:
- Robot
- Defined in:
- lib/artoo/basic.rb
Overview
Methods taken from Sinatra codebase
Constant Summary collapse
- CALLERS_TO_IGNORE =
Callers to ignore
[ # :nodoc: /lib\/artoo.*\.rb$/, # artoo code /^\(.*\)$/, # generated code /rubygems\/(custom|core_ext\/kernel)_require\.rb$/, # rubygems require hacks /active_support/, # active_support require hacks /bundler(\/runtime)?\.rb/, # bundler require hacks /<internal:/, # internal in ruby >= 1.9.2 /src\/kernel\/bootstrap\/[A-Z]/ # maglev kernel files ]
Instance Method Summary collapse
-
#caller_files ⇒ Object
Like Kernel#caller but excluding certain magic entries and without line / method information; the resulting array contains filenames only.
-
#set(option, value = (not_set = true), ignore_setter = false, &block) ⇒ Object
Sets an option to the given value.
Instance Method Details
#caller_files ⇒ Object
Like Kernel#caller but excluding certain magic entries and without line / method information; the resulting array contains filenames only.
54 55 56 |
# File 'lib/artoo/basic.rb', line 54 def caller_files cleaned_caller(1).flatten end |
#set(option, value = (not_set = true), ignore_setter = false, &block) ⇒ Object
Sets an option to the given value. If the value is a proc, the proc will be called every time the option is accessed.
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/artoo/basic.rb', line 6 def set(option, value = (not_set = true), ignore_setter = false, &block) raise ArgumentError if block and !not_set value, not_set = block, false if block if not_set raise ArgumentError unless option.respond_to?(:each) option.each { |k,v| set(k, v) } return self end if respond_to?("#{option}=") and not ignore_setter return __send__("#{option}=", value) end setter = proc { |val| set option, val, true } getter = proc { value } case value when Proc getter = value when Symbol, Fixnum, FalseClass, TrueClass, NilClass getter = value.inspect when Hash setter = proc do |val| val = value.merge val if Hash === val set option, val, true end end define_singleton_method("#{option}=", setter) if setter define_singleton_method(option, getter) if getter define_singleton_method("#{option}?", "!!#{option}") unless method_defined? "#{option}?" self end |