Sha256: d674370f37737843b85628bb718f7ed450c3b56311a08858ea8b9620fae93344

Contents?: true

Size: 1.65 KB

Versions: 2

Compression:

Stored size: 1.65 KB

Contents

# frozen_string_literal: true

# FIXME: Replace with helpers and/or methods provided by Rails
module PublifyCore
  module StringExt
    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
end

String.include PublifyCore::StringExt

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
publify_core-10.0.2 lib/publify_core/string_ext.rb
publify_core-10.0.1 lib/publify_core/string_ext.rb