module Shrine::Plugins::PrettyLocation::InstanceMethods
Public Instance Methods
generate_location(io, **options)
click to toggle source
# File lib/shrine/plugins/pretty_location.rb, line 13 def generate_location(io, **options) pretty_location(io, **options) end
pretty_location(io, name: nil, record: nil, version: nil, derivative: nil, identifier: nil, metadata: {}, **)
click to toggle source
# File lib/shrine/plugins/pretty_location.rb, line 17 def pretty_location(io, name: nil, record: nil, version: nil, derivative: nil, identifier: nil, metadata: {}, **) if record namespace = record_namespace(record) identifier ||= record_identifier(record) end basename = basic_location(io, metadata: metadata) basename = [*(version || derivative), basename].join("-") [*namespace, *identifier, *name, basename].join("/") end
Private Instance Methods
record_identifier(record)
click to toggle source
# File lib/shrine/plugins/pretty_location.rb, line 31 def record_identifier(record) record.public_send(opts[:pretty_location][:identifier]) end
record_namespace(record)
click to toggle source
# File lib/shrine/plugins/pretty_location.rb, line 43 def record_namespace(record) class_name = record.class.name or return parts = transform_class_name(class_name).split("::") if separator = opts[:pretty_location][:namespace] parts.join(separator) else parts.last end end
transform_class_name(class_name)
click to toggle source
# File lib/shrine/plugins/pretty_location.rb, line 35 def transform_class_name(class_name) if opts[:pretty_location][:class_underscore] class_name.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').gsub(/([a-z])([A-Z])/, '\1_\2').downcase else class_name.downcase end end