40
Perl 6 Pod - современный формат ведения документации Загацкий Александр 4 июня 2011

Perl6pod devconf

  • Upload
    zagru

  • View
    549

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Perl6pod devconf

Perl 6 Pod - современный формат ведения документации

Загацкий Александр4 июня 2011

Page 2: Perl6pod devconf

Кто я

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

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 3: Perl6pod devconf

Содержание

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

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

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 4: Perl6pod devconf

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: Perl6pod devconf

POD -> Pod

POD - Plain Old Documentation

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

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

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

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 6: Perl6pod devconf

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

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

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

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 7: Perl6pod devconf

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

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

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

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 8: Perl6pod devconf

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

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

=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: Perl6pod devconf

Блоки-деклараторы / 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: Perl6pod devconf

access to pod/doc text by code

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 11: Perl6pod devconf

Доступ к документации из кода

Программы будущего будут согласовывать свои действия сдокументацией !

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 12: Perl6pod devconf

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

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

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 13: Perl6pod devconf

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

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

Результат

* Animal- Vertebrate- Invertebrate

* Phase- Solid- Chocolate

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 14: Perl6pod devconf

Таблицы (=table)

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 15: Perl6pod devconf

Таблицы (=table)

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 16: Perl6pod devconf

Именованные псевдонимы

=alias PROGNAME Earl Irradiatem Eventually=alias VENDOR 4D Kingdoms=alias TERMSURL L<http://www.4dk.com/eie>

The use of A<PROGNAME> is subject to the termsand conditions laid out by A<VENDOR>,as specified at A<TERMSURL>.

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 17: Perl6pod devconf

Именованные псевдонимы.

A<$?FILE> - имя теущего файлаA<$?ROUTINE> - подпрограмма, внутри которой размещенблок PodA<$?CLASS> - текущий классПрограммные константы в документации:� �

1 # Actual code...2 constant $GROWTH_RATE of Num where 0..* = 1.6;3 =pod4 =head4 Standard Growth Rate5 The standard growth rate is assumed6 to be A<$GROWTH_RATE>.� �

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 18: Perl6pod devconf

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

Включение кода без копирования� �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 19: Perl6pod devconf

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

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

=end SYNOPSIS

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 20: Perl6pod devconf

=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 21: Perl6pod devconf

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

Режим документации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 22: Perl6pod devconf

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

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

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 23: Perl6pod devconf

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

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

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 24: Perl6pod devconf

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

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

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 25: Perl6pod devconf

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

http://github.com/lue/SUPERNOVA

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 26: Perl6pod devconf

5.Google Summer of Code

"Pod parser for Rakudo"

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 27: Perl6pod devconf

Презентации: 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 28: Perl6pod devconf

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

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

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

Результат:

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

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 29: Perl6pod devconf

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

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

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

Результат:

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

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 30: Perl6pod devconf

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

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

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

Результат:

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

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 31: Perl6pod devconf

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

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

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

Результат:

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

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

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 32: Perl6pod devconf

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

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

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

Результат:

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

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 33: Perl6pod devconf

Perl6::Pod::Slide: Вставка кода

Perl 6

=for code :lang(’Perl’)my @keys = <a b c d e>;my @vals = ^5;my %hash = @keys Z @vals;

Результат:� �1 my @keys = <a b c d e>;2 my @vals = ^5;3 my %hash = @keys Z @vals;� �

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 34: Perl6pod devconf

Perl6::Pod::Slide: Вставка кода

JavaScript

=begin code :lang(’JavaScript’)var keys = [’a’, ’b’, ’c’];var values = [1, 2, 3];var map = {}; //this is a commentfor(var i in keys) {map[ keys[i] ] = values[i];

}=end code

Результат:� �1 var keys = [’a’, ’b’, ’c’];2 var values = [1, 2, 3];3 var map = {}; //this is a comment4 for(var i in keys) {5 map[ keys[i] ] = values[i];6 }� �

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 35: Perl6pod devconf

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

Экспорт в Tex:

pod6slide < tech_docs.pod > tech_docs.tex

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

pdflatex tech_docs.tex

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 36: Perl6pod devconf

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

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

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 37: Perl6pod devconf

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

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

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 38: Perl6pod devconf

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

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 39: Perl6pod devconf

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

Perl 6 Pod - современный формат ведения документации Александр Загацкий

Page 40: Perl6pod devconf

Вопросы ?

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

Perl 6 Pod - современный формат ведения документации Александр Загацкий