Module: Dapp::Dapp::Slug::V1V2

Defined in:
lib/dapp/dapp/slug.rb

Instance Method Summary collapse

Instance Method Details

#consistent_uniq_slug_regObject



36
37
38
# File 'lib/dapp/dapp/slug.rb', line 36

def consistent_uniq_slug_reg
  /(?!-)((-?[a-z0-9]+)+)(?<!-)/
end

#consistent_uniq_slugify(s) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/dapp/dapp/slug.rb', line 16

def consistent_uniq_slugify(s)
  return s unless should_be_slugged?(s)
  consistent_uniq_slug_reg =~ s.tr('/', '-').slugify.squeeze('--')
  consistent_uniq_slug = Regexp.last_match(1)
  murmur_hash = MurmurHash3::V32.str_hexdigest(s)
  [].tap do |slug|
    slug << begin
      unless consistent_uniq_slug.nil?
        index = ENV['DAPP_SLUG_V2'] ? SLUG_V2_LIMIT_LENGTH - murmur_hash.length - SLUG_SEPARATOR.length - 1 : -1
        consistent_uniq_slug[0..index]
      end
    end
    slug << murmur_hash
  end.compact.join(SLUG_SEPARATOR)
end

#should_be_slugged?(s) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/dapp/dapp/slug.rb', line 32

def should_be_slugged?(s)
  !(/^#{consistent_uniq_slug_reg}$/ =~ s)
end