Parent

Files

Module

Public Instance Methods

alias_for(original, *aliases) click to toggle source
# File lib/sugar-high/alias.rb, line 70
def alias_for(original, *aliases)
  pluralize = last_option(aliases)[:pluralize]
  singularize = last_option(aliases)[:singularize]

  class_eval "alias_method :#{original.to_s.singularize}, :#{original}" if singularize
  class_eval "alias_method :#{original.to_s.pluralize}, :#{original}" if pluralize

  aliases.flatten.select_labels.each do |alias_meth|
    class_eval "alias_method :#{alias_meth}, :#{original}"
    class_eval "alias_method :#{alias_meth.to_s.pluralize}, :#{original}" if pluralize
    class_eval "alias_method :#{alias_meth.to_s.singularize}, :#{original}" if singularize
  end
end
Also aliased as: aliases_for
alias_hash(hash) click to toggle source
# File lib/sugar-high/alias.rb, line 58
def alias_hash(hash)
  pluralize = hash.delete(:pluralize)
  singularize = hash.delete(:singularize)
  # option = :pluralize => pluralize, :singularize => singularize

  hash.each_pair do |original, alias_meth|
    alias_for original, alias_meth
    alias_for original.to_s.singularize, alias_meth.to_s.singularize, :singularize => true if singularize
    alias_for original.to_s.pluralize, alias_meth.to_s.pluralize, :pluralize => true if pluralize
  end
end
alias_methods(name, original, aliases, config_options) click to toggle source
# File lib/sugar-high/alias.rb, line 46
def alias_methods name, original, aliases, config_options
  aliases.each do |alias_name|
    new_alias     = make_name(name, alias_name.to_s, config_options)
    original_name = make_name(name, original.to_s, config_options)
    begin
      alias_method new_alias, original_name
    rescue
      raise ArgumentError, "Error creating alias for ##{original_name} with ##{new_alias}"
    end
  end
end
aliases_for(original, *aliases) click to toggle source
Alias for: alias_for
concerned_with(*concerns) click to toggle source
# File lib/sugar-high/rails/concerns.rb, line 2
def concerned_with(*concerns)
  options = concerns.extract_options!
  concerns.flatten.each do |concern|
    next if concern.blank?
    require_concern name, concern
  end
  shared_concerns([options[:shared]].flatten.compact)
end
delegate(*methods) click to toggle source
# File lib/sugar-high/delegate.rb, line 3
def delegate(*methods)
  options = methods.pop
  unless options.is_a?(Hash) && to = options[:to]
    raise ArgumentError, "Delegation needs a target. Supply an options hash with a :to key as the last argument (e.g. delegate :hello, :to => :greeter)."
  end

  if options[:prefix] == true && options[:to].to_s =~ /^[^a-z_]/
    raise ArgumentError, "Can only automatically set the delegation prefix when delegating to a method."
  end

  prefix = options[:prefix] && "#{options[:prefix] == true ? to : options[:prefix]}_" || ''

  file, line = caller.first.split(':', 2)
  line = line.to_i

  methods.each do |method|
    on_nil =
      if options[:allow_nil]
        'return'
      else
        %(raise "#{self}##{prefix}#{method} delegated to #{to}.#{method}, but #{to} is nil: \#{self.inspect}")
      end
    # def customer_name(*args, &block)
    module_eval %{
      def #{prefix}#{method}(*args, &block)
        #{to}.__send__(#{method.inspect}, *args, &block)
      rescue NoMethodError
        if #{to}.nil?
          #{on_nil}
        else
          raise
        end
      end
    }
  end
end
demodulize() click to toggle source
Alias for: last_name
extends_and_includes(*module_names) click to toggle source
extends_and_includes_from(module_name, *sub_modules) click to toggle source
include_concern(*concerns) click to toggle source
Alias for: include_concerns
include_concerns(*concerns) click to toggle source
# File lib/sugar-high/rails/concerns.rb, line 11
def include_concerns(*concerns)
  options = concerns.extract_options!
  concerns.flatten.each do |concern|
    next if concern.blank?
    require_concern name, concern
    concern_ns = [name, concern.to_s.camelize].join('::')
    self.send :include, concern_ns.constantize
    begin
      self.extend [concern_ns, 'ClassMethods'].join('::').constantize
    rescue
    end
  end
  include_shared_concerns([options[:shared]].flatten.compact)
end
Also aliased as: include_concern
include_shared_concern(*concerns) click to toggle source
include_shared_concerns(*concerns) click to toggle source
# File lib/sugar-high/rails/concerns.rb, line 33
def include_shared_concerns(*concerns)
  concerns.flatten.each do |concern|
    next if concern.blank?
    require_shared concern
    concern_ns = concern.to_s.camelize

    self.send :include, shared_const(concern_ns)

    begin
      self.extend [concern_ns, 'ClassMethods'].join('::').constantize
    rescue
    end
  end
end
Also aliased as: include_shared_concern
includes_and_extends(*module_names) click to toggle source
# File lib/sugar-high/includes.rb, line 26
def includes_and_extends *module_names
  includes module_names
  extends module_names
end
Also aliased as: extends_and_includes
includes_and_extends_from(module_name, *sub_modules) click to toggle source
# File lib/sugar-high/includes.rb, line 31
def includes_and_extends_from module_name, *sub_modules
  includes module_name, *sub_modules
  extends module_name, *sub_modules
end
Also aliased as: extends_and_includes_from
last_name() click to toggle source
# File lib/sugar-high/module.rb, line 4
def last_name
  name.demodulize
end
Also aliased as: demodulize
multi_alias(*args) click to toggle source

multi_alias name, :create => :new, :insert_into => [:inject_into, :update], :read => :X_content

:options => :after

create_xxx becomes new_xxx insert_into_xxx becomes inject_into_xxx and update_xxx read_xxx becomes xxx_content (overriding default :after action to insert at the X)

# File lib/sugar-high/alias.rb, line 16
def multi_alias *args
  name = case args.first
  when Symbol, String
    args.first.to_s
  when Hash
    # default is :after
    args.first[:_before_] ? :before : :after
  end

  if name.kind_of? Symbol
    config_options = name
    options = args.first
    name = options[:"_#{name}_"]
  else
    options = args[1]
  end

  raise ArgumentError, "Name of method pattern to alias not specified. Please pass name as either first argument or as :_before_ or :_after_ option" if !name

  options.delete(:_after_)
  options.delete(:_before_)
  direction = options.delete(:_direction_)

  options = options.hash_revert if direction == :reverse

  options.each_pair do |original, aliases|
    alias_methods name.to_sym, original, [aliases].flatten, config_options
  end
end
shared_concern(*concerns) click to toggle source
Alias for: shared_concerns
shared_concerns(*concerns) click to toggle source
# File lib/sugar-high/rails/concerns.rb, line 26
def shared_concerns(*concerns)
  concerns.flatten.each do |concern|
    next if concern.blank?
    require_shared concern
  end
end
Also aliased as: shared_concern

Protected Instance Methods

make_name(name, alias_name, config_options) click to toggle source
# File lib/sugar-high/alias.rb, line 87
def make_name name, alias_name, config_options
  return alias_name.gsub(/X/, name.to_s) if alias_name =~ /X/
  case config_options
  when :before
    "#{name}_#{alias_name}"
  else # default
    "#{alias_name}_#{name}"
  end
end
require_concern(nane, concern) click to toggle source
# File lib/sugar-high/rails/concerns.rb, line 54
def require_concern nane, concern
  require_method "#{name.underscore}/#{concern.to_s.underscore}"
end
require_method(path) click to toggle source
# File lib/sugar-high/rails/concerns.rb, line 75
def require_method path
  defined?(require_dependency) ? require_dependency(path) : require(path)
end
require_shared(concern) click to toggle source
# File lib/sugar-high/rails/concerns.rb, line 58
def require_shared concern
  require_method "shared/#{concern.to_s.underscore}"
end
shared_const(concern_ns) click to toggle source
# File lib/sugar-high/rails/concerns.rb, line 62
def shared_const concern_ns
  concern_ns.constantize
rescue NameError
  shared_ns_const concern_ns
end
shared_ns_const(concern_ns) click to toggle source
# File lib/sugar-high/rails/concerns.rb, line 68
def shared_ns_const concern_ns
  const_name = "Shared::#{concern_ns}"
  const_name.constantize
rescue NameError
  raise "No module could be found for: #{concern_ns} or #{const_name}"
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.