aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/gopkg.in/sourcemap.v1/sourcemap.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gopkg.in/sourcemap.v1/sourcemap.go')
-rw-r--r--vendor/gopkg.in/sourcemap.v1/sourcemap.go157
1 files changed, 157 insertions, 0 deletions
diff --git a/vendor/gopkg.in/sourcemap.v1/sourcemap.go b/vendor/gopkg.in/sourcemap.v1/sourcemap.go
new file mode 100644
index 000000000..0e9af1a25
--- /dev/null
+++ b/vendor/gopkg.in/sourcemap.v1/sourcemap.go
@@ -0,0 +1,157 @@
+package sourcemap // import "gopkg.in/sourcemap.v1"
+
+import (
+ "io"
+ "strings"
+
+ "gopkg.in/sourcemap.v1/base64vlq"
+)
+
+type fn func(m *mappings) (fn, error)
+
+type sourceMap struct {
+ Version int `json:"version"`
+ File string `json:"file"`
+ SourceRoot string `json:"sourceRoot"`
+ Sources []string `json:"sources"`
+ Names []interface{} `json:"names"`
+ Mappings string `json:"mappings"`
+}
+
+type mapping struct {
+ genLine int
+ genCol int
+ sourcesInd int
+ sourceLine int
+ sourceCol int
+ namesInd int
+}
+
+type mappings struct {
+ rd *strings.Reader
+ dec *base64vlq.Decoder
+
+ hasName bool
+ value mapping
+
+ values []mapping
+}
+
+func parseMappings(s string) ([]mapping, error) {
+ rd := strings.NewReader(s)
+ m := &mappings{
+ rd: rd,
+ dec: base64vlq.NewDecoder(rd),
+ }
+ m.value.genLine = 1
+ m.value.sourceLine = 1
+
+ err := m.parse()
+ if err != nil {
+ return nil, err
+ }
+ return m.values, nil
+}
+
+func (m *mappings) parse() error {
+ next := parseGenCol
+ for {
+ c, err := m.rd.ReadByte()
+ if err == io.EOF {
+ m.pushValue()
+ return nil
+ }
+ if err != nil {
+ return err
+ }
+
+ switch c {
+ case ',':
+ m.pushValue()
+ next = parseGenCol
+ case ';':
+ m.pushValue()
+
+ m.value.genLine++
+ m.value.genCol = 0
+
+ next = parseGenCol
+ default:
+ err := m.rd.UnreadByte()
+ if err != nil {
+ return err
+ }
+
+ next, err = next(m)
+ if err != nil {
+ return err
+ }
+ }
+ }
+}
+
+func parseGenCol(m *mappings) (fn, error) {
+ n, err := m.dec.Decode()
+ if err != nil {
+ return nil, err
+ }
+ m.value.genCol += n
+ return parseSourcesInd, nil
+}
+
+func parseSourcesInd(m *mappings) (fn, error) {
+ n, err := m.dec.Decode()
+ if err != nil {
+ return nil, err
+ }
+ m.value.sourcesInd += n
+ return parseSourceLine, nil
+}
+
+func parseSourceLine(m *mappings) (fn, error) {
+ n, err := m.dec.Decode()
+ if err != nil {
+ return nil, err
+ }
+ m.value.sourceLine += n
+ return parseSourceCol, nil
+}
+
+func parseSourceCol(m *mappings) (fn, error) {
+ n, err := m.dec.Decode()
+ if err != nil {
+ return nil, err
+ }
+ m.value.sourceCol += n
+ return parseNamesInd, nil
+}
+
+func parseNamesInd(m *mappings) (fn, error) {
+ n, err := m.dec.Decode()
+ if err != nil {
+ return nil, err
+ }
+ m.hasName = true
+ m.value.namesInd += n
+ return parseGenCol, nil
+}
+
+func (m *mappings) pushValue() {
+ if m.value.sourceLine == 1 && m.value.sourceCol == 0 {
+ return
+ }
+
+ if m.hasName {
+ m.values = append(m.values, m.value)
+ m.hasName = false
+ } else {
+ m.values = append(m.values, mapping{
+ genLine: m.value.genLine,
+ genCol: m.value.genCol,
+ sourcesInd: m.value.sourcesInd,
+ sourceLine: m.value.sourceLine,
+ sourceCol: m.value.sourceCol,
+ namesInd: -1,
+ })
+ }
+}