Commit 52f2e043 authored by Jacob Vosmaer's avatar Jacob Vosmaer

Merge branch '217392-prepare-references-support' into 'master'

Refactor to prepare for parsing references

See merge request gitlab-org/gitlab-workhorse!523
parents 7347a112 00a979da
...@@ -13,7 +13,7 @@ const ( ...@@ -13,7 +13,7 @@ const (
) )
type Ranges struct { type Ranges struct {
DefRefs map[Id]*DefRef DefRefs map[Id]Item
Hovers *Hovers Hovers *Hovers
Cache *cache Cache *cache
} }
...@@ -29,14 +29,14 @@ type Range struct { ...@@ -29,14 +29,14 @@ type Range struct {
RefId Id RefId Id
} }
type RawDefRef struct { type RawItem struct {
Property string `json:"property"` Property string `json:"property"`
RefId Id `json:"outV"` RefId Id `json:"outV"`
RangeIds []Id `json:"inVs"` RangeIds []Id `json:"inVs"`
DocId Id `json:"document"` DocId Id `json:"document"`
} }
type DefRef struct { type Item struct {
Line string Line string
DocId Id DocId Id
} }
...@@ -60,7 +60,7 @@ func NewRanges(tempDir string) (*Ranges, error) { ...@@ -60,7 +60,7 @@ func NewRanges(tempDir string) (*Ranges, error) {
} }
return &Ranges{ return &Ranges{
DefRefs: make(map[Id]*DefRef), DefRefs: make(map[Id]Item),
Hovers: hovers, Hovers: hovers,
Cache: cache, Cache: cache,
}, nil }, nil
...@@ -148,48 +148,48 @@ func (r *Ranges) addRange(line []byte) error { ...@@ -148,48 +148,48 @@ func (r *Ranges) addRange(line []byte) error {
} }
func (r *Ranges) addItem(line []byte) error { func (r *Ranges) addItem(line []byte) error {
var defRef RawDefRef var rawItem RawItem
if err := json.Unmarshal(line, &defRef); err != nil { if err := json.Unmarshal(line, &rawItem); err != nil {
return err return err
} }
if defRef.Property != definitions && defRef.Property != references { if rawItem.Property != definitions && rawItem.Property != references {
return nil return nil
} }
for _, rangeId := range defRef.RangeIds { for _, rangeId := range rawItem.RangeIds {
var rg Range rg, err := r.getRange(rangeId)
if err := r.Cache.Entry(rangeId, &rg); err != nil { if err != nil {
return err return err
} }
rg.RefId = defRef.RefId rg.RefId = rawItem.RefId
if err := r.Cache.SetEntry(rangeId, &rg); err != nil { if err := r.Cache.SetEntry(rangeId, rg); err != nil {
return err return err
} }
} }
if defRef.Property == definitions { if rawItem.Property == definitions {
return r.addDefRef(&defRef) return r.addDefRef(&rawItem)
} }
return nil return nil
} }
func (r *Ranges) addDefRef(defRef *RawDefRef) error { func (r *Ranges) addDefRef(rawItem *RawItem) error {
if len(defRef.RangeIds) == 0 { if len(rawItem.RangeIds) == 0 {
return errors.New("no range IDs") return errors.New("no range IDs")
} }
var rg Range rg, err := r.getRange(rawItem.RangeIds[0])
if err := r.Cache.Entry(defRef.RangeIds[0], &rg); err != nil { if err != nil {
return err return err
} }
r.DefRefs[defRef.RefId] = &DefRef{ r.DefRefs[rawItem.RefId] = Item{
Line: strconv.Itoa(int(rg.Line + 1)), Line: strconv.Itoa(int(rg.Line + 1)),
DocId: defRef.DocId, DocId: rawItem.DocId,
} }
return nil return nil
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment