Sha256: 103183f95061a33860dc0aebcc662c80c042bf0aa391d0fa3d9cee5a40a762bf

Contents?: true

Size: 1.41 KB

Versions: 4

Compression:

Stored size: 1.41 KB

Contents

# frozen_string_literal: true

module EncodedId
  module Rails
    module EncoderMethods
      def encode_encoded_id(ids, options = {})
        raise StandardError, "You must pass an ID or array of IDs" if ids.blank?
        encoded_id_coder(options).encode(ids)
      end

      def decode_encoded_id(slugged_encoded_id, options = {})
        return if slugged_encoded_id.blank?
        encoded_id = encoded_id_parser(slugged_encoded_id).id
        return if !encoded_id || encoded_id.blank?
        encoded_id_coder(options).decode(encoded_id)
      end

      # This can be overridden in the model to provide a custom salt
      def encoded_id_salt
        # @type self: Class
        EncodedId::Rails::Salt.new(self, EncodedId::Rails.configuration.salt).generate!
      end

      def encoded_id_parser(slugged_encoded_id)
        SluggedIdParser.new(slugged_encoded_id, separator: EncodedId::Rails.configuration.slugged_id_separator)
      end

      def encoded_id_coder(options = {})
        config = EncodedId::Rails.configuration
        EncodedId::Rails::Coder.new(
          salt: options[:salt] || encoded_id_salt,
          id_length: options[:id_length] || config.id_length,
          character_group_size: options[:character_group_size] || config.character_group_size,
          alphabet: options[:alphabet] || config.alphabet,
          separator: options[:separator] || config.group_separator
        )
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
encoded_id-rails-0.6.2 lib/encoded_id/rails/encoder_methods.rb
encoded_id-rails-0.6.1 lib/encoded_id/rails/encoder_methods.rb
encoded_id-rails-0.6.0 lib/encoded_id/rails/encoder_methods.rb
encoded_id-rails-0.5.0 lib/encoded_id/rails/encoder_methods.rb