class Mireru2::Command::Mireru2

Constants

USAGE

Public Class Methods

new() click to toggle source
# File lib/mireru2/command/mireru2.rb, line 18
def initialize
  @logger = ::Mireru2::Logger.new
end
run(*arguments) click to toggle source
# File lib/mireru2/command/mireru2.rb, line 13
def run(*arguments)
  new.run(arguments)
end

Public Instance Methods

run(arguments) click to toggle source
# File lib/mireru2/command/mireru2.rb, line 22
def run(arguments)
  if /\A(-h|--help)\z/ =~ arguments[0]
    write_help_message
    exit(true)
  elsif /\A(-v|--version)\z/ =~ arguments[0]
    write_version_message
    exit(true)
  end

  font = purge_option(arguments, /\A(-f|--font)\z/, true)

  files = files_from_arguments(arguments)
  file_container = ::Mireru2::Container.new(files)

  if file_container.empty?
    write_empty_message
    exit(false)
  end

  window = ::Mireru2::Window.new
  window.font = font if font
  window.add_container(file_container)

  Gtk.main
end

Private Instance Methods

files_from_arguments(arguments) click to toggle source
# File lib/mireru2/command/mireru2.rb, line 49
def files_from_arguments(arguments)
  if arguments.empty?
    files = Dir.glob("*")
  elsif purge_option(arguments, /\A(-R|--recursive|-d|--deep)\z/)
    if arguments.empty?
      files = Dir.glob("**/*")
    else
      files = []
      arguments.each do |f|
        if File.directory?(f)
          files << Dir.glob("#{f}/**/*")
        else
          files << f
        end
      end
      files.flatten!
    end
  elsif arguments.all? {|v| File.directory?(v) }
    files = []
    arguments.each do |f|
      files << Dir.glob("#{f}/*")
    end
    files.flatten!
  else
    files = arguments
  end
  files
end
purge_option(arguments, regexp, has_value=false) click to toggle source
# File lib/mireru2/command/mireru2.rb, line 78
def purge_option(arguments, regexp, has_value=false)
  index = arguments.find_index {|arg| regexp =~ arg }
  return false unless index
  if has_value
    arguments.delete_at(index) # flag
    arguments.delete_at(index) # value
  else
    arguments.delete_at(index)
  end
end
write_empty_message() click to toggle source
# File lib/mireru2/command/mireru2.rb, line 132
      def write_empty_message
        message = <<-EOM
Warning: file not found.
#{USAGE}
  If no argument, then search current directory.
Options:
  -R, --recursive
      recursive search as "**/*"
  -f, --font NAME
      set font such as "Monospace 16"
        EOM
        @logger.error(message)
      end
write_help_message() click to toggle source
# File lib/mireru2/command/mireru2.rb, line 89
      def write_help_message
        message = <<-EOM
#{USAGE}
  If no argument, then search current directory.
Options:
  -R, --recursive
      recursive search as "**/*"
  -f, --font NAME
      set font such as "Monospace 16"
Keybind:
  n: next
  p: prev
  r: reload
  e: expand path
  q: quit

  scroll:
    h: left
    j: down
    k: up
    l: right

  scale:
    +: larger
    -: smaller

  image:
    f: fits window size
    o: original size

  text:
    f: change font (at random)
        EOM
        @logger.info(message)
      end
write_version_message() click to toggle source
# File lib/mireru2/command/mireru2.rb, line 125
      def write_version_message
        message = <<-EOM
#{::Mireru2::VERSION}
        EOM
        @logger.info(message)
      end