bonfire-app/extension-grumble.html
2024-04-16 21:21:08 +00:00

254 lines
12 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="ExDoc v0.31.2">
<meta name="project" content="bonfire_umbrella v0.9.10-cooperation-beta.62">
<title>Grumble — bonfire_umbrella v0.9.10-cooperation-beta.62</title>
<link rel="stylesheet" href="dist/html-elixir-JKHCEBPC.css" />
<script src="dist/handlebars.runtime-NWIB6V2M.js"></script>
<script src="dist/handlebars.templates-A7S2WMC7.js"></script>
<script src="dist/sidebar_items-0AD831F9.js"></script>
<script src="docs_config.js"></script>
<script async src="dist/html-JRPQ5PR6.js"></script>
</head>
<body data-type="extras" class="page-extra">
<script>
try {
var settings = JSON.parse(localStorage.getItem('ex_doc:settings') || '{}');
if (settings.theme === 'dark' ||
((settings.theme === 'system' || settings.theme == null) &&
window.matchMedia('(prefers-color-scheme: dark)').matches)
) {
document.body.classList.add('dark')
}
} catch (error) { }
</script>
<div class="main">
<button id="sidebar-menu" class="sidebar-button sidebar-toggle" aria-label="toggle sidebar" aria-controls="sidebar">
<i class="ri-menu-line ri-lg" title="Collapse/expand sidebar"></i>
</button>
<div class="background-layer"></div>
<nav id="sidebar" class="sidebar">
<div class="sidebar-header">
<div class="sidebar-projectInfo">
<a href="https://bonfirenetworks.org" class="sidebar-projectImage">
<img src="assets/logo.png" alt="bonfire_umbrella" />
</a>
<div>
<a href="https://bonfirenetworks.org" class="sidebar-projectName" translate="no">
bonfire_umbrella
</a>
<div class="sidebar-projectVersion" translate="no">
v0.9.10-cooperation-beta.62
</div>
</div>
</div>
<ul id="sidebar-listNav" class="sidebar-listNav" role="tablist">
<li>
<button id="extras-list-tab-button" role="tab" data-type="extras" aria-controls="extras-tab-panel" aria-selected="true" tabindex="0">
Pages
</button>
</li>
<li>
<button id="modules-list-tab-button" role="tab" data-type="modules" aria-controls="modules-tab-panel" aria-selected="false" tabindex="-1">
Modules
</button>
</li>
</ul>
</div>
<div id="extras-tab-panel" class="sidebar-tabpanel" role="tabpanel" aria-labelledby="extras-list-tab-button">
<ul id="extras-full-list" class="full-list"></ul>
</div>
<div id="modules-tab-panel" class="sidebar-tabpanel" role="tabpanel" aria-labelledby="modules-list-tab-button" hidden>
<ul id="modules-full-list" class="full-list"></ul>
</div>
</nav>
<main class="content">
<output role="status" id="toast"></output>
<div class="content-outer">
<div id="content" class="content-inner">
<div class="top-search">
<div class="search-settings">
<form class="search-bar" action="search.html">
<label class="search-label">
<span class="sr-only">Search documentation of bonfire_umbrella</span>
<input name="q" type="text" class="search-input" placeholder="Press / to search" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" />
</label>
<button type="submit" class="search-button" aria-label="Submit Search">
<i class="ri-search-2-line ri-lg" aria-hidden="true" title="Submit search"></i>
</button>
<button type="button" tabindex="-1" class="search-close-button" aria-hidden="true">
<i class="ri-close-line ri-lg" title="Cancel search"></i>
</button>
</form>
<div class="autocomplete">
</div>
<button class="icon-settings display-settings">
<i class="ri-settings-3-line"></i>
<span class="sr-only">Settings</span>
</button>
</div>
</div>
<h1>
<a href="https://github.com/bonfire-networks/grumble/blob/main/README.md#L1" title="View Source" class="icon-action" rel="help">
<i class="ri-code-s-slash-line" aria-hidden="true"></i>
<span class="sr-only">View Source</span>
</a>
<span>Grumble</span>
</h1>
<p>A DSL for generating GraphQL queries</p><h2 id="status-beta" class="section-heading">
<a href="#status-beta" class="hover-link">
<i class="ri-link-m" aria-hidden="true"></i>
</a>
<span class="text">Status: beta</span>
</h2>
<p>We use this in our tests at work to generate all the queries (because
we outgrew string concatenation). I'm not sure I'd want to depend on
it in production yet because it's hard to feel like it's had a proper
stress testing.</p><ul><li>Needs (better) tests and documentation.</li><li>Missing support for some things we don't use.</li></ul><h2 id="usage" class="section-heading">
<a href="#usage" class="hover-link">
<i class="ri-link-m" aria-hidden="true"></i>
</a>
<span class="text">Usage</span>
</h2>
<p>Add to your deps:</p><pre><code class="makeup elixir" translate="no"><span class="p" data-group-id="9609233590-1">{</span><span class="ss">:grumble</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;~&gt; 0.1.0&quot;</span><span class="p" data-group-id="9609233590-1">}</span></code></pre><p>Simple example:</p><pre><code class="makeup elixir" translate="no"><span class="kn">import</span><span class="w"> </span><span class="nc">Grumble</span><span class="w">
</span><span class="kn">alias</span><span class="w"> </span><span class="nc">Grumble.PP</span><span class="w">
</span><span class="nc">IO</span><span class="o">.</span><span class="n">puts</span><span class="p" data-group-id="5199268865-1">(</span><span class="nc">PP</span><span class="o">.</span><span class="n">to_string</span><span class="p" data-group-id="5199268865-2">(</span><span class="w">
</span><span class="n">query</span><span class="p" data-group-id="5199268865-3">(</span><span class="w">
</span><span class="ss">params</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="5199268865-4">[</span><span class="ss">community_id</span><span class="p">:</span><span class="w"> </span><span class="n">type!</span><span class="p" data-group-id="5199268865-5">(</span><span class="ss">:string</span><span class="p" data-group-id="5199268865-5">)</span><span class="p" data-group-id="5199268865-4">]</span><span class="p">,</span><span class="w">
</span><span class="ss">fields</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="5199268865-6">[</span><span class="w">
</span><span class="n">field</span><span class="p" data-group-id="5199268865-7">(</span><span class="w">
</span><span class="ss">:community</span><span class="p">,</span><span class="w">
</span><span class="ss">args</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="5199268865-8">[</span><span class="ss">community_id</span><span class="p">:</span><span class="w"> </span><span class="n">var</span><span class="p" data-group-id="5199268865-9">(</span><span class="ss">:community_id</span><span class="p" data-group-id="5199268865-9">)</span><span class="p" data-group-id="5199268865-8">]</span><span class="p">,</span><span class="w">
</span><span class="ss">fields</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="5199268865-10">[</span><span class="ss">:id</span><span class="p">,</span><span class="w"> </span><span class="ss">:name</span><span class="p" data-group-id="5199268865-10">]</span><span class="w">
</span><span class="p" data-group-id="5199268865-7">)</span><span class="w">
</span><span class="p" data-group-id="5199268865-6">]</span><span class="w">
</span><span class="p" data-group-id="5199268865-3">)</span><span class="w">
</span><span class="p" data-group-id="5199268865-2">)</span><span class="p" data-group-id="5199268865-1">)</span></code></pre><p>Output:</p><pre><code class="makeup elixir" translate="no"><span class="n">query</span><span class="p" data-group-id="4596302477-1">(</span><span class="err">$</span><span class="ss">communityId</span><span class="p">:</span><span class="w"> </span><span class="nc">String</span><span class="o">!</span><span class="p" data-group-id="4596302477-1">)</span><span class="w"> </span><span class="p" data-group-id="4596302477-2">{</span><span class="w">
</span><span class="n">community</span><span class="p" data-group-id="4596302477-3">(</span><span class="ss">communityId</span><span class="p">:</span><span class="w"> </span><span class="err">$</span><span class="n">communityId</span><span class="p" data-group-id="4596302477-3">)</span><span class="w"> </span><span class="p" data-group-id="4596302477-4">{</span><span class="w">
</span><span class="n">name</span><span class="w">
</span><span class="n">id</span><span class="w">
</span><span class="p" data-group-id="4596302477-4">}</span><span class="w">
</span><span class="p" data-group-id="4596302477-2">}</span></code></pre><h2 id="guide" class="section-heading">
<a href="#guide" class="hover-link">
<i class="ri-link-m" aria-hidden="true"></i>
</a>
<span class="text">Guide</span>
</h2>
<p>Most of the useful functions are in the <code class="inline">Grumble</code> module. From there
you can read which arguments are understood by the relevant <code class="inline">new</code>
function. We apologise for the poor documentation, please feel free to
contribute better docs!</p><h2 id="contributing" class="section-heading">
<a href="#contributing" class="hover-link">
<i class="ri-link-m" aria-hidden="true"></i>
</a>
<span class="text">Contributing</span>
</h2>
<p>Contributions are welcome, even just doc fixes or suggestions.</p><p>This project has adopted a <a href="CONDUCT.md">Code of Conduct</a> based on the
Contributor Covenant. Please be nice when interacting with the community.</p><h2 id="copyright-and-license" class="section-heading">
<a href="#copyright-and-license" class="hover-link">
<i class="ri-link-m" aria-hidden="true"></i>
</a>
<span class="text">Copyright and License</span>
</h2>
<p>Copyright (c) 2020 Grumble contributors.</p><p>Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at</p><pre><code class="makeup elixir" translate="no"><span class="n">http</span><span class="ss">://</span><span class="n">www</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">org</span><span class="o">/</span><span class="n">licenses</span><span class="o">/</span><span class="nc">LICENSE</span><span class="o">-</span><span class="mf">2.0</span></code></pre><p>Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.</p>
<div class="bottom-actions">
<div class="bottom-actions-item">
<a href="extension-bonfire_valueflows_observe.html" class="bottom-actions-button" rel="prev">
<span class="subheader">
← Previous Page
</span>
<span class="title">
Bonfire.ValueFlows.Observe
</span>
</a>
</div>
<div class="bottom-actions-item">
<a href="hacking.html" class="bottom-actions-button" rel="next">
<span class="subheader">
Next Page →
</span>
<span class="title">
Development guide
</span>
</a>
</div>
</div>
<footer class="footer">
<p>
<span class="line">
<button class="a-main footer-button display-quick-switch" title="Search HexDocs packages">
Search HexDocs
</button>
<a href="bonfire_umbrella.epub" title="ePub version">
Download ePub version
</a>
</span>
</p>
<p class="built-using">
Built using
<a href="https://github.com/elixir-lang/ex_doc" title="ExDoc" target="_blank" rel="help noopener" translate="no">ExDoc</a> (v0.31.2) for the
<a href="https://elixir-lang.org" title="Elixir" target="_blank" translate="no">Elixir programming language</a>
</p>
</footer>
</div>
</div>
</main>
</div>
</body>
</html>