Download - Using perl6-pod

Transcript
Page 1: Using perl6-pod

Использование Perl 6 Pod

Александр Загацкий

14 мая 2011

Page 2: Using perl6-pod

Кто я

http://search.cpan.org/∼zag/lang/rakudo ( FreeBSD )книга "Все о Perl 6"

Использование Perl 6 Pod Александр Загацкий

Page 3: Using perl6-pod

Содержание

Основные моменты:

Введение в PodСтруктура PodФитчи PodРеализацииПрименение Pod

Использование Perl 6 Pod Александр Загацкий

Page 4: Using perl6-pod

Synopsis 26

18 октября 1994 В списке анонса perl 5.000 присутвуетподдержка POD

9 апреля 2005 Synopsis 26.Автор - Damian Conway.25 апреля 2007 Вторая редакция16 августа 2009 S26 - The Next Generation31 июля 2010 Последняя редакция. :!DRAFT

Использование Perl 6 Pod Александр Загацкий

Page 5: Using perl6-pod

POD -> Pod

POD - Perl Old Documentation

Pod в S26:Pod - является эволюцией POD. В сравнении с POD, Perl6 Pod более однороден, компактен и выразительнее. Podтакже характеризуется описательной нотацией разметки,

вместо презентационной.

Таким образом Pod избавился от слова "старый".

Использование Perl 6 Pod Александр Загацкий

Page 6: Using perl6-pod

Отличия POD от Pod: Границы блоков документции.

POD� �1 =head12 ...34 =cut� �

PodРазграниченные блоки / Delimited blocksБлоки-параграфы / Paragraph blocksСокращенные блоки / Abbreviated blocksБлоки-деклараторы / Declarator blocks (*)

Использование Perl 6 Pod Александр Загацкий

Page 7: Using perl6-pod

Параметры блоков

Конфигурационные параметры представлены парной нотациейв стиле perl6 (S02)

=for Image :title(’3 стиля для =table’)= :align(’center’) :!bordersrc/3block_datapng.png

Использование Perl 6 Pod Александр Загацкий

Page 8: Using perl6-pod

Равнозначность стилевых блоков

Типы блоков одинаково представлены во внутренней структуредокумента.

=begin table :caption<Table of Contents>

Constants 1

Variables 10

Subroutines 33

Everything else 57

=end table

=for table :caption<Table of Contents>

Constants 1

Variables 10

Subroutines 33

Everything else 57

=table

Constants 1

Variables 10

Subroutines 33

Everything else 57

Использование Perl 6 Pod Александр Загацкий

Page 9: Using perl6-pod

Блоки-деклараторы / Declarator blocks

Блоки без имен.Ассоциируются с ближайшим декларатором.� �1 sub fu ( #= This text stored in &fu.WHY2 Any $bar, #= This text stored in $bar.WHY3 Mode :$baz #= This text stored in $baz.WHY4 ) { ... }56 #= This is a special chainsaw7 my SwissArmy $chainsaw #= (It has a rocket launcher)89 say $chainsaw.WHY; # prints: This is a special chainsaw

10 # (It has a rocket launcher)� �

Использование Perl 6 Pod Александр Загацкий

Page 10: Using perl6-pod

access to pod/doc text by code

Использование Perl 6 Pod Александр Загацкий

Page 11: Using perl6-pod

Особенности Pod

=item, =itemN - уровни в списках=table определение таблицконтекстуальные псевдонимы=SYNOPSIS, =NAME ... - семантические блоки=config, :like - предварительное конфигурирование ипараметр :likeDOC use - расширяемость

Использование Perl 6 Pod Александр Загацкий

Page 12: Using perl6-pod

Уровни в списках

� �1 =item1 Animal2 =item2 Vertebrate3 =item2 Invertebrate45 =item1 Phase6 =item2 Solid7 =item2 Chocolate� �

Результат

* Animal- Vertebrate- Invertebrate

* Phase- Solid- Chocolate

Использование Perl 6 Pod Александр Загацкий

Page 13: Using perl6-pod

Таблицы (=table)

Использование Perl 6 Pod Александр Загацкий

Page 14: Using perl6-pod

Таблицы (=table)

Использование Perl 6 Pod Александр Загацкий

Page 15: Using perl6-pod

Контекстуальные псевдонимы

Включение кода без копирования� �1 # This is actual code...2 sub hash_function ($key)3 =alias HASHCODE4 {5 my $hash = 0;6 for $key.split("") -> $char {7 $hash = $hash*33 + $char.ord;8 }9 return $hash;

10 }11 =begin pod12 An ancient (but fast) hashing algorithm is used:13 =begin code :allow<A>14 A<HASHCODE>15 =end code16 =end pod� �

Использование Perl 6 Pod Александр Загацкий

Page 16: Using perl6-pod

Семантические блоки

=begin SYNOPSISuse Magic::Parsermy Magic::Parser $parser .= new();my $tree = $parser.parse($fh);

=end SYNOPSIS

Использование Perl 6 Pod Александр Загацкий

Page 17: Using perl6-pod

=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 Александр Загацкий

Page 18: Using perl6-pod

Расширяемость

Режим документации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 Александр Загацкий

Page 19: Using perl6-pod

1.Реализация на perl5 (Domian Conway)

http://search.cpan.org/dist/Perl6-Perldoc/

Использование Perl 6 Pod Александр Загацкий

Page 20: Using perl6-pod

2.Реализация на perl5: Perl6::Pod

http://search.cpan.org/dist/Perl6-Pod/

Использование Perl 6 Pod Александр Загацкий

Page 21: Using perl6-pod

3.Реaлизация на Rakudo (Martin Berends)

http://github.com/eric256/perl6-examples/tree/master/bin

Использование Perl 6 Pod Александр Загацкий

Page 22: Using perl6-pod

4.Реaлизация на Rakudo (SUPERNOVA)

http://github.com/lue/SUPERNOVA

Использование Perl 6 Pod Александр Загацкий

Page 23: Using perl6-pod

5.Google Summer of Code

"Pod parser for Rakudo"

Использование Perl 6 Pod Александр Загацкий

Page 24: Using perl6-pod

Презентации: 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.jpg4 =end Slide� �

+ возможность ввода формул

Γ0S0(1− α)2 = kdα2 ⇒(1− α

α

)2=

kd

Γ0S0

Использование Perl 6 Pod Александр Загацкий

Page 25: Using perl6-pod

Perl6::Pod::Slide: Списки

Перечисляемые списки:

=item руководства для конечных пользователей=item Wiki, CMS ...=item Элементы сруктуры документа

Результат:

руководства для конечных пользователейWiki, CMS ...Элементы сруктуры документа

Использование Perl 6 Pod Александр Загацкий

Page 26: Using perl6-pod

Perl6::Pod::Slide: Списки

Перечисляемые списки:

=item руководства для конечных пользователей=item Wiki, CMS ...=item Элементы сруктуры документа

Результат:

руководства для конечных пользователейWiki, CMS ...Элементы сруктуры документа

Использование Perl 6 Pod Александр Загацкий

Page 27: Using perl6-pod

Perl6::Pod::Slide: Списки и атрибуты

Нумерованные списки и атрибут :pause:

=for item :numberedСписки=for item :numbered :pauseТаблицы=for item :numberedУровни заголовков

Результат:

1 Списки2 Таблицы3 Уровни заголовков

Использование Perl 6 Pod Александр Загацкий

Page 28: Using perl6-pod

Perl6::Pod::Slide: Списки и атрибуты

Нумерованные списки и атрибут :pause:

=for item :numberedСписки=for item :numbered :pauseТаблицы=for item :numberedУровни заголовков

Результат:

1 Списки2 Таблицы

3 Уровни заголовков

Использование Perl 6 Pod Александр Загацкий

Page 29: Using perl6-pod

Perl6::Pod::Slide: Списки и атрибуты

Нумерованные списки и атрибут :pause:

=for item :numberedСписки=for item :numbered :pauseТаблицы=for item :numberedУровни заголовков

Результат:

1 Списки2 Таблицы3 Уровни заголовков

Использование Perl 6 Pod Александр Загацкий

Page 30: Using perl6-pod

Perl6::Pod::Slide: Создание pdf

Экспорт в Tex:

pod6slide < tech_docs.pod > tech_docs.tex

Конвертация в Pdf:

pdflatex tech_docs.tex

Использование Perl 6 Pod Александр Загацкий

Page 31: Using perl6-pod

zag.ru: Формат для блога

Расширяем для поддержки доп функционала. Например:=Image

Использование Perl 6 Pod Александр Загацкий

Page 32: Using perl6-pod

Формат для книги о Perl 6

Книга "Все о Perl 6". http://zag.ru/perl6-book/

Использование Perl 6 Pod Александр Загацкий

Page 33: Using perl6-pod

Глава посвященная Pod

Использование Perl 6 Pod Александр Загацкий

Page 34: Using perl6-pod

Perl 6 Pod to HTML: http://zag.ru/perl6-pod/

Использование Perl 6 Pod Александр Загацкий

Page 35: Using perl6-pod

Вопросы ?

S26 Documentationhttps://github.com/zag/specs/raw/master/S26-documentation.podhome page, mail http://zag.ru, zag(at)cpan.org

Использование Perl 6 Pod Александр Загацкий


Top Related