gitea/vendor/github.com/editorconfig/editorconfig-core-go/v2
Colin Arnott 66e99d722a upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#8501)
editorconfig-core-go made breaking api changes and has recently released
v2.1.1. This change consumes the new api and fixes up any breaking
references.
2019-10-15 22:24:16 +01:00
..
.editorconfig upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#8501) 2019-10-15 22:24:16 +01:00
.gitattributes upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#8501) 2019-10-15 22:24:16 +01:00
.gitignore upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#8501) 2019-10-15 22:24:16 +01:00
.gitmodules upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#8501) 2019-10-15 22:24:16 +01:00
.travis.yml upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#8501) 2019-10-15 22:24:16 +01:00
CHANGELOG.md upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#8501) 2019-10-15 22:24:16 +01:00
CMakeLists.txt upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#8501) 2019-10-15 22:24:16 +01:00
LICENSE upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#8501) 2019-10-15 22:24:16 +01:00
Makefile upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#8501) 2019-10-15 22:24:16 +01:00
README.md upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#8501) 2019-10-15 22:24:16 +01:00
editorconfig.go upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#8501) 2019-10-15 22:24:16 +01:00
fnmatch.go upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#8501) 2019-10-15 22:24:16 +01:00
go.mod upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#8501) 2019-10-15 22:24:16 +01:00
go.sum upgrade gopkg.in/editorconfig/editorconfig-core-go.v1 (#8501) 2019-10-15 22:24:16 +01:00

README.md

GoDoc Go Report Card

Editorconfig Core Go

A Editorconfig file parser and manipulator for Go.

Currently this package does some basic work but does not fully support EditorConfig specs, so using it in "real world" is not recommended.

Missing features

  • unset
  • escaping comments in values, probably in go-ini/ini

Installing

We recommend the use of Go 1.11+ 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

editorConfig, err := editorconfig.ParseFile("path/to/.editorconfig")
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 ./...