SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
Perl 6 Pod - современный
формат ведения документации

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




     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 - современный формат ведения документации   Александр Загацкий
Вопросы ?




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

Contenu connexe

Tendances

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&Coit-people
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXMLSlach
 
Александр Сомов "C++: препроцессор, компилятор, компоновщик"
Александр Сомов "C++: препроцессор, компилятор, компоновщик"Александр Сомов "C++: препроцессор, компилятор, компоновщик"
Александр Сомов "C++: препроцессор, компилятор, компоновщик"Yandex
 
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"Yandex
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование LinuxAnthony Shoumikhin
 
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.Anastasia Lubennikova
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование LinuxAnthony Shoumikhin
 
Использование библиотеки анализа кода OpenC++: модификация, улучшение, исправ...
Использование библиотеки анализа кода OpenC++: модификация, улучшение, исправ...Использование библиотеки анализа кода OpenC++: модификация, улучшение, исправ...
Использование библиотеки анализа кода OpenC++: модификация, улучшение, исправ...Tatyanazaxarova
 
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
 

Tendances (11)

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
 
Хэши в ruby
Хэши в rubyХэши в ruby
Хэши в ruby
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXML
 
Александр Сомов "C++: препроцессор, компилятор, компоновщик"
Александр Сомов "C++: препроцессор, компилятор, компоновщик"Александр Сомов "C++: препроцессор, компилятор, компоновщик"
Александр Сомов "C++: препроцессор, компилятор, компоновщик"
 
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование Linux
 
file handling in c
file handling in cfile handling in c
file handling in c
 
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование Linux
 
Использование библиотеки анализа кода OpenC++: модификация, улучшение, исправ...
Использование библиотеки анализа кода OpenC++: модификация, улучшение, исправ...Использование библиотеки анализа кода OpenC++: модификация, улучшение, исправ...
Использование библиотеки анализа кода OpenC++: модификация, улучшение, исправ...
 
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
 

En vedette

Презентация 100+ Forum Russia 2015
Презентация 100+ Forum Russia 2015Презентация 100+ Forum Russia 2015
Презентация 100+ Forum Russia 2015Forum100plus
 
Redoc_presentation
Redoc_presentationRedoc_presentation
Redoc_presentationredoc
 
Тестирование IP видео на примере библиотеки Skype
Тестирование IP видео на примере библиотеки SkypeТестирование IP видео на примере библиотеки Skype
Тестирование IP видео на примере библиотеки SkypeSQALab
 
Конверсия и атрибуция
Конверсия и атрибуцияКонверсия и атрибуция
Конверсия и атрибуцияDmitri Zlobin
 
7 советов по созданию визуальных презентаций
7 советов по созданию визуальных презентаций7 советов по созданию визуальных презентаций
7 советов по созданию визуальных презентацийAngel Relations Group
 
FUTURE PERFECT PLATFORMS russian
FUTURE PERFECT PLATFORMS russianFUTURE PERFECT PLATFORMS russian
FUTURE PERFECT PLATFORMS russianJohn Fitzpatrick
 

En vedette (7)

Презентация 100+ Forum Russia 2015
Презентация 100+ Forum Russia 2015Презентация 100+ Forum Russia 2015
Презентация 100+ Forum Russia 2015
 
Redoc_presentation
Redoc_presentationRedoc_presentation
Redoc_presentation
 
Тестирование IP видео на примере библиотеки Skype
Тестирование IP видео на примере библиотеки SkypeТестирование IP видео на примере библиотеки Skype
Тестирование IP видео на примере библиотеки Skype
 
Конверсия и атрибуция
Конверсия и атрибуцияКонверсия и атрибуция
Конверсия и атрибуция
 
7 советов по созданию визуальных презентаций
7 советов по созданию визуальных презентаций7 советов по созданию визуальных презентаций
7 советов по созданию визуальных презентаций
 
FUTURE PERFECT PLATFORMS russian
FUTURE PERFECT PLATFORMS russianFUTURE PERFECT PLATFORMS russian
FUTURE PERFECT PLATFORMS russian
 
Event-agency C4group // 2014
Event-agency C4group // 2014Event-agency C4group // 2014
Event-agency C4group // 2014
 

Similaire à Perl6pod devconf

О безопасном использовании PHP wrappers
О безопасном использовании PHP wrappersО безопасном использовании PHP wrappers
О безопасном использовании PHP wrappersPositive Hack Days
 
Present saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasovPresent saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasovPavel Vlasov
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveTechnopark
 
Андрей Субботин "Автоматизация локализации iOS-приложений"
Андрей Субботин "Автоматизация локализации iOS-приложений"Андрей Субботин "Автоматизация локализации iOS-приложений"
Андрей Субботин "Автоматизация локализации iOS-приложений"Yandex
 
Опыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхОпыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхVasil Remeniuk
 
Интеграция Яндекс Сервер
Интеграция Яндекс СерверИнтеграция Яндекс Сервер
Интеграция Яндекс СерверPVasili
 
Migrating from Perl 5 to 6
Migrating from Perl 5 to 6Migrating from Perl 5 to 6
Migrating from Perl 5 to 6Andrew Shitov
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Alexey Zinoviev
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIIlya Chesnokov
 
Groovy On Grails
Groovy On GrailsGroovy On Grails
Groovy On Grailsguest32215a
 
PHP basic
PHP basicPHP basic
PHP basicNoveo
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 
poudriere или как я перестал волноваться и полюбил pkg
poudriere или как я перестал волноваться и полюбил pkgpoudriere или как я перестал волноваться и полюбил pkg
poudriere или как я перестал волноваться и полюбил pkgAndrey Fesenko
 
Работа с материалами (nodes) в Drupal 7
Работа с материалами (nodes) в Drupal 7Работа с материалами (nodes) в Drupal 7
Работа с материалами (nodes) в Drupal 7Eugene Fidelin
 
Optimization of a big PostgreSQL database
Optimization of a big PostgreSQL databaseOptimization of a big PostgreSQL database
Optimization of a big PostgreSQL databaseAlex Chistyakov
 

Similaire à Perl6pod devconf (20)

Perl6 pod as new documentation format
Perl6 pod as new documentation formatPerl6 pod as new documentation format
Perl6 pod as new documentation format
 
Приручаем linux-консоль
Приручаем linux-консольПриручаем linux-консоль
Приручаем linux-консоль
 
О безопасном использовании PHP wrappers
О безопасном использовании PHP wrappersО безопасном использовании PHP wrappers
О безопасном использовании PHP wrappers
 
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
 
Андрей Субботин "Автоматизация локализации iOS-приложений"
Андрей Субботин "Автоматизация локализации iOS-приложений"Андрей Субботин "Автоматизация локализации iOS-приложений"
Андрей Субботин "Автоматизация локализации iOS-приложений"
 
Опыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхОпыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событиях
 
Интеграция Яндекс Сервер
Интеграция Яндекс СерверИнтеграция Яндекс Сервер
Интеграция Яндекс Сервер
 
Migrating from Perl 5 to 6
Migrating from Perl 5 to 6Migrating from Perl 5 to 6
Migrating from Perl 5 to 6
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PI
 
php frameworks
php frameworksphp frameworks
php frameworks
 
Groovy On Grails
Groovy On GrailsGroovy On Grails
Groovy On Grails
 
PHP basic
PHP basicPHP basic
PHP basic
 
09 - Hadoop. Pig
09 - Hadoop. Pig09 - Hadoop. Pig
09 - Hadoop. Pig
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
poudriere или как я перестал волноваться и полюбил pkg
poudriere или как я перестал волноваться и полюбил pkgpoudriere или как я перестал волноваться и полюбил pkg
poudriere или как я перестал волноваться и полюбил pkg
 
Работа с материалами (nodes) в Drupal 7
Работа с материалами (nodes) в Drupal 7Работа с материалами (nodes) в Drupal 7
Работа с материалами (nodes) в Drupal 7
 
Optimization of a big PostgreSQL database
Optimization of a big PostgreSQL databaseOptimization of a big PostgreSQL database
Optimization of a big PostgreSQL database
 

Perl6pod devconf

  • 1. Perl 6 Pod - современный формат ведения документации Загацкий Александр 4 июня 2011
  • 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. Вопросы ? 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 - современный формат ведения документации Александр Загацкий