Sha256: 24a7ebac2739c64466f289ebd17d79fd736edc19a9265cb0d904fc7b15b82e00

Contents?: true

Size: 1.36 KB

Versions: 1

Compression:

Stored size: 1.36 KB

Contents

class MimeType
  @@all=[]
  def self.all
    @@all
  end
  
  def self.add(exts,mime_name)
    all<<new(exts,mime_name)
  end
  
  attr_reader :exts, :name
  
  def initialize(exts,mime_name)
    @exts,@name=exts,mime_name
  end
end

class String
  # Creates a "probably unique" id with the desired length, composed only of lowercase letters.
  def base26_hash(length=HashLength)
    Digest::MD5.hexdigest(self).to_i(16).to_s(26).tr('0-9a-p', 'a-z')[-length,length]
  end
end

class File
  def self.ext_as_sym(filename)
    File.extname(filename).sub(/^\./,'').downcase.to_sym rescue :no_extension
  end
  
  def self.mime(filename)
    ext=ext_as_sym(filename)
    m=MimeType.all.find{|m| m.exts.include?(ext)}
    m ? m.name : 'application/octet-stream'
  end
  
  def self.encoding(source)
    parse_for_charset="grep -io charset=[a-z0-9\\-]* | sed 's/charset=//i'"
    if File.extname(source)[0,4]==".htm" then
      enc=%x{head -n20 \"#{source}\" | #{parse_for_charset}}.chomp      
    else
      enc=%x{file -i \"#{source}\"  | #{parse_for_charset}}.chomp
    end
    #iso-8859-15 should be used instead of iso-8859-1, for € char
    case enc
     when "iso-8859-1"
       "iso-8859-15"
     when "unknown"
       ""
     else
       enc
     end
  end
  
  def self.read_and_remove(filename)
    content=read(filename)
    FileUtils.rm filename, :force=>true
    content
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
picolena-0.1.1 lib/picolena/templates/lib/core_exts.rb