196197ba2SMasatake YAMATO# 296197ba2SMasatake YAMATO# 396197ba2SMasatake YAMATO# Copyright (c) 2016, Red Hat, Inc. 496197ba2SMasatake YAMATO# Copyright (c) 2016, Masatake YAMATO 596197ba2SMasatake YAMATO# 696197ba2SMasatake YAMATO# Author: Masatake YAMATO <yamato@redhat.com> 796197ba2SMasatake YAMATO# 896197ba2SMasatake YAMATO# This program is free software; you can redistribute it and/or 996197ba2SMasatake YAMATO# modify it under the terms of the GNU General Public License 1096197ba2SMasatake YAMATO# as published by the Free Software Foundation; either version 2 1196197ba2SMasatake YAMATO# of the License, or (at your option) any later version. 1296197ba2SMasatake YAMATO# 1396197ba2SMasatake YAMATO# This program is distributed in the hope that it will be useful, 1496197ba2SMasatake YAMATO# but WITHOUT ANY WARRANTY; without even the implied warranty of 1596197ba2SMasatake YAMATO# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1696197ba2SMasatake YAMATO# GNU General Public License for more details. 1796197ba2SMasatake YAMATO# 1896197ba2SMasatake YAMATO# You should have received a copy of the GNU General Public License 1996197ba2SMasatake YAMATO# along with this program; if not, write to the Free Software 2096197ba2SMasatake YAMATO# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 2196197ba2SMasatake YAMATO# USA. 2296197ba2SMasatake YAMATO# 23*eb459c89SMasatake YAMATO# This module extracts headers of Pod file. 24*eb459c89SMasatake YAMATO# 25*eb459c89SMasatake YAMATO# References: 26*eb459c89SMasatake YAMATO# - https://perldoc.perl.org/perlpod 27*eb459c89SMasatake YAMATO# - https://perldoc.perl.org/perlpodspec 2896197ba2SMasatake YAMATO# 296b1ec470SMasatake YAMATO--langdef=Pod 306b1ec470SMasatake YAMATO--map-Pod=+.pod 311cda8611SMasatake YAMATO 326b1ec470SMasatake YAMATO--kinddef-Pod=c,chapter,chapters 336b1ec470SMasatake YAMATO--kinddef-Pod=s,section,sections 346b1ec470SMasatake YAMATO--kinddef-Pod=S,subsection,subsections 356b1ec470SMasatake YAMATO--kinddef-Pod=t,subsubsection,subsubsections 361cda8611SMasatake YAMATO 37c3d1917aSMasatake YAMATO# Separator definitions must come after kind definitions. 38c3d1917aSMasatake YAMATO# This is the limitation of optlib2c. 39c3d1917aSMasatake YAMATO--_scopesep-Pod=*/*:"" 40c3d1917aSMasatake YAMATO 41a071cb23SMasatake YAMATO--_prelude-Pod={{ 42c3d1917aSMasatake YAMATO /kindTable [ 43c3d1917aSMasatake YAMATO /chapter /section /subsection /subsubsection 44c3d1917aSMasatake YAMATO ] def 45c3d1917aSMasatake YAMATO 46c3d1917aSMasatake YAMATO % numstr:str TOLEVEL int 47c3d1917aSMasatake YAMATO /tolevel { 48c3d1917aSMasatake YAMATO 0 get ?1 sub 49c3d1917aSMasatake YAMATO } def 50c3d1917aSMasatake YAMATO 51c3d1917aSMasatake YAMATO /depthForCork { 52c3d1917aSMasatake YAMATO :kind kindTable exch _aindex pop 53c3d1917aSMasatake YAMATO } def 54c3d1917aSMasatake YAMATO 5549e39b21SMasatake YAMATO % endline:int goal:int scopePopUpTo - 56c3d1917aSMasatake YAMATO /scopePopUpTo 57c3d1917aSMasatake YAMATO { 58c3d1917aSMasatake YAMATO { 59c3d1917aSMasatake YAMATO _scopetop { 6049e39b21SMasatake YAMATO dup 6149e39b21SMasatake YAMATO % endline goal scope scope 6249e39b21SMasatake YAMATO depthForCork 2 index ge { 6349e39b21SMasatake YAMATO % endline goal scope 6449e39b21SMasatake YAMATO 2 index end: 65c3d1917aSMasatake YAMATO _scopepop 66c3d1917aSMasatake YAMATO } { 6749e39b21SMasatake YAMATO pop 68c3d1917aSMasatake YAMATO exit 69c3d1917aSMasatake YAMATO } ifelse 70c3d1917aSMasatake YAMATO } { 71c3d1917aSMasatake YAMATO exit 72c3d1917aSMasatake YAMATO } ifelse 73c3d1917aSMasatake YAMATO } loop 74c3d1917aSMasatake YAMATO pop 7549e39b21SMasatake YAMATO pop 76c3d1917aSMasatake YAMATO } def 77a071cb23SMasatake YAMATO}} 7896197ba2SMasatake YAMATO 79a071cb23SMasatake YAMATO--regex-Pod=/^=head([1-4])[ \t]+(.+)//{{ 80a071cb23SMasatake YAMATO \2 81c3d1917aSMasatake YAMATO kindTable \1 tolevel get 82a071cb23SMasatake YAMATO 2 /start _matchloc 83c3d1917aSMasatake YAMATO _tag _commit 8449e39b21SMasatake YAMATO dup :line 1 sub \1 tolevel scopePopUpTo 85c3d1917aSMasatake YAMATO _scopetop { 86c3d1917aSMasatake YAMATO 1 index exch scope: _scopepush 87c3d1917aSMasatake YAMATO } { 88c3d1917aSMasatake YAMATO _scopepush 89c3d1917aSMasatake YAMATO } ifelse 90a071cb23SMasatake YAMATO}} 91