Skip to content

Commit e0ea31b

Browse files
committed
Refine website example snippets
1 parent e561467 commit e0ea31b

1 file changed

Lines changed: 30 additions & 8 deletions

File tree

index.html

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -394,37 +394,59 @@ <h1>Gengoscript</h1>
394394
<p>Gengoscript gives hosts constrained domain values, explicit imports, and user-defined logic that can reach only the capabilities the host exposes.</p>
395395
<pre><code><span class="k">type</span> Port <span class="t">int</span> <span class="k">range</span> 1..65535
396396
<span class="k">type</span> Hour <span class="t">int</span> <span class="k">cycle</span> 0..23
397+
<span class="k">type</span> RetryCount <span class="t">int</span> <span class="k">predicate</span> <span class="k">func</span>(n) {
398+
<span class="k">return</span> n >= 0 <span class="k">and</span> n <= 5
399+
}
397400

398-
<span class="k">pub func</span> allow(port <span class="t">int</span>, hour <span class="t">int</span>) <span class="t">bool</span> {
399-
p := Port(port)
400-
h := Hour(hour)
401-
<span class="k">return</span> p == Port(443) <span class="k">and</span> h >= Hour(8) <span class="k">and</span> h <= Hour(18)
401+
<span class="k">pub func</span> allow(
402+
raw_port <span class="t">int</span>,
403+
raw_hour <span class="t">int</span>,
404+
raw_retries <span class="t">int</span>,
405+
) <span class="t">bool</span> {
406+
port := Port(raw_port)
407+
hour := Hour(raw_hour)
408+
retries := RetryCount(raw_retries)
409+
<span class="k">return</span> port == Port(443)
410+
<span class="k">and</span> hour >= Hour(8)
411+
<span class="k">and</span> retries <= RetryCount(2)
402412
}
403413
</code></pre>
404414
<div class="examples-grid">
405415
<div class="example-card">
406416
<h3>Domain Rules</h3>
407417
<p>Make invalid values fail where they enter the script instead of leaking further into host-side code.</p>
408-
<pre><code><span class="k">type</span> Discount <span class="t">int</span> <span class="k">range</span> 0..100
418+
<pre><code><span class="k">type</span> Currency <span class="t">string</span> <span class="k">predicate</span> <span class="k">func</span>(s) {
419+
<span class="k">return</span> s == <span class="s">"USD"</span> <span class="k">or</span> s == <span class="s">"EUR"</span>
420+
}
421+
<span class="k">type</span> Discount <span class="t">int</span> <span class="k">range</span> 0..100
422+
423+
currency := Currency(<span class="s">"EUR"</span>)
409424
sale := Discount(15)</code></pre>
410425
</div>
411426
<div class="example-card">
412427
<h3>Policy Logic</h3>
413428
<p>Decision logic can carry domain constraints directly instead of relying on the host to validate every input first.</p>
414429
<pre><code><span class="k">type</span> EventCode <span class="t">int</span> <span class="k">predicate</span> <span class="k">func</span>(x) {
415-
<span class="k">return</span> x % 2 == 0
430+
<span class="k">return</span> x <span class="k">rem</span> 2 == 0
431+
}
432+
<span class="k">type</span> SourceId <span class="t">string</span> <span class="k">predicate</span> <span class="k">func</span>(s) {
433+
<span class="k">return</span> s == <span class="s">"sensor-a"</span> <span class="k">or</span> s == <span class="s">"sensor-b"</span>
416434
}
417435

418436
<span class="k">pub func</span> accept(code <span class="t">int</span>, source <span class="t">string</span>) <span class="t">bool</span> {
419437
c := EventCode(code)
420-
<span class="k">return</span> c == EventCode(42) <span class="k">and</span> source == <span class="s">"sensor-a"</span>
438+
s := SourceId(source)
439+
<span class="k">return</span> c == EventCode(42) <span class="k">and</span> s == SourceId(<span class="s">"sensor-a"</span>)
421440
}</code></pre>
422441
</div>
423442
<div class="example-card">
424443
<h3>Host-Granted Access</h3>
425444
<p>Imports are explicit. Filesystem, HTTP, and host modules exist only when the embedding application exposes them.</p>
426445
<pre><code>http := <span class="k">import</span>(<span class="s">"cap:http"</span>)
427-
resp, err := http.get(<span class="s">"https://example.com/data"</span>)</code></pre>
446+
cfg := <span class="k">import</span>(<span class="s">"host:deploy"</span>)
447+
448+
resp, err := http.get(cfg.healthcheck_url())
449+
ok := err == <span class="k">null</span></code></pre>
428450
</div>
429451
</div>
430452
</div>

0 commit comments

Comments
 (0)