Skip to content

Commit ae9f095

Browse files
committed
HTML: extract titles
Signed-off-by: Masatake YAMATO <[email protected]>
1 parent 507b32e commit ae9f095

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

Units/parser-html.r/class-and-id.d/expected.tags

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
Home &middot; Universal Ctags input.html /^ <\/title>$/;" j roles:def
12
/public/css/poole.css input.html /^<link rel="stylesheet" href="\/public\/css\/poole.css">$/;" C roles:extFile
23
/public/css/syntax.css input.html /^<link rel="stylesheet" href="\/public\/css\/syntax.css">$/;" C roles:extFile
34
/public/css/hyde.css input.html /^<link rel="stylesheet" href="\/public\/css\/hyde.css">$/;" C roles:extFile

parsers/html.c

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
typedef enum {
3030
K_ANCHOR,
3131
K_CLASS,
32+
K_TITLE,
3233
K_HEADING1,
3334
K_HEADING2,
3435
K_HEADING3,
@@ -66,6 +67,7 @@ static kindDefinition HtmlKinds [] = {
6667
{ true, 'a', "anchor", "named anchors" },
6768
{ true, 'c', "class", "classes",
6869
.referenceOnly = true, ATTACH_ROLES (ClassRoles)},
70+
{ true, 't', "title", "titles" },
6971
{ true, 'h', "heading1", "H1 headings" },
7072
{ true, 'i', "heading2", "H2 headings" },
7173
{ true, 'j', "heading3", "H3 headings" },
@@ -77,9 +79,16 @@ static kindDefinition HtmlKinds [] = {
7779
};
7880

7981
typedef enum {
82+
/* The order starting from "title" to "h3" should
83+
* not be changed.
84+
*
85+
*/
86+
KEYWORD_heading_start,
87+
KEYWORD_title = KEYWORD_heading_start,
8088
KEYWORD_h1,
8189
KEYWORD_h2,
8290
KEYWORD_h3,
91+
KEYWORD_heading_end = KEYWORD_h3,
8392
KEYWORD_a,
8493
KEYWORD_script,
8594
KEYWORD_style,
@@ -110,6 +119,7 @@ typedef enum {
110119
} keywordId;
111120

112121
static const keywordTable HtmlKeywordTable[] = {
122+
{"title", KEYWORD_title},
113123
{"h1", KEYWORD_h1},
114124
{"h2", KEYWORD_h2},
115125
{"h3", KEYWORD_h3},
@@ -465,7 +475,7 @@ static void readTag (tokenInfo *token, vString *text, int depth)
465475
bool stylesheet_expectation = false;
466476

467477
startTag = lookupKeyword (vStringValue (token->string), Lang_html);
468-
isHeading = (startTag == KEYWORD_h1 || startTag == KEYWORD_h2 || startTag == KEYWORD_h3);
478+
isHeading = (KEYWORD_heading_start <= startTag && startTag <= KEYWORD_heading_end);
469479
isVoid = (startTag >= KEYWORD_area && startTag <= KEYWORD_wbr);
470480
if (text == NULL && isHeading)
471481
{
@@ -600,6 +610,8 @@ static void readTag (tokenInfo *token, vString *text, int depth)
600610
{
601611
htmlKind headingKind;
602612

613+
if (startTag == KEYWORD_title)
614+
headingKind = K_TITLE;
603615
if (startTag == KEYWORD_h1)
604616
headingKind = K_HEADING1;
605617
else if (startTag == KEYWORD_h2)

0 commit comments

Comments
 (0)