xrfragment/doc/RFC.md

50 lines
1.8 KiB
Markdown
Raw Normal View History

2023-04-02 21:19:03 +02:00
2023-03-31 19:53:23 +02:00
<link rel="stylesheet" href="style.css"/>
2023-03-31 19:37:16 +02:00
<link href="https://fonts.cdnfonts.com/css/montserrat" rel="stylesheet"/>
2023-04-02 21:22:22 +02:00
2023-03-31 19:37:16 +02:00
> version 1.0.0
2023-04-02 21:22:22 +02:00
2023-04-28 14:27:30 +02:00
date: 2023-04-27T22:44:39+0200<br>
2023-03-31 19:37:16 +02:00
[![Actions Status](https://github.com/coderofsalvation/xrfragment/workflows/test/badge.svg)](https://github.com/coderofsalvation/xrfragment/actions)
2023-04-06 18:27:49 +02:00
# XRFragment Grammar
```
reserved = gen-delims / sub-delims
gen-delims = "#" / "&"
sub-delims = "," / "|" / "="
```
2023-04-06 18:29:31 +02:00
<br>
2023-04-06 18:29:53 +02:00
2023-04-06 18:27:49 +02:00
> Example: `://foo.com/my3d.asset#pos=1,0,0&prio=-5&t=0,100|100,200`
2023-04-06 18:31:07 +02:00
<br>
2023-04-06 18:31:26 +02:00
2023-04-06 18:31:07 +02:00
| Explanation | |
|-|-|
2023-04-06 18:29:31 +02:00
| `x=1,2,3` | vector/coordinate argument e.g. |
2023-04-06 18:37:18 +02:00
| `x=foo\|bar|1,2,3|1.0` | the `\|` character is used for:<br>1.specifying `n` arguments for xrfragment `x`<br>2. roundrobin of values (in case provided arguments exceeds `n` of `x` for #1) when triggered by browser URI (clicking `href` e.g.)|
| `https://x.co/1.gltf||xyz://x.co/1.gltf` | multi-protocol/fallback urls |
2023-04-06 18:29:31 +02:00
| `.mygroup` | query-alias for `class:mygroup` |
2023-04-06 18:30:36 +02:00
> Focus: hasslefree 3D vector-data (`,`), multi-protocol/fallback-linking & dynamic values (`|`), and CSS-piggybacking (`.mygroup`)
2023-03-31 14:40:24 +02:00
# URI parser
2023-03-31 17:27:40 +02:00
> icanhazcode? yes, see [URI.hx](https://github.com/coderofsalvation/xrfragment/blob/main/src/xrfragment/URI.hx)
2023-03-31 12:58:53 +02:00
1. fragment URI starts with `#`
1. fragments are split by `&`
2023-04-02 21:19:03 +02:00
1. store key/values into a associative array or dynamic object
1. loop thru each fragment
1. for each fragment split on `=` to separate key/values
2023-03-31 12:58:53 +02:00
1. fragment-values are urlencoded (space becomes `+` using `encodeUriComponent` e.g.)
1. every recognized fragment key/value-pair is added to a central map/associative array/object
2023-03-31 14:40:24 +02:00
# XR Fragments parser
2023-04-02 21:19:03 +02:00
2023-03-31 17:27:40 +02:00
> icanhazcode? yes, see [Parser.hx](https://github.com/coderofsalvation/xrfragment/blob/main/src/xrfragment/Parser.hx)
2023-03-31 14:40:24 +02:00
the gist of it:
2023-04-02 21:19:03 +02:00
1. check if param exist
2023-03-31 12:58:53 +02:00