Gremlint is a code formatter, from Apache TinkerPop™ which parses Gremlin queries and rewrites them to adhere to certain styling rules. It does so by parsing the query to an abstract syntax tree, and reprinting it from scratch.
- To make Gremlin queries more readable
- To make your queries more beautiful
- To act as a "living" style guide
npm install gremlint
import { formatQuery } from 'gremlint';
const unformattedQuery = `g.V().has('person', 'name', 'marko').shortestPath().with(ShortestPath.target, __.has('name', 'josh')).with(ShortestPath.distance, 'weight')`;
const formattedQuery = formatQuery(unformattedQuery);
console.log(formattedQuery);
g.V().
has('person', 'name', 'marko').
shortestPath().
with(ShortestPath.target, __.has('name', 'josh')).
with(ShortestPath.distance, 'weight')
The default max line length is 80, but it can easily be overridden.
import { formatQuery } from 'gremlint';
const unformattedQuery = `g.V().has('person', 'name', 'marko').shortestPath().with(ShortestPath.target, __.has('name', 'josh')).with(ShortestPath.distance, 'weight')`;
const formattedQuery = formatQuery(unformattedQuery, { maxLineLength: 50 });
console.log(formattedQuery);
g.V().
has('person', 'name', 'marko').
shortestPath().
with(
ShortestPath.target,
__.has('name', 'josh')).
with(ShortestPath.distance, 'weight')
import { formatQuery } from 'gremlint';
const unformattedQuery = `g.V().has('person', 'name', 'marko').shortestPath().with(ShortestPath.target, __.has('name', 'josh')).with(ShortestPath.distance, 'weight')`;
const formattedQuery = formatQuery(unformattedQuery, {
indentation: 4, // default: 0
maxLineLength: 40, // default: 80
shouldPlaceDotsAfterLineBreaks: true, // default: false
});
console.log(formattedQuery);
g.V()
.has('person', 'name', 'marko')
.shortestPath()
.with(
ShortestPath.target,
__.has('name', 'josh'))
.with(
ShortestPath.distance,
'weight')
https://gremlint.com is a website which utilizes the Gremlint library to give users an online "living" style guide for Gremlin queries. It also serves as a platform for showcasing the features of Gremlint. Its source code is available here.