Module: Mireru::Widget

Defined in:
lib/mireru/widget.rb,
lib/mireru/widget/pdf.rb,
lib/mireru/widget/svg.rb,
lib/mireru/widget/text.rb,
lib/mireru/widget/image.rb,
lib/mireru/widget/video.rb,
lib/mireru/widget/binary.rb,
lib/mireru/widget/extracted_text.rb

Defined Under Namespace

Classes: Binary, ExtractedText, Image, PDF, SVG, Text, Video

Class Method Summary collapse

Class Method Details

.binary?(file) ⇒ Boolean

Returns:

  • (Boolean)


76
77
78
79
80
81
82
83
84
85
# File 'lib/mireru/widget.rb', line 76

def binary?(file)
  if /\.(la|lo|o|so|a|dll|exe|msi|tar|gz|zip|7z|lzh|rar|iso)\z/i =~ file
    true
  else
    bytes = File.read(file, 512)
    return false if bytes.nil?
    return false if utf16?(bytes)
    bytes.count("\x00-\x07\x0b\x0e-\x1a\x1c-\x1f") > (bytes.size / 10)
  end
end

.create(file, width, height, chupa = false) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/mireru/widget.rb', line 28

def create(file, width, height, chupa=false)
  if chupa
    widget = Widget::ExtractedText.new(file)
  elsif image?(file)
    widget = Widget::Image.new(file, width, height)
  elsif video?(file) or music?(file)
    widget = Widget::Video.new(file)
  elsif pdf?(file)
    widget = Widget::PDF.new(file)
  elsif svg?(file)
    widget = Widget::SVG.new(file)
  elsif text?(file)
    widget = Widget::Text.new(file)
  else
    widget = Widget::Binary.new(file)
  end
  widget
end

.document?(file) ⇒ Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/mireru/widget.rb', line 67

def document?(file)
  /\.(odt|ods|odp|doc|xls|ppt|docx|xlsx|pptx)\z/i =~ file
end

.image?(file) ⇒ Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/mireru/widget.rb', line 47

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

.music?(file) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/mireru/widget.rb', line 51

def music?(file)
  /\.(og[ag]|wav|acc|mp3|m4a|wma|flac|tta|aiff|ape|tak)\z/i =~ file
end

.pdf?(file) ⇒ Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/mireru/widget.rb', line 59

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

.svg?(file) ⇒ Boolean

Returns:

  • (Boolean)


63
64
65
# File 'lib/mireru/widget.rb', line 63

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

.text?(file) ⇒ Boolean

Returns:

  • (Boolean)


71
72
73
74
# File 'lib/mireru/widget.rb', line 71

def text?(file)
  return false if binary?(file)
  true
end

.utf16?(bytes) ⇒ Boolean

Returns:

  • (Boolean)


87
88
89
90
91
92
# File 'lib/mireru/widget.rb', line 87

def utf16?(bytes)
  # TODO: simplify
  (bytes.start_with?("\xff\xfe".force_encoding("ASCII-8BIT")) or
     bytes.start_with?("\xfe\xff".force_encoding("ASCII-8BIT"))) and
    bytes.count("\x01-\x07\x0b\x0e-\x1a\x1c-\x1f") < (bytes.size / 20)
end

.video?(file) ⇒ Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/mireru/widget.rb', line 55

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