DokuWiki

It's better when it's simple

Инструменты пользователя

Инструменты сайта


ru:devel:parser

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
ru:devel:parser [2016-05-08 07:46] – [Основной вызов] 84.142.144.53ru:devel:parser [2016-07-27 23:05] (текущий) – [Обработчик] 93.74.81.132
Строка 330: Строка 330:
   -''%%listitem_open:%%''   -''%%listitem_open:%%''
   -''%%cdata: « This is the opening list item"%%''   -''%%cdata: « This is the opening list item"%%''
-  -''%%listitem_open:%%''+  -''%%listitem_close:%%''
   -''%%listitem_open:%%''   -''%%listitem_open:%%''
   -''%%cdata: « This is the second list item"%%''   -''%%cdata: « This is the second list item"%%''
-  -''%%listitem_open:%%''+  -''%%listitem_close:%%''
   -''%%listitem_open:%%''   -''%%listitem_open:%%''
   -''%%cdata: « This is the last list item"%%''   -''%%cdata: « This is the last list item"%%''
-  -''%%listitem_open:%%''+  -''%%listitem_close:%%''
   -''%%list_close:%%''   -''%%list_close:%%''
   -''%%p_open:%%''   -''%%p_open:%%''
Строка 1086: Строка 1086:
 $Parser->addMode('header',new Doku_Parser_Mode_Header()); $Parser->addMode('header',new Doku_Parser_Mode_Header());
  
-// Загружаем режимы, которые могут содержать разметку, которая может быть принята за заголовок+// Загружаем режимы, которые могут содержать разметку, 
 +// которая может быть принята за заголовок
 $Parser->addMode('listblock',new Doku_Parser_Mode_ListBlock()); $Parser->addMode('listblock',new Doku_Parser_Mode_ListBlock());
 $Parser->addMode('preformatted',new Doku_Parser_Mode_Preformatted());  $Parser->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); 
Строка 1110: Строка 1111:
 $instructions = $Parser->parse($doc); $instructions = $Parser->parse($doc);
  
-// Используем эти переменные, чтобы узнать, находимся ли мы внутри необходимого фрагмента+// Используем эти переменные, чтобы узнать, 
 +// находимся ли мы внутри необходимого фрагмента
 $inSection = FALSE; $inSection = FALSE;
 $startPos = 0; $startPos = 0;
Строка 1225: Строка 1227:
 </code> </code>
  
-**Замечание:** проверка строк, которые группируются в блоки, обрабатывается другим способом, описанным ниже.+**Замечание:** проверка ссылок, которые необходимо блокировать, обрабатывается другим способом, описанным ниже.
  
 ==== Проверка ссылок на спам ==== ==== Проверка ссылок на спам ====
Строка 1407: Строка 1409:
 ==== Добавление синтаксической конструкции ==== ==== Добавление синтаксической конструкции ====
  
-**Предупреждение:** приведённый ниже код ещё не протестирован --- это только пример.+**Предупреждение:** приведённый ниже код ещё не испытан --- это только пример.
  
 Простая задача по модификации парсера: этот пример будет добавлять тэг-«закладку», который может быть использован для создания якоря в документе для создания ссылки на него. Простая задача по модификации парсера: этот пример будет добавлять тэг-«закладку», который может быть использован для создания якоря в документе для создания ссылки на него.
Строка 1471: Строка 1473:
     // ...     // ...
          
-    // $match - строка, которая сравнивается анализатором с регулярным выражением для закладок+    // $match - строка, которая сравнивается анализатором 
 +    //          с регулярным выражением для закладок
     // $state идентифицирует тип совпадения (см. выше)     // $state идентифицирует тип совпадения (см. выше)
     // $pos - индекс байта первого символа совпадения в исходном документе     // $pos - индекс байта первого символа совпадения в исходном документе
Строка 1493: Строка 1496:
                     $this->__addCall('bookmark', array($name), $pos);                     $this->__addCall('bookmark', array($name), $pos);
                                  
-                // Если у закладки нет годного имени, пропускаем имени +                // Если у закладки нет годного имени, 
-                // through unmodified as plain text (cdata)+                //  пропускаем не меняя как cdata
                 } else {                 } else {
                                  
Строка 1748: Строка 1751:
 Этот синтаксис позволяет искать страницы вики и находить вопросы, которые предстоит решить, выделяя их в документе бросающимся в глаза стилем. Этот синтаксис позволяет искать страницы вики и находить вопросы, которые предстоит решить, выделяя их в документе бросающимся в глаза стилем.
  
-Особенностью данного синтаксиса является то, что он должен отображаться в отдельном блоке документа (например, внутри ''<div/>'', так что он с помощью CSS он может «плавать»). Это требует модификации класса ''Doku_Handler_Block'', который пробегает по всем инструкциям, после того, как обработчиком найдены все вхождения, и заботиться о добавлении тэгов ''<p/>''.+Особенностью данного синтаксиса является то, что он должен отображаться в отдельном блоке документа (например, внутри ''<div/>'', так что он с помощью CSS может «плавать»). Это требует модификации класса ''Doku_Handler_Block'', который пробегает по всем инструкциям, после того, как обработчиком найдены все вхождения, и заботиться о добавлении тэгов ''<p/>''.
  
 Режим парсера для этого синтаксиса может быть таким: Режим парсера для этого синтаксиса может быть таким:
Строка 2127: Строка 2130:
 После таблицы После таблицы
  
-Без сканирования текста множества раз (некая разновидность «предварительных» операций, которые всталяют «обёртку»), едва ли можно найти простое решение.+Без сканирования текста множества раз (некая разновидность «предварительных» операций, которые вставляют «обёртку»), едва ли можно найти простое решение.
  
 ==== Проблемы списков, таблиц и цитат ==== ==== Проблемы списков, таблиц и цитат ====
ru/devel/parser.1462686407.txt.gz · Последнее изменение: 2016-05-08 07:46 — 84.142.144.53

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki