Sha256: 687541ab21a772f15c9cb40e3a02c155421f70d10adc2b7e1e93ba98290c7627

Contents?: true

Size: 1.28 KB

Versions: 9

Compression:

Stored size: 1.28 KB

Contents

# encoding: utf-8

module Nanoc3::StringExtensions

  # Transforms string into an actual identifier
  #
  # @return [String] The identifier generated from the receiver
  def cleaned_identifier
    "/#{self}/".gsub(/^\/+|\/+$/, '/')
  end

  # Replaces Unicode characters with their ASCII decompositions if the
  # environment does not support Unicode.
  #
  # This method is not suited for general usage. If you need similar
  # functionality, consider using the Iconv library instead.
  #
  # @return [String] The decomposed string
  def make_compatible_with_env
    # Check whether environment supports Unicode
    # FIXME this is ugly, and there most likely are better ways to do this
    is_unicode_supported = %w( LC_ALL LC_CTYPE LANG ).any? { |e| ENV[e] =~ /UTF/ }
    return self if is_unicode_supported

    # Decompose if necessary
    # FIXME this decomposition is not generally usable
    self.gsub(/“|”/, '"').gsub(/‘|’/, '\'').gsub('…', '...')
  end

  # Calculates the checksum for this string. Any change to this string will
  # result in a different checksum.
  #
  # @return [String] The checksum for this string
  #
  # @api private
  def checksum
    digest = Digest::SHA1.new
    digest.update(self)
    digest.hexdigest
  end

end

class String
  include Nanoc3::StringExtensions
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
nanoc3-3.2.4 lib/nanoc3/base/core_ext/string.rb
nanoc3-3.2.3 lib/nanoc3/base/core_ext/string.rb
nanoc3-3.2.2 lib/nanoc3/base/core_ext/string.rb
nanoc3-3.2.1 lib/nanoc3/base/core_ext/string.rb
nanoc3-3.2.0 lib/nanoc3/base/core_ext/string.rb
nanoc3-3.2.0b3 lib/nanoc3/base/core_ext/string.rb
nanoc3-3.2.0b2 lib/nanoc3/base/core_ext/string.rb
nanoc3-3.2.0b1 lib/nanoc3/base/core_ext/string.rb
nanoc3-3.2.0a4 lib/nanoc3/base/core_ext/string.rb