Skip to content

Latest commit

 

History

History
355 lines (240 loc) · 15.9 KB

Instruction.md

File metadata and controls

355 lines (240 loc) · 15.9 KB

Storytailor. Инструкция

Презентация storytailor

Актуально для версий 0.0.x. Примите во внимание, что Storytailor работает в экспериментальном режиме, и некоторые правила могут быть в дальнейшем изменены

Это - краткая инструкция пользователя языка программирования Storytailor в Microsoft Visual Studio Code

Начало работы

Установите Microsoft Visual Studio Code vscode

Установите Storytailor плагин для vscode пустая папка

Начинаем

Самый простой способ приступить к работе - это открыть пустую папку в vscode и скопировать в нее тестовый проект

Откройте пустую папку пустая папка

Кликните правой клавишей мыши в корне проекта и выберите из выпадающего меню "Initialize example project in a working root" скопировать тестовый проект в корневую папку

Эта операция скопирует в корневую папку тестовый проект. Учтите, что если в корневой папке уже есть такие файлы, то они будут перетерты. Подтверждайте копирование подтвердить копирование

Тестовый проект скопирован в корневую папку. Примерно так должна выглядеть файловая структура проекта тестовый проект создан

Обновите node-модули. Для этого

Откройте терминал npm install в терминале

Вбейте комманду "npm install" или "npm i" и нажмите "ENTER" npm install в терминале

node-модули обновлены npm install в терминале

терминал можно закрыть закрыть терминал

Исходные файлы истории хранятся в папке story (*.sts) исходники истории

Подготовка проекта завершена. Это его рабочее состояние

Теперь выполним сборку тестового проекта.

Откройте файл с исходниками истории. Например, story/index.sts

Открывайте Command Palette (Меню View -> Command Palette или комбинация клавиш Ctrl+Shift+P) command palette

command palette openned

Выбирайте комманду "Compile: Compile and show preview" (по-умолчанию Ctrl+Alt+P) compile and show preview

В папке src сохраняется история на typescript. В папке out будет эта история на javascript compiled story

Когда сборка истории завершена, открывается предпросмотр compiled story

Окно предпросмотра можно размещать как удобно compiled story compiled story

Текст, показанный в окне предпросмотра, сохраняется в файл "story output.txt" в корне проекта story output

Для всех (база)

Упрощенная инструкция затрагивает только базовый функционал. Этого хватит, чтобы собрать сценарий, и предполагается, что пользователю не понадобится никаких технических знаний

Текст истории

Давайте удалим все содержимое файла story/index.sts и начнем историю с чистого листа

Обычный текст

Обычный текст попадает в финальную сборку "как есть", без изменений simple text

Комментарии

Комментарии - это фрагмент текста, который не пойдет в финальную сборку. Комментарии нужны для самих разработчиков истории. Весь текст от символов // и до конца строки будет считаться комментарием comments

Спец-символы (перенос строки, табуляция)

Есть три спец-символа, которые попадают в финальную сборку нестандартно.

Это символ переноса строки endline symbol

Символы конца строки и табуляции endline and tab symbols

Экранирование спец-символов

Экранирование спец-символов - это маркировка этих символов таким образом, чтобы компилятор не считал их спец-символами. Вот пример: escaped symbols

Переменные

Если оформить текст в виде списка, то элементы этого списка можно будет вставлять в других местах истории Переменная пишется так (отступ из пробелов, потом звездочка, потом пробел, потом название переменной):

* Название Переменной
  Содержание переменной пишется
  с новой строки и отступом от края 
  на 2 (два) пробела больше, чем у названия
  
  * Подпеременная
    Содержание подпеременной

Вот пример объявленной переменной outer variables

Вставки в текст

// Вставка в текст начинается со звездочки (*) и заканчивается точкой с запятой (;)
// Например:
Текст до вставки переменной, *Переменная; текст после вставки переменной

А вот переменная вставлена в текст, и что из этого получается: outer variables inserted

Многоуровневые переменные

outer variables hierarchy

// если содержание переменной задается через знак "=", то у нее не может быть вложенных переменных:

* Переменная = 100500
  * Подпеременная // Ошибка! Значение переменной "Переменная" - цифра, у нее не может быть вложенных переменных

Вставка в текст мат. выражения

А вот переменная вставлена в текст, и что из этого получается: include expression

Операции над данными

А вот так можно между строк совершать операции над данными: insert operations

Импорт других файлов

Мы работаем в файле story/index.sts Давайте посмотрим, что у нас еще есть в папке story: external file

Импортируем этот файл к нам import characters

И вставим персонажа из того файла в наш текст inserted imported characters

Для программистов

Усложненная инструкция. Предполагается, что без объяснений ее должны понять программисты и всякие технари

Идея

Storytailor задуман как диалект javascript по аналогии с typescript. Каждый sts модуль из папки projectRoot/story компилируется в соответствующий .ts файл и складывается это все в папке projectRoot/src. После чего typescript компилирует содержимое папки projectRoot/src в projectRoot/out - это уже javascript файлы. compiled typescript compiled javascript

Как это работает

строка формата (звездочка, пробел, скоп с инструкциями "{}")

-> storytailor
* {
  instructions;
}

компилируется как скоп с инструкциями

-> typescript
{
  instructions;
}

operations

Строка без спец-символов компилируется как инструкция:

  -> storytailor:
  строка без спец-символов

  -> typescript
  __context['__text'] = [...__context['__text'], `строка без спец-символов`];

Строка с вставкой:

  -> storytailor
  строка с *Переменная;

  -> typescript
  __context['__text'] = [...__context['__text'], `строка с ${__serializer.serialize( __context['Переменная'], '\r\n' )} `];

Переменная

  -> storytailor
  * Переменная

  -> typescript
  __context['Переменная'] = __context['Переменная'] || { __text: [] };

№2

  -> storytailor
  * Переменная = 100500

  -> typescript
  __context['Переменная'] = 100500;

Raw-переменная (с префиксом "@")

  -> storytailor
  * { @Переменная = 100500; }

  -> typescript
  Переменная = 100500;

Синтаксис

Строки, числа, булевые

Строка

 "Содержание строки"

Строка с инклудами (инклуд пишется так: звездочка, потом без пробела экспрешн, а в конце перенос строки или точка с запятой: *includeExpression;)

 "Содержание строки *include1; *include2;"

Число

 100500

Булевые

  true false

Операторы

  +
  -
  /
  *
  = 
  ==
  ===
  !
  != 
  !==
  <
  >
  <=
  >=
  |
  ||
  &
  &&
  ++
  --

Функции

varname = function (params) {
  instruction1;
  ...
  instruction2;
}

Объекты, массивы

Объекты

let obj = {
  ...otherObj,
  fieldName: "fieldValue",
  otherVariable,
  "fieldName2": 100500,
  "isTrue": false
}

Конструктор

let obj = new Object(prototype);

Массивы

let array = [
  ...otherArray,
  newValue
] 

Инструкции

Import

import * as varname from './module/Path'

If

if (condition) {
  instructions;
} else if (condition2) {
  instructions2;
} else {
  instructions3
}

For

for (var i; @i < 10; @i++) {
 instructions;  
}

For In

for (let key in obj) {
  instructions;
}

While

while (condition) {
  instructions;
}

Do while

do {
  instructions;
} while (condition)

Switch case

switch (condition) {

  case condition: 
    instructions;
  break;

  default:
    instructions;
  break;

}

Delete

delete obj.field;

Сидоренко Евгений, февраль 2019