class Mireru::Widget::Text

Public Class Methods

new(file) click to toggle source
Calls superclass method
# File lib/mireru/widget/text.rb, line 22
def initialize(file)
  buffer = buffer_from_file(file)
  super(buffer)
  self.show_line_numbers = true
  lang = GtkSource::LanguageManager.new.get_language("ruby")
  self.buffer.language = lang
  self.buffer.highlight_syntax = true
  self.buffer.highlight_matching_brackets = true
  self.editable = false
  override_font(Pango::FontDescription.new("Monospace"))
end

Private Instance Methods

buffer_from_file(file) click to toggle source
# File lib/mireru/widget/text.rb, line 35
def buffer_from_file(file)
  text = File.open(file).read
  buffer_from_text(text)
end
buffer_from_text(text) click to toggle source
# File lib/mireru/widget/text.rb, line 40
def buffer_from_text(text)
  to = Encoding::UTF_8
  from = guess_encoding(text)
  if to != from
    text.encode!(to,
                 from,
                 {
                   :invalid => :replace,
                   :undef   => :replace,
                 })
  end
  buffer = GtkSource::Buffer.new
  buffer.text = text
  buffer
end
guess_encoding(text) click to toggle source
# File lib/mireru/widget/text.rb, line 56
def guess_encoding(text)
  return Encoding::UTF_8 if utf8?(text)
  require "nkf"
  NKF.guess(text)
end
utf8?(text) click to toggle source
# File lib/mireru/widget/text.rb, line 62
def utf8?(text)
  text.dup.force_encoding(Encoding::UTF_8).valid_encoding?
end