class Kamaze::Project::Tools::Gemspec::Reader::Decorator
Decorator
for “Gem::Specification“
@note Decorator
is not recursive
Attributes
spec[R]
@return [Gem::Specification]
Public Class Methods
new(spec)
click to toggle source
@param [Gem::Specification] spec
# File lib/kamaze/project/tools/gemspec/reader/decorator.rb, line 17 def initialize(spec) @spec = spec end
Public Instance Methods
to(type)
click to toggle source
Decorate specification to a given type
@param [Class|symbol] type @return [Object]
@raise [ArgumentError] @see methods
# File lib/kamaze/project/tools/gemspec/reader/decorator.rb, line 28 def to(type) method = methods_mapping.fetch(type) rescue KeyError raise ArgumentError, "invalid type: #{type}" else self.__send__(method) end
Protected Instance Methods
decorate_to_hash()
click to toggle source
Decorate to obtain a “Hash“
@return [Hash]
# File lib/kamaze/project/tools/gemspec/reader/decorator.rb, line 57 def decorate_to_hash result = {} spec.instance_variables.each do |k| k = k.to_s.gsub(/^@/, '').to_sym result[k] = spec.__send__(k) if spec.respond_to?(k) end result end
decorate_to_ostruct()
click to toggle source
Decorate to obtain an “OpenStruct“
@return [OpenStruct]
# File lib/kamaze/project/tools/gemspec/reader/decorator.rb, line 72 def decorate_to_ostruct OpenStruct.new(decorate_to_h) end
methods_mapping()
click to toggle source
Provides methods mapping
@return [Hash]
# File lib/kamaze/project/tools/gemspec/reader/decorator.rb, line 44 def methods_mapping { Hash => :decorate_to_hash, hash: :decorate_to_hash, OpenStruct => :decorate_to_ostruct, ostruct: :decorate_to_ostruct, open_struct: :decorate_to_ostruct, } end