mirror of
https://github.com/atom/atom.git
synced 2026-01-14 09:27:57 -05:00
Distinguish between anonymous * token and wildcard selector
Co-authored-by: Max Brunsfeld <maxbrunsfeld@github.com>
This commit is contained in:
@@ -74,4 +74,14 @@ describe('SyntaxScopeMap', () => {
|
||||
expect(map.get(['a', 'c', 'b'], [0, 1, 1])).toBe('z')
|
||||
expect(map.get(['a', 'c', 'b'], [0, 2, 1])).toBe('w')
|
||||
})
|
||||
|
||||
it('distinguishes between an anonymous * token and the wildcard selector', () => {
|
||||
const map = new SyntaxScopeMap({
|
||||
'"*"': 'x',
|
||||
'a > "b"': 'y'
|
||||
})
|
||||
|
||||
expect(map.get(['b'], [0], false)).toBe(undefined)
|
||||
expect(map.get(['*'], [0], false)).toBe('x')
|
||||
})
|
||||
})
|
||||
|
||||
@@ -8,8 +8,8 @@ class SyntaxScopeMap {
|
||||
for (let selector in resultsBySelector) {
|
||||
this.addSelector(selector, resultsBySelector[selector])
|
||||
}
|
||||
setTableDefaults(this.namedScopeTable)
|
||||
setTableDefaults(this.anonymousScopeTable)
|
||||
setTableDefaults(this.namedScopeTable, true)
|
||||
setTableDefaults(this.anonymousScopeTable, false)
|
||||
}
|
||||
|
||||
addSelector (selector, result) {
|
||||
@@ -126,8 +126,8 @@ class SyntaxScopeMap {
|
||||
}
|
||||
}
|
||||
|
||||
function setTableDefaults (table) {
|
||||
const defaultTypeTable = table['*']
|
||||
function setTableDefaults (table, allowWildcardSelector) {
|
||||
const defaultTypeTable = allowWildcardSelector ? table['*'] : null
|
||||
|
||||
for (let type in table) {
|
||||
let typeTable = table[type]
|
||||
@@ -138,14 +138,14 @@ function setTableDefaults (table) {
|
||||
}
|
||||
|
||||
if (typeTable.parents) {
|
||||
setTableDefaults(typeTable.parents)
|
||||
setTableDefaults(typeTable.parents, true)
|
||||
}
|
||||
|
||||
for (let key in typeTable.indices) {
|
||||
const indexTable = typeTable.indices[key]
|
||||
mergeTable(indexTable, typeTable, false)
|
||||
if (indexTable.parents) {
|
||||
setTableDefaults(indexTable.parents)
|
||||
setTableDefaults(indexTable.parents, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user