Sha256: 320194f70a4f47ab9136fbc3eea45f01447f30390c744c01d682fdfd419ec71b

Contents?: true

Size: 1.26 KB

Versions: 1

Compression:

Stored size: 1.26 KB

Contents

require "mireru/widget/image"
require "mireru/widget/video"
require "mireru/widget/pdf"
require "mireru/widget/svg"
require "mireru/widget/text"
require "mireru/widget/binary"
require "mireru/widget/thumbnail"

module Mireru
  module Widget
    module_function
    def create(file, width=10000, height=10000)
      if image?(file)
        widget = Mireru::Widget::Image.create(file, width, height)
      elsif video?(file)
        widget = Mireru::Widget::Video.create(file)
      elsif pdf?(file)
        widget = Mireru::Widget::PDF.create(file)
      elsif svg?(file)
        widget = Mireru::Widget::SVG.create(file)
      elsif text?(file)
        widget = Mireru::Widget::Text.create(file)
      elsif file.is_a?(Enumerable)
        widget = Mireru::Widget::Thumbnail.create(file, width, height)
      else
        widget = Mireru::Widget::Binary.create(file)
      end
      widget
    end

    def image?(file)
      /\.(png|jpe?g|gif|ico|ani|bmp|pnm|ras|tga|tiff|xbm|xpm)\z/i =~ file
    end

    def video?(file)
      /\.(ogm|mp4|flv|mpe?g2?|ts|mov|avi|divx|mkv|wmv|asf|wmx)\z/i =~ file
    end

    def pdf?(file)
      /\.pdf\z/i =~ file
    end

    def svg?(file)
      /\.svg\z/i =~ file
    end

    def text?(file)
      File.read(file).valid_encoding?
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mireru-0.2.1 lib/mireru/widget.rb