editorconfig-core-go alternatives and similar packages
Based on the "blackfriday" category.
Alternatively, view editorconfig-core-go alternatives based on common mentions on social networks and blogs.
-
bluemonday
bluemonday: a fast golang HTML sanitizer (inspired by the OWASP Java HTML Sanitizer) to scrub user generated content of XSS -
mxj
Decode / encode XML to/from map[string]interface{} (or JSON); extract values with dot-notation paths and wildcards. Replaces x2j and j2x packages. -
go-pkg-rss
DISCONTINUED. This package reads RSS and Atom feeds and provides a caching mechanism that adheres to the feed specs. -
github_flavored_markdown
GitHub Flavored Markdown renderer with fenced code block highlighting, clickable header anchor links. -
go-pkg-xmlx
DISCONTINUED. Extension to the standard Go XML package. Maintains a node tree that allows forward/backwards browsing and exposes some simple single/multi-node search functions.
CodeRabbit: AI Code Reviews for Developers

Do you think we are missing an alternative of editorconfig-core-go or a related project?
README
Editorconfig Core Go
A Editorconfig file parser and manipulator for Go.
Missing features
- escaping comments in values, probably in go-ini/ini
- adjacent nested braces
Installing
We recommend the use of Go 1.17+ modules for this package. Lower versions, such as 1.13, should be fine.
Import by the same path. The package name you will use to access it is
editorconfig
.
import "github.com/editorconfig/editorconfig-core-go/v2"
Usage
Parse from file
fp, err := os.Open("path/to/.editorconfig")
if err != nil {
log.Fatal(err)
}
defer fp.Close()
editorConfig, err := editorconfig.Parse(fp)
if err != nil {
log.Fatal(err)
}
Parse from slice of bytes
data := []byte("...")
editorConfig, err := editorconfig.ParseBytes(data)
if err != nil {
log.Fatal(err)
}
Get definition to a given filename
This method builds a definition to a given filename. This definition is a merge of the properties with selectors that matched the given filename. The lasts sections of the file have preference over the priors.
def := editorConfig.GetDefinitionForFilename("my/file.go")
This definition have the following properties:
type Definition struct {
Selector string
Charset string
IndentStyle string
IndentSize string
TabWidth int
EndOfLine string
TrimTrailingWhitespace *bool
InsertFinalNewline *bool
Raw map[string]string
}
Automatic search for .editorconfig
files
If you want a definition of a file without having to manually
parse the .editorconfig
files, you can then use the static version
of GetDefinitionForFilename
:
def, err := editorconfig.GetDefinitionForFilename("foo/bar/baz/my-file.go")
In the example above, the package will automatically search for
.editorconfig
files on:
foo/bar/baz/.editorconfig
foo/baz/.editorconfig
foo/.editorconfig
Until it reaches a file with root = true
or the root of the filesystem.
Generating a .editorconfig file
You can easily convert a Editorconfig struct to a compatible INI file:
// serialize to slice of bytes
data, err := editorConfig.Serialize()
if err != nil {
log.Fatal(err)
}
// save directly to file
err := editorConfig.Save("path/to/.editorconfig")
if err != nil {
log.Fatal(err)
}
Contributing
To run the tests:
go test -v ./...
To run the integration tests:
make test-core