lib/mireru/command/mireru.rb in mireru-0.1.1 vs lib/mireru/command/mireru.rb in mireru-0.1.2

- old
+ new

@@ -26,30 +26,32 @@ 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 = ::Mireru::Container.new(files) if file_container.empty? write_empty_message exit(false) end window = ::Mireru::Window.new + window.font = font if font window.add_container(file_container) Gtk.main end private def files_from_arguments(arguments) if arguments.empty? files = Dir.glob("*") - elsif /\A(-d|--deep)\z/ =~ arguments[0] - arguments.shift + elsif purge_option(arguments, /\A(-d|--deep)\z/) if arguments.empty? files = Dir.glob("**/*") else files = [] arguments.each do |f| @@ -71,16 +73,30 @@ files = arguments end files end + 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 + def write_help_message message = <<-EOM #{USAGE} If no argument, then search current directory. Options: - -d, --deep: deep search + -d, --deep + deep search as "**/*" + -f, --font + set font such as "Monospace 16" Keybind: n: next p: prev r: reload e: expand path @@ -110,10 +126,13 @@ message = <<-EOM Warning: file not found. #{USAGE} If no argument, then search current directory. Options: - -d, --deep: deep search + -d, --deep + deep search as "**/*" + -f, --font + set font such as "Monospace 16" EOM @logger.error(message) end end end