Update Elixir tokenization of sigil modifiers

This commit is contained in:
Jonatan Kłosko 2021-12-08 12:24:13 +01:00
parent 3f9b0c5573
commit 10bce38a76
2 changed files with 18 additions and 6 deletions

View file

@ -314,6 +314,17 @@ testTokenization('elixir', [
]
}
],
// Sigils (modifiers)
[
{
line: '~X/custom/az09',
tokens: [
{ startIndex: 0, type: 'sigil.delimiter.elixir' },
{ startIndex: 3, type: 'sigil.elixir' },
{ startIndex: 9, type: 'sigil.delimiter.elixir' }
]
}
],
// Module attributes
[
{

View file

@ -125,6 +125,7 @@ export const language = <languages.IMonarchLanguage>{
sigilSymmetricDelimiter: /"""|'''|"|'|\/|\|/,
sigilStartDelimiter: /@sigilSymmetricDelimiter|<|\{|\[|\(/,
sigilEndDelimiter: /@sigilSymmetricDelimiter|>|\}|\]|\)/,
sigilModifiers: /[a-zA-Z0-9]*/,
decimal: /\d(?:_?\d)*/,
hex: /[0-9a-fA-F](_?[0-9a-fA-F])*/,
@ -387,7 +388,7 @@ export const language = <languages.IMonarchLanguage>{
'sigilContinue.interpol.s': [
[
/(@sigilEndDelimiter)[a-zA-Z]*/,
/(@sigilEndDelimiter)@sigilModifiers/,
{
cases: {
'$1==$S5': { token: 'string.delimiter', next: '@pop' },
@ -412,7 +413,7 @@ export const language = <languages.IMonarchLanguage>{
// Ignore escaped sigil end
[/(^|[^\\])\\@sigilEndDelimiter/, 'string'],
[
/(@sigilEndDelimiter)[a-zA-Z]*/,
/(@sigilEndDelimiter)@sigilModifiers/,
{
cases: {
'$1==$S5': { token: 'string.delimiter', next: '@pop' },
@ -435,7 +436,7 @@ export const language = <languages.IMonarchLanguage>{
'sigilContinue.interpol.r': [
[
/(@sigilEndDelimiter)[a-zA-Z]*/,
/(@sigilEndDelimiter)@sigilModifiers/,
{
cases: {
'$1==$S5': { token: 'regexp.delimiter', next: '@pop' },
@ -460,7 +461,7 @@ export const language = <languages.IMonarchLanguage>{
// Ignore escaped sigil end
[/(^|[^\\])\\@sigilEndDelimiter/, 'regexp'],
[
/(@sigilEndDelimiter)[a-zA-Z]*/,
/(@sigilEndDelimiter)@sigilModifiers/,
{
cases: {
'$1==$S5': { token: 'regexp.delimiter', next: '@pop' },
@ -484,7 +485,7 @@ export const language = <languages.IMonarchLanguage>{
'sigilContinue.interpol': [
[
/(@sigilEndDelimiter)[a-zA-Z]*/,
/(@sigilEndDelimiter)@sigilModifiers/,
{
cases: {
'$1==$S5': { token: 'sigil.delimiter', next: '@pop' },
@ -509,7 +510,7 @@ export const language = <languages.IMonarchLanguage>{
// Ignore escaped sigil end
[/(^|[^\\])\\@sigilEndDelimiter/, 'sigil'],
[
/(@sigilEndDelimiter)[a-zA-Z]*/,
/(@sigilEndDelimiter)@sigilModifiers/,
{
cases: {
'$1==$S5': { token: 'sigil.delimiter', next: '@pop' },