From 1cf871fbc181596aa65ed238731e92072e328955 Mon Sep 17 00:00:00 2001
From: Mihail Mitrovanov
Date: Fri, 13 Jun 2025 22:01:46 +0300
Subject: [PATCH] More about mroacgt
---
.idea/workspace.xml | 101 +++++++++++++++++++++++++++++++++-----------
mroacgt.html | 31 +++++++++++++-
2 files changed, 105 insertions(+), 27 deletions(-)
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index b2c2900..1429890 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,8 +4,9 @@
-
-
+
+
+
@@ -15,18 +16,18 @@
- {
+ "lastFilter": {
+ "state": "OPEN",
+ "assignee": "YaslePoy"
}
-}]]>
-
+ {
+ "selectedUrlAndAccountId": {
+ "url": "https://github.com/YaslePoy/micialware.ru.git",
+ "accountId": "12da5cab-63a9-4f0e-b1bf-1c1551d039ec"
}
-}]]>
+}{
"associatedIndex": 6
}
@@ -35,20 +36,23 @@
- {
+ "keyToString": {
+ "JavaScript Debug.terms-basic.html.executor": "Run",
+ "JavaScript Debug.terms-unlimited.html.executor": "Debug",
+ "ModuleVcsDetector.initialDetectionPerformed": "true",
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "RunOnceActivity.git.unshallow": "true",
+ "git-widget-placeholder": "master",
+ "node.js.detected.package.eslint": "true",
+ "node.js.detected.package.tslint": "true",
+ "node.js.selected.package.eslint": "(autodetect)",
+ "node.js.selected.package.tslint": "(autodetect)",
+ "nodejs_package_manager_path": "npm",
+ "settings.editor.selected.configurable": "preferences.keymap",
+ "vue.rearranger.settings.migration": "true"
}
-}]]>
+}
@@ -66,10 +70,57 @@
+
+
+
+
+
+ 1749152674209
+
+
+
+ 1749152674209
+
+
+
+ 1749199899698
+
+
+
+ 1749199899698
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ file://$PROJECT_DIR$/terms-basic.html
+ 378
+
+
+
+
+
\ No newline at end of file
diff --git a/mroacgt.html b/mroacgt.html
index 3f869bc..abbb38a 100644
--- a/mroacgt.html
+++ b/mroacgt.html
@@ -72,6 +72,7 @@ context.AddSource($"{className}.g.cs", SourceText.From(code, Encoding.UTF8));
перекликается с шаблонами T4. Однако в отличие от T4, код исполняется по-нормальному в среде C# кода, а не как
то там среди генерируемого кода.
+
Теги
Каждый тег в файле, который определяет так называемый "Документ", начинается с
<!
после чего идет тип тега, и заканчивается
@@ -92,11 +93,37 @@ context.AddSource($"{className}.g.cs", SourceText.From(code, Encoding.UTF8));
. Между головой и хвостом тега заключается текст, который он определяет.
- Например, тут тег <!D someLinkName> определяет текст "qwerty text", а <!L someLinkName> вставляет его.
+ Например, тут тег
+ <!D someLinkName>
+ определяет текст "qwerty text", а
+ <!L someLinkName>
+ вставляет его.
При компиляции такого документа шаблона на выходе получится qwerty textqwerty textqwerty text потому что были прописаны 3 ссылки на одно и то же определение
+
При компиляции такого документа шаблона на выходе получится
+ qwerty textqwerty textqwerty text
+ потому что были прописаны 3 ссылки на одно и то же определение
+
+
Последним компонентом этой библиотеки является Insert tag. Он обозначается как
+ <!I>
+ . Он работает похоже на Link tag, но он работает динамически, а не статически. То, что этот тег должен означать
+ задается еще до компиляции документа. Задать содержание тега можно при помощи метода Insert у документа шаблона.
+ В этот тег можно вставить строку или другой тег, например тег Define.
+ Тег Insert может менять логику своей работы при помощи опций. Они указываются после названия через пробел.
+
+
+ На данный момент реализованно 2 опции: repeat и separate. Они связаны между собой и параметр separate не может
+ быть использован без repeat. Опция repeat позволяет не просто заменять указанный Insert тег по его имени на
+ строку
+ или другой тег, а добавлять копию этого Insert тега после выбранного неограниченное количество раз и вставлять
+ контент уже в него. Для использования этой опции нужно прописать после названия
+ r
+
+
+
<!I someInsertName r sep nextLine><!D nextLine>
+<!D>