Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local function regex_escape_line(str)
- return "^" .. str:gsub("([%(%)%.%+%-%*%?%[%^%$])", "\\%1") .. "$"
- end
- local SuppressAllSequence = 12
- local HeaderSequence = 13
- local FooterSequence = 11
- local suppress_trigger_index = 0
- local suppress_triggers_headers = {}
- function suppress_triggers_for_all_tags()
- suppress_triggers_between_tags("<MAPSTART>", "<MAPEND>")
- suppress_triggers_between_tags("{BIGMAP}", "{/BIGMAP}")
- suppress_triggers_between_tags("{edit}", "{/edit}")
- suppress_triggers_between_tags("{equip}", "{/equip}")
- suppress_triggers_between_tags("{help}", "{/help}")
- suppress_triggers_between_tags("{inventory}", "{/inventory}")
- suppress_triggers_between_tags("{rdesc}", "{/rdesc}")
- suppress_triggers_between_tags("{score}", "{/score}")
- suppress_triggers_between_tags("{roomchars}", "{/roomchars}")
- suppress_triggers_between_tags("{scan}", "{/scan}")
- end
- -- Create the trigger to suppress all triggers between the header and footer
- -- @param header The literal header string to match
- -- @param footer The literal footer string to match
- function suppress_triggers_between_tags(header, footer)
- suppress_trigger_index = suppress_trigger_index + 1
- -- Add the pattern for the header
- local match = GetTriggerOption("suppress_triggers_header", "match")
- if match then
- local combined = match .. "|" .. regex_escape_line(header)
- SetTriggerOption("suppress_triggers_header", "match", combined)
- else
- AddTriggerEx("suppress_triggers_header", regex_escape_line(header), "", trigger_flag.Enabled + trigger_flag.Replace + trigger_flag.RegularExpression + trigger_flag.Temporary, -1, 0, "", "suppress_triggers_header", 0, HeaderSequence)
- end
- -- Create a trigger to suppress all triggers if it doesn't exist
- AddTriggerEx("suppress_all_triggers", "*", "", trigger_flag.Replace + trigger_flag.Temporary, -1, 0, "", "", 0, SuppressAllSequence)
- -- Create the trigger for the footer
- local footer_name = "suppress_triggers_footer_" .. suppress_trigger_index
- AddTriggerEx(footer_name, regex_escape_line(footer), "", trigger_flag.Replace + trigger_flag.RegularExpression + trigger_flag.Temporary, -1, 0, "", "suppress_triggers_footer", 0, FooterSequence)
- -- Store data for the header trigger
- suppress_triggers_headers[header] = {
- footer = footer,
- footer_name = footer_name,
- }
- end
- -- When any of the headers are matched, find the corresponding footer
- -- and enable it. Also enable the trigger to suppress all triggers.
- function suppress_triggers_header(name, line)
- local data = suppress_triggers_headers[line]
- if not data then
- ColourNote("red", "", "Error suppressing triggers. Invalid header line: " .. line)
- EnableTrigger("suppress_all_triggers", false)
- return
- end
- EnableTrigger(data.footer_name, true)
- EnableTrigger("suppress_all_triggers", true)
- EnableTrigger("suppress_triggers_header", false)
- end
- -- When the footer is matched, disable the footer and the trigger to
- -- suppress all triggers. Also enable the trigger to match the headers.
- function suppress_triggers_footer(name)
- EnableTrigger(name, false)
- EnableTrigger("suppress_all_triggers", false)
- EnableTrigger("suppress_triggers_header", true)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement