Serj Kalichev 1 year ago
parent
commit
52882c002b
1 changed files with 65 additions and 0 deletions
  1. 65 0
      docs/klish3.ru.md

+ 65 - 0
docs/klish3.ru.md

@@ -1118,6 +1118,71 @@ SEQ сам может быть элементом контейнера SWITCH.
 
 #### Атрибут `ref`
 
+Элемент схемы может быть ссылкой на другой элемент схемы. Создание элемента "#1",
+являющегося ссылкой на элемент "#2" эквивалентно тому, что элемент "#2" будет
+объявлен в том месте схемы, где расположен элемент "#1". Вернее будет сказать,
+что это эквивалентно созданию копии элемента "#2" на том месте, где определен
+элемент "#1".
+
+Если элемент являетя ссылкой, то в нем определен атрибут `ref`. Значение атрибута
+- ссылка на целевой элемент схемы.
+
+```
+<KLISH>
+
+<PTYPE name="ptype1">
+	<ACTION sym="INT"/>
+</PTYPE>
+
+<VIEW name="view1">
+	<COMMAND name="cmd1"/>
+</VIEW>
+
+<VIEW name="view2">
+	<VIEW ref="/view1"/>
+	<COMMAND name="cmd2">
+		<PARAM name="param1" ptype="/ptype1"/>
+		<PARAM name="param2">
+			<PTYPE ref="/ptype1"/>
+		</PARAM>
+	</COMMAND>
+</VIEW>
+
+<VIEW name="view3">
+	<COMMAND ref="/view2/cmd2"/>
+</VIEW>
+
+<VIEW name="view4">
+	<COMMAND name="do">
+		<VIEW ref="/view1"/>
+	</COMMAND>
+</VIEW>
+
+</KLISH>
+```
+
+В примере "view2" содержит ссылку на "view1", что эквивалентно объявлению копии
+"view1" внутри "view2". А это в свою очередь означает, что команда "cmd1" станет
+доступна во "view2".
+
+В другом `VIEW` с именем "view3" объявлена ссылка на команду "cmd2". Таким
+образом отдельная команда становится доступна внутри "view3".
+
+Параметры "param1" и "param2" имеют одинаковый тип `/ptype1`. Ссылка на тип
+может быть прописана с помощью атрибута `ptype`, либо с помощью вложенного
+тега `PTYPE`, который является ссылкой на ранее объявленный `PTYPE`. В итоге
+типы двух объявленных параметров полностью эквивалентны.
+
+В последне примере ссылка на `VIEW` заключена внутрь тега `COMMAND`. В данном
+случае это будет означать, что если мы работаем с "view4", то команды из
+"view1" будут доступны с префиксом "do". Т.е. если оператор находится во
+`VIEW` с именем "view4", то он должен написать в командной строке `do cmd1`,
+чтобы выполнить команду "cmd1".
+
+С помощью ссылок можно организовать повторное использование кода. Например
+объявить блок "стандартных" параметров и потом с помощью ссылок вставлять
+этот блок во все команды, где параметры повторяются.
+
 
 #### Атрибут `restore`