# Highlighter RichText highlighting Lua code with a pure Lua lexer ## Installation Wally: ```toml [dependencies] Highlighter = "boatbomber/highlighter@0.8.2" ``` Roblox Model: Download from [Releases](https://github.com/boatbomber/Highlighter/releases) ## API **Functions:** ```Lua function Highlighter.highlight(props: types.HighlightProps): () -> () ``` Highlights the given textObject with the given props and returns a cleanup function. Highlighting will automatically update when needed, so the cleanup function will disconnect those connections and remove all labels. ```Lua function Highlighter.refresh(): () ``` Refreshes all highlighted textObjects. Automatically runs when the theme changes. ```Lua function Highlighter.setTokenColors(colors: types.TokenColors): () ``` Sets the token colors to the given colors and refreshes all highlighted textObjects. ```Lua function Highlighter.getTokenColor(tokenName: types.TokenName): Color3 ``` Gets a token color by name. Mainly useful for setting "background" token color on other UI objects behind your text. ```Lua function Highlighter.matchStudioSettings(): () ``` Matches the token colors to the Studio theme settings and refreshes all highlighted textObjects. Does nothing when not run in a Studio plugin. **Types:** ```Lua type TextObject = TextLabel | TextBox type TokenName = "background" | "iden" | "keyword" | "builtin" | "string" | "number" | "comment" | "operator" | "custom" type TokenColors = { ["background"]: Color3?, ["iden"]: Color3?, ["keyword"]: Color3?, ["builtin"]: Color3?, ["string"]: Color3?, ["number"]: Color3?, ["comment"]: Color3?, ["operator"]: Color3?, ["custom"]: Color3?, } type HighlightProps = { textObject: TextObject, src: string?, forceUpdate: boolean?, lexer: Lexer?, customLang: { [string]: string }?, } type Lexer = { scan: (src: string) -> () -> (string, string), navigator: () -> any, finished: boolean?, } ``` ## Simple Example ```Lua local Highlighter = require(script.Highlighter) -- When using in a Studio Plugin, this will automatically match the Studio theme Highlighter.matchStudioSettings() -- Add syntax highlighting to myTextLabel Highlighter.highlight({ textObject: myTextLabel, }) ```