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
Currently the only supported method. DYI style.
On FreeBSD, GNU+Linux, and macOS, open Terminal and go:
curl https://dlang.org/install.sh | bash -s
On Windows, download and install Git Bash, then run:
mkdir %USERPROFILE%\dlang
powershell.exe -Command "wget https://dlang.org/install.sh -OutFile %USERPROFILE%\dlang\install.sh"
Then:
~/dlang/install.sh install ldc-1.23.0,dub
Then cd
into the directory where you cloned this directory and type:
make tree-query-build
Install to make available eveywhere:
chmod 700 tree-query
sudo mv tree-query /usr/local/bin
This section is a work-in-progress.
- Fast
macOS:
tree-query '{and: [[Page 1]] [[Page 2]]}' . | pbcopy
GNU+Linux:
tree-query '{and: [[Page 1]] [[Page 2]]}' . | xclip
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 in the same file, unless an explicit spaces per indent specified