mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-09-24 17:26:06 +08:00
47 lines
1.4 KiB
CoffeeScript
47 lines
1.4 KiB
CoffeeScript
|
# Extended: Wraps an {Array} of `String`s. The Array describes a path from the
|
||
|
# root of the syntax tree to a token including _all_ scope names for the entire
|
||
|
# path.
|
||
|
#
|
||
|
# Methods that take a `ScopeDescriptor` will also accept an {Array} of {Strings}
|
||
|
# scope names e.g. `['.source.js']`.
|
||
|
#
|
||
|
# You can use `ScopeDescriptor`s to get language-specific config settings via
|
||
|
# {Config::get}.
|
||
|
#
|
||
|
# You should not need to create a `ScopeDescriptor` directly.
|
||
|
#
|
||
|
# * {Editor::getRootScopeDescriptor} to get the language's descriptor.
|
||
|
# * {Editor::scopeDescriptorForBufferPosition} to get the descriptor at a
|
||
|
# specific position in the buffer.
|
||
|
# * {Cursor::getScopeDescriptor} to get a cursor's descriptor based on position.
|
||
|
#
|
||
|
# See the [scopes and scope descriptor guide](https://atom.io/docs/v0.138.0/advanced/scopes-and-scope-descriptors)
|
||
|
# for more information.
|
||
|
module.exports =
|
||
|
class ScopeDescriptor
|
||
|
@fromObject: (scopes) ->
|
||
|
if scopes instanceof ScopeDescriptor
|
||
|
scopes
|
||
|
else
|
||
|
new ScopeDescriptor({scopes})
|
||
|
|
||
|
###
|
||
|
Section: Construction and Destruction
|
||
|
###
|
||
|
|
||
|
# Public: Create a {ScopeDescriptor} object.
|
||
|
#
|
||
|
# * `object` {Object}
|
||
|
# * `scopes` {Array} of {String}s
|
||
|
constructor: ({@scopes}) ->
|
||
|
|
||
|
# Public: Returns an {Array} of {String}s
|
||
|
getScopesArray: -> @scopes
|
||
|
|
||
|
getScopeChain: ->
|
||
|
@scopes
|
||
|
.map (scope) ->
|
||
|
scope = ".#{scope}" unless scope[0] is '.'
|
||
|
scope
|
||
|
.join(' ')
|