Sha256: 1fac6c63440ed1ae025d353253b8357493dbb63a387511265f270995f9f9df96

Contents?: true

Size: 1.95 KB

Versions: 1

Compression:

Stored size: 1.95 KB

Contents

# coding: utf-8
#
# Compatibility layer to smooth over differences between Ruby implementations
# The oldest version of Ruby which is supported is MRI 1.8.7
# Ideally, all version-specific or implementation-specific code should be
#   kept in this file (but that ideal has not been attained yet)

class String  #:nodoc:
  def first_line
    self.each_line { |line| return line }
  end

  unless "".respond_to?(:codepoints)
    def codepoints(&block)
      if block_given?
        unpack("U*").each(&block)
      else
        unpack("U*")
      end
    end

    def each_codepoint(&block)
      unpack("U*").each(&block)
    end
  end

  if "".respond_to?(:encode)
    def normalize_to_utf8
      begin
        encode(Encoding::UTF_8)
      rescue
        raise Prawn::Errors::IncompatibleStringEncoding, "Encoding " +
        "#{text.encoding} can not be transparently converted to UTF-8. " +
        "Please ensure the encoding of the string you are attempting " +
        "to use is set correctly"
      end
    end
    alias :unicode_characters :each_char
    alias :unicode_length     :length

  else
    def normalize_to_utf8
      begin
        # use unpack as a hackish way to verify the string is valid utf-8
        unpack("U*")
        return dup
      rescue
        raise Prawn::Errors::IncompatibleStringEncoding, "The string you " +
        "are attempting to render is not encoded in valid UTF-8."
      end
    end
    def unicode_characters
      if block_given?
        unpack("U*").each { |c| yield [c].pack("U") }
      else
        unpack("U*").map { |c| [c].pack("U") }
      end
    end
    def unicode_length
      unpack("U*").length
    end
  end
end

unless File.respond_to?(:binread)
  def File.binread(file) #:nodoc:
    File.open(file,"rb") { |f| f.read }
  end
end

if RUBY_VERSION < "1.9"

  def ruby_18  #:nodoc:
    yield
  end

  def ruby_19  #:nodoc:
    false
  end

else

  def ruby_18  #:nodoc:
    false
  end

  def ruby_19  #:nodoc:
    yield
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
prawn-0.13.0 lib/prawn/compatibility.rb