module ShortFind

Constants

VERSION

Public Class Methods

in_array(array) click to toggle source
# File lib/short_find.rb, line 37
def self.in_array(array)
  r_format = "first"
  attr = "to_s"
  loop do
    input = get_input
    return if !input && @@back

    result = array.select do |element|
      element.downcase.gsub('ú', 'u').gsub(/[^a-z0-9]/,'').start_with?(input.downcase.gsub(/[^a-z0-9]/,''))
    end

    output = test_result(result, r_format, attr)
    return output if output
  end
end
in_hash(hash, by=:value) click to toggle source
# File lib/short_find.rb, line 53
def self.in_hash(hash, by=:value)
  by = by.to_s
  r_format = "to_h"
  attr = "last"
  loop do
    input = get_input
    return if !input && @@back

    result = hash.select do |key, value|
      if by == "key"
        attr = "first"
        key.to_s.downcase.gsub('ú', 'u').gsub(/[^a-z0-9]/,'').start_with?(input.downcase.gsub(/[^a-z0-9]/,''))
      elsif by == "value"
        value.downcase.gsub('ú', 'u').gsub(/[^a-z0-9]/,'').start_with?(input.downcase.gsub(/[^a-z0-9]/,''))
      end
    end

    output = test_result(result, r_format, attr)
    return output if output
  end
end
object(objects, attr=:name) click to toggle source
# File lib/short_find.rb, line 21
def self.object(objects, attr=:name)
  attr = attr.to_s
  r_format = "first"
  loop do
    input = get_input
    return if !input && @@back

    result = objects.select do |object|
      object.public_send(attr).downcase.gsub('ú', 'u').gsub(/[^a-z0-9]/,'').start_with?(input.downcase.gsub(/[^a-z0-9]/,''))
    end

    output = test_result(result, r_format, attr)
    return output if output
  end
end
outs(boolean) click to toggle source
# File lib/short_find.rb, line 16
def self.outs(boolean)
  @@back = boolean
  @@exit = boolean
end
use_back(boolean) click to toggle source
# File lib/short_find.rb, line 8
def self.use_back(boolean)
  @@back = boolean
end
use_exit(boolean) click to toggle source
# File lib/short_find.rb, line 12
def self.use_exit(boolean)
  @@exit = boolean
end

Private Class Methods

get_input() click to toggle source
# File lib/short_find.rb, line 77
def self.get_input
  input = gets.strip
  return if input == "back" && @@back
  exit if input == "exit" && @@exit
  input
end
test_result(result, r_format, attr) click to toggle source
# File lib/short_find.rb, line 84
def self.test_result(result, r_format, attr)
  if result.count == 0
    puts ""
    puts "No match found"
    puts "Try again"
  elsif result.count == 1
      return result.public_send(r_format)
  else
    puts ""
    puts "Multiple matches found"
    puts ""
    result.each do |result|
      puts result.public_send(attr)
    end
    puts ""
    puts "Try again"
  end
end