parent
f84bf5ff46
commit
37625890bf
@ -0,0 +1,157 @@
|
|||||||
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||||
|
<!DOCTYPE muclient>
|
||||||
|
<!-- Saved on Saturday, July 31, 2021, 10:24 PM -->
|
||||||
|
<!-- MuClient version 5.07-pre -->
|
||||||
|
|
||||||
|
<!-- Plugin "Grep" generated by Plugin Wizard -->
|
||||||
|
|
||||||
|
<muclient>
|
||||||
|
<plugin
|
||||||
|
name="grep"
|
||||||
|
author="Naricain"
|
||||||
|
id="679991ab2cdc79c2743f37a8"
|
||||||
|
language="Lua"
|
||||||
|
purpose="Search for matching lines with a command's output"
|
||||||
|
save_state="y"
|
||||||
|
date_written="2021-07-31 22:24:07"
|
||||||
|
requires="5.00"
|
||||||
|
sequence="-5000"
|
||||||
|
version="1.0"
|
||||||
|
>
|
||||||
|
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<aliases>
|
||||||
|
<alias
|
||||||
|
match="^(?<cmd>.+) \| grep (?<query>.+)$"
|
||||||
|
script="grep"
|
||||||
|
name="grep"
|
||||||
|
enabled="y"
|
||||||
|
regexp="y"
|
||||||
|
sequence="100"
|
||||||
|
ignore_case="y"
|
||||||
|
echo_alias="y"
|
||||||
|
send_to="12" />
|
||||||
|
<alias
|
||||||
|
match="^grep reload$"
|
||||||
|
script="reload"
|
||||||
|
name="reload"
|
||||||
|
enabled="y"
|
||||||
|
regexp="y"
|
||||||
|
sequence="100"
|
||||||
|
ignore_case="y"
|
||||||
|
send_to="12" />
|
||||||
|
</aliases>
|
||||||
|
<triggers>
|
||||||
|
<trigger
|
||||||
|
match="^GREP START: \{(?<query>.+)\}$"
|
||||||
|
script="grep_start"
|
||||||
|
name="grep_start"
|
||||||
|
enabled="y"
|
||||||
|
regexp="y"
|
||||||
|
sequence="1"
|
||||||
|
keep_evaluating="y"
|
||||||
|
omit_from_output="y"
|
||||||
|
send_to="12" />
|
||||||
|
|
||||||
|
<trigger
|
||||||
|
match="^.*$"
|
||||||
|
script="grep_match"
|
||||||
|
name="grep_match"
|
||||||
|
enabled="n"
|
||||||
|
regexp="y"
|
||||||
|
sequence="100"
|
||||||
|
keep_evaluating="y"
|
||||||
|
omit_from_output="y"
|
||||||
|
send_to="12" />
|
||||||
|
|
||||||
|
<trigger
|
||||||
|
match="^GREP END$"
|
||||||
|
script="grep_end"
|
||||||
|
name="grep_end"
|
||||||
|
enabled="y"
|
||||||
|
regexp="y"
|
||||||
|
sequence="1"
|
||||||
|
omit_from_output="y"
|
||||||
|
send_to="12" />
|
||||||
|
</triggers>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
<![CDATA[
|
||||||
|
local current_grep_query
|
||||||
|
|
||||||
|
function reload()
|
||||||
|
InfoNote("Reloading ", "Grep")
|
||||||
|
Execute(GetAlphaOption("script_prefix") .. "DoAfterSpecial(1, \"ReloadPlugin('" .. GetPluginID() .. "')\", sendto.script)")
|
||||||
|
end
|
||||||
|
|
||||||
|
function generate_grep_query(query)
|
||||||
|
return rex.new(query, rex.flags().CASELESS)
|
||||||
|
end
|
||||||
|
|
||||||
|
function grep(name, line, wildcards)
|
||||||
|
local status = pcall(generate_grep_query, wildcards.query)
|
||||||
|
if status then
|
||||||
|
SendNoEcho("echo GREP START: {" .. wildcards.query .. "}")
|
||||||
|
SendNoEcho(wildcards.cmd)
|
||||||
|
SendNoEcho("echo GREP END")
|
||||||
|
else
|
||||||
|
InfoNote("Grep query ", wildcards.query, " is not a valid regular expression")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function grep_start(name, line, wildcards)
|
||||||
|
local status, query_regex = pcall(generate_grep_query, wildcards.query)
|
||||||
|
if status then
|
||||||
|
current_grep_query = query_regex
|
||||||
|
EnableTrigger("grep_match", true)
|
||||||
|
else
|
||||||
|
InfoNote("Grep query ", wildcards.query, " is not a valid regular expression")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function grep_match(name, line, wildcards, style)
|
||||||
|
-- print("line ", line)
|
||||||
|
if not current_grep_query then
|
||||||
|
InfoNote("Missing grep query")
|
||||||
|
EnableTrigger("grep_match", false)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if current_grep_query:match(line) then
|
||||||
|
for i, s in ipairs(style) do
|
||||||
|
NoteStyle(s.style)
|
||||||
|
ColourTell(RGBColourToName(s.textcolour), RGBColourToName(s.backcolour), s.text)
|
||||||
|
end
|
||||||
|
return Note("")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function grep_end()
|
||||||
|
current_grep_query = nil
|
||||||
|
EnableTrigger("grep_match", false)
|
||||||
|
end
|
||||||
|
|
||||||
|
local LOG_COLORS = {
|
||||||
|
INFO = "#A9A9A9",
|
||||||
|
INFO_HIGHLIGHT = "#4169E1",
|
||||||
|
}
|
||||||
|
|
||||||
|
function InfoNote(...)
|
||||||
|
log_with_alternating_note({"Grep: ",...}, LOG_COLORS.INFO_HIGHLIGHT, LOG_COLORS.INFO)
|
||||||
|
end
|
||||||
|
|
||||||
|
function log_with_alternating_note(messages, color1, color2, background)
|
||||||
|
if background == nil then
|
||||||
|
background = ""
|
||||||
|
end
|
||||||
|
for i, message in ipairs(messages) do
|
||||||
|
ColourTell(color1, background, message)
|
||||||
|
color1, color2 = color2, color1
|
||||||
|
end
|
||||||
|
Note("")
|
||||||
|
end
|
||||||
|
|
||||||
|
]]>
|
||||||
|
</script>
|
||||||
|
</muclient>
|
Loading…
Reference in new issue