Serj Kalichev 1 year ago
parent
commit
4c069c6cd7
1 changed files with 55 additions and 0 deletions
  1. 55 0
      docs/klish3.ru.md

+ 55 - 0
docs/klish3.ru.md

@@ -323,6 +323,61 @@ SEQ сам может быть элементом контейнера SWITCH.
 команду, соответствующую нажатой горячей клавише.
 
 
+### Ссылки на элементы
+
+Некоторые теги имеют атрибуты, которые являются ссылками на другие, определенные
+в файлах конфигурации, элементы. Например `VIEW` имеет атрибут `ref`, с помощью
+которого в текущем месте схемы создается "копия" стороннего `VIEW`. Или тег
+`PARAM` имеет атрибут `ptype`, с помощью которого ссылается на `PTYPE`, определяя
+тип параметра. Для организации ссылок в klish предусмотрен свой "язык". Можно
+сказать это сильно упрощенный аналог путей в файловой системе или XPath.
+
+Путь до элемента в klish набирается, указывая все его родительские элементы с
+разделителем `/`. Именем элемента считается значение его поля `name`. Путь
+начинается также с символа `/`, обозначая корневой элемент.
+
+> Относительные пути в данный момент не поддерживаются
+
+```
+<KLISH>
+
+<PTYPE name="PTYPE1">
+	<ACTION sym="sym1"\>
+</PTYPE>
+
+<VIEW name="view1">
+
+	<VIEW name="view1_2">
+		<COMMAND name="cmd1">
+			<PARAM name="par1" ptype="/PTYPE1"/>
+		</COMMAND>
+	</VIEW>
+
+</VIEW>
+
+<VIEW name="view2">
+
+	<VIEW ref="/view1/view1_2"/>
+
+</VIEW>
+
+</KLISH>
+```
+
+Параметр "par1" ссылается на `PTYPE`, используя путь `/PTYPE1`. Имена типов
+принято обозначать большими буквами, чтобы проще отличать типы от других
+элементов. Здесь тип определен на самом верхнем уровне схемы. Базовые типы
+обычно так и определяются, но `PTYPE` не обязан находится на верхнем уровне и
+может быть вложен во `VIEW` или даже `PARAM`. В таком случае он будет иметь
+более сложный путь.
+
+`VIEW` с именем "view2" импортирует команды из `VIEW` с именем "view1_2",
+используя путь `/view1/view1_2`.
+
+Если, предположим, понадобится ссылка на параметр "par1", то путь будет выглядеть
+так - `/view1/view1_2/cmd1/par1`.
+
+
 ## Теги