xref: /Universal-ctags/optlib/pod.ctags (revision eb459c89131e331dc841b75f1c2453c0a9b7e6db)
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