3 releases (breaking)
0.3.0 | Oct 25, 2023 |
---|---|
0.2.1 |
|
0.2.0 | Feb 6, 2023 |
0.1.0 | Sep 2, 2022 |
#1259 in Parser implementations
64KB
1.5K
SLoC
tekton
Author(s): Nicholas O'Kelley
Date started: 2022-08-28
Motivation
I needed a tool to speed up the time I spent reviewing snippets on the friendly-snippet
project.
The goals of such a tool are:
- Sort many files blazingly fast
- (Ideally) Sort alphabetically blazingly fast
- Convert between snipmate and friendly-snippets (json) formats blazingly ... fast
Installation and Usage
For published versions
cargo install tekton
For source builds
From the project root:
cargo install --path ./
Usage
To convert:
tekton convert <INPUT_FILENAME> <OUTPUT_FILENAME>
Note:
- Conversion supports bidirectional conversion between Snipmate (
*.snippet
) and JSON (*.json
) snippets- Mapping is based on the input file
To sort:
- General format:
tekton sort <INPUT_FILENAME> [INTERACTIVE] [CRAWL]
- To sort a single file:
tekton sort <INPUT_NAME>
- To sort a directory:
tekton sort <INPUT_NAME> no true
- To sort a single file:
Note:
INTERACTIVE
should be the stringyes
if the user wants to fix any errors during the sort.
- Leaving this off will simply mean an error report is displayed on screen
CRAWL
must be present to recursively walk the directories for snippets
- Any text present will result in a crawl, though
true
looks better.
Demos
- Conversion from Snipmate to
JSON
- Conversion from the
JSON
snippets to Snipmate
- Sorting
friendly-snippets
, blazingly fast , with interactive mode off and directory crawling on.
Current Limitations
-
The conversion doesn't process in large batches of files like the sort. This is intentional as conversions between formats should be isolated and limited in scope.
- This can be automated via other scripting means (Rust, Go, Python, etc).
-
Snippet files with an array in the
prefix
field (even if it is just one) will convert all the snippets in the file to then have their snippets inserted into an array too.- Note: I am partially working on writing a custom
Serialize
andDeserialize
implementation to handle clean up the serialization for one element, though that will be tied to a future update.
- Note: I am partially working on writing a custom
-
Currently do not sort Snipmate snippets.
- This was outside the scope, but might be something I consider in the future.
Acknowledgements
- My impatience for doing this by hand
Dependencies
~4–12MB
~143K SLoC