模块 RSS::Utils
RSS::Utils
模块包含各种实用函数,这些函数在 RSS
库的其他许多部分中使用。像大多数名为“util”的变体的模块一样,它的方法对于那些不开发库本身的人来说可能不是特别有用。
公共实例方法
element_initialize_arguments?(args) 单击以切换源代码
此方法在几个不同的对象内部使用,以确定构造函数中是否需要特殊行为。
如果作为 args
传递的数组的值为 true
或 false
,并且 args
的第二个元素是哈希,则需要特殊行为。
# File rss-0.3.1/lib/rss/utils.rb, line 106 def element_initialize_arguments?(args) [true, false].include?(args[0]) and args[1].is_a?(Hash) end
get_file_and_line_from_caller(i=0) 单击以切换源代码
返回一个包含两个元素的数组:调用方法所在的文件名和定义该方法的行号。
接受一个可选参数 i
,用于指定在堆栈中向上查找多少个调用者。
示例
require 'rss/utils' def foo p RSS::Utils.get_file_and_line_from_caller p RSS::Utils.get_file_and_line_from_caller(1) end def bar foo end def baz bar end baz # => ["test.rb", 5] # => ["test.rb", 9]
如果未给定 i
,或者 i
的默认值为 0,则它会尝试找出正确的值。这在与 instance_eval 结合使用时很有用。例如
require 'rss/utils' def foo p RSS::Utils.get_file_and_line_from_caller(1) end def bar foo end instance_eval <<-RUBY, *RSS::Utils.get_file_and_line_from_caller def baz bar end RUBY baz # => ["test.rb", 8]
# File rss-0.3.1/lib/rss/utils.rb, line 83 def get_file_and_line_from_caller(i=0) file, line, = caller[i].split(':') line = line.to_i line += 1 if i.zero? [file, line] end
new_with_value_if_need(klass, value) 单击以切换源代码
如果 value
是类 klass
的实例,则返回它,否则创建一个以值 value
为参数的 klass
的新实例。
# File rss-0.3.1/lib/rss/utils.rb, line 92 def new_with_value_if_need(klass, value) if value.is_a?(klass) value else klass.new(value) end end
to_class_name(name) 单击以切换源代码
给定一个下划线格式的 name
或一个带有破折号格式的名称,返回 name
的驼峰式版本。
如果 name
已经是驼峰式命名,则不会发生任何事情。
示例
require 'rss/utils' RSS::Utils.to_class_name("sample_name") # => "SampleName" RSS::Utils.to_class_name("with-dashes") # => "WithDashes" RSS::Utils.to_class_name("CamelCase") # => "CamelCase"
# File rss-0.3.1/lib/rss/utils.rb, line 27 def to_class_name(name) name.split(/[_\-]/).collect do |part| "#{part[0, 1].upcase}#{part[1..-1]}" end.join("") end