add to todo
This commit is contained in:
parent
cefca8ad91
commit
edf1c53800
14
README.adoc
14
README.adoc
@ -57,6 +57,16 @@ The following are a wishlist or things planned that may come in later versions.
|
||||
** This of course won't work for serializing and keeping *order* of children (e.g. RG => Record); that'd still need to be ordered, but it will allow for parallel parsing *of* those children. Should benchmark, though; it may not be worth it.
|
||||
* `context.Context` support for `Read*` and `Write*` funcs
|
||||
** This is a relatively low priority as the passed `net.Conn` will likely return an error if its own context is canceled. This can be handled in the caller downstream.
|
||||
* `.Append*()` methods to append any type to any parent type. e.g. `<Response>.AppendFVP(<FieldValuePair>)` would append an FVP to the most recent ResponseRecord to the most recent ResponseRecordGroup (or create if they don't exist), `<Response>.AppendRecord(...)` for appending a record to most recent record group etc.
|
||||
* Better/more strict interfaces
|
||||
* Maps should be `any`, not `interface{}` values
|
||||
* Maps for generic should have `any`, not `interface{}` values
|
||||
* FVP should have its own method to a map[string][]byte return value
|
||||
* "Getters and Setters" (ew, I know, but compromises are made with flexibility)
|
||||
** `.Append*()` methods to append any type to any parent type. e.g. `<Response>.AppendFVP(<FieldValuePair>)` would append an FVP to the most recent ResponseRecord to the most recent ResponseRecordGroup (or create if they don't exist), `<Response>.AppendRecord(...)` for appending a record to most recent record group etc.
|
||||
** `.Get()`/`.Set()` on a Response/Request to get/set a slice of values (`<FieldValue>`) from filter criteria as struct (e.g. field name, how many, first X, last X, etc.)
|
||||
** `.GetPath*()` and `.SetPath*()` to use *[`RG_N`[`R_N`[`FVP_N`]]]* indexing (e.g. `0, 0, 0` for RecordGroup 0/Record 0/FVP 0, `1, 3, 5` for RecordGroup 1/Record 3/FVP 5, etc.) multidimentional indexing
|
||||
*** Allow specific lookups/sets by multidimentional array index to return FVP (`.GetIndex(idx)` where `idx` is a fixed-size array of dimensions for object's children paths); e.g. `<Response>.GetIndex(idx)`, `idx` is `[3]int` and returns FVP)
|
||||
*** Allow lookups/sets by variable length index (`.GetIndexDynamic(idx)`, where `idx` is a `1` to `n`-size slice of dimensions for object's children paths (e.g. `<Response>.GetIndexDynamic([]int{0, 0})` returns `any(<Record>)` but `<Response>.GetIndexDynamic([]int{0, 0, 0})` returns `any(FieldValuePair)`)
|
||||
**** negative value indicates *all* children
|
||||
*** Lookups/sets at fixed levels (e.g. `<RecordGroup>.GetRecord(idx)`, `idx` is `[1]int`, but `<RecordGroup>.GetFVP(idx)`, `idx` is `[2]int`) for type safety
|
||||
*** All objects have `.ID()` that returns their index/"path"/"key" from the root, and `.Index()` that returns their index within their immediate parent
|
||||
**** This obviously requires a `.Resolve()` first
|
||||
|
58
README.html
58
README.html
@ -559,7 +559,7 @@ pre.rouge .gs {
|
||||
<div class="details">
|
||||
<span id="author" class="author">Brent Saner</span><br>
|
||||
<span id="email" class="email"><a href="mailto:bts@square-r00t.net">bts@square-r00t.net</a></span><br>
|
||||
<span id="revdate">Last rendered 2025-09-30 14:15:01 -0400</span>
|
||||
<span id="revdate">Last rendered 2025-09-30 15:49:54 -0400</span>
|
||||
</div>
|
||||
<div id="toc" class="toc2">
|
||||
<div id="toctitle">Table of Contents</div>
|
||||
@ -660,13 +660,59 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>.Append*()</code> methods to append any type to any parent type. e.g. <code><Response>.AppendFVP(<FieldValuePair>)</code> would append an FVP to the most recent ResponseRecord to the most recent ResponseRecordGroup (or create if they don’t exist), <code><Response>.AppendRecord(…​)</code> for appending a record to most recent record group etc.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Better/more strict interfaces</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Maps should be <code>any</code>, not <code>interface{}</code> values</p>
|
||||
<p>Maps for generic should have <code>any</code>, not <code>interface{}</code> values</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>FVP should have its own method to a map[string][]byte return value</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>"Getters and Setters" (ew, I know, but compromises are made with flexibility)</p>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>.Append*()</code> methods to append any type to any parent type. e.g. <code><Response>.AppendFVP(<FieldValuePair>)</code> would append an FVP to the most recent ResponseRecord to the most recent ResponseRecordGroup (or create if they don’t exist), <code><Response>.AppendRecord(…​)</code> for appending a record to most recent record group etc.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>.Get()</code>/<code>.Set()</code> on a Response/Request to get/set a slice of values (<code><FieldValue></code>) from filter criteria as struct (e.g. field name, how many, first X, last X, etc.)</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>.GetPath*()</code> and <code>.SetPath*()</code> to use <strong>[<code>RG_N</code>[<code>R_N</code>[<code>FVP_N</code>]]]</strong> indexing (e.g. <code>0, 0, 0</code> for RecordGroup 0/Record 0/FVP 0, <code>1, 3, 5</code> for RecordGroup 1/Record 3/FVP 5, etc.) multidimentional indexing</p>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p>Allow specific lookups/sets by multidimentional array index to return FVP (<code>.GetIndex(idx)</code> where <code>idx</code> is a fixed-size array of dimensions for object’s children paths); e.g. <code><Response>.GetIndex(idx)</code>, <code>idx</code> is <code>[3]int</code> and returns FVP)</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Allow lookups/sets by variable length index (<code>.GetIndexDynamic(idx)</code>, where <code>idx</code> is a <code>1</code> to <code>n</code>-size slice of dimensions for object’s children paths (e.g. <code><Response>.GetIndexDynamic([]int{0, 0})</code> returns <code>any(<Record>)</code> but <code><Response>.GetIndexDynamic([]int{0, 0, 0})</code> returns <code>any(FieldValuePair)</code>)</p>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p>negative value indicates <strong>all</strong> children</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<p>Lookups/sets at fixed levels (e.g. <code><RecordGroup>.GetRecord(idx)</code>, <code>idx</code> is <code>[1]int</code>, but <code><RecordGroup>.GetFVP(idx)</code>, <code>idx</code> is <code>[2]int</code>) for type safety</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>All objects have <code>.ID()</code> that returns their index/"path"/"key" from the root, and <code>.Index()</code> that returns their index within their immediate parent</p>
|
||||
<div class="ulist">
|
||||
<ul>
|
||||
<li>
|
||||
<p>This obviously requires a <code>.Resolve()</code> first</p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@ -675,7 +721,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
</div>
|
||||
<div id="footer">
|
||||
<div id="footer-text">
|
||||
Last updated 2025-09-25 17:54:36 -0400
|
||||
Last updated 2025-09-30 15:47:24 -0400
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
57
README.md
57
README.md
@ -52,12 +52,55 @@ versions.
|
||||
likely return an error if its own context is canceled. This can
|
||||
be handled in the caller downstream.
|
||||
|
||||
- `.Append*()` methods to append any type to any parent type. e.g.
|
||||
`<Response>.AppendFVP(<FieldValuePair>)` would append an FVP to the
|
||||
most recent ResponseRecord to the most recent ResponseRecordGroup
|
||||
(or create if they don’t exist), `<Response>.AppendRecord(…)` for
|
||||
appending a record to most recent record group etc.
|
||||
|
||||
- Better/more strict interfaces
|
||||
|
||||
- Maps should be `any`, not `interface{}` values
|
||||
- Maps for generic should have `any`, not `interface{}` values
|
||||
|
||||
- FVP should have its own method to a map\[string\]\[\]byte return
|
||||
value
|
||||
|
||||
- "Getters and Setters" (ew, I know, but compromises are made with
|
||||
flexibility)
|
||||
|
||||
- `.Append*()` methods to append any type to any parent type. e.g.
|
||||
`<Response>.AppendFVP(<FieldValuePair>)` would append an FVP to
|
||||
the most recent ResponseRecord to the most recent
|
||||
ResponseRecordGroup (or create if they don’t exist),
|
||||
`<Response>.AppendRecord(…)` for appending a record to most
|
||||
recent record group etc.
|
||||
|
||||
- `.Get()`/`.Set()` on a Response/Request to get/set a slice of
|
||||
values (`<FieldValue>`) from filter criteria as struct (e.g.
|
||||
field name, how many, first X, last X, etc.)
|
||||
|
||||
- `.GetPath*()` and `.SetPath*()` to use
|
||||
**\[`RG_N`\[`R_N`\[`FVP_N`\]\]\]** indexing (e.g. `0, 0, 0` for
|
||||
RecordGroup 0/Record 0/FVP 0, `1, 3, 5` for RecordGroup 1/Record
|
||||
3/FVP 5, etc.) multidimentional indexing
|
||||
|
||||
- Allow specific lookups/sets by multidimentional array index
|
||||
to return FVP (`.GetIndex(idx)` where `idx` is a fixed-size
|
||||
array of dimensions for object’s children paths); e.g.
|
||||
`<Response>.GetIndex(idx)`, `idx` is `[3]int` and returns
|
||||
FVP)
|
||||
|
||||
- Allow lookups/sets by variable length index
|
||||
(`.GetIndexDynamic(idx)`, where `idx` is a `1` to `n`-size
|
||||
slice of dimensions for object’s children paths (e.g.
|
||||
`<Response>.GetIndexDynamic([]int{0, 0})` returns
|
||||
`any(<Record>)` but
|
||||
`<Response>.GetIndexDynamic([]int{0, 0, 0})` returns
|
||||
`any(FieldValuePair)`)
|
||||
|
||||
- negative value indicates **all** children
|
||||
|
||||
- Lookups/sets at fixed levels (e.g.
|
||||
`<RecordGroup>.GetRecord(idx)`, `idx` is `[1]int`, but
|
||||
`<RecordGroup>.GetFVP(idx)`, `idx` is `[2]int`) for type
|
||||
safety
|
||||
|
||||
- All objects have `.ID()` that returns their
|
||||
index/"path"/"key" from the root, and `.Index()` that
|
||||
returns their index within their immediate parent
|
||||
|
||||
- This obviously requires a `.Resolve()` first
|
||||
|
Loading…
x
Reference in New Issue
Block a user