Commit 12c1947
authored
Overhaul XML documentation for ObservableCacheEx extension methods (#1080)
* docs: overhaul XML comments for ObservableCacheEx extension methods
Add uniform event behavior tables (Add/Update/Remove/Refresh/OnError/OnCompleted),
seealso cross-references, inheritdoc for secondary overloads, and 'Worth noting'
sections across all 3 ObservableCacheEx partial class files (~306 overloads).
Key improvements:
- 77 event behavior tables describing exact per-change-reason behavior
- 129 seealso cross-references linking related operators
- 107 inheritdoc tags for secondary overloads with delta remarks
- 36 'Worth noting' sections calling out non-obvious behavior
- All old-style generic param descriptions replaced with specific text
- Summaries trimmed to 1-3 sentences, detail moved to remarks
* docs: flesh out MergeChangeSets and MergeManyChangeSets documentation
MergeManyChangeSets now has separate parent-side and child-side event tables,
mirroring the join operator documentation style. Describes parent Add/Update/
Remove effects on child subscriptions, and child Add/Update/Remove/Refresh
effects on downstream with conflict resolution details.
MergeChangeSets adds overload family guide explaining the three axes: source
type (dynamic/pair/static), conflict resolution (none/comparer/equality/both),
and completion behavior (completable flag).
* docs: add two-table structure to *OnObservable operators
FilterOnObservable, GroupOnObservable, and TransformOnObservable now each have
two event tables: one for source changeset events (parent lifecycle) and one
for per-item observable events (filter/group/transform emissions).
All three explicitly call out that items are invisible downstream until their
per-item observable emits at least one value. Per-item observable completion
freezes the item in its current state; errors terminate the stream.
* docs: link types with see/cref instead of inline code tags
Replace <c>IComparer</c>, <c>IEqualityComparer</c>, <c>IEnumerable</c>,
<c>Optional<TObject></c>, <c>IChangeSet<TObject, TKey></c>, etc. with
proper <see cref='...'/> links for discoverability.
* docs: add type links to all param descriptions in cache operators
Every param tag now mentions and links its type via see/cref. Source params
link to IObservable{T} and IChangeSet{TObject, TKey}, scheduler params link
to IScheduler, predicate/factory params link to Func{T, TResult}, comparer
params link to IComparer{T} and IEqualityComparer{T}, etc.
* docs: add documentation skill codifying XML comment standards
Defines the complete process for writing DynamicData operator documentation:
analysis steps, XML templates for cache/list/multi-source/mutation/non-changeset
operators, quality rules for params/seealso/types/tone, batch application
guidance, and concrete examples from Filter, MergeChangeSets, OnItemRemoved,
and TransformOnObservable.
* docs: add documentation skill for XML comment standards
Reusable skill (.github/skills/add-documentation/SKILL.md) codifying the
process for writing publication-quality XML documentation for any DynamicData
public API: operators, classes, interfaces, enums. Covers analysis, writing
templates (cache/list/multi-source/mutation/non-changeset), quality rules
(param type linking, bidirectional seealso, tone), batch application, and
common mistakes. Replaces the incorrectly placed file.
* docs: expand documentation skill with examples and decision criteria
Add before/after example (Filter), template selection table, emphasize
additive-only rule, and note about Refresh behavior variance across
operators. Restructure for clarity.
* docs: inline unified template in documentation skill
Replace scattered template fragments with a single copy-and-delete template
covering all operator categories (cache, list, multi-source, mutation,
non-changeset). One file, no duplication, delete the sections that don't
apply.
* docs: distinguish delegating vs independent overloads in skill
Not all secondary overloads delegate to a primary. When an overload has a
different implementation or different behavior, it needs its own full
documentation, not just inheritdoc.
* Revert "docs: add type links to all param descriptions in cache operators"
This reverts commit 13241c0.
* docs: add type links to cache operator param descriptions
Surgical param-by-param replacement: each param's type determined from the
actual method signature and linked via see/cref. 344/618 params linked in
main file, 7/25 in VirtualiseAndPage. All existing event tables, seealso,
inheritdoc, and worth-noting sections preserved intact.
* docs: add type links to cache operator param descriptions
Surgical param-by-param replacement preserving all existing event tables,
seealso, inheritdoc, and worth-noting sections. 528/618 params linked (85%).
Remaining 90 are exempt (bool, int, enum, domain-type params).
* docs: link remaining non-primitive param types
Fix multiline params (pollingInterval, resultGroupSource) and add
typeparamref links for domain-type params (key, item). 570/618 linked (92%).
Remaining 48 are bool/int primitives.
* docs: use see langword for C# keywords (true, false, null)
Replace <c>true</c>, <c>false</c>, <c>null</c> with <see langword='true'/>,
<see langword='false'/>, <see langword='null'/> for proper keyword rendering
in generated HTML documentation. Also update documentation skill with
langword guidance.
* docs: add cross-file seealso between cache and list operators
RemoveKey now links to ObservableListEx.AddKey (the inverse operation that
converts list changesets to cache changesets by adding keys).
* docs: add cross-links from cache operators to list equivalents
27 primary cache operators now link to their list counterpart via seealso,
enabling navigation between the two collection types in generated docs.
* Fix param descriptions: proper English with type links, fix Optional.None cref, update skill
- Rewrite 470+ param descriptions to read as natural English with type links woven in
- Fix double-brace cref syntax ({{T}} to {T})
- Fix wrong types in cref attributes (IObservable{T} to actual parameter types)
- Fix meaningless descriptions (the destination, the updater) with specific text
- Fix double-description patterns (that The)
- Link Optional.None references as <see cref='Optional.None{T}'/>
- Fix useReplaceForUpdates, resorter, regrouper, forceTransform params
- Update documentation skill with comprehensive param writing guidance
* Perfect param descriptions: purpose verbs, combined crefs, no redundancy
- Add operator-specific purpose verbs to 150+ source params (to filter, to sort, to join, etc.)
- Fix mutation helper params with specific purposes (to add or update items in, to clear, etc.)
- Combine all split IObservable{T}/IChangeSet crefs into single nested format
- Remove 'changeset stream' redundancy after IChangeSet type references
- Remove type name echoes (comparer after IComparer, scheduler after IScheduler)
- Fix broken 'tion' fragments, doubled 'items items', grammar issues
- Add type links to SortAndBind and VirtualiseAndPage source params
- Update documentation skill with comprehensive param writing guidance and examples
* Remove OnError/OnCompleted rows from synchronous void mutation methods
These rows are meaningless on void methods (AddOrUpdate, Clear, EditDiff) that
don't participate in Rx streams. Event tables on these methods now only describe
the changeset events they produce (Add, Update, Remove, Refresh).
* Fix review findings: dangling prepositions, generic verbs, broken fragments
- Replace 'to process.' with operator-specific verbs (6 params)
- Rewrite 'to subscribe to per-item X from.' dangling prepositions (20+ params)
- Fix 'tion that' broken word fragments in transformFactory params (2)
- Fix 'An optional X optional:' double-optional patterns (5+ params)
- Rewrite 'a function returning' mangled text in timeSelector params
- Add purpose to readOnlyObservableCollection and MergeChangeSets other params
* Fix SortAndBind and VirtualiseAndPage params: add type links and purposes
- Add type links to all readOnlyObservableCollection params (ReadOnlyObservableCollection{TObject})
- Add type links to targetList params (IList{TObject})
- Add type links to comparer params (IComparer{TObject})
- Add type links to comparerChanged params (IObservable{IComparer{TObject}})
- Add type links to virtualRequests and pageRequests params
- Fix source params missing type links ('The source changeset stream.' to proper cref)
- Fix 'The size.' useless description
- Remove type echoes ('virtualising requests' after IVirtualRequest)
* Eliminate trailing prepositions in param descriptions
Rewrite 'to remove items from.' to 'from which to remove items.' and similar
patterns across Remove, RemoveKey, RemoveKeys methods.1 parent c1c312b commit 12c1947
File tree
4 files changed
+3310
-2575
lines changed- .github/skills/add-documentation
- src/DynamicData/Cache
4 files changed
+3310
-2575
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
0 commit comments