<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>mux.text on StompyMUX Documentation</title><link>https://stompymux.com/docs/scripting/packages/mux/text/</link><description>Recent content in mux.text on StompyMUX Documentation</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://stompymux.com/docs/scripting/packages/mux/text/index.xml" rel="self" type="application/rss+xml"/><item><title>is_printable_ascii</title><link>https://stompymux.com/docs/scripting/packages/mux/text/is-printable-ascii/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stompymux.com/docs/scripting/packages/mux/text/is-printable-ascii/</guid><description>&lt;p&gt;Tests whether every byte in a string is printable ASCII.&lt;/p&gt;
&lt;h2 id="function"&gt;Function&lt;/h2&gt;
&lt;h3 id="synopsis"&gt;Synopsis&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mux.text.is_printable_ascii( value )
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="arguments"&gt;Arguments&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;string value&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The byte string to inspect.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id="returns"&gt;Returns&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;boolean printable&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Whether every byte is between space (&lt;code&gt;0x20&lt;/code&gt;) and &lt;code&gt;~&lt;/code&gt; (&lt;code&gt;0x7e&lt;/code&gt;), inclusive.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;assert(mux.text.is_printable_ascii(&lt;span style="color:#e6db74"&gt;&amp;#34;Atlas-1&amp;#34;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;assert(&lt;span style="color:#f92672"&gt;not&lt;/span&gt; mux.text.is_printable_ascii(&lt;span style="color:#e6db74"&gt;&amp;#34;café&amp;#34;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;p&gt;The empty string is valid. Control bytes, embedded NUL bytes, DEL, and non-ASCII UTF-8 characters return &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="see-also"&gt;See Also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="../../"&gt;&lt;code&gt;mux&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>markup</title><link>https://stompymux.com/docs/scripting/packages/mux/text/markup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stompymux.com/docs/scripting/packages/mux/text/markup/</guid><description>&lt;p&gt;Validates styled-text markup and returns it unchanged.&lt;/p&gt;
&lt;h2 id="function"&gt;Function&lt;/h2&gt;
&lt;h3 id="synopsis"&gt;Synopsis&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mux.text.markup( value )
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="arguments"&gt;Arguments&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;string value&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Styled-text markup to validate.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id="returns"&gt;Returns&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;string markup&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The validated input string.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;local&lt;/span&gt; warning &lt;span style="color:#f92672"&gt;=&lt;/span&gt; mux.text.markup(&lt;span style="color:#e6db74"&gt;&amp;#34;[fg=#ff7000][bold]Warning[/][/]&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;local&lt;/span&gt; look &lt;span style="color:#f92672"&gt;=&lt;/span&gt; mux.text.markup(&lt;span style="color:#e6db74"&gt;&amp;#39;[send=&amp;#34;look&amp;#34;]Look[/]&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;p&gt;Invalid tags, colors, link targets, or nesting raise a Lua error. &lt;code&gt;[send]&lt;/code&gt; and &lt;code&gt;[prompt]&lt;/code&gt; targets are percent-encoded during rendering; &lt;code&gt;[link]&lt;/code&gt; accepts &lt;code&gt;http:&lt;/code&gt;, &lt;code&gt;https:&lt;/code&gt;, and &lt;code&gt;ftp:&lt;/code&gt; URIs.&lt;/p&gt;
&lt;h2 id="see-also"&gt;See Also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="../../"&gt;&lt;code&gt;mux&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="../style/"&gt;&lt;code&gt;mux.text.style&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="../strip-style/"&gt;&lt;code&gt;mux.text.strip_style&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>strip_style</title><link>https://stompymux.com/docs/scripting/packages/mux/text/strip-style/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stompymux.com/docs/scripting/packages/mux/text/strip-style/</guid><description>&lt;p&gt;Removes styled-text markup and ANSI styling from a string.&lt;/p&gt;
&lt;h2 id="function"&gt;Function&lt;/h2&gt;
&lt;h3 id="synopsis"&gt;Synopsis&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mux.text.strip_style( value )
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="arguments"&gt;Arguments&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;string value&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Styled or unstyled text.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id="returns"&gt;Returns&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;string plain&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The visible unstyled text.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;local&lt;/span&gt; command &lt;span style="color:#f92672"&gt;=&lt;/span&gt; mux.text.strip_style(styled_name)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;p&gt;This is useful before using player-facing text as a command or identifier.&lt;/p&gt;
&lt;h2 id="see-also"&gt;See Also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="../../"&gt;&lt;code&gt;mux&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="../markup/"&gt;&lt;code&gt;mux.text.markup&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="../width/"&gt;&lt;code&gt;mux.text.width&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>style</title><link>https://stompymux.com/docs/scripting/packages/mux/text/style/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stompymux.com/docs/scripting/packages/mux/text/style/</guid><description>&lt;p&gt;Applies styled-text markup described by an options table.&lt;/p&gt;
&lt;h2 id="function"&gt;Function&lt;/h2&gt;
&lt;h3 id="synopsis"&gt;Synopsis&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mux.text.style( value, options )
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="arguments"&gt;Arguments&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;string value&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The text to style; it must not contain an embedded NUL byte.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;table options&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Style fields to apply.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id="returns"&gt;Returns&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;string styled&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The input wrapped in validated styled-text markup.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;local&lt;/span&gt; heading &lt;span style="color:#f92672"&gt;=&lt;/span&gt; mux.text.style(&lt;span style="color:#e6db74"&gt;&amp;#34;Warning&amp;#34;&lt;/span&gt;, {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; foreground &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;#ff7000&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; bold &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;options.foreground&lt;/code&gt; and &lt;code&gt;options.background&lt;/code&gt; accept a built-in or configured color name or &lt;code&gt;#RRGGBB&lt;/code&gt;. &lt;code&gt;bold&lt;/code&gt;, &lt;code&gt;underline&lt;/code&gt;, and &lt;code&gt;inverse&lt;/code&gt; are booleans. Missing fields have no effect; invalid types and colors raise an error.&lt;/p&gt;</description></item><item><title>truncate</title><link>https://stompymux.com/docs/scripting/packages/mux/text/truncate/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stompymux.com/docs/scripting/packages/mux/text/truncate/</guid><description>&lt;p&gt;Truncates styled text to a maximum visible width.&lt;/p&gt;
&lt;h2 id="function"&gt;Function&lt;/h2&gt;
&lt;h3 id="synopsis"&gt;Synopsis&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mux.text.truncate( value, width )
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="arguments"&gt;Arguments&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;string value&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Styled or unstyled text.&lt;/dd&gt;
&lt;dt&gt;&lt;code&gt;number width&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;A non-negative maximum visible byte width.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id="returns"&gt;Returns&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;string truncated&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The safely truncated text, including any resets needed for active styles.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;local&lt;/span&gt; label &lt;span style="color:#f92672"&gt;=&lt;/span&gt; mux.text.truncate(mux.text.style(&lt;span style="color:#e6db74"&gt;&amp;#34;Atlas&amp;#34;&lt;/span&gt;, { bold &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt; }), &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;p&gt;A negative width raises a Lua error. Markup and ANSI sequences do not count toward the limit.&lt;/p&gt;
&lt;h2 id="see-also"&gt;See Also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="../../"&gt;&lt;code&gt;mux&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="../width/"&gt;&lt;code&gt;mux.text.width&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="../strip-style/"&gt;&lt;code&gt;mux.text.strip_style&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>width</title><link>https://stompymux.com/docs/scripting/packages/mux/text/width/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://stompymux.com/docs/scripting/packages/mux/text/width/</guid><description>&lt;p&gt;Measures the visible byte width of styled text.&lt;/p&gt;
&lt;h2 id="function"&gt;Function&lt;/h2&gt;
&lt;h3 id="synopsis"&gt;Synopsis&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mux.text.width( value )
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="arguments"&gt;Arguments&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;string value&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;Styled or unstyled text.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id="returns"&gt;Returns&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;code&gt;number width&lt;/code&gt;&lt;/dt&gt;
&lt;dd&gt;The number of visible bytes, excluding markup and ANSI styling.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="notes"&gt;Notes&lt;/h2&gt;
&lt;p&gt;The result is a byte width, not a Unicode display-cell calculation.&lt;/p&gt;
&lt;h2 id="see-also"&gt;See Also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="../../"&gt;&lt;code&gt;mux&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="../truncate/"&gt;&lt;code&gt;mux.text.truncate&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="../strip-style/"&gt;&lt;code&gt;mux.text.strip_style&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>