Skip to content

Commit c088924

Browse files
reidspencerclaude
andcommitted
Fix concepts section issues (Phase 6)
Broken links and structural fixes: - Fix epic.md broken link: [case](case.md. -> [case](case.md) - Fix epic.md, case.md: ## Contains) -> ## Contains - Fix field.md, processor.md: # Contains -> ## Contains - Fix element.md: # Activate -> ## Activate Content fixes: - Fix outlet.md: "When an Inlet" -> "When an Outlet" (copy-paste error) - Fix value.md: "Values ae" -> "Values are" (typo) - Fix sagastep.md: Occurs In Context -> Saga (was wrong) - Complete context.md: Finish sentence about API - Complete handler.md: Write Projector Handler section - Complete value.md: Finish incomplete sentence, add Value Types New/expanded content: - Write metadata.md (was "Coming Soon") - Write conditional.md TBD sections (Numeric, Boolean expressions) - Write streamlet.md (was just heading) - Expand use-case.md with full documentation - Complete element.md Group section Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent b17767e commit c088924

17 files changed

Lines changed: 461 additions & 32 deletions

File tree

docs/OSS/index.md

Whitespace-only changes.

docs/OSS/intellij-plugin/index.md

Whitespace-only changes.

docs/OSS/vscode-extension/index.md

Whitespace-only changes.

docs/riddl/concepts/case.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ The following table shows the pairings recognized:
3030
* [Epic](epic.md)
3131
* [Use Case](./case.md)
3232

33-
## Contains)
33+
## Contains
34+
3435
* [Statements](statement.md)
3536

docs/riddl/concepts/conditional.md

Lines changed: 92 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,102 @@ draft: false
44
---
55

66
A condition is a logical (boolean) expression resulting in true or false.
7+
Conditions are used in `when` statements to control flow and in `match`
8+
statements for pattern matching.
79

8-
## Arbitrary Conditional (#arbitrary)
9-
* just a string
10+
## Arbitrary Conditional
1011

11-
## Numeric Expressions (#numeric)
12-
TBD
12+
The simplest form is a string that describes the condition in natural language:
1313

14-
## Conditions (Boolean Expressions) {#condition}
15-
TBD
14+
```riddl
15+
when "user is authenticated" then {
16+
// actions when condition is true
17+
} end
18+
```
19+
20+
This allows authors to express conditions at the appropriate level of
21+
abstraction. The actual implementation of the condition check is left to
22+
code generation or manual implementation.
23+
24+
## Identifier Conditions
25+
26+
Conditions can reference identifiers defined with `let`:
27+
28+
```riddl
29+
let isValid = "order.items.count > 0"
30+
when isValid then {
31+
// actions when valid
32+
} end
33+
```
34+
35+
Identifiers can be negated:
36+
37+
```riddl
38+
when !isValid then {
39+
error "Order must have at least one item"
40+
} end
41+
```
42+
43+
## Numeric Expressions
44+
45+
Numeric expressions involve comparisons and arithmetic:
46+
47+
- **Comparison operators**: `>`, `<`, `>=`, `<=`, `==`, `!=`
48+
- **Arithmetic operators**: `+`, `-`, `*`, `/`
49+
50+
```riddl
51+
when "order.total > 100" then {
52+
// apply discount
53+
} end
54+
```
55+
56+
Note: In RIDDL, these expressions are typically written as strings that
57+
describe the intended logic. The actual parsing and evaluation happens
58+
during code generation.
59+
60+
## Boolean Expressions
61+
62+
Boolean expressions combine conditions using logical operators:
63+
64+
- **AND**: Both conditions must be true
65+
- **OR**: Either condition must be true
66+
- **NOT**: Negates a condition
67+
68+
```riddl
69+
when "user.isVerified AND order.total > 0" then {
70+
// process order
71+
} end
72+
```
73+
74+
## Match Expressions
75+
76+
The `match` statement provides pattern matching:
77+
78+
```riddl
79+
match "orderStatus" {
80+
case "pending" {
81+
// handle pending
82+
}
83+
case "processing" {
84+
// handle processing
85+
}
86+
case "shipped" {
87+
// handle shipped
88+
}
89+
default {
90+
// handle unknown status
91+
}
92+
}
93+
```
1694

1795
## Occurs In
18-
* [Statements](statement.md)
96+
97+
* [Statements](statement.md) - specifically `when` and `match` statements
1998

2099
## Contains
21-
Nothing
100+
101+
Conditions are leaf elements containing:
102+
103+
* String literals describing the condition
104+
* Identifier references
105+
* Logical operators combining sub-conditions

docs/riddl/concepts/context.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ the names of the definitions that RIDDL permits inside a `context` definition, a
5454
shown in the list below. You can correctly think of a `context`s ubiquitous
5555
language as the interface to that knowledge domain. It is very analogous to
5656
an API (Application Programming Interface) as the interface to a program. The API
57+
defines the contract for how external systems interact with the bounded context.
5758

5859
To further your understanding, watch this
5960
[34-minute video](https://www.youtube.com/watch?v=am-HXycfalo) by

docs/riddl/concepts/element.md

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,14 @@ User Interface elements[^1] as shown in the table below
1616
[^1]: See [Critical UI Elements of Remarkable Interfaces](https://www.peppersquare.com/blog/4-critical-ui-elements-of-remarkable-interfaces/)
1717

1818
### Group
19-
TBD
2019

20+
A Group organizes related UI elements together, similar to a panel or section
21+
in traditional user interfaces. Groups can contain other elements including
22+
nested groups, enabling hierarchical organization of the user interface.
23+
24+
Groups have many aliases in RIDDL to accommodate different UI paradigms:
25+
`group`, `page`, `pane`, `dialog`, `menu`, `popup`, `frame`, `column`, `row`,
26+
`stack`, `panel`, `form`, and `section`.
2127

2228
| UI Element | RIDDL | Description |
2329
|------------|----------|----------------------------------------------|
@@ -29,9 +35,10 @@ TBD
2935

3036

3137

32-
# Activate
33-
An Activate definition instructs the application to change context to a
34-
different group of elements.
38+
## Activate
39+
40+
An Activate definition instructs the application to change context to a
41+
different group of elements, enabling navigation within the application.
3542

3643
## Occurs In
3744
* [Context](context.md)

docs/riddl/concepts/epic.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ which have these three ideas:
2525

2626
A RIDDL Epic also provides a set of use cases that relate the story to
2727
other RIDDL components through the steps taken for each
28-
[`case`](case.md. Each case specifies a set of
28+
[case](case.md). Each case specifies a set of
2929
`interactions` that define and label the interactions between other RIDDL
3030
definitions such as
3131
[elements](element.md),
@@ -41,5 +41,6 @@ designed in RIDDL to support a detailed definition of a
4141
## Occurs In
4242
* [Domains](domain.md)
4343

44-
## Contains)
44+
## Contains
45+
4546
* [Cases](case.md)

docs/riddl/concepts/field.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,6 @@ the values over which truthiness is computed.
1717
* [States](state.md)
1818
* [Projectors](projector.md)
1919

20-
# Contains
20+
## Contains
21+
2122
Nothing

docs/riddl/concepts/handler.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,12 @@ then the entity's processing for that message is null (message ignored).
5656
When an entity is in a specified state, it processes messages defined by
5757
the handler within that state (see below).
5858

59-
## Projection Handler
60-
Projections provide
59+
## Projector Handler
60+
61+
Projector handlers process events to build and maintain read-side views of
62+
data. They receive events from the event stream and update the projection's
63+
state accordingly. Projector handlers also respond to queries that read from
64+
the projected data.
6165

6266
## State Handler
6367
State handlers process messages while an entity is in that specific

0 commit comments

Comments
 (0)