Skip to content

Commit b643d14

Browse files
committed
Deploying to gh-pages from @ ba386c2 🚀
1 parent b2797a6 commit b643d14

7 files changed

Lines changed: 147 additions & 15 deletions

File tree

fluent.runtime/dev/_modules/fluent/runtime/fallback.html

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ <h1>Source code for fluent.runtime.fallback</h1><div class="highlight"><pre>
5353
<span class="p">)</span>
5454

5555
<span class="kn">from</span> <span class="nn">fluent.syntax</span> <span class="kn">import</span> <span class="n">FluentParser</span>
56+
<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">NamedTuple</span>
5657

5758
<span class="kn">from</span> <span class="nn">.bundle</span> <span class="kn">import</span> <span class="n">FluentBundle</span>
5859

@@ -62,6 +63,11 @@ <h1>Source code for fluent.runtime.fallback</h1><div class="highlight"><pre>
6263
<span class="kn">from</span> <span class="nn">.types</span> <span class="kn">import</span> <span class="n">FluentType</span>
6364

6465

66+
<div class="viewcode-block" id="FormattedMessage"><a class="viewcode-back" href="../../../reference.html#fluent.runtime.FormattedMessage">[docs]</a><span class="k">class</span> <span class="nc">FormattedMessage</span><span class="p">(</span><span class="n">NamedTuple</span><span class="p">):</span>
67+
<span class="n">value</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="kc">None</span><span class="p">]</span>
68+
<span class="n">attributes</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span></div>
69+
70+
6571
<div class="viewcode-block" id="FluentLocalization"><a class="viewcode-back" href="../../../reference.html#fluent.runtime.FluentLocalization">[docs]</a><span class="k">class</span> <span class="nc">FluentLocalization</span><span class="p">:</span>
6672
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
6773
<span class="sd"> Generic API for Fluent applications.</span>
@@ -88,20 +94,47 @@ <h1>Source code for fluent.runtime.fallback</h1><div class="highlight"><pre>
8894
<span class="bp">self</span><span class="o">.</span><span class="n">_bundle_cache</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">FluentBundle</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
8995
<span class="bp">self</span><span class="o">.</span><span class="n">_bundle_it</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_iterate_bundles</span><span class="p">()</span>
9096

97+
<span class="k">def</span> <span class="nf">format_message</span><span class="p">(</span>
98+
<span class="bp">self</span><span class="p">,</span> <span class="n">msg_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">args</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span> <span class="kc">None</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
99+
<span class="p">)</span> <span class="o">-&gt;</span> <span class="n">FormattedMessage</span><span class="p">:</span>
100+
<span class="n">bundle</span><span class="p">,</span> <span class="n">msg</span> <span class="o">=</span> <span class="nb">next</span><span class="p">((</span>
101+
<span class="p">(</span><span class="n">bundle</span><span class="p">,</span> <span class="n">bundle</span><span class="o">.</span><span class="n">get_message</span><span class="p">(</span><span class="n">msg_id</span><span class="p">))</span>
102+
<span class="k">for</span> <span class="n">bundle</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bundles</span><span class="p">()</span>
103+
<span class="k">if</span> <span class="n">bundle</span><span class="o">.</span><span class="n">has_message</span><span class="p">(</span><span class="n">msg_id</span><span class="p">)</span>
104+
<span class="p">),</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span>
105+
<span class="k">if</span> <span class="ow">not</span> <span class="n">bundle</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">msg</span><span class="p">:</span>
106+
<span class="k">return</span> <span class="n">FormattedMessage</span><span class="p">(</span><span class="n">msg_id</span><span class="p">,</span> <span class="p">{})</span>
107+
<span class="n">formatted_attrs</span> <span class="o">=</span> <span class="p">{</span>
108+
<span class="n">attr</span><span class="p">:</span> <span class="n">cast</span><span class="p">(</span>
109+
<span class="nb">str</span><span class="p">,</span>
110+
<span class="n">bundle</span><span class="o">.</span><span class="n">format_pattern</span><span class="p">(</span><span class="n">msg</span><span class="o">.</span><span class="n">attributes</span><span class="p">[</span><span class="n">attr</span><span class="p">],</span> <span class="n">args</span><span class="p">)[</span><span class="mi">0</span><span class="p">],</span>
111+
<span class="p">)</span>
112+
<span class="k">for</span> <span class="n">attr</span> <span class="ow">in</span> <span class="n">msg</span><span class="o">.</span><span class="n">attributes</span>
113+
<span class="p">}</span>
114+
<span class="k">if</span> <span class="ow">not</span> <span class="n">msg</span><span class="o">.</span><span class="n">value</span><span class="p">:</span>
115+
<span class="n">val</span> <span class="o">=</span> <span class="kc">None</span>
116+
<span class="k">else</span><span class="p">:</span>
117+
<span class="n">val</span><span class="p">,</span> <span class="n">_errors</span> <span class="o">=</span> <span class="n">bundle</span><span class="o">.</span><span class="n">format_pattern</span><span class="p">(</span><span class="n">msg</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span>
118+
<span class="k">return</span> <span class="n">FormattedMessage</span><span class="p">(</span>
119+
<span class="c1"># Never FluentNone when format_pattern called externally</span>
120+
<span class="n">cast</span><span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="n">val</span><span class="p">),</span>
121+
<span class="n">formatted_attrs</span><span class="p">,</span>
122+
<span class="p">)</span>
123+
91124
<span class="k">def</span> <span class="nf">format_value</span><span class="p">(</span>
92125
<span class="bp">self</span><span class="p">,</span> <span class="n">msg_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">args</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span> <span class="kc">None</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
93126
<span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
94-
<span class="k">for</span> <span class="n">bundle</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bundles</span><span class="p">():</span>
95-
<span class="k">if</span> <span class="ow">not</span> <span class="n">bundle</span><span class="o">.</span><span class="n">has_message</span><span class="p">(</span><span class="n">msg_id</span><span class="p">):</span>
96-
<span class="k">continue</span>
97-
<span class="n">msg</span> <span class="o">=</span> <span class="n">bundle</span><span class="o">.</span><span class="n">get_message</span><span class="p">(</span><span class="n">msg_id</span><span class="p">)</span>
98-
<span class="k">if</span> <span class="ow">not</span> <span class="n">msg</span><span class="o">.</span><span class="n">value</span><span class="p">:</span>
99-
<span class="k">continue</span>
100-
<span class="n">val</span><span class="p">,</span> <span class="n">_errors</span> <span class="o">=</span> <span class="n">bundle</span><span class="o">.</span><span class="n">format_pattern</span><span class="p">(</span><span class="n">msg</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span>
101-
<span class="k">return</span> <span class="n">cast</span><span class="p">(</span>
102-
<span class="nb">str</span><span class="p">,</span> <span class="n">val</span>
103-
<span class="p">)</span> <span class="c1"># Never FluentNone when format_pattern called externally</span>
104-
<span class="k">return</span> <span class="n">msg_id</span>
127+
<span class="n">bundle</span><span class="p">,</span> <span class="n">msg</span> <span class="o">=</span> <span class="nb">next</span><span class="p">((</span>
128+
<span class="p">(</span><span class="n">bundle</span><span class="p">,</span> <span class="n">bundle</span><span class="o">.</span><span class="n">get_message</span><span class="p">(</span><span class="n">msg_id</span><span class="p">))</span>
129+
<span class="k">for</span> <span class="n">bundle</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bundles</span><span class="p">()</span>
130+
<span class="k">if</span> <span class="n">bundle</span><span class="o">.</span><span class="n">has_message</span><span class="p">(</span><span class="n">msg_id</span><span class="p">)</span>
131+
<span class="p">),</span> <span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span>
132+
<span class="k">if</span> <span class="ow">not</span> <span class="n">bundle</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">msg</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">msg</span><span class="o">.</span><span class="n">value</span><span class="p">:</span>
133+
<span class="k">return</span> <span class="n">msg_id</span>
134+
<span class="n">val</span><span class="p">,</span> <span class="n">_errors</span> <span class="o">=</span> <span class="n">bundle</span><span class="o">.</span><span class="n">format_pattern</span><span class="p">(</span><span class="n">msg</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span>
135+
<span class="k">return</span> <span class="n">cast</span><span class="p">(</span>
136+
<span class="nb">str</span><span class="p">,</span> <span class="n">val</span>
137+
<span class="p">)</span> <span class="c1"># Never FluentNone when format_pattern called externally</span>
105138

106139
<span class="k">def</span> <span class="nf">_create_bundle</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">locales</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="n">FluentBundle</span><span class="p">:</span>
107140
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">bundle_class</span><span class="p">(</span>

fluent.runtime/dev/_sources/usage.rst.txt

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,41 @@ instances to indicate an error or missing data. Otherwise they should
272272
return unicode strings, or instances of a ``FluentType`` subclass as
273273
above.
274274

275+
Attributes
276+
~~~~~~~~~~
277+
When rendering UI elements, it's handy to have a single translation that
278+
contains everything you need in one variable. For example, a HTML
279+
form input may have a value, but also a placeholder attribute, aria-label
280+
attribute, and maybe a title attribute.
281+
282+
.. code-block:: python
283+
284+
>>> l10n = DemoLocalization("""
285+
... login-input = Predefined value
286+
... .placeholder = { $email }
287+
... .aria-label = Login input value
288+
... .title = Type your login email
289+
... """)
290+
>>> value, attributes = l10n.format_message(
291+
... "login-input", {"email": "email@example.com"}
292+
... )
293+
>>> value
294+
'Predefined value'
295+
>>> attributes
296+
{'placeholder': 'email@example.com', 'aria-label': 'Login input value', 'title': 'Type your login email'}
297+
298+
You can also use the formatted message without unpacking it.
299+
300+
.. code-block:: python
301+
302+
>>> fmt_msg = l10n.format_message(
303+
... "login-input", {"email": "email@example.com"}
304+
... )
305+
>>> fmt_msg.value
306+
'Predefined value'
307+
>>> fmt_msg.attributes
308+
{'placeholder': 'email@example.com', 'aria-label': 'Login input value', 'title': 'Type your login email'}
309+
275310
Known limitations and bugs
276311
~~~~~~~~~~~~~~~~~~~~~~~~~~
277312

fluent.runtime/dev/genindex.html

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,17 @@ <h1 id="index">Index</h1>
4444
| <a href="#F"><strong>F</strong></a>
4545
| <a href="#M"><strong>M</strong></a>
4646
| <a href="#R"><strong>R</strong></a>
47+
| <a href="#V"><strong>V</strong></a>
4748

4849
</div>
4950
<h2 id="A">A</h2>
5051
<table style="width: 100%" class="indextable genindextable"><tr>
5152
<td style="width: 33%; vertical-align: top;"><ul>
5253
<li><a href="reference.html#fluent.runtime.AbstractResourceLoader">AbstractResourceLoader (class in fluent.runtime)</a>
54+
</li>
55+
</ul></td>
56+
<td style="width: 33%; vertical-align: top;"><ul>
57+
<li><a href="reference.html#fluent.runtime.FormattedMessage.attributes">attributes (fluent.runtime.FormattedMessage attribute)</a>
5358
</li>
5459
</ul></td>
5560
</tr></table>
@@ -64,13 +69,15 @@ <h2 id="F">F</h2>
6469
<li><a href="reference.html#module-fluent.runtime">module</a>
6570
</li>
6671
</ul></li>
67-
</ul></td>
68-
<td style="width: 33%; vertical-align: top;"><ul>
6972
<li><a href="reference.html#fluent.runtime.FluentBundle">FluentBundle (class in fluent.runtime)</a>
7073
</li>
74+
</ul></td>
75+
<td style="width: 33%; vertical-align: top;"><ul>
7176
<li><a href="reference.html#fluent.runtime.FluentLocalization">FluentLocalization (class in fluent.runtime)</a>
7277
</li>
7378
<li><a href="reference.html#fluent.runtime.FluentResourceLoader">FluentResourceLoader (class in fluent.runtime)</a>
79+
</li>
80+
<li><a href="reference.html#fluent.runtime.FormattedMessage">FormattedMessage (class in fluent.runtime)</a>
7481
</li>
7582
</ul></td>
7683
</tr></table>
@@ -100,6 +107,14 @@ <h2 id="R">R</h2>
100107
</ul></td>
101108
</tr></table>
102109

110+
<h2 id="V">V</h2>
111+
<table style="width: 100%" class="indextable genindextable"><tr>
112+
<td style="width: 33%; vertical-align: top;"><ul>
113+
<li><a href="reference.html#fluent.runtime.FormattedMessage.value">value (fluent.runtime.FormattedMessage attribute)</a>
114+
</li>
115+
</ul></td>
116+
</tr></table>
117+
103118

104119

105120
<div class="clearer"></div>

fluent.runtime/dev/objects.inv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
# Project: fluent.runtime
33
# Version:
44
# The remainder of this file is compressed using zlib.
5-
xڥR�j�0��+��W��[Z(R0)�gEZ?`-�uO���^���e7V4m/B���g�"���k�v�~�� �,VhQK,��u��ȳ*�;+��"o%n�Ph^�3,N�.�(���3t�Q�= �;����ʍ���7�Z����O�.�F�j���N-I� _��<X�YӲ3����m�"��F2uv4y3�$i��8�|�0��8y�� �k�wħ�H�9�Z����T'�dau�d���-���tf�de��S��`��ӂU���e���&�T�"�)�KQc�9�s���gnu}�HEj(
5+
xڥ�AN�0E�9�l�mw �R+UE��kOK�]yƈ��\����IG�(e����e2�ڃ��yC��o獕^�gJp`55�6��˳2 ��ザ��;+�%�Kh��fS�Ō��%v��V^�{��o���5�++�V��5���3�s��a]É@��W�$]�©���DZ��ƃ�NF � I�5߁f��j�c��cV+$���(�8�z)�kn*ж�N��7b��6\�,����/d�� v�q@H\�) �-��#p�kL3�8�-'�d�6��ɾ͇��X���3:�%�iÂ�4}�1�ӿ��%�R�����WE-����&�B���;!�^P�j:����]

fluent.runtime/dev/reference.html

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,23 @@ <h3>Navigation</h3>
106106
See the documentation of the Fluent syntax for more information.</p>
107107
</dd></dl>
108108

109+
<dl class="py class">
110+
<dt id="fluent.runtime.FormattedMessage">
111+
<em class="property"><span class="pre">class</span> </em><code class="sig-prename descclassname"><span class="pre">fluent.runtime.</span></code><code class="sig-name descname"><span class="pre">FormattedMessage</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">attributes</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/fluent/runtime/fallback.html#FormattedMessage"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#fluent.runtime.FormattedMessage" title="Permalink to this definition"></a></dt>
112+
<dd><dl class="py attribute">
113+
<dt id="fluent.runtime.FormattedMessage.value">
114+
<code class="sig-name descname"><span class="pre">value</span></code><em class="property"><span class="pre">:</span> <span class="pre">Optional</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></em><a class="headerlink" href="#fluent.runtime.FormattedMessage.value" title="Permalink to this definition"></a></dt>
115+
<dd><p>Alias for field number 0</p>
116+
</dd></dl>
117+
118+
<dl class="py attribute">
119+
<dt id="fluent.runtime.FormattedMessage.attributes">
120+
<code class="sig-name descname"><span class="pre">attributes</span></code><em class="property"><span class="pre">:</span> <span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></em><a class="headerlink" href="#fluent.runtime.FormattedMessage.attributes" title="Permalink to this definition"></a></dt>
121+
<dd><p>Alias for field number 1</p>
122+
</dd></dl>
123+
124+
</dd></dl>
125+
109126
</div>
110127

111128

0 commit comments

Comments
 (0)