SlideShare a Scribd company logo
Perl 6 Pod - формат ведения документации

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



                   lvee
Кто я




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




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




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




Perl 6 Pod - формат ведения документации   Александр Загацкий
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 - формат ведения документации                 Александр Загацкий
POD -> Pod




            POD - Plain Old Documentation

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

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




Perl 6 Pod - формат ведения документации                  Александр Загацкий
Отличия POD от Pod: Границы блоков документции.
     POD
           §                                                 ¤
               1   =head1
               2   ...
               3
               4   =cut
           ¦                                                 ¥
     Pod
            Разграниченные блоки / Delimited blocks
            Блоки-параграфы / Paragraph blocks
            Сокращенные блоки / Abbreviated blocks
            Блоки-деклараторы / Declarator blocks (*)




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

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




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



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

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




Perl 6 Pod - формат ведения документации               Александр Загацкий
Блоки-деклараторы / 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 - формат ведения документации                                 Александр Загацкий
access to pod/doc text by code




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



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




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


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




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

           §                                     ¤
               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 - формат ведения документации    Александр Загацкий
Таблицы (=table)




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




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




       =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 terms
       and conditions laid out by A<VENDOR>,
       as specified at A<TERMSURL>.




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



     A<$?FILE> - имя теущего файла
     A<$?ROUTINE> - подпрограмма, внутри которой размещен
     блок Pod
     A<$?CLASS> - текущий класс
     Программные константы в документации:
           §                                                                 ¤
               1       # Actual code...
               2       constant $GROWTH_RATE of Num where 0..* = 1.6;
               3       =pod
               4       =head4 Standard Growth Rate
               5       The standard growth rate is assumed
               6       to be A<$GROWTH_RATE>.
           ¦                                                                 ¥




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

     Включение кода без копирования
           §                                                               ¤
               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 - формат ведения документации                              Александр Загацкий
Семантические блоки




            =begin SYNOPSIS
                use Magic::Parser
                my Magic::Parser $parser .= new();
                my $tree = $parser.parse($fh);
            =end SYNOPSIS

Perl 6 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 - формат ведения документации                   Александр Загацкий
Расширяемость

            Режим документации
            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 - формат ведения документации              Александр Загацкий
1.Реализация на Perl 5 (Domian Conway)
     http://search.cpan.org/dist/Perl6-Perldoc/




Perl 6 Pod - формат ведения документации          Александр Загацкий
2.Реализация на Perl 5: Perl6::Pod
     http://search.cpan.org/dist/Perl6-Pod/




Perl 6 Pod - формат ведения документации      Александр Загацкий
3.Реaлизация на Rakudo (Martin Berends)

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




Perl 6 Pod - формат ведения документации                   Александр Загацкий
4.Реaлизация на Rakudo (SUPERNOVA)
     http://github.com/lue/SUPERNOVA




Perl 6 Pod - формат ведения документации   Александр Загацкий
5.Google Summer of Code
     "Pod parser for Rakudo"




Perl 6 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.jpg
               4   =end Slide
           ¦                                                                     ¥


            + возможность ввода формул
                                                    1−α     2        kd
                   Γ0 S0 (1 − α)2 = kd α2   ⇒                   =
                                                     α              Γ0 S0




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



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

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


     Результат:




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



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

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


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




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


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

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


     Результат:




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


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

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


     Результат:
        1   Списки
        2   Таблицы




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


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

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


     Результат:
        1   Списки
        2   Таблицы
        3   Уровни заголовков


Perl 6 Pod - формат ведения документации     Александр Загацкий
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 - формат ведения документации       Александр Загацкий
Perl6::Pod::Slide: Вставка кода
     JavaScript
       =begin code :lang(’JavaScript’)
       var keys = [’a’, ’b’, ’c’];
       var values = [1, 2, 3];
       var map = {}; //this is a comment
       for(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 comment
               4   for(var i in keys) {
               5    map[ keys[i] ] = values[i];
               6   }
           ¦                                                ¥
Perl 6 Pod - формат ведения документации               Александр Загацкий
Perl6::Pod::Slide: Создание pdf




     Экспорт в Tex:

       pod6slide < tech_docs.pod > tech_docs.tex


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

       pdflatex tech_docs.tex




Perl 6 Pod - формат ведения документации           Александр Загацкий
zag.ru: Формат для блога
     Расширяем для поддержки доп функционала. Например:
     =Image




Perl 6 Pod - формат ведения документации            Александр Загацкий
Формат для книги о Perl 6
     Книга "Все о Perl 6". http://zag.ru/perl6-book/




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




Perl 6 Pod - формат ведения документации   Александр Загацкий
Perl 6 Pod to HTML: http://zag.ru/perl6-pod/




Perl 6 Pod - формат ведения документации       Александр Загацкий
WriteAt.com - cоздание и публикация книг в сети




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




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




            S26 Documentation
            https://github.com/zag/specs/raw/master/S26-
            documentation.pod
            Все о Perl 6 http://zag.ru/perl6-book/
            home page, mail http://zag.ru, zag(at)cpan.org
Perl 6 Pod - формат ведения документации                     Александр Загацкий

More Related Content

What's hot

PHP Tricks
PHP TricksPHP Tricks
PHP TricksBlackFan
 
Making of external DSL for Django ORM - Павел Петлинский, Rambler&Co
Making of external DSL for Django ORM - Павел Петлинский, Rambler&CoMaking of external DSL for Django ORM - Павел Петлинский, Rambler&Co
Making of external DSL for Django ORM - Павел Петлинский, Rambler&Co
it-people
 
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to UsZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to UsZFConf Conference
 
Zend Framework и мультиязычность
Zend Framework и мультиязычностьZend Framework и мультиязычность
Zend Framework и мультиязычностьStepan Tanasiychuk
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование LinuxAnthony Shoumikhin
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
Technopark
 
лабораторная работа №9
лабораторная работа №9лабораторная работа №9
лабораторная работа №9Zhanna Kazakova
 
Возможности и проблемы FFI в Haskell. Александр Вершилов
Возможности и проблемы FFI в Haskell. Александр ВершиловВозможности и проблемы FFI в Haskell. Александр Вершилов
Возможности и проблемы FFI в Haskell. Александр Вершилов
Юрий Сыровецкий
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование LinuxAnthony Shoumikhin
 
Хэши в ruby
Хэши в rubyХэши в ruby
Хэши в ruby
Evgeny Smirnov
 
Hacking PostgreSQL. Физическое представление данных
Hacking PostgreSQL. Физическое представление данныхHacking PostgreSQL. Физическое представление данных
Hacking PostgreSQL. Физическое представление данных
Anastasia Lubennikova
 
file handling in c
file handling in cfile handling in c
file handling in c
Maxim Shaptala
 
Rich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend FrameworkRich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend Framework
Georgy Turevich
 
«Introduction to malware reverse engineering» by Sergey Kharyuk aka ximerus
 «Introduction to malware reverse engineering» by Sergey Kharyuk aka ximerus «Introduction to malware reverse engineering» by Sergey Kharyuk aka ximerus
«Introduction to malware reverse engineering» by Sergey Kharyuk aka ximerus
0xdec0de
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование LinuxAnthony Shoumikhin
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXMLSlach
 

What's hot (17)

PHP Tricks
PHP TricksPHP Tricks
PHP Tricks
 
Приручаем linux-консоль
Приручаем linux-консольПриручаем linux-консоль
Приручаем linux-консоль
 
Making of external DSL for Django ORM - Павел Петлинский, Rambler&Co
Making of external DSL for Django ORM - Павел Петлинский, Rambler&CoMaking of external DSL for Django ORM - Павел Петлинский, Rambler&Co
Making of external DSL for Django ORM - Павел Петлинский, Rambler&Co
 
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to UsZFConf 2010: What News Zend Framework 2.0 Brings to Us
ZFConf 2010: What News Zend Framework 2.0 Brings to Us
 
Zend Framework и мультиязычность
Zend Framework и мультиязычностьZend Framework и мультиязычность
Zend Framework и мультиязычность
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование Linux
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
лабораторная работа №9
лабораторная работа №9лабораторная работа №9
лабораторная работа №9
 
Возможности и проблемы FFI в Haskell. Александр Вершилов
Возможности и проблемы FFI в Haskell. Александр ВершиловВозможности и проблемы FFI в Haskell. Александр Вершилов
Возможности и проблемы FFI в Haskell. Александр Вершилов
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование Linux
 
Хэши в ruby
Хэши в rubyХэши в ruby
Хэши в ruby
 
Hacking PostgreSQL. Физическое представление данных
Hacking PostgreSQL. Физическое представление данныхHacking PostgreSQL. Физическое представление данных
Hacking PostgreSQL. Физическое представление данных
 
file handling in c
file handling in cfile handling in c
file handling in c
 
Rich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend FrameworkRich UI on Dojo Toolkit and Zend Framework
Rich UI on Dojo Toolkit and Zend Framework
 
«Introduction to malware reverse engineering» by Sergey Kharyuk aka ximerus
 «Introduction to malware reverse engineering» by Sergey Kharyuk aka ximerus «Introduction to malware reverse engineering» by Sergey Kharyuk aka ximerus
«Introduction to malware reverse engineering» by Sergey Kharyuk aka ximerus
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование Linux
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXML
 

Similar to Perl6pod lvee

Present saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasovPresent saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasov
Pavel Vlasov
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
Technopark
 
Perl in da shell
Perl in da shellPerl in da shell
Perl in da shell
Anton Ovchinnikov
 
Migrating from Perl 5 to 6
Migrating from Perl 5 to 6Migrating from Perl 5 to 6
Migrating from Perl 5 to 6Andrew Shitov
 
Андрей Субботин "Автоматизация локализации iOS-приложений"
Андрей Субботин "Автоматизация локализации iOS-приложений"Андрей Субботин "Автоматизация локализации iOS-приложений"
Андрей Субботин "Автоматизация локализации iOS-приложений"
Yandex
 
Интеграция Яндекс Сервер
Интеграция Яндекс СерверИнтеграция Яндекс Сервер
Интеграция Яндекс Сервер
PVasili
 
Опыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхОпыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событиях
Vasil Remeniuk
 
Groovy On Grails
Groovy On GrailsGroovy On Grails
Groovy On Grailsguest32215a
 
Дмитрий Щадей "Зачем и как мы используем jsLint"
Дмитрий Щадей "Зачем и как мы используем jsLint"Дмитрий Щадей "Зачем и как мы используем jsLint"
Дмитрий Щадей "Зачем и как мы используем jsLint"
Yandex
 
09 - Hadoop. Pig
09 - Hadoop. Pig09 - Hadoop. Pig
09 - Hadoop. Pig
Roman Brovko
 
plwww (24.03) MEPHI (PHDays)
plwww (24.03) MEPHI (PHDays)plwww (24.03) MEPHI (PHDays)
plwww (24.03) MEPHI (PHDays)ygoltsev
 
PHP basic
PHP basicPHP basic
PHP basic
Noveo
 
Юрий Гольцев - Сервис PLWWW
Юрий Гольцев - Сервис PLWWWЮрий Гольцев - Сервис PLWWW
Юрий Гольцев - Сервис PLWWWPositive Hack Days
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PI
Ilya Chesnokov
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15
Alexey Zinoviev
 
Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)
Fedor Malyshkin
 
poudriere или как я перестал волноваться и полюбил pkg
poudriere или как я перестал волноваться и полюбил pkgpoudriere или как я перестал волноваться и полюбил pkg
poudriere или как я перестал волноваться и полюбил pkg
Andrey Fesenko
 
Расширенное кеширование Doctrine2 (Ильяс Салихов, Intaro)
Расширенное кеширование Doctrine2 (Ильяс Салихов, Intaro)Расширенное кеширование Doctrine2 (Ильяс Салихов, Intaro)
Расширенное кеширование Doctrine2 (Ильяс Салихов, Intaro)
Symfoniacs
 

Similar to Perl6pod lvee (20)

Present saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasovPresent saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasov
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Perl in da shell
Perl in da shellPerl in da shell
Perl in da shell
 
Migrating from Perl 5 to 6
Migrating from Perl 5 to 6Migrating from Perl 5 to 6
Migrating from Perl 5 to 6
 
Андрей Субботин "Автоматизация локализации iOS-приложений"
Андрей Субботин "Автоматизация локализации iOS-приложений"Андрей Субботин "Автоматизация локализации iOS-приложений"
Андрей Субботин "Автоматизация локализации iOS-приложений"
 
Интеграция Яндекс Сервер
Интеграция Яндекс СерверИнтеграция Яндекс Сервер
Интеграция Яндекс Сервер
 
Опыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхОпыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событиях
 
Groovy On Grails
Groovy On GrailsGroovy On Grails
Groovy On Grails
 
Дмитрий Щадей "Зачем и как мы используем jsLint"
Дмитрий Щадей "Зачем и как мы используем jsLint"Дмитрий Щадей "Зачем и как мы используем jsLint"
Дмитрий Щадей "Зачем и как мы используем jsLint"
 
09 - Hadoop. Pig
09 - Hadoop. Pig09 - Hadoop. Pig
09 - Hadoop. Pig
 
plwww (24.03) MEPHI (PHDays)
plwww (24.03) MEPHI (PHDays)plwww (24.03) MEPHI (PHDays)
plwww (24.03) MEPHI (PHDays)
 
php frameworks
php frameworksphp frameworks
php frameworks
 
PHP basic
PHP basicPHP basic
PHP basic
 
Юрий Гольцев - Сервис PLWWW
Юрий Гольцев - Сервис PLWWWЮрий Гольцев - Сервис PLWWW
Юрий Гольцев - Сервис PLWWW
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PI
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15
 
Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)Документирование исходных текстов (javadoc)
Документирование исходных текстов (javadoc)
 
poudriere или как я перестал волноваться и полюбил pkg
poudriere или как я перестал волноваться и полюбил pkgpoudriere или как я перестал волноваться и полюбил pkg
poudriere или как я перестал волноваться и полюбил pkg
 
Расширенное кеширование Doctrine2 (Ильяс Салихов, Intaro)
Расширенное кеширование Doctrine2 (Ильяс Салихов, Intaro)Расширенное кеширование Doctrine2 (Ильяс Салихов, Intaro)
Расширенное кеширование Doctrine2 (Ильяс Салихов, Intaro)
 

Perl6pod lvee

  • 1. Perl 6 Pod - формат ведения документации Александр Загацкий lvee
  • 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 - Plain 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. Параметры блоков Конфигурационные параметры представлены парной нотацией в стиле Perl 6 (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. Доступ к документации из кода Программы будущего будут согласовывать свои действия с документацией ! Perl 6 Pod - формат ведения документации Александр Загацкий
  • 12. Особенности Pod =item, =itemN - уровни в списках =table определение таблиц =alias - псевдонимы: именованные, контекстуальные =SYNOPSIS, =NAME ... - семантические блоки =config, :like - предварительное конфигурирование и параметр :like DOC use - расширяемость Perl 6 Pod - формат ведения документации Александр Загацкий
  • 13. Уровни в списках § ¤ 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 - формат ведения документации Александр Загацкий
  • 14. Таблицы (=table) Perl 6 Pod - формат ведения документации Александр Загацкий
  • 15. Таблицы (=table) Perl 6 Pod - формат ведения документации Александр Загацкий
  • 16. Именованные псевдонимы =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 terms and conditions laid out by A<VENDOR>, as specified at A<TERMSURL>. Perl 6 Pod - формат ведения документации Александр Загацкий
  • 17. Именованные псевдонимы. A<$?FILE> - имя теущего файла A<$?ROUTINE> - подпрограмма, внутри которой размещен блок Pod A<$?CLASS> - текущий класс Программные константы в документации: § ¤ 1 # Actual code... 2 constant $GROWTH_RATE of Num where 0..* = 1.6; 3 =pod 4 =head4 Standard Growth Rate 5 The standard growth rate is assumed 6 to be A<$GROWTH_RATE>. ¦ ¥ Perl 6 Pod - формат ведения документации Александр Загацкий
  • 18. Контекстуальные псевдонимы Включение кода без копирования § ¤ 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 - формат ведения документации Александр Загацкий
  • 19. Семантические блоки =begin SYNOPSIS use Magic::Parser my Magic::Parser $parser .= new(); my $tree = $parser.parse($fh); =end SYNOPSIS Perl 6 Pod - формат ведения документации Александр Загацкий
  • 20. =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 - формат ведения документации Александр Загацкий
  • 21. Расширяемость Режим документации 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 - формат ведения документации Александр Загацкий
  • 22. 1.Реализация на Perl 5 (Domian Conway) http://search.cpan.org/dist/Perl6-Perldoc/ Perl 6 Pod - формат ведения документации Александр Загацкий
  • 23. 2.Реализация на Perl 5: Perl6::Pod http://search.cpan.org/dist/Perl6-Pod/ Perl 6 Pod - формат ведения документации Александр Загацкий
  • 24. 3.Реaлизация на Rakudo (Martin Berends) http://github.com/eric256/perl6-examples/tree/master/bin Perl 6 Pod - формат ведения документации Александр Загацкий
  • 25. 4.Реaлизация на Rakudo (SUPERNOVA) http://github.com/lue/SUPERNOVA Perl 6 Pod - формат ведения документации Александр Загацкий
  • 26. 5.Google Summer of Code "Pod parser for Rakudo" Perl 6 Pod - формат ведения документации Александр Загацкий
  • 27. Презентации: 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 - формат ведения документации Александр Загацкий
  • 28. Perl6::Pod::Slide: Списки Перечисляемые списки: =item руководства для конечных пользователей =item Wiki, CMS ... =item книги Результат: Perl 6 Pod - формат ведения документации Александр Загацкий
  • 29. Perl6::Pod::Slide: Списки Перечисляемые списки: =item руководства для конечных пользователей =item Wiki, CMS ... =item книги Результат: руководства для конечных пользователей Wiki, CMS ... книги Perl 6 Pod - формат ведения документации Александр Загацкий
  • 30. Perl6::Pod::Slide: Списки и атрибуты Нумерованные списки и атрибут :pause: =for item :numbered Списки =for item :numbered :pause Таблицы =for item :numbered Уровни заголовков Результат: Perl 6 Pod - формат ведения документации Александр Загацкий
  • 31. Perl6::Pod::Slide: Списки и атрибуты Нумерованные списки и атрибут :pause: =for item :numbered Списки =for item :numbered :pause Таблицы =for item :numbered Уровни заголовков Результат: 1 Списки 2 Таблицы Perl 6 Pod - формат ведения документации Александр Загацкий
  • 32. Perl6::Pod::Slide: Списки и атрибуты Нумерованные списки и атрибут :pause: =for item :numbered Списки =for item :numbered :pause Таблицы =for item :numbered Уровни заголовков Результат: 1 Списки 2 Таблицы 3 Уровни заголовков Perl 6 Pod - формат ведения документации Александр Загацкий
  • 33. 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 - формат ведения документации Александр Загацкий
  • 34. Perl6::Pod::Slide: Вставка кода JavaScript =begin code :lang(’JavaScript’) var keys = [’a’, ’b’, ’c’]; var values = [1, 2, 3]; var map = {}; //this is a comment for(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 comment 4 for(var i in keys) { 5 map[ keys[i] ] = values[i]; 6 } ¦ ¥ Perl 6 Pod - формат ведения документации Александр Загацкий
  • 35. Perl6::Pod::Slide: Создание pdf Экспорт в Tex: pod6slide < tech_docs.pod > tech_docs.tex Конвертация в Pdf: pdflatex tech_docs.tex Perl 6 Pod - формат ведения документации Александр Загацкий
  • 36. zag.ru: Формат для блога Расширяем для поддержки доп функционала. Например: =Image Perl 6 Pod - формат ведения документации Александр Загацкий
  • 37. Формат для книги о Perl 6 Книга "Все о Perl 6". http://zag.ru/perl6-book/ Perl 6 Pod - формат ведения документации Александр Загацкий
  • 38. Глава посвященная Pod Perl 6 Pod - формат ведения документации Александр Загацкий
  • 39. Perl 6 Pod to HTML: http://zag.ru/perl6-pod/ Perl 6 Pod - формат ведения документации Александр Загацкий
  • 40. WriteAt.com - cоздание и публикация книг в сети Perl 6 Pod - формат ведения документации Александр Загацкий
  • 41. Как это работает Perl 6 Pod - формат ведения документации Александр Загацкий
  • 42. Вопросы Вопросы ? S26 Documentation https://github.com/zag/specs/raw/master/S26- documentation.pod Все о Perl 6 http://zag.ru/perl6-book/ home page, mail http://zag.ru, zag(at)cpan.org Perl 6 Pod - формат ведения документации Александр Загацкий