SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
Ведение документации в perl6: POD, да не тот !
                 Александр Загацкий

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


18 October 1994:
It was a complete rewrite of Perl.
A few of the features and pitfalls are:
 ...
  * The documentation is much more extensive
     and perldoc along with pod is introduced.
  ..

9 апреля 2005       S26: cпецификация формата Pod для
                    perl6



                      Ведение документации                2 / 42
                      в perl6: POD, да не тот !
Perldoc и POD
perl5 POD     POD (Plain Old Documentation)


Synopsis 26:
<!--
Perldoc - легкий в использовании язык разметки
с простой, однозначной моделью документа.
Perldoc - поддерживает множество синтаксических диалектов,
которые преобразуются в стандартные объекты модели.
Стандартный диалект Perldoc - quot;Podquot;
-->

Perldoc Pod     развитие ( эволюция ) perl5 POD



                     Ведение документации               3 / 42
                     в perl6: POD, да не тот !
Структурные различия
Как определяются блоки документации в perl5 ?


# c =директива
=...

= cut
#И заканчиваются =cut

  =pod

  =head1 Foo

  Stuff

  =cut
                     Ведение документации        4 / 42
                     в perl6: POD, да не тот !
Perldoc Pod
          Каждый блок документации имеет свою длину.


          =begin pod

          =head1 Foo

          Stuff

          =end pod


          (=cut не нужен. Поэтому нет такой директивы)




Структурные различия           Ведение документации        5 / 42
                               в perl6: POD, да не тот !
Основа perl5 POD - параграф
          3 типа:

          Command Paragraph             Строка начинающаяся с =
          Verbatim Paragraph            Представление блоков кода
                                        первый символ - пробел или
                                        tab.
          Ordinary Paragraph            Обычный текст. Никаких усло-
                                        вий по форматированию на
                                        парсер не возлагается. Граница
                                        - пустая строка




Структурные различия            Ведение документации                     6 / 42
                                в perl6: POD, да не тот !
Pod блоки в perl6
Основная составляющая Perldoc Pod - блок
3 типа:
Delimited blocks                  Разграниченные блоки
Paragraph blocks                  Блоки-параграфы
Abbreviated blocks                Сокращенные блоки




                     Ведение документации                7 / 42
                     в perl6: POD, да не тот !
Разграниченные блоки


           # =begin и =end
           # BLOCK_TYPE - идентификатор
           # в строке =begin - конфигурационная информация


              =begin BLOCK_TYPE          OPTIONAL CONFIG INFO
              =                          OPTIONAL EXTRA CONFIG INFO
                BLOCK CONTENTS
              =end BLOCK_TYPE




Pod блоки в perl6               Ведение документации              8 / 42
                                в perl6: POD, да не тот !
Разграниченные блоки
           Конфигурационные параметры представлены парной нота-
           цией в стиле perl6 (S02)



           Value is...        Specify with     Or with...
           ===============    =============    ============
           Boolean (true)     :key             :key(1)
           Boolean (false)    :!key            :key(0)
           String             :key<str>        :key('str')
           List               :key<1 2 3>      :key[1,2,3]
           Hash               :key{a=>1, b=>2}
           Code               :key{ sqrt($_) }




Pod блоки в perl6              Ведение документации               9 / 42
                               в perl6: POD, да не тот !
Разграниченные блоки. Примеры.

           =begin table :caption<Table of Contents>
               Constants          1
               Subroutines        33
               Everything else    57
           =end table

           =begin Name :required
           =            :width(50)
           The applicant's full name
           =end Name

           =begin Contact :optional
           The applicant's contact details
           =end Contact

Pod блоки в perl6             Ведение документации        10 / 42
                              в perl6: POD, да не тот !
Разграниченные блоки. Фича.
           =begin table :caption<Table of Contents>
               Constants          1
               Variables          10
               Subroutines        33
               Everything else    57

           =end table

           # * текст с отступами - не verbatim !
           # только в =pod, =nested, =item, =code
           # и семантических блоках (=SYNOPSIS,=VERSION )

           # * Пустые строки после директив не обязателны .
           # И если указаны - входят в состав содержимого блока


Pod блоки в perl6              Ведение документации               11 / 42
                               в perl6: POD, да не тот !
Блоки-параграфы


           # Начинается с =for и продолжается до
           # первой пустой строки


           =for BLOCK_TYPE      OPTIONAL CONFIG INFO
           =                    OPTIONAL EXTRA CONFIG INFO
           BLOCK DATA




Pod блоки в perl6              Ведение документации          12 / 42
                               в perl6: POD, да не тот !
Блоки-параграфы. Примеры.

           =for table :caption<Table of Contents>
               Constants          1
               Variables          10
               Subroutines        33
               Everything else    57

           =for Name :required
           =          :width(50)
           The applicant's full name

           =for Contact :optional
           The applicant's contact details



Pod блоки в perl6           Ведение документации        13 / 42
                            в perl6: POD, да не тот !
Сокращенный блок


           # Отсутствуют конфигурационные параметры.


           =BLOCK_TYPE BLOCK DATA
           MORE BLOCK DATA




Pod блоки в perl6            Ведение документации        14 / 42
                             в perl6: POD, да не тот !
Сокращенный блок. Примеры.


           =table
               Constants                         1
               Variables                         10
               Subroutines                       33
               Everything else                   57


           =Name        The applicant's full name


           =Contact     The applicant's contact details



Pod блоки в perl6             Ведение документации        15 / 42
                              в perl6: POD, да не тот !
Три формы представле-
                    ния - результат одинаковый
           # Сокращенный блок

           =head1 Top Level Heading

           # Блок-параграф

           =for head1
           Top Level Heading

           # Разграниченный блок

           =begin head1
           Top Level Heading
           =end head1

Pod блоки в perl6               Ведение документации        16 / 42
                                в perl6: POD, да не тот !
Стандартные конфигрурационные параметры
  •   :nested
  •   :numbered
  •   :like
  •   :allow
  •   :term
  •   :formatted




                   Ведение документации        17 / 42
                   в perl6: POD, да не тот !
:nested :numbered :like
          :nested               определяет блок как вложенный в пределах
                                его текущего контекста. Такие блоки выде-
                                ляются в выходном формате дополнитель-
                                ными отступами, выделением в виде рамок,
                                фоном или в свернутом виде.
          :numbered             данный блок имеет нумерацию. нумерация
                                заголовков и списки.
          :like                 блок имеет такие же параметры форматиро-
                                вания как имя блока указанного в качестве
                                значения.

          =config head2               :like<head1> :formatted<I>




Стандартные конфигрурационные пара-    Ведение документации                 18 / 42
метры                                  в perl6: POD, да не тот !
:allow
          Список кодов форматирования разрешенных в блоке =code

          # Для кода:

          =begin code :allow< B R >
          sub demo {
              B<say> 'Hello R<name>';
          }
          =end code

          # в выходном результате будет выделено quot;sayquot;:

          sub demo {
              say 'Hello name';
          }

Стандартные конфигрурационные пара-   Ведение документации        19 / 42
метры                                 в perl6: POD, да не тот !
:term
          Эта опция определяет, что элемент списка - определение
          термина.

          # Definition lists:
          =for item :term<MAD>
          Affected with a high degree
          of intellectual independence.

          =for item :term<MEEKNESS>
          Uncommon patience in planning a
          revenge that is worth while.

          =for item :term<MORAL>
          Having the quality of general expediency.


Стандартные конфигрурационные пара-   Ведение документации         20 / 42
метры                                 в perl6: POD, да не тот !
:formatted
          К сожержимому блока применяются указанные кода фор-
          матирования


          =begin para
          B<I<
          Warning: Dont immerse in water.
          >>
          =end para
          # эквивалентно
          =begin para :formatted<B I>
          Warning: Dont immerse in water.
          =end para



Стандартные конфигрурационные пара-   Ведение документации        21 / 42
метры                                 в perl6: POD, да не тот !
Особенные дополнения и новые блоки
=config                         предварительное конфигури-
                                рование
=item, =itemN                   уровни в списках
=table                          определение таблиц
=Named_blocks                   именованные блоки
=SYNOPSIS, =NAME ...            семантические блоки




                   Ведение документации                      22 / 42
                   в perl6: POD, да не тот !
Предварительное конфигурирование(=config)
          Позволяет определить параметры, которые будут примене-
          ны к указанному блоку.


          =config BLOCK_TYPE CONFIG OPTIONS
          =             OPTIONAL EXTRA CONFIG OPTIONS

          # Действие директивы ограничено границами текущего блока.
          # Параметры указанные непосредственно в
          # блоке имеют приоритет выше.




Особенные дополнения и новые блоки   Ведение документации          23 / 42
                                     в perl6: POD, да не тот !
Предварительное конфигурирование(=config)



          #Определение форматирования заголовков

          =config          head1      :formatted<B U> :numbered
          =config          head2 :like<head1> :formatted<I>
          =config          head3              :formatted<U>
          =config          head4 :like<head3> :formatted<I>




Особенные дополнения и новые блоки   Ведение документации        24 / 42
                                     в perl6: POD, да не тот !
Уровни в списках
                =item1 Animal
                  =item2    Vertebrate
                  =item2    Invertebrate

                 =item1              Phase
                 =item2                 Solid
                 =item2                 Chocolate
          #Результат

                   * Animal
                     - Vertebrate
                     - Invertebrate

                   * Phase
                     - Solid
                     - Chocolate
Особенные дополнения и новые блоки      Ведение документации        25 / 42
                                        в perl6: POD, да не тот !
Таблицы (=table)




Особенные дополнения и новые блоки      Ведение документации        26 / 42
                                        в perl6: POD, да не тот !
Таблицы (=table) (продолжение)




Особенные дополнения и новые блоки   Ведение документации        27 / 42
                                     в perl6: POD, да не тот !
Именованные блоки


          =begin Xhtml
          <object type=quot;video/quicktimequot; data=quot;onion.movquot;>
          =end Xhtml


          =use - расширение типов блоков пользовательскими.



          =use MODULE_NAME               OPTIONAL CONFIG DATA
          =                              OPTIONAL EXTRA CONFIG DATA

          =use URI

Особенные дополнения и новые блоки   Ведение документации             28 / 42
                                     в perl6: POD, да не тот !
Именованные блоки (продолжение)


          # Пример

          =use Perldoc::Plugin::Image
          = :Jpeg prefix=>'http://dev.perl.org'


          =Image http://example.com/perl_logo_32x104.png


          Идентификаторы, целиком состоящие из символов нижне-
          го или верхнего регистра, зарезервированы

          =begin head1
          =begin SYNOPSIS
Особенные дополнения и новые блоки   Ведение документации        29 / 42
                                     в perl6: POD, да не тот !
Семантические блоки




Особенные дополнения и новые блоки   Ведение документации        30 / 42
                                     в perl6: POD, да не тот !
Семантические блоки.Пример.
          # Использование блоков
          =begin SYNOPSIS
             use Perldoc::Parser
             my Perldoc::Parser $parser .= new();
             my $tree = $parser.parse($fh);
          =end SYNOPSIS

          # Можно использвать аналогичную запись

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

Особенные дополнения и новые блоки   Ведение документации        31 / 42
                                     в perl6: POD, да не тот !
Коды форматирования



• V - verbatim текст
I/O коды
• T - terminal output
• K - keyboard input
Добавились уровни значимости
• U - минимально (подчеркнутый)
• I - важно (наклонный)
• B - основной уровень важности ( жирный )



                        Ведение документации        32 / 42
                        в perl6: POD, да не тот !
R - замещаемые данные

          # R<> указывает, что содержимое является меткой шаблона,
          # метасинтаксической переменной, которое должно быть
          # заменено актуальным значением.

          =for input
              Name: R<your surname>
                ID: R<your employee number>
              Pass: R<your password>




Коды форматирования          Ведение документации               33 / 42
                             в perl6: POD, да не тот !
D - определение

          # D<> - укзывает, что содержащийся в нем текст - определение.
          # Вводится термин объясняющий смежный текст.

          A D<Formatting code|formatting codes;formatters>
          provides a way to add inline mark-up to a
          piece of text.




Коды форматирования           Ведение документации                 34 / 42
                              в perl6: POD, да не тот !
L - ссылка

          #   L<> появился перечень тем
          #   http: and https: file: mailto: man:
          #   doc: defn:
          #   isbn: and issn:

          L<LAME library|http://www.mp3dev.org/mp3/>.
          L<http://www.mp3dev.org/mp3/>)

          # локально (без //):
          L<http:tutorial/faq.html>

          # ссылка на секцию,

          Also see: L<man:bash()#Compound Commands>
Коды форматирования                 Ведение документации        35 / 42
                                    в perl6: POD, да не тот !
L - ссылка (продолжение)
          L<http://example.com/S04.html#The_for_statement>
          L<doc:perlsyn#For Loops>




Коды форматирования          Ведение документации            36 / 42
                             в perl6: POD, да не тот !
P - placement link

          # P<> - включение содержимого другого документа

          =COPYRIGHT
          P<file:/shared/docs/std_copyright.pod>


          # Преобразуется в

          Copyright

          This document is copyright (c)
          MegaGigaTeraPetaCorp. All rights reserved.



Коды форматирования           Ведение документации          37 / 42
                              в perl6: POD, да не тот !
N - note

          # N<> - указывает, что содержимое - примечание.

          Use a C<for> loop instead.N<The Perl Six C<for>
          loop is far more powerful than its Perl5
          predecessor.> Preferably with an
          explicit iterator variable.




Коды форматирования           Ведение документации          38 / 42
                              в perl6: POD, да не тот !
M - пользовательский код

          # M<> - определенный пользоватлем форматирующий код

          =use Perldoc::TT

          =head1 Overview of the M<TT: $CLASSNAME > class
          (version M<TT: $VERSION>)

          M<TT: get_description($CLASSNAME) >




Коды форматирования          Ведение документации               39 / 42
                             в perl6: POD, да не тот !
Реализация на perl5 (Domian Conway)
http://search.cpan.org/dist/Perl6-Perldoc/ (text и xhtml)




                         Ведение документации               40 / 42
                         в perl6: POD, да не тот !
Релизация на Rakudo (Martin Berends)
http://github.com/eric256/perl6-examples/tree/master
Format codes about 50% in text, man, xhtml, pod5 and pod6
emitters. =table and =use not even started.




                       Ведение документации                 41 / 42
                       в perl6: POD, да не тот !
Вопросы ?




S26:Documentation         http://perlcabal.org/syn/S26.html
PerlTimeline              http://history.perl.org/
                          PerlTimeline.html
e-mail                    «zag@cpan.org»
home page, twitter        http://zag.ru
                          http://twitter.com/zagru
                     Ведение документации                     42 / 42
                     в perl6: POD, да не тот !

Más contenido relacionado

Destacado (9)

Курс Perl в УрГУ
Курс Perl в УрГУКурс Perl в УрГУ
Курс Perl в УрГУ
 
Perl + nginx = ♥‎
Perl + nginx = ♥‎Perl + nginx = ♥‎
Perl + nginx = ♥‎
 
Use Perl like Perl
Use Perl like PerlUse Perl like Perl
Use Perl like Perl
 
А у нас Perl 6 в production :)
А у нас Perl 6 в production :)А у нас Perl 6 в production :)
А у нас Perl 6 в production :)
 
Anyevent
AnyeventAnyevent
Anyevent
 
‎Тестирование в проекте REG.RU‎
‎Тестирование в проекте REG.RU‎‎Тестирование в проекте REG.RU‎
‎Тестирование в проекте REG.RU‎
 
Работа с большими файлами под перлом‎
Работа с большими файлами под перлом‎Работа с большими файлами под перлом‎
Работа с большими файлами под перлом‎
 
Что будет с Перлом?
Что будет с Перлом?Что будет с Перлом?
Что будет с Перлом?
 
Browser sniffing в 21 веке‎
Browser sniffing в 21 веке‎Browser sniffing в 21 веке‎
Browser sniffing в 21 веке‎
 

Similar a Ведение документации в perl6: POD, да не тот !

Hiv
HivHiv
Intro To RDBMS And SQL Server 2005 - Svetlin Nakov
Intro To RDBMS And SQL Server 2005 - Svetlin NakovIntro To RDBMS And SQL Server 2005 - Svetlin Nakov
Intro To RDBMS And SQL Server 2005 - Svetlin Nakov
Svetlin Nakov
 
P2 P Mobile Advertising And Targeting
P2 P Mobile Advertising And TargetingP2 P Mobile Advertising And Targeting
P2 P Mobile Advertising And Targeting
guest258f78a
 
Minsk Jazz 190509 Templ
Minsk Jazz 190509 TemplMinsk Jazz 190509 Templ
Minsk Jazz 190509 Templ
sef2009
 
OO Design with C++: 1. Inheritance, part 1
OO Design with C++: 1. Inheritance, part 1OO Design with C++: 1. Inheritance, part 1
OO Design with C++: 1. Inheritance, part 1
Dmitry Stillermann
 
тупицын Ec2 Rootconf2009
тупицын Ec2 Rootconf2009тупицын Ec2 Rootconf2009
тупицын Ec2 Rootconf2009
Liudmila Li
 
Управление рисками ИБ: отдельные практические аспекты
Управление рисками ИБ: отдельные практические аспектыУправление рисками ИБ: отдельные практические аспекты
Управление рисками ИБ: отдельные практические аспекты
Aleksey Lukatskiy
 

Similar a Ведение документации в perl6: POD, да не тот ! (20)

Unittests
UnittestsUnittests
Unittests
 
Hiv
HivHiv
Hiv
 
Intro To RDBMS And SQL Server 2005 - Svetlin Nakov
Intro To RDBMS And SQL Server 2005 - Svetlin NakovIntro To RDBMS And SQL Server 2005 - Svetlin Nakov
Intro To RDBMS And SQL Server 2005 - Svetlin Nakov
 
Why Ror
Why RorWhy Ror
Why Ror
 
P2 P Mobile Advertising And Targeting
P2 P Mobile Advertising And TargetingP2 P Mobile Advertising And Targeting
P2 P Mobile Advertising And Targeting
 
Beauty
BeautyBeauty
Beauty
 
Minsk Jazz 190509 Templ
Minsk Jazz 190509 TemplMinsk Jazz 190509 Templ
Minsk Jazz 190509 Templ
 
Библейские истории: Животные
Библейские истории: ЖивотныеБиблейские истории: Животные
Библейские истории: Животные
 
Napredni vidovi drva
Napredni vidovi drvaNapredni vidovi drva
Napredni vidovi drva
 
OO Design with C++: 1. Inheritance, part 1
OO Design with C++: 1. Inheritance, part 1OO Design with C++: 1. Inheritance, part 1
OO Design with C++: 1. Inheritance, part 1
 
Hasql in practice (Russian)
Hasql in practice (Russian)Hasql in practice (Russian)
Hasql in practice (Russian)
 
Защо Ruby on Rails
Защо Ruby on RailsЗащо Ruby on Rails
Защо Ruby on Rails
 
20070613 Rit2007 Training
20070613 Rit2007 Training20070613 Rit2007 Training
20070613 Rit2007 Training
 
тупицын Ec2 Rootconf2009
тупицын Ec2 Rootconf2009тупицын Ec2 Rootconf2009
тупицын Ec2 Rootconf2009
 
Jazz – открытая платформа разработки ПО
Jazz – открытая платформа разработки ПОJazz – открытая платформа разработки ПО
Jazz – открытая платформа разработки ПО
 
20070329 Phpconf2007 Training
20070329 Phpconf2007 Training20070329 Phpconf2007 Training
20070329 Phpconf2007 Training
 
EU Competition Policy
EU Competition PolicyEU Competition Policy
EU Competition Policy
 
IBM Jazz - A New Approach For Software Development (In Russian)
IBM Jazz - A New Approach For Software Development (In Russian)IBM Jazz - A New Approach For Software Development (In Russian)
IBM Jazz - A New Approach For Software Development (In Russian)
 
Customer Profiling&Targeted Advertisement
Customer Profiling&Targeted AdvertisementCustomer Profiling&Targeted Advertisement
Customer Profiling&Targeted Advertisement
 
Управление рисками ИБ: отдельные практические аспекты
Управление рисками ИБ: отдельные практические аспектыУправление рисками ИБ: отдельные практические аспекты
Управление рисками ИБ: отдельные практические аспекты
 

Más de mayperl (9)

Использование WebMoney в Perl‎
Использование WebMoney в Perl‎Использование WebMoney в Perl‎
Использование WebMoney в Perl‎
 
Вебклуб Perlgolf.ru
Вебклуб Perlgolf.ruВебклуб Perlgolf.ru
Вебклуб Perlgolf.ru
 
Perl в хэке и хэки в Perl
Perl в хэке и хэки в PerlPerl в хэке и хэки в Perl
Perl в хэке и хэки в Perl
 
Сравнение работы алгоритмов сортировки, реализованных на Perl
Сравнение работы алгоритмов сортировки, реализованных на PerlСравнение работы алгоритмов сортировки, реализованных на Perl
Сравнение работы алгоритмов сортировки, реализованных на Perl
 
Making Your Own CPAN
Making Your Own CPANMaking Your Own CPAN
Making Your Own CPAN
 
Распределенная обработка потоковых данных
Распределенная обработка потоковых данныхРаспределенная обработка потоковых данных
Распределенная обработка потоковых данных
 
Groovy Vs Perl
Groovy Vs PerlGroovy Vs Perl
Groovy Vs Perl
 
Написание DSL в Perl
Написание DSL в PerlНаписание DSL в Perl
Написание DSL в Perl
 
10.000 вариантов снять квартиру или сам себе POE-риелтор
10.000 вариантов снять квартиру или сам себе POE-риелтор10.000 вариантов снять квартиру или сам себе POE-риелтор
10.000 вариантов снять квартиру или сам себе POE-риелтор
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Último (20)

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 

Ведение документации в perl6: POD, да не тот !

  • 1. Ведение документации в perl6: POD, да не тот ! Александр Загацкий 17.05.2009
  • 2. Немного истории 18 октября 1994 В списке анонса perl 5.000 прису- твует поддержка POD 18 October 1994: It was a complete rewrite of Perl. A few of the features and pitfalls are: ... * The documentation is much more extensive and perldoc along with pod is introduced. .. 9 апреля 2005 S26: cпецификация формата Pod для perl6 Ведение документации 2 / 42 в perl6: POD, да не тот !
  • 3. Perldoc и POD perl5 POD POD (Plain Old Documentation) Synopsis 26: <!-- Perldoc - легкий в использовании язык разметки с простой, однозначной моделью документа. Perldoc - поддерживает множество синтаксических диалектов, которые преобразуются в стандартные объекты модели. Стандартный диалект Perldoc - quot;Podquot; --> Perldoc Pod развитие ( эволюция ) perl5 POD Ведение документации 3 / 42 в perl6: POD, да не тот !
  • 4. Структурные различия Как определяются блоки документации в perl5 ? # c =директива =... = cut #И заканчиваются =cut =pod =head1 Foo Stuff =cut Ведение документации 4 / 42 в perl6: POD, да не тот !
  • 5. Perldoc Pod Каждый блок документации имеет свою длину. =begin pod =head1 Foo Stuff =end pod (=cut не нужен. Поэтому нет такой директивы) Структурные различия Ведение документации 5 / 42 в perl6: POD, да не тот !
  • 6. Основа perl5 POD - параграф 3 типа: Command Paragraph Строка начинающаяся с = Verbatim Paragraph Представление блоков кода первый символ - пробел или tab. Ordinary Paragraph Обычный текст. Никаких усло- вий по форматированию на парсер не возлагается. Граница - пустая строка Структурные различия Ведение документации 6 / 42 в perl6: POD, да не тот !
  • 7. Pod блоки в perl6 Основная составляющая Perldoc Pod - блок 3 типа: Delimited blocks Разграниченные блоки Paragraph blocks Блоки-параграфы Abbreviated blocks Сокращенные блоки Ведение документации 7 / 42 в perl6: POD, да не тот !
  • 8. Разграниченные блоки # =begin и =end # BLOCK_TYPE - идентификатор # в строке =begin - конфигурационная информация =begin BLOCK_TYPE OPTIONAL CONFIG INFO = OPTIONAL EXTRA CONFIG INFO BLOCK CONTENTS =end BLOCK_TYPE Pod блоки в perl6 Ведение документации 8 / 42 в perl6: POD, да не тот !
  • 9. Разграниченные блоки Конфигурационные параметры представлены парной нота- цией в стиле perl6 (S02) Value is... Specify with Or with... =============== ============= ============ Boolean (true) :key :key(1) Boolean (false) :!key :key(0) String :key<str> :key('str') List :key<1 2 3> :key[1,2,3] Hash :key{a=>1, b=>2} Code :key{ sqrt($_) } Pod блоки в perl6 Ведение документации 9 / 42 в perl6: POD, да не тот !
  • 10. Разграниченные блоки. Примеры. =begin table :caption<Table of Contents> Constants 1 Subroutines 33 Everything else 57 =end table =begin Name :required = :width(50) The applicant's full name =end Name =begin Contact :optional The applicant's contact details =end Contact Pod блоки в perl6 Ведение документации 10 / 42 в perl6: POD, да не тот !
  • 11. Разграниченные блоки. Фича. =begin table :caption<Table of Contents> Constants 1 Variables 10 Subroutines 33 Everything else 57 =end table # * текст с отступами - не verbatim ! # только в =pod, =nested, =item, =code # и семантических блоках (=SYNOPSIS,=VERSION ) # * Пустые строки после директив не обязателны . # И если указаны - входят в состав содержимого блока Pod блоки в perl6 Ведение документации 11 / 42 в perl6: POD, да не тот !
  • 12. Блоки-параграфы # Начинается с =for и продолжается до # первой пустой строки =for BLOCK_TYPE OPTIONAL CONFIG INFO = OPTIONAL EXTRA CONFIG INFO BLOCK DATA Pod блоки в perl6 Ведение документации 12 / 42 в perl6: POD, да не тот !
  • 13. Блоки-параграфы. Примеры. =for table :caption<Table of Contents> Constants 1 Variables 10 Subroutines 33 Everything else 57 =for Name :required = :width(50) The applicant's full name =for Contact :optional The applicant's contact details Pod блоки в perl6 Ведение документации 13 / 42 в perl6: POD, да не тот !
  • 14. Сокращенный блок # Отсутствуют конфигурационные параметры. =BLOCK_TYPE BLOCK DATA MORE BLOCK DATA Pod блоки в perl6 Ведение документации 14 / 42 в perl6: POD, да не тот !
  • 15. Сокращенный блок. Примеры. =table Constants 1 Variables 10 Subroutines 33 Everything else 57 =Name The applicant's full name =Contact The applicant's contact details Pod блоки в perl6 Ведение документации 15 / 42 в perl6: POD, да не тот !
  • 16. Три формы представле- ния - результат одинаковый # Сокращенный блок =head1 Top Level Heading # Блок-параграф =for head1 Top Level Heading # Разграниченный блок =begin head1 Top Level Heading =end head1 Pod блоки в perl6 Ведение документации 16 / 42 в perl6: POD, да не тот !
  • 17. Стандартные конфигрурационные параметры • :nested • :numbered • :like • :allow • :term • :formatted Ведение документации 17 / 42 в perl6: POD, да не тот !
  • 18. :nested :numbered :like :nested определяет блок как вложенный в пределах его текущего контекста. Такие блоки выде- ляются в выходном формате дополнитель- ными отступами, выделением в виде рамок, фоном или в свернутом виде. :numbered данный блок имеет нумерацию. нумерация заголовков и списки. :like блок имеет такие же параметры форматиро- вания как имя блока указанного в качестве значения. =config head2 :like<head1> :formatted<I> Стандартные конфигрурационные пара- Ведение документации 18 / 42 метры в perl6: POD, да не тот !
  • 19. :allow Список кодов форматирования разрешенных в блоке =code # Для кода: =begin code :allow< B R > sub demo { B<say> 'Hello R<name>'; } =end code # в выходном результате будет выделено quot;sayquot;: sub demo { say 'Hello name'; } Стандартные конфигрурационные пара- Ведение документации 19 / 42 метры в perl6: POD, да не тот !
  • 20. :term Эта опция определяет, что элемент списка - определение термина. # Definition lists: =for item :term<MAD> Affected with a high degree of intellectual independence. =for item :term<MEEKNESS> Uncommon patience in planning a revenge that is worth while. =for item :term<MORAL> Having the quality of general expediency. Стандартные конфигрурационные пара- Ведение документации 20 / 42 метры в perl6: POD, да не тот !
  • 21. :formatted К сожержимому блока применяются указанные кода фор- матирования =begin para B<I< Warning: Dont immerse in water. >> =end para # эквивалентно =begin para :formatted<B I> Warning: Dont immerse in water. =end para Стандартные конфигрурационные пара- Ведение документации 21 / 42 метры в perl6: POD, да не тот !
  • 22. Особенные дополнения и новые блоки =config предварительное конфигури- рование =item, =itemN уровни в списках =table определение таблиц =Named_blocks именованные блоки =SYNOPSIS, =NAME ... семантические блоки Ведение документации 22 / 42 в perl6: POD, да не тот !
  • 23. Предварительное конфигурирование(=config) Позволяет определить параметры, которые будут примене- ны к указанному блоку. =config BLOCK_TYPE CONFIG OPTIONS = OPTIONAL EXTRA CONFIG OPTIONS # Действие директивы ограничено границами текущего блока. # Параметры указанные непосредственно в # блоке имеют приоритет выше. Особенные дополнения и новые блоки Ведение документации 23 / 42 в perl6: POD, да не тот !
  • 24. Предварительное конфигурирование(=config) #Определение форматирования заголовков =config head1 :formatted<B U> :numbered =config head2 :like<head1> :formatted<I> =config head3 :formatted<U> =config head4 :like<head3> :formatted<I> Особенные дополнения и новые блоки Ведение документации 24 / 42 в perl6: POD, да не тот !
  • 25. Уровни в списках =item1 Animal =item2 Vertebrate =item2 Invertebrate =item1 Phase =item2 Solid =item2 Chocolate #Результат * Animal - Vertebrate - Invertebrate * Phase - Solid - Chocolate Особенные дополнения и новые блоки Ведение документации 25 / 42 в perl6: POD, да не тот !
  • 26. Таблицы (=table) Особенные дополнения и новые блоки Ведение документации 26 / 42 в perl6: POD, да не тот !
  • 27. Таблицы (=table) (продолжение) Особенные дополнения и новые блоки Ведение документации 27 / 42 в perl6: POD, да не тот !
  • 28. Именованные блоки =begin Xhtml <object type=quot;video/quicktimequot; data=quot;onion.movquot;> =end Xhtml =use - расширение типов блоков пользовательскими. =use MODULE_NAME OPTIONAL CONFIG DATA = OPTIONAL EXTRA CONFIG DATA =use URI Особенные дополнения и новые блоки Ведение документации 28 / 42 в perl6: POD, да не тот !
  • 29. Именованные блоки (продолжение) # Пример =use Perldoc::Plugin::Image = :Jpeg prefix=>'http://dev.perl.org' =Image http://example.com/perl_logo_32x104.png Идентификаторы, целиком состоящие из символов нижне- го или верхнего регистра, зарезервированы =begin head1 =begin SYNOPSIS Особенные дополнения и новые блоки Ведение документации 29 / 42 в perl6: POD, да не тот !
  • 30. Семантические блоки Особенные дополнения и новые блоки Ведение документации 30 / 42 в perl6: POD, да не тот !
  • 31. Семантические блоки.Пример. # Использование блоков =begin SYNOPSIS use Perldoc::Parser my Perldoc::Parser $parser .= new(); my $tree = $parser.parse($fh); =end SYNOPSIS # Можно использвать аналогичную запись =head1 SYNOPSIS =begin code use Perldoc::Parser my Perldoc::Parser $parser .= new(); my $tree = $parser.parse($fh); =end code Особенные дополнения и новые блоки Ведение документации 31 / 42 в perl6: POD, да не тот !
  • 32. Коды форматирования • V - verbatim текст I/O коды • T - terminal output • K - keyboard input Добавились уровни значимости • U - минимально (подчеркнутый) • I - важно (наклонный) • B - основной уровень важности ( жирный ) Ведение документации 32 / 42 в perl6: POD, да не тот !
  • 33. R - замещаемые данные # R<> указывает, что содержимое является меткой шаблона, # метасинтаксической переменной, которое должно быть # заменено актуальным значением. =for input Name: R<your surname> ID: R<your employee number> Pass: R<your password> Коды форматирования Ведение документации 33 / 42 в perl6: POD, да не тот !
  • 34. D - определение # D<> - укзывает, что содержащийся в нем текст - определение. # Вводится термин объясняющий смежный текст. A D<Formatting code|formatting codes;formatters> provides a way to add inline mark-up to a piece of text. Коды форматирования Ведение документации 34 / 42 в perl6: POD, да не тот !
  • 35. L - ссылка # L<> появился перечень тем # http: and https: file: mailto: man: # doc: defn: # isbn: and issn: L<LAME library|http://www.mp3dev.org/mp3/>. L<http://www.mp3dev.org/mp3/>) # локально (без //): L<http:tutorial/faq.html> # ссылка на секцию, Also see: L<man:bash()#Compound Commands> Коды форматирования Ведение документации 35 / 42 в perl6: POD, да не тот !
  • 36. L - ссылка (продолжение) L<http://example.com/S04.html#The_for_statement> L<doc:perlsyn#For Loops> Коды форматирования Ведение документации 36 / 42 в perl6: POD, да не тот !
  • 37. P - placement link # P<> - включение содержимого другого документа =COPYRIGHT P<file:/shared/docs/std_copyright.pod> # Преобразуется в Copyright This document is copyright (c) MegaGigaTeraPetaCorp. All rights reserved. Коды форматирования Ведение документации 37 / 42 в perl6: POD, да не тот !
  • 38. N - note # N<> - указывает, что содержимое - примечание. Use a C<for> loop instead.N<The Perl Six C<for> loop is far more powerful than its Perl5 predecessor.> Preferably with an explicit iterator variable. Коды форматирования Ведение документации 38 / 42 в perl6: POD, да не тот !
  • 39. M - пользовательский код # M<> - определенный пользоватлем форматирующий код =use Perldoc::TT =head1 Overview of the M<TT: $CLASSNAME > class (version M<TT: $VERSION>) M<TT: get_description($CLASSNAME) > Коды форматирования Ведение документации 39 / 42 в perl6: POD, да не тот !
  • 40. Реализация на perl5 (Domian Conway) http://search.cpan.org/dist/Perl6-Perldoc/ (text и xhtml) Ведение документации 40 / 42 в perl6: POD, да не тот !
  • 41. Релизация на Rakudo (Martin Berends) http://github.com/eric256/perl6-examples/tree/master Format codes about 50% in text, man, xhtml, pod5 and pod6 emitters. =table and =use not even started. Ведение документации 41 / 42 в perl6: POD, да не тот !
  • 42. Вопросы ? S26:Documentation http://perlcabal.org/syn/S26.html PerlTimeline http://history.perl.org/ PerlTimeline.html e-mail «zag@cpan.org» home page, twitter http://zag.ru http://twitter.com/zagru Ведение документации 42 / 42 в perl6: POD, да не тот !