@@ -140,11 +140,11 @@ func (dm *DocumentMapping) fieldDescribedByPath(path string) *FieldMapping {
140
140
return nil
141
141
}
142
142
143
- // documentMappingForPath only returns EXACT matches for a sub document
144
- // or for an explicitly mapped field, if you want to find the
145
- // closest document mapping to a field not explicitly mapped
146
- // use closestDocMapping
147
- func ( dm * DocumentMapping ) documentMappingForPath ( path string ) * DocumentMapping {
143
+ // documentMappingForPath returns the EXACT and closest matches for a sub
144
+ // document or for an explicitly mapped field; the closest most specific
145
+ // document mapping could be one that matches part of the provided path.
146
+ func ( dm * DocumentMapping ) documentMappingForPath ( path string ) (
147
+ * DocumentMapping , * DocumentMapping ) {
148
148
pathElements := decodePath (path )
149
149
current := dm
150
150
OUTER:
@@ -165,27 +165,9 @@ OUTER:
165
165
}
166
166
}
167
167
168
- return nil
168
+ return nil , current
169
169
}
170
- return current
171
- }
172
-
173
- // closestDocMapping findest the most specific document mapping that matches
174
- // part of the provided path
175
- func (dm * DocumentMapping ) closestDocMapping (path string ) * DocumentMapping {
176
- pathElements := decodePath (path )
177
- current := dm
178
- OUTER:
179
- for _ , pathElement := range pathElements {
180
- for name , subDocMapping := range current .Properties {
181
- if name == pathElement {
182
- current = subDocMapping
183
- continue OUTER
184
- }
185
- }
186
- break
187
- }
188
- return current
170
+ return current , current
189
171
}
190
172
191
173
// NewDocumentMapping returns a new document mapping
@@ -408,8 +390,7 @@ func (dm *DocumentMapping) walkDocument(data interface{}, path []string, indexes
408
390
func (dm * DocumentMapping ) processProperty (property interface {}, path []string , indexes []uint64 , context * walkContext ) {
409
391
pathString := encodePath (path )
410
392
// look to see if there is a mapping for this field
411
- subDocMapping := dm .documentMappingForPath (pathString )
412
- closestDocMapping := dm .closestDocMapping (pathString )
393
+ subDocMapping , closestDocMapping := dm .documentMappingForPath (pathString )
413
394
414
395
// check to see if we even need to do further processing
415
396
if subDocMapping != nil && ! subDocMapping .Enabled {
0 commit comments