Sha256: 51bd5672fb242565981f7a53012bda4b8407507633b6928edeacbfdca4a36b65

Contents?: true

Size: 1.71 KB

Versions: 5

Compression:

Stored size: 1.71 KB

Contents

# -*- coding: utf-8 -*-
#
# helper.rb
#
  # Convert to US_ASCII encoding if ascii characters only.
  def convert_to_ascii_if_ascii(str)
    return nil if str.nil?
    ruby_18 do
      unless str =~ /[^!"#\$%&'\(\)\*\+,\-\.\/\:\;<=>\?@0-9A-Za-z_\[\\\]\{\}^` ~\0\n]/
        str = String.new(str)
      end
    end ||
    ruby_19 do
      if str.ascii_only?
        str = [str].pack('a*')
      end
    end
    str
  end
  private :convert_to_ascii_if_ascii


  def utf8_to_16be(utf8)
    ruby_18 { NKF.nkf('-w16B0 -m0 -W', utf8) } ||
    ruby_19 do
      utf16be = NKF.nkf('-w16B0 -m0 -W', utf8)
      utf16be.force_encoding('UTF-16BE')
    end
  end
  private :utf8_to_16be

  def utf8_to_16le(utf8)
    ruby_18 { NKF.nkf('-w16L0 -m0 -W', utf8) } ||
    ruby_19 do
      utf16le = NKF.nkf('-w16L0 -m0 -W', utf8)
      utf16le.force_encoding('UTF-16LE')
    end
  end
  private :utf8_to_16le

  def ascii_to_16be(ascii)
    ascii.unpack("C*").pack("n*")
    ruby_19 { ascii.force_encoding('UTF-16BE') }
    ascii
  end
  private :ascii_to_16be

  def store_simple(record, length, *args)
    header = [record, length].pack('vv')
    data = args.collect { |arg| [arg].pack('v') }.join('')

    append(header, data)
  end
  private :store_simple

  # Convert base26 column string to a number.
  # All your Base are belong to us.
  def chars_to_col(chars)
    expn = 0
    col  = 0
    while (!chars.empty?)
      char = chars.pop   # LS char first
      col  += (char.ord - "A".ord + 1) * (26 ** expn)
      expn += 1
    end
    col
  end
  private :chars_to_col

  NonAscii = /[^!"#\$%&'\(\)\*\+,\-\.\/\:\;<=>\?@0-9A-Za-z_\[\\\]\{\}^` ~\0\n]/

  def is_utf8?(str)
    ruby_18 { str =~ NonAscii } ||
    ruby_19 { str.encoding == Encoding::UTF_8 }
  end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
writeexcel-0.6.9 lib/writeexcel/helper.rb
writeexcel-0.6.8 lib/writeexcel/helper.rb
writeexcel-0.6.7 lib/writeexcel/helper.rb
writeexcel-0.6.6 lib/writeexcel/helper.rb
writeexcel-0.6.5 lib/writeexcel/helper.rb