Sha256: 3741ffcb5a3a67bfe8f1e7be325b479a376055044830f0b9fe5e508110ea4ae7

Contents?: true

Size: 1.5 KB

Versions: 22

Compression:

Stored size: 1.5 KB

Contents

# frozen_string_literal: true

# FIXME: Replace with helpers and/or methods provided by Rails
class String
  ACCENTS = { %w(á à â ä ã Ã Ä Â À) => "a",
              %w(é è ê ë Ë É È Ê) => "e",
              %w(í ì î ï I Î Ì) => "i",
              %w(ó ò ô ö õ Õ Ö Ô Ò) => "o",
              ["œ"] => "oe",
              ["ß"] => "ss",
              %w(ú ù û ü U Û Ù) => "u",
              %w(ç Ç) => "c" }.freeze

  def to_permalink
    string = self
    ACCENTS.each do |key, value|
      string = string.tr(key.join, value)
    end
    string = string.tr("'", "-")
    string.gsub(/<[^>]*>/, "").to_url
  end

  # Returns a-string-with-dashes when passed 'a string with dashes'.
  # All special chars are stripped in the process
  def to_url
    return if nil?

    s = downcase.tr("\"'", "")
    s = s.gsub(/\P{Word}/, " ")
    s.strip.tr_s(" ", "-").tr(" ", "-").sub(/^$/, "-")
  end

  def to_title(item, settings, params)
    TitleBuilder.new(self).build(item, settings, params)
  end

  # Strips any html markup from a string
  TYPO_TAG_KEY = TYPO_ATTRIBUTE_KEY = /[\w:_-]+/.freeze
  TYPO_ATTRIBUTE_VALUE = /(?:[A-Za-z0-9]+|(?:'[^']*?'|"[^"]*?"))/.freeze
  TYPO_ATTRIBUTE = /(?:#{TYPO_ATTRIBUTE_KEY}(?:\s*=\s*#{TYPO_ATTRIBUTE_VALUE})?)/.freeze
  TYPO_ATTRIBUTES = /(?:#{TYPO_ATTRIBUTE}(?:\s+#{TYPO_ATTRIBUTE})*)/.freeze
  TAG =
    %r{<[!/?\[]?(?:#{TYPO_TAG_KEY}|--)(?:\s+#{TYPO_ATTRIBUTES})?\s*(?:[!/?\]]+|--)?>}.freeze
  def strip_html
    gsub(TAG, "").gsub(/\s+/, " ").strip
  end
end

Version data entries

22 entries across 22 versions & 2 rubygems

Version Path
HornsAndHooves-publify_core-10.5.0 lib/transforms.rb
HornsAndHooves-publify_core-10.4.0 lib/transforms.rb
HornsAndHooves-publify_core-10.3.0 lib/transforms.rb
HornsAndHooves-publify_core-10.2.0 lib/transforms.rb
publify_core-10.0.0 lib/transforms.rb
publify_core-9.2.10 lib/transforms.rb
HornsAndHooves-publify_core-10.1.1 lib/transforms.rb
HornsAndHooves-publify_core-10.1.0 lib/transforms.rb
HornsAndHooves-publify_core-10.0.3 lib/transforms.rb
HornsAndHooves-publify_core-10.0.2 lib/transforms.rb
HornsAndHooves-publify_core-10.0.1 lib/transforms.rb
HornsAndHooves-publify_core-10.0.0 lib/transforms.rb
publify_core-9.2.9 lib/transforms.rb
publify_core-9.2.8 lib/transforms.rb
publify_core-9.2.7 lib/transforms.rb
publify_core-9.2.6 lib/transforms.rb
publify_core-9.2.5 lib/transforms.rb
publify_core-9.2.4 lib/transforms.rb
publify_core-9.2.3 lib/transforms.rb
publify_core-9.2.2 lib/transforms.rb