Grichelde is a WoW Classic Addon that replaces characters you typed in a chatbox with any replacement text you specified in the addon options.
Grichelde is a WoW Classic Addon that replaces any characters or words you typed in a chatbox with any replacement text or word you specified.
You can define any search and replace text arbitrarily. The replacement is done **before** the text is send to others/in the target channel.
It does **not** change txt others have written in the chat/channel.
Its purpose it to simulate a speaking disability of your toon and hereby strengthen immersion in roleplay.
Initially started as a helper addon for a roleplaying friend, Grichelde can be used for much more, like
Intentionally started as a helper addon for a roleplaying friend, Grichelde can be used for much more, like
* fixing your common spelling errors :)
* replacing toon names with their nick names
* write out abbreviations for you
@ -47,17 +51,17 @@ Actually there are two solutions:
#### I get errors, what should I do?
Please report your errors here. Make a screenshot or copy both the error message as well as your recent mappings.
You can bring up a small windows with your mapping by entering the `/gri mappings` command.
Please report your errors on [project website](https://www.curseforge.com/wow/addons/grichelde) at curse forge. Make a screenshot or copy both the error message as well as your recent mappings.
You can bring up a small windows with your mapping by entering the `/gri mappings` command on copy them.
#### Why that strange name?
Grichelde is the name of an undead rogue without a jaw, who was played in RP sessions with a guild member.
Grichelde is the name of an Undead rogue without a jaw, who was played in RP sessions with a guild member.
She started replacing "s" and "t" letters manually for each line in the chat, which became cumbersome over time.
(If you ever wondered how an Undead without a jaw sounds like, its really hilarious, you should try it.)
Without spelling errors, "Griselde" in German is an old-fashioned female first name.
#### I'm a pro. Does it support regular expressions?
#### I'm a Pro. Does it support regular expressions?
This is actually an unofficial feature. In general the searchText is passed in as Lua, so yes regex can be used in lookups.
There are two caveats: first, Lua does not support PCRE syntax, as it would bloat Lua's simplicity and performance (read [here](http://www.lua.org/pil/20.1.html) why).
.."Die Zusammenfassung wird erst nach der Ersetzung vorgenommen, d.h. am vollst\195\164ndig ersetzten Text f\195\188r jede Zuordnung. "
.."|nMit der Zuordnung "..cPrefix("\"s\" => \"sch\"").." wird aus "..cPrefix("\"Tasse\" => \"Tasche\"").." statt "..cPrefix("\"Taschsche\"")..", "
.."aber "..cPrefix("\"schmeissen\" => \"schchmeischen\"")..". Solche Randbedingungen beseitigt in der Regel eine weitere Zuordnung wie "..cPrefix("\"chch\" => \"ch\"").."."
.."|n|n"..cYellow("Anhalten nach Treffer")
.."|nEs werden keine weiteren Ersetzungen mehr vorgenommen, wenn die aktuelle Zuordnung zutreffend ist. Alle nachfolgenden Zuordnungen werden dann \195\188bersprungen. Wenn kein Treffer vorliegt, werden die restlichen Zuordnung ganz normal weiter abgearbeitet."
.."|nIst der Ersetzungstext k\195\188rzer als der eigentliche Suchtext, werden die \195\188bersch\195\188\195\159igen Zeichen des Suchtreffers entfernt. "
.."Ist der Ersetzungstext l\195\163nger, werden die \195\188brigen Zeichen nach dem Treffer hinten drangehangen. Dabei wird die Gro\195\159- und Kleinschreibung des letzten Zeichens ber\195\188cksichtigt, "
L.Options_Help_Examples4_Header=cYellow("Viel sagen, wenig tippen.")
L.Options_Help_Examples4_Text=cPrefix("gz => Herzlichen Gl\195\188ckwunsch").."|n|n"..cPrefix("gn8 => Gute Nacht").."|n|n"..cPrefix("afk => Bin mal eben weg (AFK)").."|n|n"..cPrefix("MC => Geschmolzener Kern")
L.Options_Help_Examples5_Select="Eigennamen"
L.Options_Help_Examples5_Select="Eigen-, Kose- und Ortsnamen"
L.Options_Help_Examples5_Header=cYellow("Ersetzt Spielernamen, NPCs oder Orte durch andere Ausdr\195\188cke.")
L.Options_Help_Examples5_Text=cPrefix("Sylvanas => die rachs\195\188chtige Bansheek\195\182nigin").."|n|n"..cPrefix("R\195\188tzkn\195\188bbel => R\195\188tzi").."|n|n"..cPrefix("Unterstadt => Undercity")
L.Options_Help_Examples5_Text="Exakte Gro\195\159- und Kleinschreibung wird empfohlen|n|n"..cPrefix("Sylvanas => die rachs\195\188chtige Bansheek\195\182nigin").."|n|n"..cPrefix("R\195\188tzkn\195\188bbel => R\195\188tzi").."|n|n"..cPrefix("Unterstadt => Undercity")
L.Options_Help_Examples6_Select="Lispeln"
L.Options_Help_Examples6_Header=cYellow("Aussprache von S und Z wird zu einem Zischlaut")
.."Consolidation takes place after all replacements were done, meaning it's applied to the completely replaced text. "
.."|nWith mapping "..cPrefix("\"s\" => \"sh\"").." text becomes "..cPrefix("\"tossing\" => \"toshing\"").." instead of "..cPrefix("\"toshshing\"")..", yet still "..cPrefix("\"paths\" => \"pathsh\"")..". "
.."Such edge cases can usually be mitigated with an additional mapping at the end: "..cPrefix("\"thsh\" => \"thz\"").."."
.."|n|n"..cYellow("stop on match")
.."|nNo other replacements are done, when the current mapping matched. This will skip any other consecutive mappings when hit. When no match ocurred, the remaining mappings are processed as usual."
.."|nIf the replacement is shorter than the actual match, all remaining characters will be skipped. If the replacement is longer, all remaining characters will be appended. "
.."The case of the replaced character is considered as well as the case of the next character in the original text. That way capital case abbreviations and expressions will not be distorted. "
@ -181,7 +183,7 @@ L.Options_Help_Examples4_Header = cYellow("Say much, type less.")
L.Options_Help_Examples4_Text=cPrefix("gz => Congratulations").."|n|n"..cPrefix("gn8 => Good night").."|n|n"..cPrefix("afk => I'm temporarikly not available (AFK)").."|n|n"..cPrefix("MC => Molten Core")
L.Options_Help_Examples5_Select="Proper names"
L.Options_Help_Examples5_Header=cYellow("Replace player names, NPCs or locations.")
L.Options_Help_Examples5_Text=cPrefix("Sylvanas => the revengeful banshee queen").."|n|n"..cPrefix("Asmongold => Asmon").."|n|n"..cPrefix("Crossroads => X-roads")
L.Options_Help_Examples5_Text="exact case is recommended|n|n"..cPrefix("Sylvanas => the revengeful banshee queen").."|n|n"..cPrefix("Asmongold => Asmon").."|n|n"..cPrefix("Crossroads => X-roads")
L.Options_Help_Examples6_Select="lisp"
L.Options_Help_Examples6_Header=cYellow("S and Z will become a sibilant")