Sha256: 62d3102243f968510a00fd41526517cd7d9b853ccbe9672a5875ce9330513543
Contents?: true
Size: 1.27 KB
Versions: 3
Compression:
Stored size: 1.27 KB
Contents
# frozen_string_literal: true module Dolly module Slugable def self.included(base) base.extend(ClassMethods) end def slug slugable_properties. map(&normalize_property). map(¶meterize_item). join(slugable_separator) end def parameterize_item proc do |message| if message.respond_to?(:parameterize) next message.parameterize end message end end def id doc[:_id] ||= self.class.namespace_key(slug) end def normalize_property proc do |property| send(:"#{property}").to_s end end module ClassMethods DEFAULT_SEPARATOR = '_' def set_slug(*slugable_properties, separator: DEFAULT_SEPARATOR) validate_slug_property_presence!(slugable_properties) define_method(:slugable_separator) { separator } define_method(:slugable_properties) { slugable_properties } end def validate_slug_property_presence!(slugable_properties) missing_properties = slugable_properties.select do |prop| !instance_methods(false).include?(prop) end unless missing_properties.empty? raise Dolly::MissingSlugableProperties, missing_properties end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
dolly-3.1.5 | lib/dolly/slugable.rb |
dolly-3.1.4 | lib/dolly/slugable.rb |
dolly-3.1.3 | lib/dolly/slugable.rb |