SearchUI 🔍 - Searching things in console

Description

A Ruby library for creating interactive console-based search interfaces 🎯

Documentation

Complete API documentation is available at: GitHub.io

Features

  • Interactive Navigation 🎮: Arrow key navigation through search results
  • Real-time Filtering ⚡: Instant search updates as you type
  • Flexible Configuration 🔧: Customizable matching, display, and selection logic
  • Terminal-aware 🖥️: Properly handles terminal input and display management
  • Minimal Dependencies 📦: Lightweight implementation using standard Ruby libraries

Installation

Add this gem to your Gemfile:

gem 'search_ui'

And install it using Bundler:

bundle install

Or install the gem directly:

gem install search_ui

Usage

Library Usage

For programmatic usage, create a custom search interface:

require 'search_ui'

items = ['apple', 'banana', 'cherry', 'date']

result = SearchUI::Search.new(
  match: ->(pattern) { items.select { |item| item.include?(pattern) } },
  query: ->(answer, matches, selector) {
    matches.each_with_index.map do |match, i|
      if i == selector
        "→ #{match}"
      else
        "  #{match}"
      end
    end.join("\n")
  },
  found: ->(answer, matches, selector) { matches[selector] }
).start

puts "Selected: #{result}"

Command Line Tool

The search_it binary provides a ready-to-use search interface:

# Search through command-line arguments 🚀
./bin/search_it apple banana cherry

# Search through a file 📄
./bin/search_it -f items.txt

Author

Florian Frank 👨‍💻

License

MIT License 📄