@@ -34,11 +34,11 @@
34 34 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WIKI_NEWLINE 0x040 /* Honor \n - break lines at each \n */
35 35 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WIKI_MARKDOWN_URL 0x080 /* Hyperlink targets as in markdown */
36 36 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WIKI_SAFE 0x100 /* Make the result safe for embedding */
37 37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WIKI_TARGET_BLANK 0x200 /* Hyperlinks go to a new window */
38 38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define WIKI_NOBRACKET 0x400 /* Omit extra [..] around hyperlinks */
39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define WIKI_MARKDOWN_LINK 0x800 /* Markdown link syntax: [display](URL) */
39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define WIKI_MARKDOWN_SPAN 0x800 /* Interpret span elements of markdown */
40 40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif
41 41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
42 42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
43 43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
44 44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** These are the only markup attributes allowed.
@@ -435,11 +435,12 @@
435 435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TOKEN_BUL_LI 6 /* " * " */
436 436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TOKEN_NUM_LI 7 /* " # " */
437 437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TOKEN_ENUM 8 /* " \(?\d+[.)]? " */
438 438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TOKEN_INDENT 9 /* " " */
439 439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define TOKEN_RAW 10 /* Output exactly (used when wiki-use-html==1) */
440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- #define TOKEN_TEXT 11 /* None of the above */
440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define TOKEN_AUTOLINK 11 /* <URL> */
441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #define TOKEN_TEXT 12 /* None of the above */
441 442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
442 443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
443 444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** State flags. Save the lower 16 bits for the WIKI_* flags.
444 445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
445 446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define AT_NEWLINE 0x0010000 /* At start of a line */
@@ -682,14 +683,22 @@
682 683 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( z[0]=='<' ){
683 684 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
n = html_tag_length(z);
684 685 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( n>0 ){
685 686 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pTokenType = TOKEN_MARKUP;
686 687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return n;
687 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- }else{
688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- *pTokenType = TOKEN_CHARACTER;
689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- return 1;
688 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
689 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( z[1]=='h'
690 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (strncmp(z,"<https://",9)==0 || strncmp(z,"<http://",8)==0)
691 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
692 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ for(n=8; z[n] && z[n]!='>'; n++){}
693 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( z[n]=='>' ){
694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pTokenType = TOKEN_AUTOLINK;
695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return n+1;
696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
690 697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ *pTokenType = TOKEN_CHARACTER;
699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1;
691 700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
692 701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( z[0]=='&' && (p->inVerbatim || !isElement(z)) ){
693 702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*pTokenType = TOKEN_CHARACTER;
694 703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return 1;
695 704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -1584,11 +1593,11 @@
1584 1593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char cS1 = 0;
1585 1594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iS1 = 0;
1586 1595 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1587 1596 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
startAutoParagraph(p);
1588 1597 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( z[n]=='('
1589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && (p->state & WIKI_MARKDOWN_LINK)!=0
1598 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (p->state & WIKI_MARKDOWN_SPAN)!=0
1590 1599 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (zEnd = strchr(z+n+1,')'))!=0
1591 1600 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
1592 1601 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Markdown-style hyperlinks: [display-text](URL) or [](URL) */
1593 1602 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( n>2 ){
1594 1603 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zDisplay = &z[1];
@@ -1649,10 +1658,22 @@
1649 1658 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
htmlize_to_blob(p->pOut, z, n);
1650 1659 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
1651 1660 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_append(p->pOut, z, n);
1652 1661 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1653 1662 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
break;
1663 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1664 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ case TOKEN_AUTOLINK: {
1665 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* URL enclosed in <...> */
1666 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( (p->state & WIKI_MARKDOWN_SPAN)==0 ){
1667 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_append(p->pOut, "<", 4);
1668 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ n = 1;
1669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ z[n-1] = 0;
1671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(p->pOut, "<a href=\"%h\">%h</a>", z+1, z+1);
1672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ z[n-1] = '>';
1673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ break;
1654 1675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1655 1676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TOKEN_MARKUP: {
1656 1677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zId;
1657 1678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int iDiv;
1658 1679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int mAttr = parseMarkup(&markup, z);
@@ -1893,11 +1914,11 @@
1893 1914 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --buttons Set the WIKI_BUTTONS flag
1894 1915 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --dark-pikchr Render pikchrs in dark mode
1895 1916 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --htmlonly Set the WIKI_HTMLONLY flag
1896 1917 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --inline Set the WIKI_INLINE flag
1897 1918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --linksonly Set the WIKI_LINKSONLY flag
1898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** --md-links Allow markdown link syntax
1919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** --md-span Allow markdown span syntax: links and emphasis marks
1899 1920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --nobadlinks Set the WIKI_NOBADLINKS flag
1900 1921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --noblock Set the WIKI_NOBLOCK flag
1901 1922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --text Run the output through html_to_plaintext().
1902 1923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1903 1924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void test_wiki_render(void){
@@ -1908,11 +1929,11 @@
1908 1929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( find_option("htmlonly",0,0)!=0 ) flags |= WIKI_HTMLONLY;
1909 1930 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( find_option("linksonly",0,0)!=0 ) flags |= WIKI_LINKSONLY;
1910 1931 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( find_option("nobadlinks",0,0)!=0 ) flags |= WIKI_NOBADLINKS;
1911 1932 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( find_option("inline",0,0)!=0 ) flags |= WIKI_INLINE;
1912 1933 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( find_option("noblock",0,0)!=0 ) flags |= WIKI_NOBLOCK;
1913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( find_option("md-links",0,0)!=0 ) flags |= WIKI_MARKDOWN_LINK;
1934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( find_option("md-span",0,0)!=0 ) flags |= WIKI_MARKDOWN_SPAN;
1914 1935 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( find_option("dark-pikchr",0,0)!=0 ){
1915 1936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pikchr_to_html_add_flags( PIKCHR_PROCESS_DARK_MODE );
1916 1937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1917 1938 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
bText = find_option("text",0,0)!=0;
1918 1939 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_find_and_open_repository(OPEN_OK_NOT_FOUND|OPEN_SUBSTITUTE,0);
@@ -2066,11 +2087,11 @@
2066 2087 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
case TOKEN_LINK: {
2067 2088 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zTarget, *zEnd;
2068 2089 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int i;
2069 2090 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2070 2091 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( z[n]=='('
2071 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- && (flags & WIKI_MARKDOWN_LINK)!=0
2092 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && (flags & WIKI_MARKDOWN_SPAN)!=0
2072 2093 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& (zEnd = strchr(z+n+1,')'))!=0
2073 2094 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
){
2074 2095 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Markdown-style hyperlinks: [display-text](URL) or [](URL) */
2075 2096 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
z += n+1;
2076 2097 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zTarget = z;
2077 2098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!