Sha256: da5b981af9bb74e9ce5d10f256afa953fece63602e6660642fda96258e9d28ec
Contents?: true
Size: 1.65 KB
Versions: 2
Compression:
Stored size: 1.65 KB
Contents
module Her module Model module Introspection extend ActiveSupport::Concern module ClassMethods # Finds a class at the same level as this one or at the global level. def nearby_class(name) sibling_class(name) || name.constantize rescue nil end protected # Looks for a class at the same level as this one with the given name. # @private def sibling_class(name) if mod = self.containing_module "#{mod.name}::#{name}".constantize rescue nil else name.constantize rescue nil end end # If available, returns the containing Module for this class. # @private def containing_module # {{{ return unless self.name =~ /::/ self.name.split("::")[0..-2].join("::").constantize end # }}} end # Inspect an element, returns it for introspection. # # @example # class User # include Her::Model # end # # @user = User.find(1) # p @user # => #<User(/users/1) id=1 name="Tobias Fünke"> def inspect # {{{ "#<#{self.class}(#{self.class.build_request_path(@data)}) #{@data.inject([]) { |memo, item| key, value = item; memo << "#{key}=#{attribute_for_inspect(value)}"}.join(" ")}>" end # }}} private # @private def attribute_for_inspect(value) # {{{ if value.is_a?(String) && value.length > 50 "#{value[0..50]}...".inspect elsif value.is_a?(Date) || value.is_a?(Time) %("#{value}") else value.inspect end end # }}} end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
her-0.3.1 | lib/her/model/introspection.rb |
her-0.3 | lib/her/model/introspection.rb |