792b4dba2c
* update github.com/blevesearch/bleve v2.0.2 -> v2.0.3 * github.com/denisenkom/go-mssqldb v0.9.0 -> v0.10.0 * github.com/editorconfig/editorconfig-core-go v2.4.1 -> v2.4.2 * github.com/go-chi/cors v1.1.1 -> v1.2.0 * github.com/go-git/go-billy v5.0.0 -> v5.1.0 * github.com/go-git/go-git v5.2.0 -> v5.3.0 * github.com/go-ldap/ldap v3.2.4 -> v3.3.0 * github.com/go-redis/redis v8.6.0 -> v8.8.2 * github.com/go-sql-driver/mysql v1.5.0 -> v1.6.0 * github.com/go-swagger/go-swagger v0.26.1 -> v0.27.0 * github.com/lib/pq v1.9.0 -> v1.10.1 * github.com/mattn/go-sqlite3 v1.14.6 -> v1.14.7 * github.com/go-testfixtures/testfixtures v3.5.0 -> v3.6.0 * github.com/issue9/identicon v1.0.1 -> v1.2.0 * github.com/klauspost/compress v1.11.8 -> v1.12.1 * github.com/mgechev/revive v1.0.3 -> v1.0.6 * github.com/microcosm-cc/bluemonday v1.0.7 -> v1.0.8 * github.com/niklasfasching/go-org v1.4.0 -> v1.5.0 * github.com/olivere/elastic v7.0.22 -> v7.0.24 * github.com/pelletier/go-toml v1.8.1 -> v1.9.0 * github.com/prometheus/client_golang v1.9.0 -> v1.10.0 * github.com/xanzy/go-gitlab v0.44.0 -> v0.48.0 * github.com/yuin/goldmark v1.3.3 -> v1.3.5 * github.com/6543/go-version v1.2.4 -> v1.3.1 * do github.com/lib/pq v1.10.0 -> v1.10.1 again ... |
||
---|---|---|
.. | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
.golangci.yml | ||
.goreleaser.yml | ||
cached_parser.go | ||
CHANGELOG.md | ||
CMakeLists.txt | ||
config.go | ||
definition.go | ||
Dockerfile | ||
editorconfig.go | ||
fnmatch.go | ||
go.doc | ||
go.mod | ||
go.sum | ||
LICENSE | ||
Makefile | ||
parser.go | ||
README.md | ||
simple_parser.go |
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.13+ modules for this package.
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