121 lines
2 KiB
Markdown
121 lines
2 KiB
Markdown
|
|
# Cheat Sheet
|
||
|
|
|
||
|
|
Most of Specter's API consists of an operation, a path and the data to operate on.
|
||
|
|
|
||
|
|
## Operations
|
||
|
|
|
||
|
|
There are 2 types of operations: queries and transforms.
|
||
|
|
|
||
|
|
#### Query
|
||
|
|
|
||
|
|
###### Multiple elements (return a vector of values found)
|
||
|
|
|
||
|
|
`select`, `select-any`
|
||
|
|
|
||
|
|
###### One element (return a single value)
|
||
|
|
|
||
|
|
`select-first`, `select-one`, `select-one!`
|
||
|
|
|
||
|
|
###### Query test
|
||
|
|
|
||
|
|
`selected-any?`
|
||
|
|
|
||
|
|
###### Transducer-related
|
||
|
|
|
||
|
|
`traverse`, `traverse-all`
|
||
|
|
|
||
|
|
#### Transform
|
||
|
|
|
||
|
|
`transform`, `multi-transform`, `replace-in`, `setval`
|
||
|
|
|
||
|
|
## Paths
|
||
|
|
|
||
|
|
A path (often named `apath`) is a navigator or a vector of navigators.
|
||
|
|
|
||
|
|
Navigator sometimes operates on specific data structures.
|
||
|
|
|
||
|
|
|
||
|
|
#### Maps
|
||
|
|
|
||
|
|
`MAP-KEYS`, `MAP-VALS`, `keypath`, `map-key`, `submap`
|
||
|
|
|
||
|
|
#### Sequences
|
||
|
|
|
||
|
|
###### All values
|
||
|
|
|
||
|
|
`ALL`, `ALL-WITH-META`
|
||
|
|
|
||
|
|
###### Specific position
|
||
|
|
|
||
|
|
`AFTER-ELEM`, `BEFORE-ELEM`, `BEGINNING`, `END`, `FIRST`, `LAST`
|
||
|
|
|
||
|
|
###### Indexed
|
||
|
|
|
||
|
|
`INDEXED-VALS`, `before-index`, `index-nav`, `nthpath`, `srange`, `srange-dynamic`
|
||
|
|
|
||
|
|
###### Others
|
||
|
|
|
||
|
|
`continuous-subseqs`
|
||
|
|
|
||
|
|
#### Sets
|
||
|
|
|
||
|
|
`NONE-ELEM`, `set-elem`
|
||
|
|
|
||
|
|
#### Keywords/Symbols
|
||
|
|
|
||
|
|
`NAME`, `NAMESPACE`
|
||
|
|
|
||
|
|
#### Atoms
|
||
|
|
|
||
|
|
#### Strings
|
||
|
|
|
||
|
|
###### Specific position
|
||
|
|
|
||
|
|
`BEGINNING`, `FIRST`, `END`, `LAST`
|
||
|
|
|
||
|
|
##### Other
|
||
|
|
|
||
|
|
`regex-nav`, `srange`
|
||
|
|
|
||
|
|
#### Metadata
|
||
|
|
|
||
|
|
`ALL-WITH-META`, `META`
|
||
|
|
|
||
|
|
#### Views
|
||
|
|
|
||
|
|
`NIL->LIST`, `NIL->SET`, `NIL->VECTOR`, `filterer`, `nil->val`, `subselect`, `transform`, `traversed`, `view`
|
||
|
|
|
||
|
|
#### Value collection
|
||
|
|
|
||
|
|
`VAL`, `collect`, `collect-one`, `collected?`, `putval`, `with-fresh-collected`
|
||
|
|
|
||
|
|
#### Don't know yet
|
||
|
|
|
||
|
|
`NONE`, `codewalker`, `each-nav`, `multi-path`, `must`, `parser`, `walker`
|
||
|
|
|
||
|
|
#### Control
|
||
|
|
|
||
|
|
`STAY`, `STOP`, `comp-path`, `cond-path`, `continue-then-stay`, `if-path`, `stay-the-continue`
|
||
|
|
|
||
|
|
#### Filters
|
||
|
|
|
||
|
|
`pred`, `pred=`, `pred<`, `pred>`, `pred<=`, `pred>=`, `not-selected?`, `selected?`
|
||
|
|
|
||
|
|
#### Multi-transform
|
||
|
|
|
||
|
|
`terminal`, `terminal-val`
|
||
|
|
|
||
|
|
## Extending Specter
|
||
|
|
|
||
|
|
#### Custom paths
|
||
|
|
|
||
|
|
`declarepath`, `defprotocolpath`, `extend-protocolpath`, `path`, `providepath`, `recursive-path`
|
||
|
|
|
||
|
|
#### Custom collectors
|
||
|
|
|
||
|
|
`defcollector`
|
||
|
|
|
||
|
|
#### Custom navigators
|
||
|
|
|
||
|
|
`defdynamicnav`, `defnav`, `nav`
|