ec4j
ec4j
is an EditorConfig parser for Java.
Who is using ec4j?
Here are some projects that use `ec4j:
-
EditorConfig for Eclipse based on GenericEditor and tm4e.
Basic usage
To parse a single .editorconfig
file into an EditorConfig
model:
java.nio.file.Path editorConfigFile = Paths.get("path/to/my/.editorconfig");
EditorConfigParser parser = EditorConfigParser.builder().build();
EditorConfigModelHandler handler = new EditorConfigModelHandler(EditorConfigConstants.VERSION,
PropertyTypeRegistry.getDefault());
parser.parse(Resources.ofPath(editorConfigFile), StandardCharsets.UTF_8, handler);
EditorConfig editorConfig = handler.getEditorConfig();
To query the properties applicable to a file in a source tree:
Cache myCache = ...; // e.g. Caches.none()
EditorConfigLoader myLoader = ...; // e.g. EditorConfigLoader.getDefault()
EditorConfigSession mySession = EditorConfigSession.builder()
.cache(myCache)
.loader(myLoader)
.rootDirectory(ResourcePaths.ofPath(Paths.get("/my/dir")))
.build();
QueryResult result = mySession.queryProperties(Resources.ofPath(Paths.get("/my/dir1/Class1.java")));
IndentStyleValue indentStyleValue = result.getValue(PropertyType.indent_style, IndentStyleValue.space);
switch (indentStyleVal) {
case space:
// ...
break;
case tab:
//...
break;
default:
throw new IllegalStateException("Huh "+ indentStyleVal +"?");
}
}
How to build
Prerequisites:
-
Java 7+
-
Optionally Maven 3.5.0+, unless you want to use
./mvnw
ormvnw.bat
delivered by the project -
cmake 2.6+ to run the editorconfig-core-test testsuite (optional).
The most common build with unit tests:
./mvnw clean install
On Windows:
mvnw.bat clean install
A build with editorconfig-core-test testsuite:
git submodule init
git submodule update
mvn -Pcore-test clean install && ( cd core && cmake . && ctest . )
Relationship to editorconfig-core-java
ec4j
aims at offering a superset of editorconfig-core-java
's functionality.
While editorconfig-core-java
supports just the basic use case of querying the EditorConfig properties applicable to a given file, ec4j
offers much more in addition to that:
-
A proper model of an
.editorconfig
file -
EditorConfigParser and EditorConfigHandler interface designed to support syntax highlighting, validation, folding, etc. of
.editorconfig
files in IDEs. -
ec4j
will release to Maven Central -
ec4j
performs better against the editorconfig-core test suite:Library
Lib. revision
No. tests passed/total
ec4j
4a35a29
181/182
editorconfig-core-java
e3e0905
177/182
Testing platform: Linux,
editorconfig-core-test
revision: 172eb83
ec4j
took portions of code from editorconfig-core-java
. Such ones are clearly marked in `ec4j’s JavaDoc.
Get support and contribute
-
License and community:
ec4j
is a community open-source project licensed under the Apache License. -
Support: You can ask questions, report bugs, and request features using GitHub issues.
-
Git: This
angelozerr/ec4j
repository is the reference repository to contribute toec4j
-
Build and CI: build can be performed with a simple
mvn clean verify
, continuous integration and deployment is performed by Travis CI