Sha256: d864507314c520997152577005379cc88309f064d3225e8ce317494898149b55
Contents?: true
Size: 1.41 KB
Versions: 1
Compression:
Stored size: 1.41 KB
Contents
module Yaks class DefaultPolicy include Util DEFAULTS = { rel_template: "rel:src={src}&dest={dest}", namespace: Kernel } attr_reader :options def initialize(options = {}) @options = DEFAULTS.merge(options) end def derive_mapper_from_object(model) if model.respond_to? :to_ary if m = model.first name = m.class.name.split('::').last + 'CollectionMapper' begin return @options[:namespace].const_get(name) rescue NameError end end begin return @options[:namespace].const_get(:CollectionMapper) rescue NameError end Yaks::CollectionMapper else name = model.class.name.split('::').last @options[:namespace].const_get(name + 'Mapper') end end def derive_type_from_mapper_class(mapper_class) underscore(mapper_class.name.split('::').last.sub(/Mapper$/, '')) end def derive_mapper_from_association(association) @options[:namespace].const_get("#{camelize(singularize(association.name.to_s))}Mapper") end def derive_rel_from_association(mapper, association) expand_rel( derive_type_from_mapper_class(mapper.class), association.name ) end def expand_rel(src_name, dest_name) URITemplate.new(@options[:rel_template]).expand( src: src_name, dest: dest_name ) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
yaks-0.4.0 | lib/yaks/default_policy.rb |