Sha256: d69fcc579f1a0b081724bbbd5804fbe94c24dca27e7a8f333f700d7f2601ddea

Contents?: true

Size: 1.84 KB

Versions: 1

Compression:

Stored size: 1.84 KB

Contents

module Enumerable #:nodoc:all
  # returns a new array of all the return values not equal to nil
  # This implementation could be faster
  def select_map(&aProc)
    map(&aProc).reject { |e| e.nil? }
  end
end

class String  #:nodoc:all

  def ensure_end(aString)
    end_with?(aString) ? self : self + aString
  end

  def lchop
    slice(1, length)
  end
end

class Time  #:nodoc:all

  #MS-DOS File Date and Time format as used in Interrupt 21H Function 57H:
  # 
  # Register CX, the Time:
  # Bits 0-4  2 second increments (0-29)
  # Bits 5-10 minutes (0-59)
  # bits 11-15 hours (0-24)
  # 
  # Register DX, the Date:
  # Bits 0-4 day (1-31)
  # bits 5-8 month (1-12)
  # bits 9-15 year (four digit year minus 1980)


  def to_binary_dos_time
    (sec/2) +
    (min  << 5) +
    (hour << 11)
  end

  def to_binary_dos_date
    (day) +
    (month << 5) +
    ((year - 1980) << 9)
  end

  # Dos time is only stored with two seconds accuracy
  def dos_equals(other)
    to_i/2 == other.to_i/2
  end

  def self.parse_binary_dos_format(binaryDosDate, binaryDosTime)
    second = 2 * (       0b11111 & binaryDosTime)
    minute = (     0b11111100000 & binaryDosTime) >> 5 
    hour   = (0b1111100000000000 & binaryDosTime) >> 11
    day    = (           0b11111 & binaryDosDate) 
    month  = (       0b111100000 & binaryDosDate) >> 5
    year   = ((0b1111111000000000 & binaryDosDate) >> 9) + 1980
    begin
      return Time.local(year, month, day, hour, minute, second)
    end
  end
end

class Module  #:nodoc:all
  def forward_message(forwarder, *messagesToForward)
    methodDefs = messagesToForward.map do |msg| 
      "def #{msg}; #{forwarder}(:#{msg}); end"
    end
    module_eval(methodDefs.join("\n"))
  end
end


# Copyright (C) 2002, 2003 Thomas Sondergaard
# rubyzip is free software; you can redistribute it and/or
# modify it under the terms of the ruby license.

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rubyzip-0.9.5 lib/zip/stdrubyext.rb