Sha256: 6fd4d24df500608af98cec35742f4d361aa8166e979ee430033a4e94d84da52f
Contents?: true
Size: 1.58 KB
Versions: 1
Compression:
Stored size: 1.58 KB
Contents
#!/usr/bin/env ruby require "hilight" require 'term/ansicolor' require 'open3' include Hilight #rubocop:disable all Filter = Struct.new(:cmd, :patterns) filters = [ Filter["rspec", Patterns[[ Pattern[/(?<green>\d+) examples, (?<red>\d+) failures, (?<yellow>\d+) pending/, '\k<green> examples, \k<red> failures, \k<yellow> pending'], Pattern[/(?<blue>\d+\.\d+)/, '\k<blue>'], Pattern[/\"(?<green>.*?)\"|\'(?<green>.*?)\'/, '\k<green>'], Pattern[/# (?<red>.*):(?<yellow>\d+)/, '\k<red>:\k<yellow>'] ]]], Filter[/-h|--help|help/, Patterns[[ Pattern[/(?<green>\[.*?\])|(?<magenta>(?:--(?:\[no-\]|)(?:\w|-)+)|-[A-Za-z])/, '\k<green>\k<magenta>'] ]]], Filter["git", Patterns[[Pattern[/(?<green>'.*')|(?<blue>".*")/, '\k<green>\k<blue>']]]], Filter["ruby", Patterns[[ Pattern[/(.*from |)(?<red>.*):(?<blue>\d+)(?::in )(?<yellow>`.*')/, '\k<red>\k<blue>\k<yellow>'] ]]], Filter["default", Patterns[[ Pattern[/(?<green>'.*')|(?<blue>".*")/, '\k<green>\k<blue>'] ]]] ] Filter.define_method(:match?) do |string| case cmd when (String || Symbol) then (cmd.to_s == string.to_s) when Regexp then (cmd.match? string.to_s) else false end end filters.define_singleton_method(:find) do |string| each { |f| return f if f.match? string } filters.find "default" end filters.define_singleton_method(:run) do arg_string = ARGV.join(' ') f = filters.find arg_string output, process = Open3.capture2e(arg_string) abort process.exitstatus if process.exitstatus.positive? puts f.patterns.output(output) end abort 'hilight <cmd>' unless ARGV.any? filters.run
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
hilight-0.1.0 | exe/hilight |