A formatter for SPARQL queries
Project description
Fichu
A blazingly fast formatter and language server for SPARQL, written in Rust :crab:.
Getting Started
Installation
Fichu is availible on PyPi:
pipx install fichu
Or on crate.io:
cargo install fichu
You can also build it from source:
git clone https://github.com/IoannisNezis/sparql-language-server.git
cd sparql-language-server
cargo build --release
Usage
To run Fichu as formatter run:
fichu format <PATH>
To run Fichu as lanugage server run:
fichu server
This will create a language server listening on stdio.
Capabilities
Formatting
Status: Full support
Formats SPARQL queries to ensure consistent and readable syntax. Customizable options to align with preferred query styles are also implemented.
Diagnostics
Status: Partial support
Currently provides a few basic diagnostics for syntax errors and simple issues in SPARQL queries. Further enhancements are planned to cover a broader range of semantic and logic-related diagnostics.
Currently provided diagnostics:
- unused namespace (warning): A declared namespace is not used
- undefined namespace (error): A used namespace is not declared
Planed diagnostics:
- path compresion possible (info): A declared namespace is not used
Completion
Status: Rudimentary
Basic auto-completion for SPARQL keywords and variables. Currently not context aware.
Future improvements will expand suggestions to include functions, predicates, and custom completions based on query context.
Code Actions
Status: Planed
Future support for code actions, such as quick fixes and refactoring suggestions, to improve productivity and code quality in SPARQL development.
Planed code actions:
- Consolidate property paths
- Refactor iris into namespaces
- Sort Prefixes
Configuration
Fichu can be configured through a fichu.toml
or fichu.yml
file.
Here is the full default configuration
[format]
align_predicates = false
align_prefixes = false
separate_prolouge = true
capitalize_keywords = true
insert_spaces = true
tab_size = 2
where_new_line = true
use in web
If you want to connect from a web-based-editor, you can use this package as well.
For this purpouse this can be compiled to wasm and is availible on npm:
npm i @ioannisnezis/sparql-language-server
You will have to wrap this in a Web Worker and provide a language server client. There will be more documentation on this in the future...
Demo
In the mean time, check out the demo.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file fichu-0.1.12.tar.gz
.
File metadata
- Download URL: fichu-0.1.12.tar.gz
- Upload date:
- Size: 38.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.7.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 86a14debd9e23a160949ebff0b267d3482034056a2bc850f9248300482ab12e2 |
|
MD5 | 230f6f65788c61de71c46c92e1a6cc5e |
|
BLAKE2b-256 | 79d1d1bac91ce11be1da9e91d5e8acd92401b6dd0b4c8bf79b17cc6b22c32ba3 |
File details
Details for the file fichu-0.1.12-py3-none-manylinux_2_34_x86_64.whl
.
File metadata
- Download URL: fichu-0.1.12-py3-none-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 2.1 MB
- Tags: Python 3, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.7.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ee3e8a3796e6c01309aedda257967340d3f041b5898946268e2dd9eea0bc05a |
|
MD5 | 9d6dffbcfc541de07b33b2d65e56f467 |
|
BLAKE2b-256 | e7b7fc721b1d053a5fc5e5b7b3e079556fec13b612b7bc2f4c7407f87e2d0192 |