Pod is an evolution of Perl 5's POD markup. Compared to POD, Perl 6's Pod is much more
uniform, somewhat more compact, and considerably more expressive.
Established in 2005 specification has undergone several revisions and is currently stable.The specification is written in Perl 6 Pod and is a good means of testing implementations.
There are several implementations in Perl 5 and Perl 6.
I'll talk about the differences from Perl 5 POD, key features and how I use Perl 6 Pod.
2. Кто я
http://search.cpan.org/∼zag/
lang/rakudo ( FreeBSD )
книга "Все о Perl 6"
Использование Perl 6 Pod Александр Загацкий
3. Содержание
Основные моменты:
Введение в Pod
Структура Pod
Фитчи Pod
Реализации
Применение Pod
Использование Perl 6 Pod Александр Загацкий
4. Synopsis 26
18 октября 1994 В списке анонса perl 5.000 присутвует
поддержка POD
9 апреля 2005 Synopsis 26.Автор - Damian Conway.
25 апреля 2007 Вторая редакция
16 августа 2009 S26 - The Next Generation
31 июля 2010 Последняя редакция. :!DRAFT
Использование Perl 6 Pod Александр Загацкий
5. POD -> Pod
POD - Perl Old Documentation
Pod в S26:
Pod - является эволюцией POD. В сравнении с POD, Perl
6 Pod более однороден, компактен и выразительнее. Pod
также характеризуется описательной нотацией разметки,
вместо презентационной.
Таким образом Pod избавился от слова "старый".
Использование Perl 6 Pod Александр Загацкий
6. Отличия POD от Pod: Границы блоков документции.
POD
§ ¤
1 =head1
2 ...
3
4 =cut
¦ ¥
Pod
Разграниченные блоки / Delimited blocks
Блоки-параграфы / Paragraph blocks
Сокращенные блоки / Abbreviated blocks
Блоки-деклараторы / Declarator blocks (*)
Использование Perl 6 Pod Александр Загацкий
7. Параметры блоков
Конфигурационные параметры представлены парной нотацией
в стиле perl6 (S02)
=for Image :title(’3 стиля для =table’)
= :align(’center’) :!border
src/3block_datapng.png
Использование Perl 6 Pod Александр Загацкий
8. Равнозначность стилевых блоков
Типы блоков одинаково представлены во внутренней структуре
документа.
Использование Perl 6 Pod Александр Загацкий
9. Блоки-деклараторы / Declarator blocks
Блоки без имен.Ассоциируются с ближайшим декларатором.
§ ¤
1 sub fu ( #= This text stored in &fu.WHY
2 Any $bar, #= This text stored in $bar.WHY
3 Mode :$baz #= This text stored in $baz.WHY
4 ) { ... }
5
6 #= This is a special chainsaw
7 my SwissArmy $chainsaw #= (It has a rocket launcher)
8
9 say $chainsaw.WHY; # prints: This is a special chainsaw
10 # (It has a rocket launcher)
¦ ¥
Использование Perl 6 Pod Александр Загацкий
10. access to pod/doc text by code
Использование Perl 6 Pod Александр Загацкий
11. Особенности Pod
=item, =itemN - уровни в списках
=table определение таблиц
контекстуальные псевдонимы
=SYNOPSIS, =NAME ... - семантические блоки
=config, :like - предварительное конфигурирование и
параметр :like
DOC use - расширяемость
Использование Perl 6 Pod Александр Загацкий
12. Уровни в списках
§ ¤
1 =item1 Animal
2 =item2 Vertebrate
3 =item2 Invertebrate
4
5 =item1 Phase
6 =item2 Solid
7 =item2 Chocolate
¦ ¥
Результат
* Animal
- Vertebrate
- Invertebrate
* Phase
- Solid
- Chocolate
Использование Perl 6 Pod Александр Загацкий
15. Контекстуальные псевдонимы
Включение кода без копирования
§ ¤
1 # This is actual code...
2 sub hash_function ($key)
3 =alias HASHCODE
4 {
5 my $hash = 0;
6 for $key.split("") -> $char {
7 $hash = $hash*33 + $char.ord;
8 }
9 return $hash;
10 }
11 =begin pod
12 An ancient (but fast) hashing algorithm is used:
13 =begin code :allow<A>
14 A<HASHCODE>
15 =end code
16 =end pod
¦ ¥
Использование Perl 6 Pod Александр Загацкий
16. Семантические блоки
=begin SYNOPSIS
use Magic::Parser
my Magic::Parser $parser .= new();
my $tree = $parser.parse($fh);
=end SYNOPSIS
Использование Perl 6 Pod Александр Загацкий
17. =config и :like
Предварительное конфигурирование
=config head1 :formatted<B U> :numbered
=config head2 :like<head1> :formatted<I>
=config head3 :formatted<U>
=config head4 :like<head3> :formatted<I>
=config C<> :allow<E I>
:like - блок имеет такие же параметры форматирования как
имя блока указанного в качестве значения.
=for para :like<head4>
some text
Использование Perl 6 Pod Александр Загацкий
18. Расширяемость
Режим документации
perl –doc DBI::DBD::Metadata
Подключение расширений
DOC use Pod6::Image;
=Image http://example.com/perl_logo_32x104.png
Переопределение Pod обработчика:
DOC INIT {
use My::Pod::To::Text;
pod_to_text( $=POD );
exit(0);
}
Использование Perl 6 Pod Александр Загацкий
19. 1.Реализация на perl5 (Domian Conway)
http://search.cpan.org/dist/Perl6-Perldoc/
Использование Perl 6 Pod Александр Загацкий
20. 2.Реализация на perl5: Perl6::Pod
http://search.cpan.org/dist/Perl6-Pod/
Использование Perl 6 Pod Александр Загацкий
21. 3.Реaлизация на Rakudo (Martin Berends)
http://github.com/eric256/perl6-examples/tree/master/bin
Использование Perl 6 Pod Александр Загацкий
22. 4.Реaлизация на Rakudo (SUPERNOVA)
http://github.com/lue/SUPERNOVA
Использование Perl 6 Pod Александр Загацкий
23. 5.Google Summer of Code
"Pod parser for Rakudo"
Использование Perl 6 Pod Александр Загацкий
24. Презентации: Perl6::Pod::Slide
Perl6::Pod::Slide: Latex + beamer
§ ¤
1 =begin Slide :title(’5.Google Summer of Code’)
2 "Pod parser for Rakudo"
3 =Image i/p6-gscode.jpg
4 =end Slide
¦ ¥
+ возможность ввода формул
1−α 2 kd
Γ0 S0 (1 − α)2 = kd α2 ⇒ =
α Γ0 S0
Использование Perl 6 Pod Александр Загацкий
25. Perl6::Pod::Slide: Списки
Перечисляемые списки:
=item руководства для конечных пользователей
=item Wiki, CMS ...
=item Элементы сруктуры документа
Результат:
Использование Perl 6 Pod Александр Загацкий
26. Perl6::Pod::Slide: Списки
Перечисляемые списки:
=item руководства для конечных пользователей
=item Wiki, CMS ...
=item Элементы сруктуры документа
Результат:
руководства для конечных пользователей
Wiki, CMS ...
Элементы сруктуры документа
Использование Perl 6 Pod Александр Загацкий
27. Perl6::Pod::Slide: Списки и атрибуты
Нумерованные списки и атрибут :pause:
=for item :numbered
Списки
=for item :numbered :pause
Таблицы
=for item :numbered
Уровни заголовков
Результат:
Использование Perl 6 Pod Александр Загацкий
28. Perl6::Pod::Slide: Списки и атрибуты
Нумерованные списки и атрибут :pause:
=for item :numbered
Списки
=for item :numbered :pause
Таблицы
=for item :numbered
Уровни заголовков
Результат:
1 Списки
2 Таблицы
Использование Perl 6 Pod Александр Загацкий
29. Perl6::Pod::Slide: Списки и атрибуты
Нумерованные списки и атрибут :pause:
=for item :numbered
Списки
=for item :numbered :pause
Таблицы
=for item :numbered
Уровни заголовков
Результат:
1 Списки
2 Таблицы
3 Уровни заголовков
Использование Perl 6 Pod Александр Загацкий
30. Perl6::Pod::Slide: Создание pdf
Экспорт в Tex:
pod6slide < tech_docs.pod > tech_docs.tex
Конвертация в Pdf:
pdflatex tech_docs.tex
Использование Perl 6 Pod Александр Загацкий
31. zag.ru: Формат для блога
Расширяем для поддержки доп функционала. Например:
=Image
Использование Perl 6 Pod Александр Загацкий
32. Формат для книги о Perl 6
Книга "Все о Perl 6". http://zag.ru/perl6-book/
Использование Perl 6 Pod Александр Загацкий
34. Perl 6 Pod to HTML: http://zag.ru/perl6-pod/
Использование Perl 6 Pod Александр Загацкий
35. Вопросы ?
S26 Documentation
https://github.com/zag/specs/raw/master/S26-
documentation.pod
home page, mail http://zag.ru, zag(at)cpan.org
Использование Perl 6 Pod Александр Загацкий