This README is TODO. If you'd like to use this software in a project, don't hestiate to reach out to me.
Tree query is a tool that searches across indented lines.
It is a replacement for Roam's query system. It supports everything Roam does, except for block references.
Query in current directory:
tree-query '{and: [[Page 1]] [[Page 2]]}' .
Learn to navigate to a working directory with cd
Query in a folder:
tree-query '{and: [[Page 1]] [[Page 2]]}' /Users/steve/myfoldername/
Learn to get the location of a folder on macOS, Windows, or GNU+Linux.
Or query in multiple folders and files:
tree-query '{and: [[Page 1]] [[Page 2]]}' /Users/steve/myfoldername/ file1
Query stdin with pipes:
cat myfile | tree-query '{and: [[Page 1]] [[Page 2]]}'
Learn to build powerful no-code applications using pipes
This section is a work-in-progress.
- Fast
Tree-query is written in Dlang but don't let that put you off- if you know C, C++, or Java, you'll pick it up very quickly.
If you have any questions on D, feel free to go to #d on freenode or D Forums. People are very nice.
I've spent some time writing doc comments inside the code. They provide a conceptual explanation of how the system works. Look for /**
and /++
.
Inside the unittests, there's an example guide on using parser.d
as a library to build a Markdown to XML converter.
A string in D is a reference to a region of immutable memory. It is a length and a pointer. For this reason, it is is very efficient to copy.
A struct is like a Java record or class.
- Mixing tabs and spaces is not supported, unless an explicit spaces per indent specified