Perl 6 Pod: Списки
Списки в Pod представлены в виде групп, следующих друг за другом блоков =item
. Каких либо специальных директив-"контейнеров" или разделителей для определения границ списков нет. Например:
The seven suspects are:
=item Happy
=item Dopey
=item Sleepy
=item Bashful
=item Sneezy
=item Grumpy
=item Keyser Soze
Элементы списка имеют неявный уровень вложенности:
The seven suspects are:
Happy
Dopey
Sleepy
Bashful
Sneezy
Grumpy
Keyser Soze
Списки могут быть многоуровневыми. Каждый уровень указывается с помощью блоков =item1
, =item2
, =item3
и т.д. В этом смысле блок =item
является синонимом =item1
. Например:
=item1 Animal
=item2 Vertebrate
=item2 Invertebrate
=item1 Phase
=item2 Solid
=item2 Liquid
=item2 Gas
=item2 Chocolate
Результат следующий:
• Animal
– Vertebrate
– Invertebrate
• Phase
– Solid
– Liquid
– Gas
– Chocolate
Обработчики Pod должны выдавать предупреждающее сообщение в случаях, когда разность между уровнями вложенности соседствующих блоков больше 1. Например, если за блоком =item1
следует блок =item3
.
Блоки =item
не могут содержать вложенные списки. Это значит, что даже элементы с более низким уровнем вложенности не могут присутствовать внутри =item
более высокого уровня.
=comment НЕВЕРНО...
=begin item1 --------------
The choices are: |
=item2 Liberty ==< Level 2 |==< Level 1
=item2 Death ==< Level 2 |
=item2 Beer ==< Level 2 |
=end item1 --------------
=comment ПРАВИЛЬНО...
=begin item1 ---------------
The choices are: |==< Level 1
=end item1 ---------------
=item2 Liberty ==================< Level 2
=item2 Death ==================< Level 2
=item2 Beer ==================< Level 2
Нумерованные списки
Нумерованный список состоит из элементов, имеющих конфигурационный параметр :numbered
.
=for item1 :numbered
Visito
=for item2 :numbered
Veni
=for item2 :numbered
Vidi
=for item2 :numbered
Vici
Приведенный код преобразуется в следующего вида текст:
1. Visito
1.1. Veni
1.2. Vidi
1.3. Vici
Схема нумерации целиком определяется средствами подготовки того или иного формата вывода. Поэтому возможен следующий вид нумерации:
1. Visito
1a. Veni
1b. Vidi
1c. Vici
или даже :
A: Visito
(i) Veni
(ii) Vidi
(iii) Vici
Эквивалентным свойству :numbered
в свойствах элемента, является указание #
первым символом
в тексте элемента списка.
=item1 # Visito
=item2 # Veni
=item2 # Vidi
=item2 # Vici
В случаях, когда требуется использовать символ #
первым без интерпретации его как признака нумерованного списка, используется код форматирования V<>
:
=item V<#> introduces a comment
или явное отрицание нумерации:
=for item :!numbered
# introduces a comment
Следующие друг за другом элементы первого уровня =item1
нумеруются последовательно. Их нумерация начинается заново, если их последовательность прерывается каким либо блоком Pod. В следующем примере, список прерывается параграфом:
The options are:
=item1 # Liberty
=item1 # Death
=item1 # Beer
The tools are:
=item1 # Revolution
=item1 # Deep-fried peanut butter sandwich
=item1 # Keg
Результат будет следующим:
The options are:
1. Liberty
2. Death
3. Beer
The tools are:
1. Revolution
2. Deep-fried peanut butter sandwich
3. Keg
Нумерация вложенных элементов ( =item2
, =item3
, =item4
) сбрасывается каждый раз, когда встречается элемент более высокого уровня вложенности.
Чтобы продолжить нумерацию =item1
, после разрыва списка блоком Pod, достаточно указать свойство :continued
:
=for item1
# Retreat to remote Himalayan monastery
=for item1
# Learn the hidden mysteries of space and time
I<????>
=for item1 :continued
# Prophet!
Указанный код будет преобразован в следующий текст:
1. Retreat to remote Himalayan monastery
2. Learn the hidden mysteries of space and time
????
3. Prophet!
Маркированные списки
Список элементов без указанного свойства :numbered
интерпретируется как маркированный (unordered) список. Элементы таких списков отмечаются маркерами, так называемыми буллитами (bullit)[1].
Так к примеру текст
=item1 Reading
=item2 Writing
=item3 'Rithmetic
может выглядеть следующим образом:
• Reading
— Writing
¤ 'Rithmetic
Как и в случае нумерованных списков, стиль маркеров различных уровней вложенности возлагается на программу преобразования в формат вывода.
Параграфы в элементах списков
Чтобы в составе элемента списка использовать несколько параграфов, используется разграниченная (delimited) форма блока =item
.
Let's consider two common proverbs:
=begin item :numbered
I<The rain in Spain falls mainly on the plain.>
This is a common myth and an unconscionable slur on the Spanish
people, the majority of whom are extremely attractive.
=end item
=begin item :numbered
I<The early bird gets the worm.>
In deciding whether to become an early riser, it is worth
considering whether you would actually enjoy annelids
for breakfast.
=end item
As you can see, folk wisdom is often of dubious value.
Результат будет следующий:
Let's consider two common proverbs:
The rain in Spain falls mainly on the plain.
This is a common myth and an unconscionable slur on the Spanish people, the majority of whom are extremely attractive.
The early bird gets the worm.
In deciding whether to become an early riser, it is worth considering whether you would actually enjoy annelids for breakfast.
As you can see, folk wisdom is often of dubious value.
Списки определений
Для создания списка определений используется блок =defn
. Данный блок идентичен блоку =item
в том, что серия последовательных блоков =defn
явно определяет список. Отличие заключается в том, что при преобразовании в HTML используются тэги < <DL>...</DL> >
вместо < <UL>...</UL> >
.
Первая непустая строка содержимого блока интерпретируется как термин, а оставшееся содержимое - как определение термина.
=defn MAD
Affected with a high degree of intellectual independence.
=defn MEEKNESS
Uncommon patience in planning a revenge that is worth while.
=defn
MORAL
Conforming to a local and mutable standard of right.
Having the quality of general expediency.
Как и другие, элементы списков определений могут быть пронумерованы. Для этого используется свойство :numbered
или символ #
в начале строки:
=for defn :numbered
SELFISH
Devoid of consideration for the selfishness of others.
=defn # SUCCESS
The one unpardonable sin against one's fellows.
[1]Маркер списка (буллит) - типографский знак, используемый для выделения элементов списка. Маркер списка