Sha256: a80b473fed6b46e454b233f23386b0956d3293836adb5997ce97b26577416bc3

Contents?: true

Size: 1.85 KB

Versions: 11

Compression:

Stored size: 1.85 KB

Contents

# frozen_string_literal: true

require 'titleize'

module CoreExtensions
  # Extension of Ruby's standard library +String+ class.
  module String
    # Replaces all accented characters in a string with their non-accented version.
    # @return [String]
    def unaccentize # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
      tr('ÀÁÂÃÄÅàáâãäåĀāĂ㥹',       'AAAAAAaaaaaaAaAaAa')
        .tr('ÇçĆćĈĉĊċČčÐðĎďĐđ',      'CcCcCcCcCcDdDdDd')
        .tr('ÈÉÊËèéêëĒēĔĕĖėĘęĚě',    'EEEEeeeeEeEeEeEeEe')
        .tr('ĜĝĞğĠġĢģĤĥĦħ',          'GgGgGgGgHhHh')
        .tr('ÌÍÎÏìíîïĨĩĪīĬĭĮįİı',    'IIIIiiiiIiIiIiIiIi')
        .tr('ĴĵĶķĸĹĺĻļĽľĿŀŁł',       'JjKkkLlLlLlLlLl')
        .tr('ÑñŃńŅņŇňʼnŊŋ',           'NnNnNnNnnNn')
        .tr('ÒÓÔÕÖØòóôõöøŌōŎŏŐő',    'OOOOOOooooooOoOoOo')
        .tr('ŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧ', 'RrRrRrSsSsSsSssTtTtTt')
        .tr('ÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲų',  'UUUUuuuuUuUuUuUuUuUu')
        .tr('ŴŵÝýÿŶŷŸŹźŻżŽž',        'WwYyyYyYZzZzZz')
        .gsub(/ß/, 'ss')
        .gsub(/Æ/, 'AE')
        .gsub(/æ/, 'ae')
        .gsub(/Œ/, 'OE')
        .gsub(/œ/, 'oe')
        .gsub(/IJ/, 'IJ')
        .gsub(/ij/, 'ij')
    end

    # Converts a string to a snake-cased format suitable for URL and/or CSS attributes.
    # @return [String]
    def urlize
      strip.unaccentize.downcase.tr(' \'', '_').delete('^-_a-z0-9')
    end

    # Tests whether a string is urlize-d, ie. it is only constituted of characters suitable for URL
    # and/or CSS attributes.
    # @return [Boolean]
    def urlized?
      scan(/[^-_a-z0-9]/).empty?
    end

    # Turns underscores into spaces and titleize a string.
    # @return [String]
    def humanize
      tr('_', ' ').titleize
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
intranet-core-2.5.0 lib/core_extensions/string.rb
intranet-core-2.4.5 lib/core_extensions/string.rb
intranet-core-2.4.4 lib/core_extensions/string.rb
intranet-core-2.4.3 lib/core_extensions/string.rb
intranet-core-2.4.1 lib/core_extensions/string.rb
intranet-core-2.4.0 lib/core_extensions/string.rb
intranet-core-2.3.3 lib/core_extensions/string.rb
intranet-core-2.3.2 lib/core_extensions/string.rb
intranet-core-2.3.1 lib/core_extensions/string.rb
intranet-core-2.3.0 lib/core_extensions/string.rb
intranet-core-2.2.0 lib/core_extensions/string.rb