This repository has been archived on 2022-04-04. You can view files and clone it, but cannot push or open issues or pull requests.

97 lines
14 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Converts to and from various cases."><meta name="keywords" content="rust, rustlang, rust-lang, convert_case"><title>convert_case - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
<noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu" role="button">&#9776;</div><a class="sidebar-logo" href="../convert_case/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.png" alt="logo"></div>
</a><h2 class="location">Crate convert_case</h2><div class="block version"><div class="narrow-helper"></div><p>Version 0.4.0</p></div><div class="sidebar-elems"><a id="all-types" href="all.html"><p>See all convert_case's items</p></a><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li></ul></div><div id="sidebar-vars" data-name="convert_case" data-ty="mod" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../convert_case/index.html"><img class="rust-logo" src="../rust-logo.png" alt="logo"></a><nav class="sub"><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="18" height="18" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"></div><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="18" height="18" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><h1 class="fqn"><span class="in-band">Crate <a class="mod" href="#">convert_case</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span><span class="out-of-band"><span id="render-detail"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span><a class="srclink" href="../src/convert_case/lib.rs.html#1-337" title="goto source code">[src]</a></span></h1><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Converts to and from various cases.</p>
<h2 id="command-line-utility-ccase" class="section-header"><a href="#command-line-utility-ccase">Command Line Utility <code>ccase</code></a></h2>
<p>Since version “0.3.0” this crate is just a case conversion <em>library</em>. The command line utility
that uses the tools in this library has been moved to the <code>ccase</code> crate. You can read about it
at the <a href="https://github.com/rutrum/convert-case/tree/master/ccase">github repository</a>.</p>
<h2 id="rust-library" class="section-header"><a href="#rust-library">Rust Library</a></h2>
<p>Provides a <a href="enum.Case.html"><code>Case</code></a> enum which defines a variety of cases to convert into.
A <code>Case</code> can be used with an item that implements the <a href="trait.Casing.html"><code>Casing</code></a> trait,
which allows the item to be converted to a given case.</p>
<p>You can convert a string or string slice into a case using the <code>to_case</code> method.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">convert_case</span>::{<span class="ident">Case</span>, <span class="ident">Casing</span>};
<span class="macro">assert_eq!</span>(<span class="string">&quot;Ronnie James Dio&quot;</span>, <span class="string">&quot;ronnie james dio&quot;</span>.<span class="ident">to_case</span>(<span class="ident">Case::Title</span>));
<span class="macro">assert_eq!</span>(<span class="string">&quot;ronnieJamesDio&quot;</span>, <span class="string">&quot;Ronnie_James_dio&quot;</span>.<span class="ident">to_case</span>(<span class="ident">Case::Camel</span>));
<span class="macro">assert_eq!</span>(<span class="string">&quot;Ronnie-James-Dio&quot;</span>, <span class="string">&quot;RONNIE_JAMES_DIO&quot;</span>.<span class="ident">to_case</span>(<span class="ident">Case::Train</span>));</code></pre></div>
<p>By default, <code>to_case</code> will split along all word boundaries, that is</p>
<ul>
<li>space characters <code> </code>,</li>
<li>underscores <code>_</code>,</li>
<li>hyphens <code>-</code>,</li>
<li>and changes in capitalization <code>aA</code>.</li>
</ul>
<p>For more accuracy, the <code>from_case</code> method splits based on the word boundaries
of a particular case. For example, splitting from snake case will only treat
underscores as word boundaries.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">convert_case</span>::{<span class="ident">Case</span>, <span class="ident">Casing</span>};
<span class="macro">assert_eq!</span>(
<span class="string">&quot;2020 04 16 My Cat Cali&quot;</span>,
<span class="string">&quot;2020-04-16_my_cat_cali&quot;</span>.<span class="ident">to_case</span>(<span class="ident">Case::Title</span>)
);
<span class="macro">assert_eq!</span>(
<span class="string">&quot;2020-04-16 My Cat Cali&quot;</span>,
<span class="string">&quot;2020-04-16_my_cat_cali&quot;</span>.<span class="ident">from_case</span>(<span class="ident">Case::Snake</span>).<span class="ident">to_case</span>(<span class="ident">Case::Title</span>)
);</code></pre></div>
<p>By default (and when converting from camel case or similar cases) <code>convert_case</code>
will detect acronyms. It also ignores any leading, trailing, or deplicate delimeters.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">convert_case</span>::{<span class="ident">Case</span>, <span class="ident">Casing</span>};
<span class="macro">assert_eq!</span>(<span class="string">&quot;io_stream&quot;</span>, <span class="string">&quot;IOStream&quot;</span>.<span class="ident">to_case</span>(<span class="ident">Case::Snake</span>));
<span class="macro">assert_eq!</span>(<span class="string">&quot;my_json_parser&quot;</span>, <span class="string">&quot;myJSONParser&quot;</span>.<span class="ident">to_case</span>(<span class="ident">Case::Snake</span>));
<span class="macro">assert_eq!</span>(<span class="string">&quot;weird_var_name&quot;</span>, <span class="string">&quot;__weird--var _name-&quot;</span>.<span class="ident">to_case</span>(<span class="ident">Case::Snake</span>));</code></pre></div>
<p>It also works non-ascii characters. However, no inferences on the language itself is made.
For instance, the diagraph <code>ij</code> in dutch will not be capitalized, because it is represented
as two distinct unicode characters. However, <code>æ</code> would be capitalized.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">convert_case</span>::{<span class="ident">Case</span>, <span class="ident">Casing</span>};
<span class="macro">assert_eq!</span>(<span class="string">&quot;granat-äpfel&quot;</span>, <span class="string">&quot;GranatÄpfel&quot;</span>.<span class="ident">to_case</span>(<span class="ident">Case::Kebab</span>));
<span class="comment">// The example from str::to_lowercase documentation</span>
<span class="kw">let</span> <span class="ident">odysseus</span> <span class="op">=</span> <span class="string">&quot;ὈΔΥΣΣΕΎΣ&quot;</span>;
<span class="macro">assert_eq!</span>(<span class="string">&quot;ὀδυσσεύς&quot;</span>, <span class="ident">odysseus</span>.<span class="ident">to_case</span>(<span class="ident">Case::Lower</span>));</code></pre></div>
<p>For the purposes of case conversion, characters followed by numerics and vice-versa are
considered word boundaries. In addition, any special ascii characters (besides <code>_</code> and <code>-</code>)
are ignored.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">convert_case</span>::{<span class="ident">Case</span>, <span class="ident">Casing</span>};
<span class="macro">assert_eq!</span>(<span class="string">&quot;e_5150&quot;</span>, <span class="string">&quot;E5150&quot;</span>.<span class="ident">to_case</span>(<span class="ident">Case::Snake</span>));
<span class="macro">assert_eq!</span>(<span class="string">&quot;10,000_days&quot;</span>, <span class="string">&quot;10,000Days&quot;</span>.<span class="ident">to_case</span>(<span class="ident">Case::Snake</span>));
<span class="macro">assert_eq!</span>(<span class="string">&quot;HELLO, WORLD!&quot;</span>, <span class="string">&quot;Hello, world!&quot;</span>.<span class="ident">to_case</span>(<span class="ident">Case::Upper</span>));
<span class="macro">assert_eq!</span>(<span class="string">&quot;One\ntwo\nthree&quot;</span>, <span class="string">&quot;ONE\nTWO\nTHREE&quot;</span>.<span class="ident">to_case</span>(<span class="ident">Case::Title</span>));</code></pre></div>
<h2 id="note-on-accuracy" class="section-header"><a href="#note-on-accuracy">Note on Accuracy</a></h2>
<p>The <code>Casing</code> methods <code>from_case</code> and <code>to_case</code> do not fail. Conversion to a case will always
succeed. However, the results can still be unexpected. Failure to detect any word boundaries
for a particular case means the entire string will be considered a single word.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">convert_case</span>::{<span class="ident">Case</span>, <span class="ident">Casing</span>};
<span class="comment">// Mistakenly parsing using Case::Snake</span>
<span class="macro">assert_eq!</span>(<span class="string">&quot;My-kebab-var&quot;</span>, <span class="string">&quot;my-kebab-var&quot;</span>.<span class="ident">from_case</span>(<span class="ident">Case::Snake</span>).<span class="ident">to_case</span>(<span class="ident">Case::Title</span>));
<span class="comment">// Converts using an unexpected method</span>
<span class="macro">assert_eq!</span>(<span class="string">&quot;my_kebab_like_variable&quot;</span>, <span class="string">&quot;myKebab-like-variable&quot;</span>.<span class="ident">to_case</span>(<span class="ident">Case::Snake</span>));</code></pre></div>
<h2 id="random-feature" class="section-header"><a href="#random-feature">Random Feature</a></h2>
<p>To ensure this library had zero dependencies, randomness was moved to the <em>random</em> feature,
which requires the <code>rand</code> crate. You can enable this feature by including the
following in your <code>Cargo.toml</code>.</p>
<div class="example-wrap"><pre class="language-{toml}"><code>[dependencies]
convert_case = { version = &quot;^0.3, features = [&quot;random&quot;] }</code></pre></div>
<p>This will add two additional cases: Random and PseudoRandom. You can read about their
construction in the <a href="enum.Case.html">Case enum</a>.</p>
</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.FromCasing.html" title="convert_case::FromCasing struct">FromCasing</a></div><div class="item-right docblock-short"><p>Holds information about parsing before converting into a case.</p>
</div></div></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2>
<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="enum" href="enum.Case.html" title="convert_case::Case enum">Case</a></div><div class="item-right docblock-short"><p>Defines the type of casing a string can be.</p>
</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2>
<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.Casing.html" title="convert_case::Casing trait">Casing</a></div><div class="item-right docblock-short"><p>Describes items that can be converted into a case.</p>
</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="convert_case" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.59.0 (9d1b2106e 2022-02-23)" ></div>
</body></html>