Last active
April 24, 2019 10:31
-
-
Save gleba/13482258bd3684feec7d65546fa41a8d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
monaco.languages.register({ id: 'mySpecialLanguage' }); | |
monaco.languages.setMonarchTokensProvider('mySpecialLanguage', { | |
tokenizer: { | |
root: [ | |
[/\?.?[a-z A-Z а-я А-Я 0-9$@?%*#№!_.,:]+/, "question"], | |
[/\extract_.?[a-z_]+/, "extract"], | |
[/\$.?[a-z_]+/, "var"], | |
[/[>-]/, "operator"], | |
[/^(.*?)\:/, "condition"], | |
[/\[[a-zA-Z 0-9:]+\]/, "custom-date"], | |
] | |
} | |
}); | |
// Define a new theme that contains only rules that match this language | |
monaco.editor.defineTheme('myCoolTheme', { | |
base: 'vs', | |
inherit: false, | |
rules: [ | |
{ token: 'var', foreground: '22AA22', fontStyle: 'bold' }, | |
{ token: 'extract', foreground: '22227C', fontStyle: 'bold' }, | |
{ token: 'question', foreground: 'FFA500' }, | |
{ token: 'operator', foreground: '000FF0' , fontStyle: 'bold'}, | |
{ token: 'condition', foreground: '003000' , fontStyle: 'bold'}, | |
] | |
}); | |
// Register a completion item provider for the new language | |
monaco.languages.registerCompletionItemProvider('mySpecialLanguage', { | |
provideCompletionItems: () => { | |
var suggestions = [{ | |
label: 'simpleText', | |
kind: monaco.languages.CompletionItemKind.Text, | |
insertText: 'simpleText' | |
}, { | |
label: 'extract_', | |
kind: monaco.languages.CompletionItemKind.Keyword, | |
insertText: 'extract_${1:condition}', | |
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet | |
}, { | |
label: '?', | |
kind: monaco.languages.CompletionItemKind.Snippet, | |
insertText: "?", | |
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, | |
documentation: 'If-Else Statement' | |
}]; | |
return { suggestions: suggestions }; | |
} | |
}); | |
monaco.editor.create(document.getElementById("container"), { | |
theme: 'myCoolTheme', | |
value: getCode(), | |
language: 'mySpecialLanguage' | |
}); | |
function getCode() { | |
return [ | |
'- Конечно, я люблю дружить с людьми! Меня зовут Электра, я совсем еще молодой бот, и я очень люблю общаться с моими посетителями.', | |
'? Давайте познакомимся поближе! Как вас зовут? > extract_name $name', | |
'успех:', | |
' - Красивое имя, $name!', | |
'? Я еще учусь и не умею понимать пол человека по имени. Подскажите, какого вы пола? > extract_sex $sex', | |
'успех:', | |
' - Спасибо, постараюсь запомнить, что если человека зовут $name, значит у него $sex пол.', | |
'? Расскажите, а сколько вам лет? > extract_age $age', | |
'успех:', | |
' - $age это классный возраст!', | |
'? Я вот работаю ботом, но все еще учусь понимать людей! А вы учитесь или работаете? > extract_status $status', | |
'успех:', | |
' - Это прекрасно, у нас много общего! ok', | |
'> > check_saying $say_all', | |
'! $say_all', ' extract_name','x' | |
].join('\n'); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment