XUICEWrenFormatter
Inherits XUICEAbstractFormatter
Implements XUICEFormatter
Description
A XUICodeEditor
formatter for the Wren programming language.
Properties
Name | Type | Read-Only |
---|---|---|
Delimiters() | XUICELineToken |
|
Keywords | Dictionary |
✔ |
MatchedDelimiters | Dictionary |
|
MatchedOpeningDelimiters() | XUICELineToken |
Methods
Name | Parameters | Returns |
---|---|---|
AddComment | Boolean |
|
AddHexNumberToken | ||
AddIdentifierOrKeywordToken | ||
AddMatchingDelimiters | openingDelimiter As XUICELineToken , closingDelimiter As XUICELineToken |
|
AddMultilineTokens | type As String , startLine As Integer , startLocal As Integer , endLine As Integer , endPosLocal As Integer , fallbackType As String |
XUICELineToken |
AddNumberToken | ||
AddRawStringToken | ||
AddStringToken | ||
AllowsLeadingWhitespace | Boolean |
|
FirstNonCommentToken | line As XUICELine |
XUICELineToken |
HandleStringEscapeSequence | stringStartLine As Integer |
Boolean |
HandleStringInterpolation | stringStartLine As Integer |
Boolean |
IndentLines | ||
InitialiseKeywordsDictionary | Dictionary |
|
IsClosingDelimiter | t As XUICELineToken |
Boolean |
IsCommentLine | line As XUICELine |
Boolean |
IsCommentToken | token As XUICELineToken |
Boolean |
IsOpeningDelimiter | t As XUICELineToken |
Boolean |
LastNonCommentToken | line As XUICELine |
XUICELineToken |
Name | String |
|
NearestDelimitersForCaretPos | caretPos As Integer |
XUICEDelimiter |
NextToken | ||
Parse | lines() As XUICELine |
|
ProcessDelimiters | ||
SetContinuationStatus | line As XUICELine , previousLineLastToken As XUICELineToken |
|
SkipWhitespace | ||
SupportsDelimiterHighlighting | Boolean |
|
SupportsUnmatchedBlockHighlighting | Boolean |
|
TokenIsComment | token As XUICELineToken |
Boolean |
Tokenise | lines() As XUICELine , firstVisibleLineNumber As Integer , lastVisibleLineNumber As Integer |
|
TokeniseAll | lines() As XUICELine |
|
TokenTypes | String() |
Constants
Name | Type |
---|---|
TOKEN_ESCAPE | String |
TOKEN_INTERPOLATION | String |
TOKEN_ESCAPE As String Used for escape sequences.
TOKEN_INTERPOLATION As String
Used for string interpolations (e.g: %(name)
).
Enumerations
CommentTypes
Used internally. The different types of supported comments.
Name |
---|
Block |
SingleLine |
Property Descriptions
Delimiters() As XUICELineToken
A sorted array of all delimiter tokens in the source code.
Keywords As Dictionary
Case sensitive dictionary of keywords. Key = Keyword, Value = Nil.
MatchedDelimiters As Dictionary
All matched delimiters in the source code. Key = Delimiter A
(XUICELineToken
), Value = Delimiter matching Delimiter A
(XUICELineToken
).
MatchedOpeningDelimiters() As XUICELineToken
An array of all opening delimiters that have a matching closing delimiter sorted by their position in the source code (index 0 = first matched delimiter in the source code).
Method Descriptions
AddComment() As Boolean
Attempts to add a comment beginning from the current position. Returns True if successful.
Assumes the pointer is yet to consume the opening delimiter.
Single line comments start with //
and end at the end of the line:
// This is comment.
var age = 40 // This is also a comment.
Block comments start with \*
and end with */
. They can span multiple lines:
/* This
a
multi-line
comment. */
They can also be nested:
/* This is /* a nested */ comment. */
AddHexNumberToken()
Consumes and adds a hex number token starting at mCurrent
.
Assumes that mCurrent
points at the first hex digit (which has been verified to exist).
0xFF
^
AddIdentifierOrKeywordToken()
Adds either an identifier or keyword beginning at mTokenStartLocal
.
Assumes that mTokenStartLocal
is a valid identifier or keyword starting
character and that mCurrent
is pointing to the character immediately following the starting character.
AddMatchingDelimiters(openingDelimiter As XUICELineToken, closingDelimiter As XUICELineToken)
Adds the passed matching delimiters the MatchedDelimiters
dictionary and
the SortedMatchedDelimiters
array.
We add both delimiters as keys so we can find either.
AddMultilineTokens(type As String, startLine As Integer, startLocal As Integer, endLine As Integer, endPosLocal As Integer, fallbackType As String) As XUICELineToken
Adds contiguous tokens of type
beginning at startLine
and startLocal
all the
way to endLine
endPosLocal
. Returns the last token added.
the last token.
Assumes that all arguments are valid.
fallbackType
is the generic fallback token style to use if the editor's current theme doesn't
define a style named type
.
Assumes fallbackType
is a valid fallback type (i.e. one of the constants in XUICELineToken
).
AddNumberToken()
Consumes and adds a number token starting at mCurrent
.
Assumes that mCurrent
points at a digit.
AddRawStringToken()
Attempts to consume and add a raw string token.
Assumes that mCurrent
points here:
"""Hello """
^
"""
^
Multiline
"""
AddStringToken()
Attempts to consume and add a string token starting at mCurrent
.
Assumes we have just consumed a double quote ("
):
name = "Hello"
^
If the string is successfully added then the closing delimiter will be assigned a
data key "isClosingDelimiter"
with a value of True
. This is used later when parsing.
AllowsLeadingWhitespace() As Boolean
True if this formatter allows whitespace at the beginning of a line. If False, the editor will strip it when pasting and prevent it from being typed.
Part of the XUICEFormatter
interface.
FirstNonCommentToken(line As XUICELine) As XUICELineToken
Returns the first token on line
that is not a comment or Nil if the line there are none.
Assumes line
is not Nil.
HandleStringEscapeSequence(stringStartLine As Integer) As Boolean
Determines if there is a valid string escape sequence. Adds the relevant token(s) if so and returns True, otherwise returns False.
Assumes were are within a string and have peeked to see \
:
System.write("age \tcool")
^
stringStartLine
is the number of the line that the preceding open string begins at.
mTokenStartLocal
points to the local position of the start of the preceding string.
HandleStringInterpolation(stringStartLine As Integer) As Boolean
Determines if there is a valid string interpolation. Adds the token(s) if so and returns True, otherwise returns False.
Assumes were are within a string and have peeked to see %(
:
System.write("age %(25 + 15)"
^
stringStartLine
is the number of the line that the preceding open string begins at.
mTokenStartLocal
points to the local position of the start of the preceding string.
IndentLines()
Sets the indentation and continuation levels for each line.
Assumes ProcessDelimiters()
has been called prior to this method.
InitialiseKeywordsDictionary() As Dictionary
Returns a case-sensitive dictionary of Wren's keywords / reserved words.
IsClosingDelimiter(t As XUICELineToken) As Boolean
True if t
is a closing delimiter like }
, )
or ]
.
Assumes t
is not Nil.
IsCommentLine(line As XUICELine) As Boolean
True if this entire line is a comment.
Part of the XUICEFormatter
interface.
IsCommentToken(token As XUICELineToken) As Boolean
True if token
is a comment.
Assumes token
is not Nil.
IsOpeningDelimiter(t As XUICELineToken) As Boolean
True if t
is an opening delimiter like {
, (
or [
.
Assumes t
is not Nil.
LastNonCommentToken(line As XUICELine) As XUICELineToken
Returns the last token on line
that is not a comment or Nil if the line there are none.
Assumes line
is not Nil.
Name() As String
The name of this formatter.
Part of the XUICEFormatter
interface.
NearestDelimitersForCaretPos(caretPos As Integer) As XUICEDelimiter
Returns the nearest delimiters at the given caretPos
. May be Nil.
Part of the XUICEFormatter
interface.
NextToken()
Generates the next token and appends it to mLine.Tokens
.
Parse(lines() As XUICELine)
Called periodically by the editor. An opportunity to parse the tokenised lines. Will always be called after the lines have been tokenised.
Part of the XUICEFormatter
interface.
ProcessDelimiters()
Finds the locations of matching delimiters (e.g: braces, parentheses, etc) and
adds them to MatchedDelimiters
.
SetContinuationStatus(line As XUICELine, previousLineLastToken As XUICELineToken)
Sets line.IsContinuation
based on the last token of the previous line.
Assumes line
is not Nil.
previousLineLastToken
may be Nil.
SkipWhitespace()
Advances past whitespace.
SupportsDelimiterHighlighting() As Boolean
Returns True as this formatter supports highlighting the delimiters around the caret.
Part of the XUICEFormatter
interface.
SupportsUnmatchedBlockHighlighting() As Boolean
True if this formatter highlights unmatched blocks.
Part of the XUICEFormatter
interface.
TokenIsComment(token As XUICELineToken) As Boolean
True if token
is considered to be a comment.
Part of the XUICEFormatter
interface.
Tokenise(lines() As XUICELine, firstVisibleLineNumber As Integer, lastVisibleLineNumber As Integer)
Tokenises a portion of lines
.
Note that we tokenise all lines, even though this method is passed the visible line numbers.
Part of the XUICEFormatter
interface.
TokeniseAll(lines() As XUICELine)
Tokenises an array of lines.
Part of the XUICEFormatter
interface.
TokenTypes() As String()
Returns an array of all token types used by this formatter.
Part of the XUICEFormatter
interface.