diff options
-rw-r--r-- | regress/usr.bin/mandoc/char/space/zerowidth.out_html | 17 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/char/unicode/ascii.out_html | 65 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/char/unicode/invalid.out_html | 2 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/char/unicode/latin1.out_html | 257 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/char/unicode/latin1diff.out_html | 38 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/char/unicode/named.out_html | 446 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/char/unicode/namediff.out_html | 110 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/char/unicode/nogroff.out_html | 110 | ||||
-rwxr-xr-x | regress/usr.bin/mandoc/eqn/extract.pl | 1 | ||||
-rw-r--r-- | usr.bin/mandoc/html.c | 221 | ||||
-rw-r--r-- | usr.bin/mandoc/html.h | 5 | ||||
-rw-r--r-- | usr.bin/mandoc/man_html.c | 3 | ||||
-rw-r--r-- | usr.bin/mandoc/mdoc_html.c | 3 |
13 files changed, 845 insertions, 433 deletions
diff --git a/regress/usr.bin/mandoc/char/space/zerowidth.out_html b/regress/usr.bin/mandoc/char/space/zerowidth.out_html index ac2ecf05af5..2ff8ab0d5b3 100644 --- a/regress/usr.bin/mandoc/char/space/zerowidth.out_html +++ b/regress/usr.bin/mandoc/char/space/zerowidth.out_html @@ -1,6 +1,11 @@ -BEGINTEST<br/> -zero width space \& between A and B: AB<br/> -hyphenation allowed \% between A and B: AB<br/> -half-narrow (1/12) space \^ between A and B: AB<br/> -narrow space (1/6) \| between A and B: AB<br/> -ENDTEST<br/> +BEGINTEST +<br/> +zero width space \& between A and B: AB +<br/> +hyphenation allowed \% between A and B: AB +<br/> +half-narrow (1/12) space \^ between A and B: AB +<br/> +narrow space (1/6) \| between A and B: AB +<br/> +ENDTEST diff --git a/regress/usr.bin/mandoc/char/unicode/ascii.out_html b/regress/usr.bin/mandoc/char/unicode/ascii.out_html index 7812f417350..1f9453e17c2 100644 --- a/regress/usr.bin/mandoc/char/unicode/ascii.out_html +++ b/regress/usr.bin/mandoc/char/unicode/ascii.out_html @@ -1,22 +1,43 @@ -BEGINTEST<br/> -""" QUOTATION MARK<br/> -### NUMBER SIGN<br/> -$$$ DOLLAR SIGN<br/> -''' APOSTROPHE<br/> -+++ PLUS SIGN<br/> --- HYPHEN-MINUS<br/> -.. FULL STOP<br/> -/// SOLIDUS<br/> -=== EQUALS SIGN<br/> -@@@ COMMERCIAL AT<br/> -[[[ LEFT SQUARE BRACKET<br/> -\\\\ REVERSE SOLIDUS<br/> -]]] RIGHT SQUARE BRACKET<br/> -^^^^ CIRCUMFLEX ACCENT<br/> -___ LOW LINE<br/> -```` GRAVE ACCENT<br/> -{{{ LEFT CURLY BRACKET<br/> -|||| VERTICAL LINE<br/> -}}} RIGHT CURLY BRACKET<br/> -~~~~ TILDE<br/> -ENDTEST<br/> +BEGINTEST +<br/> +""" QUOTATION MARK +<br/> +### NUMBER SIGN +<br/> +$$$ DOLLAR SIGN +<br/> +''' APOSTROPHE +<br/> ++++ PLUS SIGN +<br/> +-- HYPHEN-MINUS +<br/> +.. FULL STOP +<br/> +/// SOLIDUS +<br/> +=== EQUALS SIGN +<br/> +@@@ COMMERCIAL AT +<br/> +[[[ LEFT SQUARE BRACKET +<br/> +\\\\ REVERSE SOLIDUS +<br/> +]]] RIGHT SQUARE BRACKET +<br/> +^^^^ CIRCUMFLEX ACCENT +<br/> +___ LOW LINE +<br/> +```` GRAVE ACCENT +<br/> +{{{ LEFT CURLY BRACKET +<br/> +|||| VERTICAL LINE +<br/> +}}} RIGHT CURLY BRACKET +<br/> +~~~~ TILDE +<br/> +ENDTEST diff --git a/regress/usr.bin/mandoc/char/unicode/invalid.out_html b/regress/usr.bin/mandoc/char/unicode/invalid.out_html index e7e1cf956c6..6456d7283ca 100644 --- a/regress/usr.bin/mandoc/char/unicode/invalid.out_html +++ b/regress/usr.bin/mandoc/char/unicode/invalid.out_html @@ -5,4 +5,4 @@ too long: >..< too large: >..< trailing garbage: >< not unicode: >_.↑.⇑< -ENDTEST</pre> +ENDTEST diff --git a/regress/usr.bin/mandoc/char/unicode/latin1.out_html b/regress/usr.bin/mandoc/char/unicode/latin1.out_html index 428a00d08af..45cc7578845 100644 --- a/regress/usr.bin/mandoc/char/unicode/latin1.out_html +++ b/regress/usr.bin/mandoc/char/unicode/latin1.out_html @@ -1,86 +1,171 @@ -BEGINTEST<br/> -¢¢ CENT SIGN<br/> -¤¤ CURRENCY SIGN<br/> -¥¥ YEN SIGN<br/> -¦¦ BROKEN BAR<br/> -¨¨ DIAERESIS<br/> -©© COPYRIGHT SIGN<br/> -ª FEMININE ORDINAL INDICATOR<br/> -«« LEFT-POINTING DOUBLE ANGLE QUOTATION MARK<br/> -¬¬¬ NOT SIGN<br/> -­ SOFT HYPHEN<br/> -®® REGISTERED SIGN<br/> -±±± PLUS-MINUS SIGN<br/> -² SUPERSCRIPT TWO<br/> -³ SUPERSCRIPT THREE<br/> -´´´ ACUTE ACCENT<br/> -µµ MICRO SIGN<br/> -·· MIDDLE DOT<br/> -¸¸ CEDILLA<br/> -¹ SUPERSCRIPT ONE<br/> -º MASCULINE ORDINAL INDICATOR<br/> -»» RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK<br/> -¼¼ VULGAR FRACTION ONE QUARTER<br/> -½½ VULGAR FRACTION ONE HALF<br/> -¾¾ VULGAR FRACTION THREE QUARTERS<br/> -ÀÀ LATIN CAPITAL LETTER A WITH GRAVE<br/> -ÁÁ LATIN CAPITAL LETTER A WITH ACUTE<br/> - LATIN CAPITAL LETTER A WITH CIRCUMFLEX<br/> -Ãà LATIN CAPITAL LETTER A WITH TILDE<br/> -ÄÄ LATIN CAPITAL LETTER A WITH DIAERESIS<br/> -ÅÅ LATIN CAPITAL LETTER A WITH RING ABOVE<br/> -ÆÆ LATIN CAPITAL LETTER AE<br/> -ÇÇ LATIN CAPITAL LETTER C WITH CEDILLA<br/> -ÈÈ LATIN CAPITAL LETTER E WITH GRAVE<br/> -ÉÉ LATIN CAPITAL LETTER E WITH ACUTE<br/> -ÊÊ LATIN CAPITAL LETTER E WITH CIRCUMFLEX<br/> -ËË LATIN CAPITAL LETTER E WITH DIAERESIS<br/> -ÌÌ LATIN CAPITAL LETTER I WITH GRAVE<br/> -ÍÍ LATIN CAPITAL LETTER I WITH ACUTE<br/> -ÎÎ LATIN CAPITAL LETTER I WITH CIRCUMFLEX<br/> -ÏÏ LATIN CAPITAL LETTER I WITH DIAERESIS<br/> -ÐÐ LATIN CAPITAL LETTER ETH<br/> -ÑÑ LATIN CAPITAL LETTER N WITH TILDE<br/> -ÒÒ LATIN CAPITAL LETTER O WITH GRAVE<br/> -ÓÓ LATIN CAPITAL LETTER O WITH ACUTE<br/> -ÔÔ LATIN CAPITAL LETTER O WITH CIRCUMFLEX<br/> -ÕÕ LATIN CAPITAL LETTER O WITH TILDE<br/> -ÖÖ LATIN CAPITAL LETTER O WITH DIAERESIS<br/> -××× MULTIPLICATION SIGN<br/> -ØØ LATIN CAPITAL LETTER O WITH STROKE<br/> -ÙÙ LATIN CAPITAL LETTER U WITH GRAVE<br/> -ÚÚ LATIN CAPITAL LETTER U WITH ACUTE<br/> -ÛÛ LATIN CAPITAL LETTER U WITH CIRCUMFLEX<br/> -ÜÜ LATIN CAPITAL LETTER U WITH DIAERESIS<br/> -Ý LATIN CAPITAL LETTER Y WITH ACUTE<br/> -àà LATIN SMALL LETTER A WITH GRAVE<br/> -áá LATIN SMALL LETTER A WITH ACUTE<br/> -ââ LATIN SMALL LETTER A WITH CIRCUMFLEX<br/> -ãã LATIN SMALL LETTER A WITH TILDE<br/> -ää LATIN SMALL LETTER A WITH DIAERESIS<br/> -åå LATIN SMALL LETTER A WITH RING ABOVE<br/> -ææ LATIN SMALL LETTER AE<br/> -çç LATIN SMALL LETTER C WITH CEDILLA<br/> -èè LATIN SMALL LETTER E WITH GRAVE<br/> -éé LATIN SMALL LETTER E WITH ACUTE<br/> -êê LATIN SMALL LETTER E WITH CIRCUMFLEX<br/> -ëë LATIN SMALL LETTER E WITH DIAERESIS<br/> -ìì LATIN SMALL LETTER I WITH GRAVE<br/> -íí LATIN SMALL LETTER I WITH ACUTE<br/> -îî LATIN SMALL LETTER I WITH CIRCUMFLEX<br/> -ïï LATIN SMALL LETTER I WITH DIAERESIS<br/> -ññ LATIN SMALL LETTER N WITH TILDE<br/> -òò LATIN SMALL LETTER O WITH GRAVE<br/> -óó LATIN SMALL LETTER O WITH ACUTE<br/> -ôô LATIN SMALL LETTER O WITH CIRCUMFLEX<br/> -õõ LATIN SMALL LETTER O WITH TILDE<br/> -öö LATIN SMALL LETTER O WITH DIAERESIS<br/> -÷÷÷ DIVISION SIGN<br/> -øø LATIN SMALL LETTER O WITH STROKE<br/> -ùù LATIN SMALL LETTER U WITH GRAVE<br/> -úú LATIN SMALL LETTER U WITH ACUTE<br/> -ûû LATIN SMALL LETTER U WITH CIRCUMFLEX<br/> -üü LATIN SMALL LETTER U WITH DIAERESIS<br/> -ý LATIN SMALL LETTER Y WITH ACUTE<br/> -ÿÿ LATIN SMALL LETTER Y WITH DIAERESIS<br/> -ENDTEST<br/> +BEGINTEST +<br/> +¢¢ CENT SIGN +<br/> +¤¤ CURRENCY SIGN +<br/> +¥¥ YEN SIGN +<br/> +¦¦ BROKEN BAR +<br/> +¨¨ DIAERESIS +<br/> +©© COPYRIGHT SIGN +<br/> +ª FEMININE ORDINAL INDICATOR +<br/> +«« LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +<br/> +¬¬¬ NOT SIGN +<br/> +­ SOFT HYPHEN +<br/> +®® REGISTERED SIGN +<br/> +±±± PLUS-MINUS SIGN +<br/> +² SUPERSCRIPT TWO +<br/> +³ SUPERSCRIPT THREE +<br/> +´´´ ACUTE ACCENT +<br/> +µµ MICRO SIGN +<br/> +·· MIDDLE DOT +<br/> +¸¸ CEDILLA +<br/> +¹ SUPERSCRIPT ONE +<br/> +º MASCULINE ORDINAL INDICATOR +<br/> +»» RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +<br/> +¼¼ VULGAR FRACTION ONE QUARTER +<br/> +½½ VULGAR FRACTION ONE HALF +<br/> +¾¾ VULGAR FRACTION THREE QUARTERS +<br/> +ÀÀ LATIN CAPITAL LETTER A WITH GRAVE +<br/> +ÁÁ LATIN CAPITAL LETTER A WITH ACUTE +<br/> + LATIN CAPITAL LETTER A WITH CIRCUMFLEX +<br/> +Ãà LATIN CAPITAL LETTER A WITH TILDE +<br/> +ÄÄ LATIN CAPITAL LETTER A WITH DIAERESIS +<br/> +ÅÅ LATIN CAPITAL LETTER A WITH RING ABOVE +<br/> +ÆÆ LATIN CAPITAL LETTER AE +<br/> +ÇÇ LATIN CAPITAL LETTER C WITH CEDILLA +<br/> +ÈÈ LATIN CAPITAL LETTER E WITH GRAVE +<br/> +ÉÉ LATIN CAPITAL LETTER E WITH ACUTE +<br/> +ÊÊ LATIN CAPITAL LETTER E WITH CIRCUMFLEX +<br/> +ËË LATIN CAPITAL LETTER E WITH DIAERESIS +<br/> +ÌÌ LATIN CAPITAL LETTER I WITH GRAVE +<br/> +ÍÍ LATIN CAPITAL LETTER I WITH ACUTE +<br/> +ÎÎ LATIN CAPITAL LETTER I WITH CIRCUMFLEX +<br/> +ÏÏ LATIN CAPITAL LETTER I WITH DIAERESIS +<br/> +ÐÐ LATIN CAPITAL LETTER ETH +<br/> +ÑÑ LATIN CAPITAL LETTER N WITH TILDE +<br/> +ÒÒ LATIN CAPITAL LETTER O WITH GRAVE +<br/> +ÓÓ LATIN CAPITAL LETTER O WITH ACUTE +<br/> +ÔÔ LATIN CAPITAL LETTER O WITH CIRCUMFLEX +<br/> +ÕÕ LATIN CAPITAL LETTER O WITH TILDE +<br/> +ÖÖ LATIN CAPITAL LETTER O WITH DIAERESIS +<br/> +××× MULTIPLICATION SIGN +<br/> +ØØ LATIN CAPITAL LETTER O WITH STROKE +<br/> +ÙÙ LATIN CAPITAL LETTER U WITH GRAVE +<br/> +ÚÚ LATIN CAPITAL LETTER U WITH ACUTE +<br/> +ÛÛ LATIN CAPITAL LETTER U WITH CIRCUMFLEX +<br/> +ÜÜ LATIN CAPITAL LETTER U WITH DIAERESIS +<br/> +Ý LATIN CAPITAL LETTER Y WITH ACUTE +<br/> +àà LATIN SMALL LETTER A WITH GRAVE +<br/> +áá LATIN SMALL LETTER A WITH ACUTE +<br/> +ââ LATIN SMALL LETTER A WITH CIRCUMFLEX +<br/> +ãã LATIN SMALL LETTER A WITH TILDE +<br/> +ää LATIN SMALL LETTER A WITH DIAERESIS +<br/> +åå LATIN SMALL LETTER A WITH RING ABOVE +<br/> +ææ LATIN SMALL LETTER AE +<br/> +çç LATIN SMALL LETTER C WITH CEDILLA +<br/> +èè LATIN SMALL LETTER E WITH GRAVE +<br/> +éé LATIN SMALL LETTER E WITH ACUTE +<br/> +êê LATIN SMALL LETTER E WITH CIRCUMFLEX +<br/> +ëë LATIN SMALL LETTER E WITH DIAERESIS +<br/> +ìì LATIN SMALL LETTER I WITH GRAVE +<br/> +íí LATIN SMALL LETTER I WITH ACUTE +<br/> +îî LATIN SMALL LETTER I WITH CIRCUMFLEX +<br/> +ïï LATIN SMALL LETTER I WITH DIAERESIS +<br/> +ññ LATIN SMALL LETTER N WITH TILDE +<br/> +òò LATIN SMALL LETTER O WITH GRAVE +<br/> +óó LATIN SMALL LETTER O WITH ACUTE +<br/> +ôô LATIN SMALL LETTER O WITH CIRCUMFLEX +<br/> +õõ LATIN SMALL LETTER O WITH TILDE +<br/> +öö LATIN SMALL LETTER O WITH DIAERESIS +<br/> +÷÷÷ DIVISION SIGN +<br/> +øø LATIN SMALL LETTER O WITH STROKE +<br/> +ùù LATIN SMALL LETTER U WITH GRAVE +<br/> +úú LATIN SMALL LETTER U WITH ACUTE +<br/> +ûû LATIN SMALL LETTER U WITH CIRCUMFLEX +<br/> +üü LATIN SMALL LETTER U WITH DIAERESIS +<br/> +ý LATIN SMALL LETTER Y WITH ACUTE +<br/> +ÿÿ LATIN SMALL LETTER Y WITH DIAERESIS +<br/> +ENDTEST diff --git a/regress/usr.bin/mandoc/char/unicode/latin1diff.out_html b/regress/usr.bin/mandoc/char/unicode/latin1diff.out_html index cf064d60261..fa1a48657da 100644 --- a/regress/usr.bin/mandoc/char/unicode/latin1diff.out_html +++ b/regress/usr.bin/mandoc/char/unicode/latin1diff.out_html @@ -1,13 +1,25 @@ -BEGINTEST<br/> -¡¡ INVERTED EXCLAMATION MARK<br/> -££ POUND SIGN<br/> -§§ SECTION SIGN<br/> -¯¯ MACRON<br/> -°° DEGREE SIGN<br/> -¶¶ PILCROW SIGN<br/> -¿¿ INVERTED QUESTION MARK<br/> -ÞÞ LATIN CAPITAL LETTER THORN<br/> -ßß LATIN SMALL LETTER SHARP S<br/> -ðð LATIN SMALL LETTER ETH<br/> -þþ LATIN SMALL LETTER THORN<br/> -ENDTEST<br/> +BEGINTEST +<br/> +¡¡ INVERTED EXCLAMATION MARK +<br/> +££ POUND SIGN +<br/> +§§ SECTION SIGN +<br/> +¯¯ MACRON +<br/> +°° DEGREE SIGN +<br/> +¶¶ PILCROW SIGN +<br/> +¿¿ INVERTED QUESTION MARK +<br/> +ÞÞ LATIN CAPITAL LETTER THORN +<br/> +ßß LATIN SMALL LETTER SHARP S +<br/> +ðð LATIN SMALL LETTER ETH +<br/> +þþ LATIN SMALL LETTER THORN +<br/> +ENDTEST diff --git a/regress/usr.bin/mandoc/char/unicode/named.out_html b/regress/usr.bin/mandoc/char/unicode/named.out_html index 00531947464..8ee47dbf77b 100644 --- a/regress/usr.bin/mandoc/char/unicode/named.out_html +++ b/regress/usr.bin/mandoc/char/unicode/named.out_html @@ -1,149 +1,297 @@ -BEGINTEST<br/> -ıı LATIN SMALL LETTER DOTLESS I<br/> -IJIJ LATIN CAPITAL LIGATURE IJ<br/> -ijij LATIN SMALL LIGATURE IJ<br/> -ŁŁ LATIN CAPITAL LETTER L WITH STROKE<br/> -łł LATIN SMALL LETTER L WITH STROKE<br/> -ŒŒ LATIN CAPITAL LIGATURE OE<br/> -œœ LATIN SMALL LIGATURE OE<br/> -ƒƒ LATIN SMALL LETTER F WITH HOOK<br/> -ˇˇ CARON<br/> -˘˘ BREVE<br/> -˚˚ RING ABOVE<br/> -˛˛ OGONEK<br/> -˝˝ DOUBLE ACUTE ACCENT<br/> -ΑΑ GREEK CAPITAL LETTER ALPHA<br/> -ΒΒ GREEK CAPITAL LETTER BETA<br/> -ΔΔ GREEK CAPITAL LETTER DELTA<br/> -ΕΕ GREEK CAPITAL LETTER EPSILON<br/> -ΖΖ GREEK CAPITAL LETTER ZETA<br/> -ΗΗ GREEK CAPITAL LETTER ETA<br/> -ΘΘ GREEK CAPITAL LETTER THETA<br/> -ΙΙ GREEK CAPITAL LETTER IOTA<br/> -ΚΚ GREEK CAPITAL LETTER KAPPA<br/> -ΛΛ GREEK CAPITAL LETTER LAMDA<br/> -ΜΜ GREEK CAPITAL LETTER MU<br/> -ΝΝ GREEK CAPITAL LETTER NU<br/> -ΞΞ GREEK CAPITAL LETTER XI<br/> -ΟΟ GREEK CAPITAL LETTER OMICRON<br/> -ΠΠ GREEK CAPITAL LETTER PI<br/> -ΡΡ GREEK CAPITAL LETTER RHO<br/> -ΤΤ GREEK CAPITAL LETTER TAU<br/> -ΥΥ GREEK CAPITAL LETTER UPSILON<br/> -ΦΦ GREEK CAPITAL LETTER PHI<br/> -ΧΧ GREEK CAPITAL LETTER CHI<br/> -ΨΨ GREEK CAPITAL LETTER PSI<br/> -ΩΩ GREEK CAPITAL LETTER OMEGA<br/> -αα GREEK SMALL LETTER ALPHA<br/> -ββ GREEK SMALL LETTER BETA<br/> -γγ GREEK SMALL LETTER GAMMA<br/> -δδ GREEK SMALL LETTER DELTA<br/> -εε GREEK SMALL LETTER EPSILON<br/> -ζζ GREEK SMALL LETTER ZETA<br/> -ηη GREEK SMALL LETTER ETA<br/> -θθ GREEK SMALL LETTER THETA<br/> -ιι GREEK SMALL LETTER IOTA<br/> -κκ GREEK SMALL LETTER KAPPA<br/> -λλ GREEK SMALL LETTER LAMDA<br/> -μμ GREEK SMALL LETTER MU<br/> -νν GREEK SMALL LETTER NU<br/> -ξξ GREEK SMALL LETTER XI<br/> -οο GREEK SMALL LETTER OMICRON<br/> -ππ GREEK SMALL LETTER PI<br/> -ρρ GREEK SMALL LETTER RHO<br/> -ςς GREEK SMALL LETTER FINAL SIGMA<br/> -σσ GREEK SMALL LETTER SIGMA<br/> -ττ GREEK SMALL LETTER TAU<br/> -υυ GREEK SMALL LETTER UPSILON<br/> -φφ GREEK SMALL LETTER PHI<br/> -χχ GREEK SMALL LETTER CHI<br/> -ψψ GREEK SMALL LETTER PSI<br/> -ωω GREEK SMALL LETTER OMEGA<br/> -ϑϑ GREEK THETA SYMBOL<br/> -ϕϕ GREEK PHI SYMBOL<br/> -ϖϖ GREEK PI SYMBOL<br/> -ϵϵ GREEK LUNATE EPSILON SYMBOL<br/> -‐‐ HYPHEN<br/> -–– EN DASH<br/> -—— EM DASH<br/> -‘‘ LEFT SINGLE QUOTATION MARK<br/> -’’ RIGHT SINGLE QUOTATION MARK<br/> -‚‚ SINGLE LOW-9 QUOTATION MARK<br/> -““ LEFT DOUBLE QUOTATION MARK<br/> -”” RIGHT DOUBLE QUOTATION MARK<br/> -„„ DOUBLE LOW-9 QUOTATION MARK<br/> -†† DAGGER<br/> -‡‡ DOUBLE DAGGER<br/> -•• BULLET<br/> -‰‰ PER MILLE SIGN<br/> -′′ PRIME<br/> -″″ DOUBLE PRIME<br/> -‹‹ SINGLE LEFT-POINTING ANGLE QUOTATION MARK<br/> -›› SINGLE RIGHT-POINTING ANGLE QUOTATION MARK<br/> -⁄⁄ FRACTION SLASH<br/> -€€€ EURO SIGN<br/> -ℑℑ BLACK-LETTER CAPITAL I<br/> -ℜℜ BLACK-LETTER CAPITAL R<br/> -™™ TRADE MARK SIGN<br/> -ℵℵ ALEF SYMBOL<br/> -←← LEFTWARDS ARROW<br/> -↑↑ UPWARDS ARROW<br/> -→→ RIGHTWARDS ARROW<br/> -↓↓ DOWNWARDS ARROW<br/> -↔↔ LEFT RIGHT ARROW<br/> -↵↵ DOWNWARDS ARROW WITH CORNER LEFTWARDS<br/> -⇐⇐ LEFTWARDS DOUBLE ARROW<br/> -⇑⇑ UPWARDS DOUBLE ARROW<br/> -⇒⇒ RIGHTWARDS DOUBLE ARROW<br/> -⇓⇓ DOWNWARDS DOUBLE ARROW<br/> -⇔⇔ LEFT RIGHT DOUBLE ARROW<br/> -∀∀ FOR ALL<br/> -∂∂ PARTIAL DIFFERENTIAL<br/> -∃∃ THERE EXISTS<br/> -∅∅ EMPTY SET<br/> -∈∈ ELEMENT OF<br/> -∋∋ CONTAINS AS MEMBER<br/> -−− MINUS SIGN<br/> -∓∓ MINUS-OR-PLUS SIGN<br/> -∗∗ ASTERISK OPERATOR<br/> -√√ SQUARE ROOT<br/> -∝∝ PROPORTIONAL TO<br/> -∞∞ INFINITY<br/> -∠∠ ANGLE<br/> -∧∧ LOGICAL AND<br/> -∨∨ LOGICAL OR<br/> -∩∩ INTERSECTION<br/> -∪∪ UNION<br/> -∫∫ INTEGRAL<br/> -∴∴∴ THEREFORE<br/> -∼∼ TILDE OPERATOR<br/> -≃≃ ASYMPTOTICALLY EQUAL TO<br/> -≅≅ APPROXIMATELY EQUAL TO<br/> -≈≈≈ ALMOST EQUAL TO<br/> -≠≠ NOT EQUAL TO<br/> -≡≡ IDENTICAL TO<br/> -≢≢ NOT IDENTICAL TO<br/> -≤≤ LESS-THAN OR EQUAL TO<br/> -≥≥ GREATER-THAN OR EQUAL TO<br/> -⊂⊂ SUBSET OF<br/> -⊃⊃ SUPERSET OF<br/> -⊆⊆ SUBSET OF OR EQUAL TO<br/> -⊇⊇ SUPERSET OF OR EQUAL TO<br/> -⊕⊕ CIRCLED PLUS<br/> -⊗⊗ CIRCLED TIMES<br/> -⊥⊥ UP TACK<br/> -⋅⋅ DOT OPERATOR<br/> -⌈⌈ LEFT CEILING<br/> -⌉⌉ RIGHT CEILING<br/> -⌊⌊ LEFT FLOOR<br/> -⌋⌋ RIGHT FLOOR<br/> -⎪⎪ CURLY BRACKET EXTENSION<br/> -││ BOX DRAWINGS LIGHT VERTICAL<br/> -□□ WHITE SQUARE<br/> -◊◊ LOZENGE<br/> -○○ WHITE CIRCLE<br/> -☜☜ WHITE LEFT POINTING INDEX<br/> -☞☞ WHITE RIGHT POINTING INDEX<br/> -⟨⟨ MATHEMATICAL LEFT ANGLE BRACKET<br/> -⟩⟩ MATHEMATICAL RIGHT ANGLE BRACKET<br/> -ENDTEST<br/> +BEGINTEST +<br/> +ıı LATIN SMALL LETTER DOTLESS I +<br/> +IJIJ LATIN CAPITAL LIGATURE IJ +<br/> +ijij LATIN SMALL LIGATURE IJ +<br/> +ŁŁ LATIN CAPITAL LETTER L WITH STROKE +<br/> +łł LATIN SMALL LETTER L WITH STROKE +<br/> +ŒŒ LATIN CAPITAL LIGATURE OE +<br/> +œœ LATIN SMALL LIGATURE OE +<br/> +ƒƒ LATIN SMALL LETTER F WITH HOOK +<br/> +ˇˇ CARON +<br/> +˘˘ BREVE +<br/> +˚˚ RING ABOVE +<br/> +˛˛ OGONEK +<br/> +˝˝ DOUBLE ACUTE ACCENT +<br/> +ΑΑ GREEK CAPITAL LETTER ALPHA +<br/> +ΒΒ GREEK CAPITAL LETTER BETA +<br/> +ΔΔ GREEK CAPITAL LETTER DELTA +<br/> +ΕΕ GREEK CAPITAL LETTER EPSILON +<br/> +ΖΖ GREEK CAPITAL LETTER ZETA +<br/> +ΗΗ GREEK CAPITAL LETTER ETA +<br/> +ΘΘ GREEK CAPITAL LETTER THETA +<br/> +ΙΙ GREEK CAPITAL LETTER IOTA +<br/> +ΚΚ GREEK CAPITAL LETTER KAPPA +<br/> +ΛΛ GREEK CAPITAL LETTER LAMDA +<br/> +ΜΜ GREEK CAPITAL LETTER MU +<br/> +ΝΝ GREEK CAPITAL LETTER NU +<br/> +ΞΞ GREEK CAPITAL LETTER XI +<br/> +ΟΟ GREEK CAPITAL LETTER OMICRON +<br/> +ΠΠ GREEK CAPITAL LETTER PI +<br/> +ΡΡ GREEK CAPITAL LETTER RHO +<br/> +ΤΤ GREEK CAPITAL LETTER TAU +<br/> +ΥΥ GREEK CAPITAL LETTER UPSILON +<br/> +ΦΦ GREEK CAPITAL LETTER PHI +<br/> +ΧΧ GREEK CAPITAL LETTER CHI +<br/> +ΨΨ GREEK CAPITAL LETTER PSI +<br/> +ΩΩ GREEK CAPITAL LETTER OMEGA +<br/> +αα GREEK SMALL LETTER ALPHA +<br/> +ββ GREEK SMALL LETTER BETA +<br/> +γγ GREEK SMALL LETTER GAMMA +<br/> +δδ GREEK SMALL LETTER DELTA +<br/> +εε GREEK SMALL LETTER EPSILON +<br/> +ζζ GREEK SMALL LETTER ZETA +<br/> +ηη GREEK SMALL LETTER ETA +<br/> +θθ GREEK SMALL LETTER THETA +<br/> +ιι GREEK SMALL LETTER IOTA +<br/> +κκ GREEK SMALL LETTER KAPPA +<br/> +λλ GREEK SMALL LETTER LAMDA +<br/> +μμ GREEK SMALL LETTER MU +<br/> +νν GREEK SMALL LETTER NU +<br/> +ξξ GREEK SMALL LETTER XI +<br/> +οο GREEK SMALL LETTER OMICRON +<br/> +ππ GREEK SMALL LETTER PI +<br/> +ρρ GREEK SMALL LETTER RHO +<br/> +ςς GREEK SMALL LETTER FINAL SIGMA +<br/> +σσ GREEK SMALL LETTER SIGMA +<br/> +ττ GREEK SMALL LETTER TAU +<br/> +υυ GREEK SMALL LETTER UPSILON +<br/> +φφ GREEK SMALL LETTER PHI +<br/> +χχ GREEK SMALL LETTER CHI +<br/> +ψψ GREEK SMALL LETTER PSI +<br/> +ωω GREEK SMALL LETTER OMEGA +<br/> +ϑϑ GREEK THETA SYMBOL +<br/> +ϕϕ GREEK PHI SYMBOL +<br/> +ϖϖ GREEK PI SYMBOL +<br/> +ϵϵ GREEK LUNATE EPSILON SYMBOL +<br/> +‐‐ HYPHEN +<br/> +–– EN DASH +<br/> +—— EM DASH +<br/> +‘‘ LEFT SINGLE QUOTATION MARK +<br/> +’’ RIGHT SINGLE QUOTATION MARK +<br/> +‚‚ SINGLE LOW-9 QUOTATION MARK +<br/> +““ LEFT DOUBLE QUOTATION MARK +<br/> +”” RIGHT DOUBLE QUOTATION MARK +<br/> +„„ DOUBLE LOW-9 QUOTATION MARK +<br/> +†† DAGGER +<br/> +‡‡ DOUBLE DAGGER +<br/> +•• BULLET +<br/> +‰‰ PER MILLE SIGN +<br/> +′′ PRIME +<br/> +″″ DOUBLE PRIME +<br/> +‹‹ SINGLE LEFT-POINTING ANGLE QUOTATION MARK +<br/> +›› SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +<br/> +⁄⁄ FRACTION SLASH +<br/> +€€€ EURO SIGN +<br/> +ℑℑ BLACK-LETTER CAPITAL I +<br/> +ℜℜ BLACK-LETTER CAPITAL R +<br/> +™™ TRADE MARK SIGN +<br/> +ℵℵ ALEF SYMBOL +<br/> +←← LEFTWARDS ARROW +<br/> +↑↑ UPWARDS ARROW +<br/> +→→ RIGHTWARDS ARROW +<br/> +↓↓ DOWNWARDS ARROW +<br/> +↔↔ LEFT RIGHT ARROW +<br/> +↵↵ DOWNWARDS ARROW WITH CORNER LEFTWARDS +<br/> +⇐⇐ LEFTWARDS DOUBLE ARROW +<br/> +⇑⇑ UPWARDS DOUBLE ARROW +<br/> +⇒⇒ RIGHTWARDS DOUBLE ARROW +<br/> +⇓⇓ DOWNWARDS DOUBLE ARROW +<br/> +⇔⇔ LEFT RIGHT DOUBLE ARROW +<br/> +∀∀ FOR ALL +<br/> +∂∂ PARTIAL DIFFERENTIAL +<br/> +∃∃ THERE EXISTS +<br/> +∅∅ EMPTY SET +<br/> +∈∈ ELEMENT OF +<br/> +∋∋ CONTAINS AS MEMBER +<br/> +−− MINUS SIGN +<br/> +∓∓ MINUS-OR-PLUS SIGN +<br/> +∗∗ ASTERISK OPERATOR +<br/> +√√ SQUARE ROOT +<br/> +∝∝ PROPORTIONAL TO +<br/> +∞∞ INFINITY +<br/> +∠∠ ANGLE +<br/> +∧∧ LOGICAL AND +<br/> +∨∨ LOGICAL OR +<br/> +∩∩ INTERSECTION +<br/> +∪∪ UNION +<br/> +∫∫ INTEGRAL +<br/> +∴∴∴ THEREFORE +<br/> +∼∼ TILDE OPERATOR +<br/> +≃≃ ASYMPTOTICALLY EQUAL TO +<br/> +≅≅ APPROXIMATELY EQUAL TO +<br/> +≈≈≈ ALMOST EQUAL TO +<br/> +≠≠ NOT EQUAL TO +<br/> +≡≡ IDENTICAL TO +<br/> +≢≢ NOT IDENTICAL TO +<br/> +≤≤ LESS-THAN OR EQUAL TO +<br/> +≥≥ GREATER-THAN OR EQUAL TO +<br/> +⊂⊂ SUBSET OF +<br/> +⊃⊃ SUPERSET OF +<br/> +⊆⊆ SUBSET OF OR EQUAL TO +<br/> +⊇⊇ SUPERSET OF OR EQUAL TO +<br/> +⊕⊕ CIRCLED PLUS +<br/> +⊗⊗ CIRCLED TIMES +<br/> +⊥⊥ UP TACK +<br/> +⋅⋅ DOT OPERATOR +<br/> +⌈⌈ LEFT CEILING +<br/> +⌉⌉ RIGHT CEILING +<br/> +⌊⌊ LEFT FLOOR +<br/> +⌋⌋ RIGHT FLOOR +<br/> +⎪⎪ CURLY BRACKET EXTENSION +<br/> +││ BOX DRAWINGS LIGHT VERTICAL +<br/> +□□ WHITE SQUARE +<br/> +◊◊ LOZENGE +<br/> +○○ WHITE CIRCLE +<br/> +☜☜ WHITE LEFT POINTING INDEX +<br/> +☞☞ WHITE RIGHT POINTING INDEX +<br/> +⟨⟨ MATHEMATICAL LEFT ANGLE BRACKET +<br/> +⟩⟩ MATHEMATICAL RIGHT ANGLE BRACKET +<br/> +ENDTEST diff --git a/regress/usr.bin/mandoc/char/unicode/namediff.out_html b/regress/usr.bin/mandoc/char/unicode/namediff.out_html index 17fb5c8ef94..6c4946295ba 100644 --- a/regress/usr.bin/mandoc/char/unicode/namediff.out_html +++ b/regress/usr.bin/mandoc/char/unicode/namediff.out_html @@ -1,37 +1,73 @@ -BEGINTEST<br/> -ȷȷ LATIN SMALL LETTER DOTLESS J<br/> -˙˙ DOT ABOVE<br/> -ΓΓ GREEK CAPITAL LETTER GAMMA<br/> -ΣΣ GREEK CAPITAL LETTER SIGMA<br/> -‾‾ OVERLINE<br/> -ℏℏ PLANCK CONSTANT OVER TWO PI<br/> -↕↕ UP DOWN ARROW<br/> -⇕⇕ UP DOWN DOUBLE ARROW<br/> -∇∇ NABLA<br/> -∉∉ NOT AN ELEMENT OF<br/> -∏∏ N-ARY PRODUCT<br/> -∐∐ N-ARY COPRODUCT<br/> -∑∑ N-ARY SUMMATION<br/> -⊄⊄ NOT A SUBSET OF<br/> -⊅⊅ NOT A SUPERSET OF<br/> -⎛⎛ LEFT PARENTHESIS UPPER HOOK<br/> -⎜⎜ LEFT PARENTHESIS EXTENSION<br/> -⎝⎝ LEFT PARENTHESIS LOWER HOOK<br/> -⎞⎞ RIGHT PARENTHESIS UPPER HOOK<br/> -⎟⎟ RIGHT PARENTHESIS EXTENSION<br/> -⎠⎠ RIGHT PARENTHESIS LOWER HOOK<br/> -⎡⎡ LEFT SQUARE BRACKET UPPER CORNER<br/> -⎢⎢ LEFT SQUARE BRACKET EXTENSION<br/> -⎣⎣ LEFT SQUARE BRACKET LOWER CORNER<br/> -⎤⎤ RIGHT SQUARE BRACKET UPPER CORNER<br/> -⎥⎥ RIGHT SQUARE BRACKET EXTENSION<br/> -⎦⎦ RIGHT SQUARE BRACKET LOWER CORNER<br/> -⎧⎧ LEFT CURLY BRACKET UPPER HOOK<br/> -⎨⎨ LEFT CURLY BRACKET MIDDLE PIECE<br/> -⎩⎩ LEFT CURLY BRACKET LOWER HOOK<br/> -⎪⎪⎪⎪ CURLY BRACKET EXTENSION<br/> -⎫⎫ RIGHT CURLY BRACKET UPPER HOOK<br/> -⎬⎬ RIGHT CURLY BRACKET MIDDLE PIECE<br/> -⎭⎭ RIGHT CURLY BRACKET LOWER HOOK<br/> -✓✓ CHECK MARK<br/> -ENDTEST<br/> +BEGINTEST +<br/> +ȷȷ LATIN SMALL LETTER DOTLESS J +<br/> +˙˙ DOT ABOVE +<br/> +ΓΓ GREEK CAPITAL LETTER GAMMA +<br/> +ΣΣ GREEK CAPITAL LETTER SIGMA +<br/> +‾‾ OVERLINE +<br/> +ℏℏ PLANCK CONSTANT OVER TWO PI +<br/> +↕↕ UP DOWN ARROW +<br/> +⇕⇕ UP DOWN DOUBLE ARROW +<br/> +∇∇ NABLA +<br/> +∉∉ NOT AN ELEMENT OF +<br/> +∏∏ N-ARY PRODUCT +<br/> +∐∐ N-ARY COPRODUCT +<br/> +∑∑ N-ARY SUMMATION +<br/> +⊄⊄ NOT A SUBSET OF +<br/> +⊅⊅ NOT A SUPERSET OF +<br/> +⎛⎛ LEFT PARENTHESIS UPPER HOOK +<br/> +⎜⎜ LEFT PARENTHESIS EXTENSION +<br/> +⎝⎝ LEFT PARENTHESIS LOWER HOOK +<br/> +⎞⎞ RIGHT PARENTHESIS UPPER HOOK +<br/> +⎟⎟ RIGHT PARENTHESIS EXTENSION +<br/> +⎠⎠ RIGHT PARENTHESIS LOWER HOOK +<br/> +⎡⎡ LEFT SQUARE BRACKET UPPER CORNER +<br/> +⎢⎢ LEFT SQUARE BRACKET EXTENSION +<br/> +⎣⎣ LEFT SQUARE BRACKET LOWER CORNER +<br/> +⎤⎤ RIGHT SQUARE BRACKET UPPER CORNER +<br/> +⎥⎥ RIGHT SQUARE BRACKET EXTENSION +<br/> +⎦⎦ RIGHT SQUARE BRACKET LOWER CORNER +<br/> +⎧⎧ LEFT CURLY BRACKET UPPER HOOK +<br/> +⎨⎨ LEFT CURLY BRACKET MIDDLE PIECE +<br/> +⎩⎩ LEFT CURLY BRACKET LOWER HOOK +<br/> +⎪⎪⎪⎪ CURLY BRACKET EXTENSION +<br/> +⎫⎫ RIGHT CURLY BRACKET UPPER HOOK +<br/> +⎬⎬ RIGHT CURLY BRACKET MIDDLE PIECE +<br/> +⎭⎭ RIGHT CURLY BRACKET LOWER HOOK +<br/> +✓✓ CHECK MARK +<br/> +ENDTEST diff --git a/regress/usr.bin/mandoc/char/unicode/nogroff.out_html b/regress/usr.bin/mandoc/char/unicode/nogroff.out_html index 440da23e1e5..849f8b07aef 100644 --- a/regress/usr.bin/mandoc/char/unicode/nogroff.out_html +++ b/regress/usr.bin/mandoc/char/unicode/nogroff.out_html @@ -1,37 +1,73 @@ -BEGINTEST<br/> -�� <control> NULL<br/> -�� <control> START OF HEADING<br/> -�� <control> BELL<br/> -�� <control> BACKSPACE<br/> - <control> CHARACTER TABULATION<br/> -�� <control> LINE FEED<br/> -�� <control> LINE TABULATION<br/> -�� <control> FORM FEED<br/> -�� <control> CARRIAGE RETURN<br/> -�� <control> ESCAPE<br/> -�� <control> DELETE<br/> -�� <control> 0x80<br/> -�� <control> 0x81<br/> -�� <control> BREAK PERMITTED HERE<br/> -�� <control> NO BREAK HERE<br/> -�� <control> PRIVACY MESSAGE<br/> -�� <control> APPLICATION PROGRAM COMMAND<br/> -≪≪ MUCH LESS-THAN<br/> -≫≫ MUCH GREATER-THAN<br/> -ffff LATIN SMALL LIGATURE FF<br/> -fifi LATIN SMALL LIGATURE FI<br/> -flfl LATIN SMALL LIGATURE FL<br/> -ffiffi LATIN SMALL LIGATURE FFI<br/> -fflffl LATIN SMALL LIGATURE FFL<br/> -� REPLACEMENT CHARACTER<br/> - <undefined><br/> - <undefined><br/> -𐀀 LINEAR B SYLLABLE B008 A<br/> -󿿽 <Plane 15 Private Use, Last><br/> - <undefined><br/> - <undefined><br/> -􀀀 <Plane 16 Private Use, First><br/> -􏿽 <Plane 16 Private Use, Last><br/> - <undefined><br/> - <undefined><br/> -ENDTEST<br/> +BEGINTEST +<br/> +�� <control> NULL +<br/> +�� <control> START OF HEADING +<br/> +�� <control> BELL +<br/> +�� <control> BACKSPACE +<br/> + <control> CHARACTER TABULATION +<br/> +�� <control> LINE FEED +<br/> +�� <control> LINE TABULATION +<br/> +�� <control> FORM FEED +<br/> +�� <control> CARRIAGE RETURN +<br/> +�� <control> ESCAPE +<br/> +�� <control> DELETE +<br/> +�� <control> 0x80 +<br/> +�� <control> 0x81 +<br/> +�� <control> BREAK PERMITTED HERE +<br/> +�� <control> NO BREAK HERE +<br/> +�� <control> PRIVACY MESSAGE +<br/> +�� <control> APPLICATION PROGRAM COMMAND +<br/> +≪≪ MUCH LESS-THAN +<br/> +≫≫ MUCH GREATER-THAN +<br/> +ffff LATIN SMALL LIGATURE FF +<br/> +fifi LATIN SMALL LIGATURE FI +<br/> +flfl LATIN SMALL LIGATURE FL +<br/> +ffiffi LATIN SMALL LIGATURE FFI +<br/> +fflffl LATIN SMALL LIGATURE FFL +<br/> +� REPLACEMENT CHARACTER +<br/> + <undefined> +<br/> + <undefined> +<br/> +𐀀 LINEAR B SYLLABLE B008 A +<br/> +󿿽 <Plane 15 Private Use, Last> +<br/> + <undefined> +<br/> + <undefined> +<br/> +􀀀 <Plane 16 Private Use, First> +<br/> +􏿽 <Plane 16 Private Use, Last> +<br/> + <undefined> +<br/> + <undefined> +<br/> +ENDTEST diff --git a/regress/usr.bin/mandoc/eqn/extract.pl b/regress/usr.bin/mandoc/eqn/extract.pl index 60e9d643839..e785f986e62 100755 --- a/regress/usr.bin/mandoc/eqn/extract.pl +++ b/regress/usr.bin/mandoc/eqn/extract.pl @@ -12,6 +12,7 @@ while (<>) { next unless length; } s/<\/math>.*// and $ended = 1; + s/^ *//; print "$_\n" if length; exit 0 if $ended; } diff --git a/usr.bin/mandoc/html.c b/usr.bin/mandoc/html.c index 6b5443e8b04..f42a354c3ad 100644 --- a/usr.bin/mandoc/html.c +++ b/usr.bin/mandoc/html.c @@ -1,4 +1,4 @@ -/* $OpenBSD: html.c,v 1.65 2017/01/17 15:32:39 schwarze Exp $ */ +/* $OpenBSD: html.c,v 1.66 2017/01/18 19:22:18 schwarze Exp $ */ /* * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2011-2015, 2017 Ingo Schwarze <schwarze@openbsd.org> @@ -36,58 +36,66 @@ struct htmldata { const char *name; int flags; -#define HTML_CLRLINE (1 << 0) -#define HTML_NOSTACK (1 << 1) -#define HTML_AUTOCLOSE (1 << 2) /* Tag has auto-closure. */ +#define HTML_NOSTACK (1 << 0) +#define HTML_AUTOCLOSE (1 << 1) +#define HTML_NLBEFORE (1 << 2) +#define HTML_NLBEGIN (1 << 3) +#define HTML_NLEND (1 << 4) +#define HTML_NLAFTER (1 << 5) +#define HTML_NLAROUND (HTML_NLBEFORE | HTML_NLAFTER) +#define HTML_NLINSIDE (HTML_NLBEGIN | HTML_NLEND) +#define HTML_NLALL (HTML_NLAROUND | HTML_NLINSIDE) +#define HTML_INDENT (1 << 6) +#define HTML_NOINDENT (1 << 7) }; static const struct htmldata htmltags[TAG_MAX] = { - {"html", HTML_CLRLINE}, /* TAG_HTML */ - {"head", HTML_CLRLINE}, /* TAG_HEAD */ - {"body", HTML_CLRLINE}, /* TAG_BODY */ - {"meta", HTML_CLRLINE | HTML_NOSTACK | HTML_AUTOCLOSE}, /* TAG_META */ - {"title", HTML_CLRLINE}, /* TAG_TITLE */ - {"div", HTML_CLRLINE}, /* TAG_DIV */ - {"h1", 0}, /* TAG_H1 */ - {"h2", 0}, /* TAG_H2 */ - {"span", 0}, /* TAG_SPAN */ - {"link", HTML_CLRLINE | HTML_NOSTACK | HTML_AUTOCLOSE}, /* TAG_LINK */ - {"br", HTML_CLRLINE | HTML_NOSTACK | HTML_AUTOCLOSE}, /* TAG_BR */ - {"a", 0}, /* TAG_A */ - {"table", HTML_CLRLINE}, /* TAG_TABLE */ - {"tbody", HTML_CLRLINE}, /* TAG_TBODY */ - {"col", HTML_CLRLINE | HTML_NOSTACK | HTML_AUTOCLOSE}, /* TAG_COL */ - {"tr", HTML_CLRLINE}, /* TAG_TR */ - {"td", HTML_CLRLINE}, /* TAG_TD */ - {"li", HTML_CLRLINE}, /* TAG_LI */ - {"ul", HTML_CLRLINE}, /* TAG_UL */ - {"ol", HTML_CLRLINE}, /* TAG_OL */ - {"dl", HTML_CLRLINE}, /* TAG_DL */ - {"dt", HTML_CLRLINE}, /* TAG_DT */ - {"dd", HTML_CLRLINE}, /* TAG_DD */ - {"blockquote", HTML_CLRLINE}, /* TAG_BLOCKQUOTE */ - {"pre", HTML_CLRLINE }, /* TAG_PRE */ - {"b", 0 }, /* TAG_B */ - {"i", 0 }, /* TAG_I */ - {"code", 0 }, /* TAG_CODE */ - {"small", 0 }, /* TAG_SMALL */ - {"style", HTML_CLRLINE}, /* TAG_STYLE */ - {"math", HTML_CLRLINE}, /* TAG_MATH */ - {"mrow", 0}, /* TAG_MROW */ - {"mi", 0}, /* TAG_MI */ - {"mo", 0}, /* TAG_MO */ - {"msup", 0}, /* TAG_MSUP */ - {"msub", 0}, /* TAG_MSUB */ - {"msubsup", 0}, /* TAG_MSUBSUP */ - {"mfrac", 0}, /* TAG_MFRAC */ - {"msqrt", 0}, /* TAG_MSQRT */ - {"mfenced", 0}, /* TAG_MFENCED */ - {"mtable", 0}, /* TAG_MTABLE */ - {"mtr", 0}, /* TAG_MTR */ - {"mtd", 0}, /* TAG_MTD */ - {"munderover", 0}, /* TAG_MUNDEROVER */ - {"munder", 0}, /* TAG_MUNDER*/ - {"mover", 0}, /* TAG_MOVER*/ + {"html", HTML_NLALL}, + {"head", HTML_NLALL | HTML_INDENT}, + {"body", HTML_NLALL}, + {"meta", HTML_NOSTACK | HTML_AUTOCLOSE | HTML_NLALL}, + {"title", HTML_NLAROUND}, + {"div", HTML_NLAROUND}, + {"h1", HTML_NLAROUND}, + {"h2", HTML_NLAROUND}, + {"span", 0}, + {"link", HTML_NOSTACK | HTML_AUTOCLOSE | HTML_NLALL}, + {"br", HTML_NOSTACK | HTML_AUTOCLOSE | HTML_NLALL}, + {"a", 0}, + {"table", HTML_NLALL | HTML_INDENT}, + {"tbody", HTML_NLALL | HTML_INDENT}, + {"col", HTML_NOSTACK | HTML_AUTOCLOSE | HTML_NLALL}, + {"tr", HTML_NLALL | HTML_INDENT}, + {"td", HTML_NLAROUND}, + {"li", HTML_NLAROUND | HTML_INDENT}, + {"ul", HTML_NLALL | HTML_INDENT}, + {"ol", HTML_NLALL | HTML_INDENT}, + {"dl", HTML_NLALL | HTML_INDENT}, + {"dt", HTML_NLAROUND}, + {"dd", HTML_NLAROUND | HTML_INDENT}, + {"blockquote", HTML_NLALL | HTML_INDENT}, + {"pre", HTML_NLALL | HTML_NOINDENT}, + {"b", 0}, + {"i", 0}, + {"code", 0}, + {"small", 0}, + {"style", HTML_NLALL | HTML_INDENT}, + {"math", HTML_NLALL | HTML_INDENT}, + {"mrow", 0}, + {"mi", 0}, + {"mo", 0}, + {"msup", 0}, + {"msub", 0}, + {"msubsup", 0}, + {"mfrac", 0}, + {"msqrt", 0}, + {"mfenced", 0}, + {"mtable", 0}, + {"mtr", 0}, + {"mtd", 0}, + {"munderover", 0}, + {"munder", 0}, + {"mover", 0}, }; static const char *const roffscales[SCALE_MAX] = { @@ -104,6 +112,8 @@ static const char *const roffscales[SCALE_MAX] = { }; static void a2width(const char *, struct roffsu *); +static void html_endline(struct html *); +static void html_indent(struct html *); static void print_ctag(struct html *, struct tag *); static int print_escape(char); static int print_encode(struct html *, const char *, const char *, int); @@ -154,13 +164,19 @@ print_gen_head(struct html *h) /* * Print a default style-sheet. */ + t = print_otag(h, TAG_STYLE, ""); - print_text(h, "table.head, table.foot { width: 100%; }\n" - "td.head-rtitle, td.foot-os { text-align: right; }\n" - "td.head-vol { text-align: center; }\n" - "table.foot td { width: 50%; }\n" - "table.head td { width: 33%; }\n" - "div.spacer { margin: 1em 0; }\n"); + print_text(h, "table.head, table.foot { width: 100%; }"); + html_endline(h); + print_text(h, "td.head-rtitle, td.foot-os { text-align: right; }"); + html_endline(h); + print_text(h, "td.head-vol { text-align: center; }"); + html_endline(h); + print_text(h, "table.foot td { width: 50%; }"); + html_endline(h); + print_text(h, "table.head td { width: 33%; }"); + html_endline(h); + print_text(h, "div.spacer { margin: 1em 0; }"); print_tagq(h, t); if (h->style) @@ -433,11 +449,13 @@ print_otag(struct html *h, enum htmltag tag, const char *fmt, ...) const char *attr; char *s; double v; - int i, have_style; + int i, have_style, tflags; + + tflags = htmltags[tag].flags; /* Push this tags onto the stack of open scopes. */ - if ( ! (HTML_NOSTACK & htmltags[tag].flags)) { + if ((tflags & HTML_NOSTACK) == 0) { t = mandoc_malloc(sizeof(struct tag)); t->tag = tag; t->next = h->tags.head; @@ -445,16 +463,19 @@ print_otag(struct html *h, enum htmltag tag, const char *fmt, ...) } else t = NULL; - if ( ! (HTML_NOSPACE & h->flags)) - if ( ! (HTML_CLRLINE & htmltags[tag].flags)) { - /* Manage keeps! */ - if ( ! (HTML_KEEP & h->flags)) { - if (HTML_PREKEEP & h->flags) - h->flags |= HTML_KEEP; - putchar(' '); - } else - printf(" "); + if (tflags & HTML_NLBEFORE) + html_endline(h); + if (h->flags & HTML_NLDONE) + html_indent(h); + else if ((h->flags & HTML_NOSPACE) == 0) { + if (h->flags & HTML_KEEP) + printf(" "); + else { + if (h->flags & HTML_PREKEEP) + h->flags |= HTML_KEEP; + putchar(' '); } + } if ( ! (h->flags & HTML_NONOSPACE)) h->flags &= ~HTML_NOSPACE; @@ -594,10 +615,15 @@ print_otag(struct html *h, enum htmltag tag, const char *fmt, ...) putchar('>'); - h->flags |= HTML_NOSPACE; + if (tflags & HTML_NLBEGIN) + html_endline(h); + else + h->flags |= HTML_NOSPACE; - if ((HTML_AUTOCLOSE | HTML_CLRLINE) & htmltags[tag].flags) - putchar('\n'); + if (tflags & HTML_INDENT) + h->indent++; + if (tflags & HTML_NOINDENT) + h->noindent++; return t; } @@ -605,6 +631,7 @@ print_otag(struct html *h, enum htmltag tag, const char *fmt, ...) static void print_ctag(struct html *h, struct tag *tag) { + int tflags; /* * Remember to close out and nullify the current @@ -615,11 +642,18 @@ print_ctag(struct html *h, struct tag *tag) if (tag == h->tblt) h->tblt = NULL; + tflags = htmltags[tag->tag].flags; + + if (tflags & HTML_INDENT) + h->indent--; + if (tflags & HTML_NOINDENT) + h->noindent--; + if (tflags & HTML_NLEND) + html_endline(h); + html_indent(h); printf("</%s>", htmltags[tag->tag].name); - if (HTML_CLRLINE & htmltags[tag->tag].flags) { - h->flags |= HTML_NOSPACE; - putchar('\n'); - } + if (tflags & HTML_NLAFTER) + html_endline(h); h->tags.head = tag->next; free(tag); @@ -630,14 +664,13 @@ print_gen_decls(struct html *h) { puts("<!DOCTYPE html>"); + h->flags |= HTML_NLDONE; } void print_text(struct html *h, const char *word) { - - if ( ! (HTML_NOSPACE & h->flags)) { - /* Manage keeps! */ + if ((h->flags & (HTML_NLDONE | HTML_NOSPACE)) == 0) { if ( ! (HTML_KEEP & h->flags)) { if (HTML_PREKEEP & h->flags) h->flags |= HTML_KEEP; @@ -659,6 +692,7 @@ print_text(struct html *h, const char *word) print_otag(h, TAG_I, ""); break; default: + html_indent(h); break; } @@ -711,6 +745,39 @@ print_paragraph(struct html *h) print_tagq(h, t); } +/* + * If something was printed on the current output line, end it. + * Not to be called right after html_indent(). + */ +static void +html_endline(struct html *h) +{ + if (h->flags & HTML_NLDONE) + return; + + putchar('\n'); + h->flags |= HTML_NLDONE | HTML_NOSPACE; +} + +/* + * If at the beginning of a new output line, + * perform indentation and mark the line as containing output. + * Make sure to really produce some output right afterwards, + * but do not use print_otag() for producing it. + */ +static void +html_indent(struct html *h) +{ + int i; + + if ((h->flags & HTML_NLDONE) == 0) + return; + + if (h->noindent == 0) + for (i = 0; i < h->indent * 2; i++) + putchar(' '); + h->flags &= ~(HTML_NLDONE | HTML_NOSPACE); +} /* * Calculate the scaling unit passed in a `-width' argument. This uses diff --git a/usr.bin/mandoc/html.h b/usr.bin/mandoc/html.h index e47fe83f5f8..8dbeab6dcc0 100644 --- a/usr.bin/mandoc/html.h +++ b/usr.bin/mandoc/html.h @@ -1,4 +1,4 @@ -/* $OpenBSD: html.h,v 1.37 2017/01/17 15:32:39 schwarze Exp $ */ +/* $OpenBSD: html.h,v 1.38 2017/01/18 19:22:18 schwarze Exp $ */ /* * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2017 Ingo Schwarze <schwarze@openbsd.org> @@ -95,6 +95,9 @@ struct html { #define HTML_NOSPLIT (1 << 7) /* do not break line before .An */ #define HTML_SPLIT (1 << 8) /* break line before .An */ #define HTML_NONEWLINE (1 << 9) /* No line break in nofill mode. */ +#define HTML_NLDONE (1 << 10) /* Just started a new line of HTML. */ + int indent; /* current output indentation level */ + int noindent; /* indent disabled by <pre> */ struct tagq tags; /* stack of open tags */ struct rofftbl tbl; /* current table */ struct tag *tblt; /* current open table scope */ diff --git a/usr.bin/mandoc/man_html.c b/usr.bin/mandoc/man_html.c index e2b7950f7d3..99b2dcaa99e 100644 --- a/usr.bin/mandoc/man_html.c +++ b/usr.bin/mandoc/man_html.c @@ -1,4 +1,4 @@ -/* $OpenBSD: man_html.c,v 1.76 2017/01/17 15:32:39 schwarze Exp $ */ +/* $OpenBSD: man_html.c,v 1.77 2017/01/18 19:22:18 schwarze Exp $ */ /* * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2013, 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org> @@ -164,7 +164,6 @@ html_man(void *arg, const struct roff_man *man) print_man_nodelist(&man->meta, man->first, &mh, h); print_tagq(h, t); - putchar('\n'); } static void diff --git a/usr.bin/mandoc/mdoc_html.c b/usr.bin/mandoc/mdoc_html.c index 2d68129a014..2a1f06c4552 100644 --- a/usr.bin/mandoc/mdoc_html.c +++ b/usr.bin/mandoc/mdoc_html.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mdoc_html.c,v 1.124 2017/01/17 15:32:39 schwarze Exp $ */ +/* $OpenBSD: mdoc_html.c,v 1.125 2017/01/18 19:22:18 schwarze Exp $ */ /* * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2014, 2015, 2016, 2017 Ingo Schwarze <schwarze@openbsd.org> @@ -316,7 +316,6 @@ html_mdoc(void *arg, const struct roff_man *mdoc) print_mdoc_nodelist(&mdoc->meta, mdoc->first->child, h); mdoc_root_post(&mdoc->meta, mdoc->first->child, h); print_tagq(h, t); - putchar('\n'); } static void |