Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_28522519
liteide
提交
14eabaa9
L
liteide
项目概览
qq_28522519
/
liteide
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
liteide
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
14eabaa9
编写于
3月 01, 2021
作者:
V
visualfc
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
remove 3rdparty/sundown
上级
14e68733
变更
35
展开全部
隐藏空白更改
内联
并排
Showing
35 changed file
with
0 addition
and
5498 deletion
+0
-5498
liteidex/src/3rdparty/3rdparty.pro
liteidex/src/3rdparty/3rdparty.pro
+0
-1
liteidex/src/3rdparty/sundown/Makefile.win
liteidex/src/3rdparty/sundown/Makefile.win
+0
-33
liteidex/src/3rdparty/sundown/README.markdown
liteidex/src/3rdparty/sundown/README.markdown
+0
-131
liteidex/src/3rdparty/sundown/examples/smartypants.c
liteidex/src/3rdparty/sundown/examples/smartypants.c
+0
-72
liteidex/src/3rdparty/sundown/examples/sundown.c
liteidex/src/3rdparty/sundown/examples/sundown.c
+0
-80
liteidex/src/3rdparty/sundown/html/houdini.h
liteidex/src/3rdparty/sundown/html/houdini.h
+0
-37
liteidex/src/3rdparty/sundown/html/houdini_href_e.c
liteidex/src/3rdparty/sundown/html/houdini_href_e.c
+0
-108
liteidex/src/3rdparty/sundown/html/houdini_html_e.c
liteidex/src/3rdparty/sundown/html/houdini_html_e.c
+0
-84
liteidex/src/3rdparty/sundown/html/html.c
liteidex/src/3rdparty/sundown/html/html.c
+0
-648
liteidex/src/3rdparty/sundown/html/html.h
liteidex/src/3rdparty/sundown/html/html.h
+0
-80
liteidex/src/3rdparty/sundown/html/html_smartypants.c
liteidex/src/3rdparty/sundown/html/html_smartypants.c
+0
-389
liteidex/src/3rdparty/sundown/html_block_names.txt
liteidex/src/3rdparty/sundown/html_block_names.txt
+0
-25
liteidex/src/3rdparty/sundown/mdtohtml.cpp
liteidex/src/3rdparty/sundown/mdtohtml.cpp
+0
-44
liteidex/src/3rdparty/sundown/mdtohtml.h
liteidex/src/3rdparty/sundown/mdtohtml.h
+0
-21
liteidex/src/3rdparty/sundown/src/autolink.c
liteidex/src/3rdparty/sundown/src/autolink.c
+0
-297
liteidex/src/3rdparty/sundown/src/autolink.h
liteidex/src/3rdparty/sundown/src/autolink.h
+0
-51
liteidex/src/3rdparty/sundown/src/buffer.c
liteidex/src/3rdparty/sundown/src/buffer.c
+0
-225
liteidex/src/3rdparty/sundown/src/buffer.h
liteidex/src/3rdparty/sundown/src/buffer.h
+0
-100
liteidex/src/3rdparty/sundown/src/html_blocks.h
liteidex/src/3rdparty/sundown/src/html_blocks.h
+0
-206
liteidex/src/3rdparty/sundown/src/markdown.c
liteidex/src/3rdparty/sundown/src/markdown.c
+0
-2556
liteidex/src/3rdparty/sundown/src/markdown.h
liteidex/src/3rdparty/sundown/src/markdown.h
+0
-138
liteidex/src/3rdparty/sundown/src/stack.c
liteidex/src/3rdparty/sundown/src/stack.c
+0
-81
liteidex/src/3rdparty/sundown/src/stack.h
liteidex/src/3rdparty/sundown/src/stack.h
+0
-29
liteidex/src/3rdparty/sundown/sundown.def
liteidex/src/3rdparty/sundown/sundown.def
+0
-20
liteidex/src/3rdparty/sundown/sundown.pri
liteidex/src/3rdparty/sundown/sundown.pri
+0
-1
liteidex/src/3rdparty/sundown/sundown.pro
liteidex/src/3rdparty/sundown/sundown.pro
+0
-32
liteidex/src/plugins/markdown/htmlpreview.cpp
liteidex/src/plugins/markdown/htmlpreview.cpp
+0
-1
liteidex/src/plugins/markdown/markdown.pro
liteidex/src/plugins/markdown/markdown.pro
+0
-1
liteidex/src/plugins/markdown/markdownbatchbrowser.cpp
liteidex/src/plugins/markdown/markdownbatchbrowser.cpp
+0
-1
liteidex/src/plugins/webkithtmlwidget/webkitbrowser.cpp
liteidex/src/plugins/webkithtmlwidget/webkitbrowser.cpp
+0
-1
liteidex/src/plugins/webkithtmlwidget/webkithtmlwidget.pro
liteidex/src/plugins/webkithtmlwidget/webkithtmlwidget.pro
+0
-1
liteidex/src/plugins/welcome/litedoc.cpp
liteidex/src/plugins/welcome/litedoc.cpp
+0
-1
liteidex/src/plugins/welcome/welcome.pro
liteidex/src/plugins/welcome/welcome.pro
+0
-1
liteidex/src/utils/documentbrowser/documentbrowser.cpp
liteidex/src/utils/documentbrowser/documentbrowser.cpp
+0
-1
liteidex/src/utils/documentbrowser/documentbrowser.pri
liteidex/src/utils/documentbrowser/documentbrowser.pri
+0
-1
未找到文件。
liteidex/src/3rdparty/3rdparty.pro
浏览文件 @
14eabaa9
...
...
@@ -13,7 +13,6 @@ SUBDIRS = \
qt_browser
\
qjson
\
elidedlabel
\
sundown
\
cplusplus
\
fakevim
\
diff_match_patch
\
...
...
liteidex/src/3rdparty/sundown/Makefile.win
已删除
100644 → 0
浏览文件 @
14e68733
CFLAGS
=
/O2 /EHsc /I
"src/"
/I
"examples"
/ /I
"html"
/
CC
=
cl
SUNDOWN_SRC
=
\
src
\m
arkdown.obj
\
src
\s
tack.obj
\
src
\b
uffer.obj
\
src
\a
utolink.obj
\
html
\h
tml.obj
\
html
\h
tml_smartypants.obj
\
html
\h
oudini_html_e.obj
\
html
\h
oudini_href_e.obj
all
:
sundown.dll sundown.exe
sundown.dll
:
$(SUNDOWN_SRC) sundown.def
$(CC)
$(SUNDOWN_SRC)
sundown.def /link /DLL
$(LDFLAGS)
/out:
$@
sundown.exe
:
examples
\s
undown.obj $(SUNDOWN_SRC)
$(CC)
examples
\s
undown.obj
$(SUNDOWN_SRC)
/link
$(LDFLAGS)
/out:
$@
# housekeeping
clean
:
del
$(SUNDOWN_SRC)
del sundown.dll sundown.exe
del sundown.exp sundown.lib
# generic object compilations
.c.obj
:
$(CC)
$(CFLAGS)
/c
$<
/Fo
$@
liteidex/src/3rdparty/sundown/README.markdown
已删除
100644 → 0
浏览文件 @
14e68733
Sundown
=======
`Sundown`
is a Markdown parser based on the original code of the
[
Upskirt library
](
http://fossil.instinctive.eu/libupskirt/index
)
by Natacha Porté.
Features
--------
*
**Fully standards compliant**
`Sundown` passes out of the box the official Markdown v1.0.0 and v1.0.3
test suites, and has been extensively tested with additional corner cases
to make sure its output is as sane as possible at all times.
*
**Massive extension support**
`Sundown` has optional support for several (unofficial) Markdown extensions,
such as non-strict emphasis, fenced code blocks, tables, autolinks,
strikethrough and more.
*
**UTF-8 aware**
`Sundown` is fully UTF-8 aware, both when parsing the source document and when
generating the resulting (X)HTML code.
*
**Tested & Ready to be used on production**
`Sundown` has been extensively security audited, and includes protection against
all possible DOS attacks (stack overflows, out of memory situations, malformed
Markdown syntax...) and against client attacks through malicious embedded HTML.
We've worked very hard to make `Sundown` never crash or run out of memory
under *any* input. `Sundown` renders all the Markdown content in GitHub and so
far hasn't crashed a single time.
*
**Customizable renderers**
`Sundown` is not stuck with XHTML output: the Markdown parser of the library
is decoupled from the renderer, so it's trivial to extend the library with
custom renderers. A fully functional (X)HTML renderer is included.
*
**Optimized for speed**
`Sundown` is written in C, with a special emphasis on performance. When wrapped
on a dynamic language such as Python or Ruby, it has shown to be up to 40
times faster than other native alternatives.
*
**Zero-dependency**
`Sundown` is a zero-dependency library composed of 3 `.c` files and their headers.
No dependencies, no bullshit. Only standard C99 that builds everywhere.
Credits
-------
`Sundown`
is based on the original Upskirt parser by Natacha Porté, with many additions
by Vicent Marti (@vmg) and contributions from the following authors:
Ben Noordhuis, Bruno Michel, Joseph Koshy, Krzysztof Kowalczyk, Samuel Bronson,
Shuhei Tanuma
Bindings
--------
`Sundown`
is available from other programming languages thanks to these bindings developed
by our awesome contributors.
-
[
Redcarpet
](
https://github.com/vmg/redcarpet
)
(
Ruby
)
-
[
RobotSkirt
](
https://github.com/benmills/robotskirt
)
(
Node.js
)
-
[
Misaka
](
https://github.com/FSX/misaka
)
(
Python
)
-
[
ffi-sundown
](
https://github.com/postmodern/ffi-sundown
)
(
Ruby
FFI)
-
[
Sundown HS
](
https://github.com/bitonic/sundown
)
(
Haskell
)
-
[
Goskirt
](
https://github.com/madari/goskirt
)
(
Go
)
-
[
Upskirt.go
](
https://github.com/buu700/upskirt.go
)
(
Go
)
-
[
MoonShine
](
https://github.com/brandonc/moonshine
)
(
.NET
)
-
[
PHP-Sundown
](
https://github.com/chobie/php-sundown
)
(
PHP
)
-
[
Sundown.net
](
https://github.com/txdv/sundown.net
)
(
.NET
)
Help us
-------
`Sundown`
is all about security. If you find a (potential) security vulnerability in the
library, or a way to make it crash through malicious input, please report it to us,
either directly via email or by opening an Issue on GitHub, and help make the web safer
for everybody.
Unicode character handling
--------------------------
Given that the Markdown spec makes no provision for Unicode character handling,
`Sundown`
takes a conservative approach towards deciding which extended characters trigger Markdown
features:
*
Punctuation characters outside of the U+007F codepoint are not handled as punctuation.
They are considered as normal, in-word characters for word-boundary checks.
*
Whitespace characters outside of the U+007F codepoint are not considered as
whitespace. They are considered as normal, in-word characters for word-boundary checks.
Install
-------
There is nothing to install.
`Sundown`
is composed of 3
`.c`
files (
`markdown.c`
,
`buffer.c`
and
`array.c`
), so just throw them in your project. Zero-dependency means
zero-dependency. You might want to include
`render/html.c`
if you want to use the
included XHTML renderer, or write your own renderer. Either way, it's all fun and joy.
If you are hardcore, you can use the included
`Makefile`
to build
`Sundown`
into a dynamic
library, or to build the sample
`sundown`
executable, which is just a commandline
Markdown to XHTML parser. (If gcc gives you grief about
`-fPIC`
, e.g. with MinGW, try
`make MFLAGS=`
instead of just
`make`
.)
License
-------
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
<!-- Local Variables: -->
<!-- fill-column: 89 -->
<!-- End: -->
liteidex/src/3rdparty/sundown/examples/smartypants.c
已删除
100644 → 0
浏览文件 @
14e68733
/*
* Copyright (c) 2011, Vicent Marti
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include "markdown.h"
#include "html.h"
#include "buffer.h"
#include <errno.h>
#include <getopt.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define READ_UNIT 1024
#define OUTPUT_UNIT 64
int
main
(
int
argc
,
char
**
argv
)
{
struct
buf
*
ib
,
*
ob
;
size_t
ret
;
FILE
*
in
=
stdin
;
/* opening the file if given from the command line */
if
(
argc
>
1
)
{
in
=
fopen
(
argv
[
1
],
"r"
);
if
(
!
in
)
{
fprintf
(
stderr
,
"Unable to open input file
\"
%s
\"
: %s
\n
"
,
argv
[
0
],
strerror
(
errno
));
return
1
;
}
}
/* reading everything */
ib
=
bufnew
(
READ_UNIT
);
bufgrow
(
ib
,
READ_UNIT
);
while
((
ret
=
fread
(
ib
->
data
+
ib
->
size
,
1
,
ib
->
asize
-
ib
->
size
,
in
))
>
0
)
{
ib
->
size
+=
ret
;
bufgrow
(
ib
,
ib
->
size
+
READ_UNIT
);
}
if
(
in
!=
stdin
)
fclose
(
in
);
/* performing markdown parsing */
ob
=
bufnew
(
OUTPUT_UNIT
);
sdhtml_smartypants
(
ob
,
ib
->
data
,
ib
->
size
);
/* writing the result to stdout */
(
void
)
fwrite
(
ob
->
data
,
1
,
ob
->
size
,
stdout
);
/* cleanup */
bufrelease
(
ib
);
bufrelease
(
ob
);
return
0
;
}
/* vim: set filetype=c: */
liteidex/src/3rdparty/sundown/examples/sundown.c
已删除
100644 → 0
浏览文件 @
14e68733
/*
* Copyright (c) 2011, Vicent Marti
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include "markdown.h"
#include "html.h"
#include "buffer.h"
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define READ_UNIT 1024
#define OUTPUT_UNIT 64
/* main • main function, interfacing STDIO with the parser */
int
main
(
int
argc
,
char
**
argv
)
{
struct
buf
*
ib
,
*
ob
;
int
ret
;
FILE
*
in
=
stdin
;
struct
sd_callbacks
callbacks
;
struct
html_renderopt
options
;
struct
sd_markdown
*
markdown
;
/* opening the file if given from the command line */
if
(
argc
>
1
)
{
in
=
fopen
(
argv
[
1
],
"r"
);
if
(
!
in
)
{
fprintf
(
stderr
,
"Unable to open input file
\"
%s
\"
: %s
\n
"
,
argv
[
1
],
strerror
(
errno
));
return
1
;
}
}
/* reading everything */
ib
=
bufnew
(
READ_UNIT
);
bufgrow
(
ib
,
READ_UNIT
);
while
((
ret
=
fread
(
ib
->
data
+
ib
->
size
,
1
,
ib
->
asize
-
ib
->
size
,
in
))
>
0
)
{
ib
->
size
+=
ret
;
bufgrow
(
ib
,
ib
->
size
+
READ_UNIT
);
}
if
(
in
!=
stdin
)
fclose
(
in
);
/* performing markdown parsing */
ob
=
bufnew
(
OUTPUT_UNIT
);
sdhtml_renderer
(
&
callbacks
,
&
options
,
0
);
markdown
=
sd_markdown_new
(
0
,
16
,
&
callbacks
,
&
options
);
sd_markdown_render
(
ob
,
ib
->
data
,
ib
->
size
,
markdown
);
sd_markdown_free
(
markdown
);
/* writing the result to stdout */
ret
=
fwrite
(
ob
->
data
,
1
,
ob
->
size
,
stdout
);
/* cleanup */
bufrelease
(
ib
);
bufrelease
(
ob
);
return
(
ret
<
0
)
?
-
1
:
0
;
}
/* vim: set filetype=c: */
liteidex/src/3rdparty/sundown/html/houdini.h
已删除
100644 → 0
浏览文件 @
14e68733
#ifndef HOUDINI_H__
#define HOUDINI_H__
#include "buffer.h"
#ifdef __cplusplus
extern
"C"
{
#endif
#ifdef HOUDINI_USE_LOCALE
# define _isxdigit(c) isxdigit(c)
# define _isdigit(c) isdigit(c)
#else
/*
* Helper _isdigit methods -- do not trust the current locale
* */
# define _isxdigit(c) (strchr("0123456789ABCDEFabcdef", (c)) != NULL)
# define _isdigit(c) ((c) >= '0' && (c) <= '9')
#endif
extern
void
houdini_escape_html
(
struct
buf
*
ob
,
const
uint8_t
*
src
,
size_t
size
);
extern
void
houdini_escape_html0
(
struct
buf
*
ob
,
const
uint8_t
*
src
,
size_t
size
,
int
secure
);
extern
void
houdini_unescape_html
(
struct
buf
*
ob
,
const
uint8_t
*
src
,
size_t
size
);
extern
void
houdini_escape_xml
(
struct
buf
*
ob
,
const
uint8_t
*
src
,
size_t
size
);
extern
void
houdini_escape_uri
(
struct
buf
*
ob
,
const
uint8_t
*
src
,
size_t
size
);
extern
void
houdini_escape_url
(
struct
buf
*
ob
,
const
uint8_t
*
src
,
size_t
size
);
extern
void
houdini_escape_href
(
struct
buf
*
ob
,
const
uint8_t
*
src
,
size_t
size
);
extern
void
houdini_unescape_uri
(
struct
buf
*
ob
,
const
uint8_t
*
src
,
size_t
size
);
extern
void
houdini_unescape_url
(
struct
buf
*
ob
,
const
uint8_t
*
src
,
size_t
size
);
extern
void
houdini_escape_js
(
struct
buf
*
ob
,
const
uint8_t
*
src
,
size_t
size
);
extern
void
houdini_unescape_js
(
struct
buf
*
ob
,
const
uint8_t
*
src
,
size_t
size
);
#ifdef __cplusplus
}
#endif
#endif
liteidex/src/3rdparty/sundown/html/houdini_href_e.c
已删除
100644 → 0
浏览文件 @
14e68733
#include <assert.h>
#include <stdio.h>
#include <string.h>
#include "houdini.h"
#define ESCAPE_GROW_FACTOR(x) (((x) * 12) / 10)
/*
* The following characters will not be escaped:
*
* -_.+!*'(),%#@?=;:/,+&$ alphanum
*
* Note that this character set is the addition of:
*
* - The characters which are safe to be in an URL
* - The characters which are *not* safe to be in
* an URL because they are RESERVED characters.
*
* We asume (lazily) that any RESERVED char that
* appears inside an URL is actually meant to
* have its native function (i.e. as an URL
* component/separator) and hence needs no escaping.
*
* There are two exceptions: the chacters & (amp)
* and ' (single quote) do not appear in the table.
* They are meant to appear in the URL as components,
* yet they require special HTML-entity escaping
* to generate valid HTML markup.
*
* All other characters will be escaped to %XX.
*
*/
static
const
char
HREF_SAFE
[]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
};
void
houdini_escape_href
(
struct
buf
*
ob
,
const
uint8_t
*
src
,
size_t
size
)
{
static
const
char
hex_chars
[]
=
"0123456789ABCDEF"
;
size_t
i
=
0
,
org
;
char
hex_str
[
3
];
bufgrow
(
ob
,
ESCAPE_GROW_FACTOR
(
size
));
hex_str
[
0
]
=
'%'
;
while
(
i
<
size
)
{
org
=
i
;
while
(
i
<
size
&&
HREF_SAFE
[
src
[
i
]]
!=
0
)
i
++
;
if
(
i
>
org
)
bufput
(
ob
,
src
+
org
,
i
-
org
);
/* escaping */
if
(
i
>=
size
)
break
;
switch
(
src
[
i
])
{
/* amp appears all the time in URLs, but needs
* HTML-entity escaping to be inside an href */
case
'&'
:
BUFPUTSL
(
ob
,
"&"
);
break
;
/* the single quote is a valid URL character
* according to the standard; it needs HTML
* entity escaping too */
case
'\''
:
BUFPUTSL
(
ob
,
"'"
);
break
;
/* the space can be escaped to %20 or a plus
* sign. we're going with the generic escape
* for now. the plus thing is more commonly seen
* when building GET strings */
#if 0
case ' ':
bufputc(ob, '+');
break;
#endif
/* every other character goes with a %XX escaping */
default:
hex_str
[
1
]
=
hex_chars
[(
src
[
i
]
>>
4
)
&
0xF
];
hex_str
[
2
]
=
hex_chars
[
src
[
i
]
&
0xF
];
bufput
(
ob
,
hex_str
,
3
);
}
i
++
;
}
}
liteidex/src/3rdparty/sundown/html/houdini_html_e.c
已删除
100644 → 0
浏览文件 @
14e68733
#include <assert.h>
#include <stdio.h>
#include <string.h>
#include "houdini.h"
#define ESCAPE_GROW_FACTOR(x) (((x) * 12) / 10)
/* this is very scientific, yes */
/**
* According to the OWASP rules:
*
* & --> &
* < --> <
* > --> >
* " --> "
* ' --> ' ' is not recommended
* / --> / forward slash is included as it helps end an HTML entity
*
*/
static
const
char
HTML_ESCAPE_TABLE
[]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
2
,
3
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
4
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
5
,
0
,
6
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
};
static
const
char
*
HTML_ESCAPES
[]
=
{
""
,
"""
,
"&"
,
"'"
,
"/"
,
"<"
,
">"
};
void
houdini_escape_html0
(
struct
buf
*
ob
,
const
uint8_t
*
src
,
size_t
size
,
int
secure
)
{
size_t
i
=
0
,
org
,
esc
=
0
;
bufgrow
(
ob
,
ESCAPE_GROW_FACTOR
(
size
));
while
(
i
<
size
)
{
org
=
i
;
while
(
i
<
size
&&
(
esc
=
HTML_ESCAPE_TABLE
[
src
[
i
]])
==
0
)
i
++
;
if
(
i
>
org
)
bufput
(
ob
,
src
+
org
,
i
-
org
);
/* escaping */
if
(
i
>=
size
)
break
;
/* The forward slash is only escaped in secure mode */
if
(
src
[
i
]
==
'/'
&&
!
secure
)
{
bufputc
(
ob
,
'/'
);
}
else
{
bufputs
(
ob
,
HTML_ESCAPES
[
esc
]);
}
i
++
;
}
}
void
houdini_escape_html
(
struct
buf
*
ob
,
const
uint8_t
*
src
,
size_t
size
)
{
houdini_escape_html0
(
ob
,
src
,
size
,
1
);
}
liteidex/src/3rdparty/sundown/html/html.c
已删除
100644 → 0
浏览文件 @
14e68733
/*
* Copyright (c) 2009, Natacha Porté
* Copyright (c) 2011, Vicent Marti
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include "markdown.h"
#include "html.h"
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include "houdini.h"
#define USE_XHTML(opt) (opt->flags & HTML_USE_XHTML)
static
int
fix_qt_textbrowser
=
0
;
void
set_fix_qt_textbrowser
(
int
n
)
{
fix_qt_textbrowser
=
n
;
}
int
sdhtml_is_tag
(
const
uint8_t
*
tag_data
,
size_t
tag_size
,
const
char
*
tagname
)
{
size_t
i
;
int
closed
=
0
;
if
(
tag_size
<
3
||
tag_data
[
0
]
!=
'<'
)
return
HTML_TAG_NONE
;
i
=
1
;
if
(
tag_data
[
i
]
==
'/'
)
{
closed
=
1
;
i
++
;
}
for
(;
i
<
tag_size
;
++
i
,
++
tagname
)
{
if
(
*
tagname
==
0
)
break
;
if
(
tag_data
[
i
]
!=
*
tagname
)
return
HTML_TAG_NONE
;
}
if
(
i
==
tag_size
)
return
HTML_TAG_NONE
;
if
(
isspace
(
tag_data
[
i
])
||
tag_data
[
i
]
==
'>'
)
return
closed
?
HTML_TAG_CLOSE
:
HTML_TAG_OPEN
;
return
HTML_TAG_NONE
;
}
static
inline
void
escape_html
(
struct
buf
*
ob
,
const
uint8_t
*
source
,
size_t
length
)
{
houdini_escape_html0
(
ob
,
source
,
length
,
0
);
}
static
inline
void
escape_href
(
struct
buf
*
ob
,
const
uint8_t
*
source
,
size_t
length
)
{
houdini_escape_href
(
ob
,
source
,
length
);
}
/********************
* GENERIC RENDERER *
********************/
static
int
rndr_autolink
(
struct
buf
*
ob
,
const
struct
buf
*
link
,
enum
mkd_autolink
type
,
void
*
opaque
)
{
struct
html_renderopt
*
options
=
opaque
;
if
(
!
link
||
!
link
->
size
)
return
0
;
if
((
options
->
flags
&
HTML_SAFELINK
)
!=
0
&&
!
sd_autolink_issafe
(
link
->
data
,
link
->
size
)
&&
type
!=
MKDA_EMAIL
)
return
0
;
BUFPUTSL
(
ob
,
"<a href=
\"
"
);
if
(
type
==
MKDA_EMAIL
)
BUFPUTSL
(
ob
,
"mailto:"
);
escape_href
(
ob
,
link
->
data
,
link
->
size
);
if
(
options
->
link_attributes
)
{
bufputc
(
ob
,
'\"'
);
options
->
link_attributes
(
ob
,
link
,
opaque
);
bufputc
(
ob
,
'>'
);
}
else
{
BUFPUTSL
(
ob
,
"
\"
>"
);
}
/*
* Pretty printing: if we get an email address as
* an actual URI, e.g. `mailto:foo@bar.com`, we don't
* want to print the `mailto:` prefix
*/
if
(
bufprefix
(
link
,
"mailto:"
)
==
0
)
{
escape_html
(
ob
,
link
->
data
+
7
,
link
->
size
-
7
);
}
else
{
escape_html
(
ob
,
link
->
data
,
link
->
size
);
}
BUFPUTSL
(
ob
,
"</a>"
);
return
1
;
}
static
void
rndr_blockcode
(
struct
buf
*
ob
,
const
struct
buf
*
text
,
const
struct
buf
*
lang
,
void
*
opaque
)
{
if
(
ob
->
size
)
bufputc
(
ob
,
'\n'
);
if
(
lang
&&
lang
->
size
)
{
size_t
i
,
cls
;
BUFPUTSL
(
ob
,
"<pre><code class=
\"
"
);
for
(
i
=
0
,
cls
=
0
;
i
<
lang
->
size
;
++
i
,
++
cls
)
{
while
(
i
<
lang
->
size
&&
isspace
(
lang
->
data
[
i
]))
i
++
;
if
(
i
<
lang
->
size
)
{
size_t
org
=
i
;
while
(
i
<
lang
->
size
&&
!
isspace
(
lang
->
data
[
i
]))
i
++
;
if
(
lang
->
data
[
org
]
==
'.'
)
org
++
;
if
(
cls
)
bufputc
(
ob
,
' '
);
escape_html
(
ob
,
lang
->
data
+
org
,
i
-
org
);
}
}
BUFPUTSL
(
ob
,
"
\"
>"
);
}
else
BUFPUTSL
(
ob
,
"<pre><code>"
);
if
(
text
)
{
if
(
fix_qt_textbrowser
&&
text
->
data
[
text
->
size
]
==
'\n'
)
{
escape_html
(
ob
,
text
->
data
,
text
->
size
-
1
);
}
else
{
escape_html
(
ob
,
text
->
data
,
text
->
size
);
}
}
BUFPUTSL
(
ob
,
"</code></pre>
\n
"
);
}
static
void
rndr_blockquote
(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
)
{
if
(
ob
->
size
)
bufputc
(
ob
,
'\n'
);
BUFPUTSL
(
ob
,
"<blockquote>
\n
"
);
if
(
text
)
bufput
(
ob
,
text
->
data
,
text
->
size
);
BUFPUTSL
(
ob
,
"</blockquote>
\n
"
);
}
static
int
rndr_codespan
(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
)
{
BUFPUTSL
(
ob
,
"<code>"
);
if
(
text
)
escape_html
(
ob
,
text
->
data
,
text
->
size
);
BUFPUTSL
(
ob
,
"</code>"
);
return
1
;
}
static
int
rndr_strikethrough
(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
)
{
if
(
!
text
||
!
text
->
size
)
return
0
;
BUFPUTSL
(
ob
,
"<del>"
);
bufput
(
ob
,
text
->
data
,
text
->
size
);
BUFPUTSL
(
ob
,
"</del>"
);
return
1
;
}
static
int
rndr_double_emphasis
(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
)
{
if
(
!
text
||
!
text
->
size
)
return
0
;
BUFPUTSL
(
ob
,
"<strong>"
);
bufput
(
ob
,
text
->
data
,
text
->
size
);
BUFPUTSL
(
ob
,
"</strong>"
);
return
1
;
}
static
int
rndr_emphasis
(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
)
{
if
(
!
text
||
!
text
->
size
)
return
0
;
BUFPUTSL
(
ob
,
"<em>"
);
if
(
text
)
bufput
(
ob
,
text
->
data
,
text
->
size
);
BUFPUTSL
(
ob
,
"</em>"
);
return
1
;
}
static
int
rndr_linebreak
(
struct
buf
*
ob
,
void
*
opaque
)
{
struct
html_renderopt
*
options
=
opaque
;
bufputs
(
ob
,
USE_XHTML
(
options
)
?
"<br/>
\n
"
:
"<br>
\n
"
);
return
1
;
}
static
void
rndr_header
(
struct
buf
*
ob
,
const
struct
buf
*
text
,
int
level
,
void
*
opaque
)
{
struct
html_renderopt
*
options
=
opaque
;
if
(
ob
->
size
)
bufputc
(
ob
,
'\n'
);
if
(
options
->
flags
&
HTML_TOC
)
bufprintf
(
ob
,
"<h%d id=
\"
toc_%d
\"
>"
,
level
,
options
->
toc_data
.
header_count
++
);
else
bufprintf
(
ob
,
"<h%d>"
,
level
);
if
(
text
)
bufput
(
ob
,
text
->
data
,
text
->
size
);
bufprintf
(
ob
,
"</h%d>
\n
"
,
level
);
}
static
int
rndr_link
(
struct
buf
*
ob
,
const
struct
buf
*
link
,
const
struct
buf
*
title
,
const
struct
buf
*
content
,
void
*
opaque
)
{
struct
html_renderopt
*
options
=
opaque
;
if
(
link
!=
NULL
&&
(
options
->
flags
&
HTML_SAFELINK
)
!=
0
&&
!
sd_autolink_issafe
(
link
->
data
,
link
->
size
))
return
0
;
BUFPUTSL
(
ob
,
"<a href=
\"
"
);
if
(
link
&&
link
->
size
)
escape_href
(
ob
,
link
->
data
,
link
->
size
);
if
(
title
&&
title
->
size
)
{
BUFPUTSL
(
ob
,
"
\"
title=
\"
"
);
escape_html
(
ob
,
title
->
data
,
title
->
size
);
}
if
(
options
->
link_attributes
)
{
bufputc
(
ob
,
'\"'
);
options
->
link_attributes
(
ob
,
link
,
opaque
);
bufputc
(
ob
,
'>'
);
}
else
{
BUFPUTSL
(
ob
,
"
\"
>"
);
}
if
(
content
&&
content
->
size
)
bufput
(
ob
,
content
->
data
,
content
->
size
);
BUFPUTSL
(
ob
,
"</a>"
);
return
1
;
}
static
void
rndr_list
(
struct
buf
*
ob
,
const
struct
buf
*
text
,
int
flags
,
void
*
opaque
)
{
if
(
ob
->
size
)
bufputc
(
ob
,
'\n'
);
bufput
(
ob
,
flags
&
MKD_LIST_ORDERED
?
"<ol>
\n
"
:
"<ul>
\n
"
,
5
);
if
(
text
)
bufput
(
ob
,
text
->
data
,
text
->
size
);
bufput
(
ob
,
flags
&
MKD_LIST_ORDERED
?
"</ol>
\n
"
:
"</ul>
\n
"
,
6
);
}
static
void
rndr_listitem
(
struct
buf
*
ob
,
const
struct
buf
*
text
,
int
flags
,
void
*
opaque
)
{
BUFPUTSL
(
ob
,
"<li>"
);
if
(
text
)
{
size_t
size
=
text
->
size
;
while
(
size
&&
text
->
data
[
size
-
1
]
==
'\n'
)
size
--
;
bufput
(
ob
,
text
->
data
,
size
);
}
BUFPUTSL
(
ob
,
"</li>
\n
"
);
}
static
void
rndr_paragraph
(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
)
{
struct
html_renderopt
*
options
=
opaque
;
size_t
i
=
0
;
if
(
ob
->
size
)
bufputc
(
ob
,
'\n'
);
if
(
!
text
||
!
text
->
size
)
return
;
while
(
i
<
text
->
size
&&
isspace
(
text
->
data
[
i
]))
i
++
;
if
(
i
==
text
->
size
)
return
;
BUFPUTSL
(
ob
,
"<p>"
);
if
(
options
->
flags
&
HTML_HARD_WRAP
)
{
size_t
org
;
while
(
i
<
text
->
size
)
{
org
=
i
;
while
(
i
<
text
->
size
&&
text
->
data
[
i
]
!=
'\n'
)
i
++
;
if
(
i
>
org
)
bufput
(
ob
,
text
->
data
+
org
,
i
-
org
);
/*
* do not insert a line break if this newline
* is the last character on the paragraph
*/
if
(
i
>=
text
->
size
-
1
)
break
;
rndr_linebreak
(
ob
,
opaque
);
i
++
;
}
}
else
{
bufput
(
ob
,
&
text
->
data
[
i
],
text
->
size
-
i
);
}
BUFPUTSL
(
ob
,
"</p>
\n
"
);
}
static
void
rndr_raw_block
(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
)
{
size_t
org
,
sz
;
if
(
!
text
)
return
;
sz
=
text
->
size
;
while
(
sz
>
0
&&
text
->
data
[
sz
-
1
]
==
'\n'
)
sz
--
;
org
=
0
;
while
(
org
<
sz
&&
text
->
data
[
org
]
==
'\n'
)
org
++
;
if
(
org
>=
sz
)
return
;
if
(
ob
->
size
)
bufputc
(
ob
,
'\n'
);
bufput
(
ob
,
text
->
data
+
org
,
sz
-
org
);
bufputc
(
ob
,
'\n'
);
}
static
int
rndr_triple_emphasis
(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
)
{
if
(
!
text
||
!
text
->
size
)
return
0
;
BUFPUTSL
(
ob
,
"<strong><em>"
);
bufput
(
ob
,
text
->
data
,
text
->
size
);
BUFPUTSL
(
ob
,
"</em></strong>"
);
return
1
;
}
static
void
rndr_hrule
(
struct
buf
*
ob
,
void
*
opaque
)
{
struct
html_renderopt
*
options
=
opaque
;
if
(
ob
->
size
)
bufputc
(
ob
,
'\n'
);
bufputs
(
ob
,
USE_XHTML
(
options
)
?
"<hr/>
\n
"
:
"<hr>
\n
"
);
}
static
int
rndr_image
(
struct
buf
*
ob
,
const
struct
buf
*
link
,
const
struct
buf
*
title
,
const
struct
buf
*
alt
,
void
*
opaque
)
{
struct
html_renderopt
*
options
=
opaque
;
if
(
!
link
||
!
link
->
size
)
return
0
;
BUFPUTSL
(
ob
,
"<img src=
\"
"
);
escape_href
(
ob
,
link
->
data
,
link
->
size
);
BUFPUTSL
(
ob
,
"
\"
alt=
\"
"
);
if
(
alt
&&
alt
->
size
)
escape_html
(
ob
,
alt
->
data
,
alt
->
size
);
if
(
title
&&
title
->
size
)
{
BUFPUTSL
(
ob
,
"
\"
title=
\"
"
);
escape_html
(
ob
,
title
->
data
,
title
->
size
);
}
bufputs
(
ob
,
USE_XHTML
(
options
)
?
"
\"
/>"
:
"
\"
>"
);
return
1
;
}
static
int
rndr_raw_html
(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
)
{
struct
html_renderopt
*
options
=
opaque
;
/* HTML_ESCAPE overrides SKIP_HTML, SKIP_STYLE, SKIP_LINKS and SKIP_IMAGES
* It doens't see if there are any valid tags, just escape all of them. */
if
((
options
->
flags
&
HTML_ESCAPE
)
!=
0
)
{
escape_html
(
ob
,
text
->
data
,
text
->
size
);
return
1
;
}
if
((
options
->
flags
&
HTML_SKIP_HTML
)
!=
0
)
return
1
;
if
((
options
->
flags
&
HTML_SKIP_STYLE
)
!=
0
&&
sdhtml_is_tag
(
text
->
data
,
text
->
size
,
"style"
))
return
1
;
if
((
options
->
flags
&
HTML_SKIP_LINKS
)
!=
0
&&
sdhtml_is_tag
(
text
->
data
,
text
->
size
,
"a"
))
return
1
;
if
((
options
->
flags
&
HTML_SKIP_IMAGES
)
!=
0
&&
sdhtml_is_tag
(
text
->
data
,
text
->
size
,
"img"
))
return
1
;
bufput
(
ob
,
text
->
data
,
text
->
size
);
return
1
;
}
static
void
rndr_table
(
struct
buf
*
ob
,
const
struct
buf
*
header
,
const
struct
buf
*
body
,
void
*
opaque
)
{
if
(
ob
->
size
)
bufputc
(
ob
,
'\n'
);
BUFPUTSL
(
ob
,
"<table><thead>
\n
"
);
if
(
header
)
bufput
(
ob
,
header
->
data
,
header
->
size
);
BUFPUTSL
(
ob
,
"</thead><tbody>
\n
"
);
if
(
body
)
bufput
(
ob
,
body
->
data
,
body
->
size
);
BUFPUTSL
(
ob
,
"</tbody></table>
\n
"
);
}
static
void
rndr_tablerow
(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
)
{
BUFPUTSL
(
ob
,
"<tr>
\n
"
);
if
(
text
)
bufput
(
ob
,
text
->
data
,
text
->
size
);
BUFPUTSL
(
ob
,
"</tr>
\n
"
);
}
static
void
rndr_tablecell
(
struct
buf
*
ob
,
const
struct
buf
*
text
,
int
flags
,
void
*
opaque
)
{
if
(
flags
&
MKD_TABLE_HEADER
)
{
BUFPUTSL
(
ob
,
"<th"
);
}
else
{
BUFPUTSL
(
ob
,
"<td"
);
}
switch
(
flags
&
MKD_TABLE_ALIGNMASK
)
{
case
MKD_TABLE_ALIGN_CENTER
:
BUFPUTSL
(
ob
,
" align=
\"
center
\"
>"
);
break
;
case
MKD_TABLE_ALIGN_L
:
BUFPUTSL
(
ob
,
" align=
\"
left
\"
>"
);
break
;
case
MKD_TABLE_ALIGN_R
:
BUFPUTSL
(
ob
,
" align=
\"
right
\"
>"
);
break
;
default:
BUFPUTSL
(
ob
,
">"
);
}
if
(
text
)
bufput
(
ob
,
text
->
data
,
text
->
size
);
if
(
flags
&
MKD_TABLE_HEADER
)
{
BUFPUTSL
(
ob
,
"</th>
\n
"
);
}
else
{
BUFPUTSL
(
ob
,
"</td>
\n
"
);
}
}
static
int
rndr_superscript
(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
)
{
if
(
!
text
||
!
text
->
size
)
return
0
;
BUFPUTSL
(
ob
,
"<sup>"
);
bufput
(
ob
,
text
->
data
,
text
->
size
);
BUFPUTSL
(
ob
,
"</sup>"
);
return
1
;
}
static
void
rndr_normal_text
(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
)
{
if
(
text
)
escape_html
(
ob
,
text
->
data
,
text
->
size
);
}
static
void
toc_header
(
struct
buf
*
ob
,
const
struct
buf
*
text
,
int
level
,
void
*
opaque
)
{
struct
html_renderopt
*
options
=
opaque
;
/* set the level offset if this is the first header
* we're parsing for the document */
if
(
options
->
toc_data
.
current_level
==
0
)
{
options
->
toc_data
.
level_offset
=
level
-
1
;
}
level
-=
options
->
toc_data
.
level_offset
;
if
(
level
>
options
->
toc_data
.
current_level
)
{
while
(
level
>
options
->
toc_data
.
current_level
)
{
BUFPUTSL
(
ob
,
"<ul>
\n
<li>
\n
"
);
options
->
toc_data
.
current_level
++
;
}
}
else
if
(
level
<
options
->
toc_data
.
current_level
)
{
BUFPUTSL
(
ob
,
"</li>
\n
"
);
while
(
level
<
options
->
toc_data
.
current_level
)
{
BUFPUTSL
(
ob
,
"</ul>
\n
</li>
\n
"
);
options
->
toc_data
.
current_level
--
;
}
BUFPUTSL
(
ob
,
"<li>
\n
"
);
}
else
{
BUFPUTSL
(
ob
,
"</li>
\n
<li>
\n
"
);
}
bufprintf
(
ob
,
"<a href=
\"
#toc_%d
\"
>"
,
options
->
toc_data
.
header_count
++
);
if
(
text
)
escape_html
(
ob
,
text
->
data
,
text
->
size
);
BUFPUTSL
(
ob
,
"</a>
\n
"
);
}
static
int
toc_link
(
struct
buf
*
ob
,
const
struct
buf
*
link
,
const
struct
buf
*
title
,
const
struct
buf
*
content
,
void
*
opaque
)
{
if
(
content
&&
content
->
size
)
bufput
(
ob
,
content
->
data
,
content
->
size
);
return
1
;
}
static
void
toc_finalize
(
struct
buf
*
ob
,
void
*
opaque
)
{
struct
html_renderopt
*
options
=
opaque
;
while
(
options
->
toc_data
.
current_level
>
0
)
{
BUFPUTSL
(
ob
,
"</li>
\n
</ul>
\n
"
);
options
->
toc_data
.
current_level
--
;
}
}
void
sdhtml_toc_renderer
(
struct
sd_callbacks
*
callbacks
,
struct
html_renderopt
*
options
)
{
static
const
struct
sd_callbacks
cb_default
=
{
NULL
,
NULL
,
NULL
,
toc_header
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
rndr_codespan
,
rndr_double_emphasis
,
rndr_emphasis
,
NULL
,
NULL
,
toc_link
,
NULL
,
rndr_triple_emphasis
,
rndr_strikethrough
,
rndr_superscript
,
NULL
,
NULL
,
NULL
,
toc_finalize
,
};
memset
(
options
,
0x0
,
sizeof
(
struct
html_renderopt
));
options
->
flags
=
HTML_TOC
;
memcpy
(
callbacks
,
&
cb_default
,
sizeof
(
struct
sd_callbacks
));
}
void
sdhtml_renderer
(
struct
sd_callbacks
*
callbacks
,
struct
html_renderopt
*
options
,
unsigned
int
render_flags
)
{
static
const
struct
sd_callbacks
cb_default
=
{
rndr_blockcode
,
rndr_blockquote
,
rndr_raw_block
,
rndr_header
,
rndr_hrule
,
rndr_list
,
rndr_listitem
,
rndr_paragraph
,
rndr_table
,
rndr_tablerow
,
rndr_tablecell
,
rndr_autolink
,
rndr_codespan
,
rndr_double_emphasis
,
rndr_emphasis
,
rndr_image
,
rndr_linebreak
,
rndr_link
,
rndr_raw_html
,
rndr_triple_emphasis
,
rndr_strikethrough
,
rndr_superscript
,
NULL
,
rndr_normal_text
,
NULL
,
NULL
,
};
/* Prepare the options pointer */
memset
(
options
,
0x0
,
sizeof
(
struct
html_renderopt
));
options
->
flags
=
render_flags
;
/* Prepare the callbacks */
memcpy
(
callbacks
,
&
cb_default
,
sizeof
(
struct
sd_callbacks
));
if
(
render_flags
&
HTML_SKIP_IMAGES
)
callbacks
->
image
=
NULL
;
if
(
render_flags
&
HTML_SKIP_LINKS
)
{
callbacks
->
link
=
NULL
;
callbacks
->
autolink
=
NULL
;
}
if
(
render_flags
&
HTML_SKIP_HTML
||
render_flags
&
HTML_ESCAPE
)
callbacks
->
blockhtml
=
NULL
;
}
liteidex/src/3rdparty/sundown/html/html.h
已删除
100644 → 0
浏览文件 @
14e68733
/*
* Copyright (c) 2011, Vicent Marti
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef UPSKIRT_HTML_H
#define UPSKIRT_HTML_H
#include "markdown.h"
#include "buffer.h"
#include <stdlib.h>
#ifdef __cplusplus
extern
"C"
{
#endif
void
set_fix_qt_textbrowser
(
int
n
);
struct
html_renderopt
{
struct
{
int
header_count
;
int
current_level
;
int
level_offset
;
}
toc_data
;
unsigned
int
flags
;
/* extra callbacks */
void
(
*
link_attributes
)(
struct
buf
*
ob
,
const
struct
buf
*
url
,
void
*
self
);
};
typedef
enum
{
HTML_SKIP_HTML
=
(
1
<<
0
),
HTML_SKIP_STYLE
=
(
1
<<
1
),
HTML_SKIP_IMAGES
=
(
1
<<
2
),
HTML_SKIP_LINKS
=
(
1
<<
3
),
HTML_EXPAND_TABS
=
(
1
<<
4
),
HTML_SAFELINK
=
(
1
<<
5
),
HTML_TOC
=
(
1
<<
6
),
HTML_HARD_WRAP
=
(
1
<<
7
),
HTML_USE_XHTML
=
(
1
<<
8
),
HTML_ESCAPE
=
(
1
<<
9
),
}
html_render_mode
;
typedef
enum
{
HTML_TAG_NONE
=
0
,
HTML_TAG_OPEN
,
HTML_TAG_CLOSE
,
}
html_tag
;
int
sdhtml_is_tag
(
const
uint8_t
*
tag_data
,
size_t
tag_size
,
const
char
*
tagname
);
extern
void
sdhtml_renderer
(
struct
sd_callbacks
*
callbacks
,
struct
html_renderopt
*
options_ptr
,
unsigned
int
render_flags
);
extern
void
sdhtml_toc_renderer
(
struct
sd_callbacks
*
callbacks
,
struct
html_renderopt
*
options_ptr
);
extern
void
sdhtml_smartypants
(
struct
buf
*
ob
,
const
uint8_t
*
text
,
size_t
size
);
#ifdef __cplusplus
}
#endif
#endif
liteidex/src/3rdparty/sundown/html/html_smartypants.c
已删除
100644 → 0
浏览文件 @
14e68733
/*
* Copyright (c) 2011, Vicent Marti
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include "buffer.h"
#include "html.h"
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#if defined(_WIN32)
#define snprintf _snprintf
#endif
struct
smartypants_data
{
int
in_squote
;
int
in_dquote
;
};
static
size_t
smartypants_cb__ltag
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
);
static
size_t
smartypants_cb__dquote
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
);
static
size_t
smartypants_cb__amp
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
);
static
size_t
smartypants_cb__period
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
);
static
size_t
smartypants_cb__number
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
);
static
size_t
smartypants_cb__dash
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
);
static
size_t
smartypants_cb__parens
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
);
static
size_t
smartypants_cb__squote
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
);
static
size_t
smartypants_cb__backtick
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
);
static
size_t
smartypants_cb__escape
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
);
static
size_t
(
*
smartypants_cb_ptrs
[])
(
struct
buf
*
,
struct
smartypants_data
*
,
uint8_t
,
const
uint8_t
*
,
size_t
)
=
{
NULL
,
/* 0 */
smartypants_cb__dash
,
/* 1 */
smartypants_cb__parens
,
/* 2 */
smartypants_cb__squote
,
/* 3 */
smartypants_cb__dquote
,
/* 4 */
smartypants_cb__amp
,
/* 5 */
smartypants_cb__period
,
/* 6 */
smartypants_cb__number
,
/* 7 */
smartypants_cb__ltag
,
/* 8 */
smartypants_cb__backtick
,
/* 9 */
smartypants_cb__escape
,
/* 10 */
};
static
const
uint8_t
smartypants_cb_chars
[]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
4
,
0
,
0
,
0
,
5
,
3
,
2
,
0
,
0
,
0
,
0
,
1
,
6
,
0
,
0
,
7
,
0
,
7
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
8
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
10
,
0
,
0
,
0
,
9
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
};
static
inline
int
word_boundary
(
uint8_t
c
)
{
return
c
==
0
||
isspace
(
c
)
||
ispunct
(
c
);
}
static
int
smartypants_quotes
(
struct
buf
*
ob
,
uint8_t
previous_char
,
uint8_t
next_char
,
uint8_t
quote
,
int
*
is_open
)
{
char
ent
[
8
];
if
(
*
is_open
&&
!
word_boundary
(
next_char
))
return
0
;
if
(
!
(
*
is_open
)
&&
!
word_boundary
(
previous_char
))
return
0
;
snprintf
(
ent
,
sizeof
(
ent
),
"&%c%cquo;"
,
(
*
is_open
)
?
'r'
:
'l'
,
quote
);
*
is_open
=
!
(
*
is_open
);
bufputs
(
ob
,
ent
);
return
1
;
}
static
size_t
smartypants_cb__squote
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
)
{
if
(
size
>=
2
)
{
uint8_t
t1
=
tolower
(
text
[
1
]);
if
(
t1
==
'\''
)
{
if
(
smartypants_quotes
(
ob
,
previous_char
,
size
>=
3
?
text
[
2
]
:
0
,
'd'
,
&
smrt
->
in_dquote
))
return
1
;
}
if
((
t1
==
's'
||
t1
==
't'
||
t1
==
'm'
||
t1
==
'd'
)
&&
(
size
==
3
||
word_boundary
(
text
[
2
])))
{
BUFPUTSL
(
ob
,
"’"
);
return
0
;
}
if
(
size
>=
3
)
{
uint8_t
t2
=
tolower
(
text
[
2
]);
if
(((
t1
==
'r'
&&
t2
==
'e'
)
||
(
t1
==
'l'
&&
t2
==
'l'
)
||
(
t1
==
'v'
&&
t2
==
'e'
))
&&
(
size
==
4
||
word_boundary
(
text
[
3
])))
{
BUFPUTSL
(
ob
,
"’"
);
return
0
;
}
}
}
if
(
smartypants_quotes
(
ob
,
previous_char
,
size
>
0
?
text
[
1
]
:
0
,
's'
,
&
smrt
->
in_squote
))
return
0
;
bufputc
(
ob
,
text
[
0
]);
return
0
;
}
static
size_t
smartypants_cb__parens
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
)
{
if
(
size
>=
3
)
{
uint8_t
t1
=
tolower
(
text
[
1
]);
uint8_t
t2
=
tolower
(
text
[
2
]);
if
(
t1
==
'c'
&&
t2
==
')'
)
{
BUFPUTSL
(
ob
,
"©"
);
return
2
;
}
if
(
t1
==
'r'
&&
t2
==
')'
)
{
BUFPUTSL
(
ob
,
"®"
);
return
2
;
}
if
(
size
>=
4
&&
t1
==
't'
&&
t2
==
'm'
&&
text
[
3
]
==
')'
)
{
BUFPUTSL
(
ob
,
"™"
);
return
3
;
}
}
bufputc
(
ob
,
text
[
0
]);
return
0
;
}
static
size_t
smartypants_cb__dash
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
)
{
if
(
size
>=
3
&&
text
[
1
]
==
'-'
&&
text
[
2
]
==
'-'
)
{
BUFPUTSL
(
ob
,
"—"
);
return
2
;
}
if
(
size
>=
2
&&
text
[
1
]
==
'-'
)
{
BUFPUTSL
(
ob
,
"–"
);
return
1
;
}
bufputc
(
ob
,
text
[
0
]);
return
0
;
}
static
size_t
smartypants_cb__amp
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
)
{
if
(
size
>=
6
&&
memcmp
(
text
,
"""
,
6
)
==
0
)
{
if
(
smartypants_quotes
(
ob
,
previous_char
,
size
>=
7
?
text
[
6
]
:
0
,
'd'
,
&
smrt
->
in_dquote
))
return
5
;
}
if
(
size
>=
4
&&
memcmp
(
text
,
"�"
,
4
)
==
0
)
return
3
;
bufputc
(
ob
,
'&'
);
return
0
;
}
static
size_t
smartypants_cb__period
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
)
{
if
(
size
>=
3
&&
text
[
1
]
==
'.'
&&
text
[
2
]
==
'.'
)
{
BUFPUTSL
(
ob
,
"…"
);
return
2
;
}
if
(
size
>=
5
&&
text
[
1
]
==
' '
&&
text
[
2
]
==
'.'
&&
text
[
3
]
==
' '
&&
text
[
4
]
==
'.'
)
{
BUFPUTSL
(
ob
,
"…"
);
return
4
;
}
bufputc
(
ob
,
text
[
0
]);
return
0
;
}
static
size_t
smartypants_cb__backtick
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
)
{
if
(
size
>=
2
&&
text
[
1
]
==
'`'
)
{
if
(
smartypants_quotes
(
ob
,
previous_char
,
size
>=
3
?
text
[
2
]
:
0
,
'd'
,
&
smrt
->
in_dquote
))
return
1
;
}
return
0
;
}
static
size_t
smartypants_cb__number
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
)
{
if
(
word_boundary
(
previous_char
)
&&
size
>=
3
)
{
if
(
text
[
0
]
==
'1'
&&
text
[
1
]
==
'/'
&&
text
[
2
]
==
'2'
)
{
if
(
size
==
3
||
word_boundary
(
text
[
3
]))
{
BUFPUTSL
(
ob
,
"½"
);
return
2
;
}
}
if
(
text
[
0
]
==
'1'
&&
text
[
1
]
==
'/'
&&
text
[
2
]
==
'4'
)
{
if
(
size
==
3
||
word_boundary
(
text
[
3
])
||
(
size
>=
5
&&
tolower
(
text
[
3
])
==
't'
&&
tolower
(
text
[
4
])
==
'h'
))
{
BUFPUTSL
(
ob
,
"¼"
);
return
2
;
}
}
if
(
text
[
0
]
==
'3'
&&
text
[
1
]
==
'/'
&&
text
[
2
]
==
'4'
)
{
if
(
size
==
3
||
word_boundary
(
text
[
3
])
||
(
size
>=
6
&&
tolower
(
text
[
3
])
==
't'
&&
tolower
(
text
[
4
])
==
'h'
&&
tolower
(
text
[
5
])
==
's'
))
{
BUFPUTSL
(
ob
,
"¾"
);
return
2
;
}
}
}
bufputc
(
ob
,
text
[
0
]);
return
0
;
}
static
size_t
smartypants_cb__dquote
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
)
{
if
(
!
smartypants_quotes
(
ob
,
previous_char
,
size
>
0
?
text
[
1
]
:
0
,
'd'
,
&
smrt
->
in_dquote
))
BUFPUTSL
(
ob
,
"""
);
return
0
;
}
static
size_t
smartypants_cb__ltag
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
)
{
static
const
char
*
skip_tags
[]
=
{
"pre"
,
"code"
,
"var"
,
"samp"
,
"kbd"
,
"math"
,
"script"
,
"style"
};
static
const
size_t
skip_tags_count
=
8
;
size_t
tag
,
i
=
0
;
while
(
i
<
size
&&
text
[
i
]
!=
'>'
)
i
++
;
for
(
tag
=
0
;
tag
<
skip_tags_count
;
++
tag
)
{
if
(
sdhtml_is_tag
(
text
,
size
,
skip_tags
[
tag
])
==
HTML_TAG_OPEN
)
break
;
}
if
(
tag
<
skip_tags_count
)
{
for
(;;)
{
while
(
i
<
size
&&
text
[
i
]
!=
'<'
)
i
++
;
if
(
i
==
size
)
break
;
if
(
sdhtml_is_tag
(
text
+
i
,
size
-
i
,
skip_tags
[
tag
])
==
HTML_TAG_CLOSE
)
break
;
i
++
;
}
while
(
i
<
size
&&
text
[
i
]
!=
'>'
)
i
++
;
}
bufput
(
ob
,
text
,
i
+
1
);
return
i
;
}
static
size_t
smartypants_cb__escape
(
struct
buf
*
ob
,
struct
smartypants_data
*
smrt
,
uint8_t
previous_char
,
const
uint8_t
*
text
,
size_t
size
)
{
if
(
size
<
2
)
return
0
;
switch
(
text
[
1
])
{
case
'\\'
:
case
'"'
:
case
'\''
:
case
'.'
:
case
'-'
:
case
'`'
:
bufputc
(
ob
,
text
[
1
]);
return
1
;
default:
bufputc
(
ob
,
'\\'
);
return
0
;
}
}
#if 0
static struct {
uint8_t c0;
const uint8_t *pattern;
const uint8_t *entity;
int skip;
} smartypants_subs[] = {
{ '\'', "'s>", "’", 0 },
{ '\'', "'t>", "’", 0 },
{ '\'', "'re>", "’", 0 },
{ '\'', "'ll>", "’", 0 },
{ '\'', "'ve>", "’", 0 },
{ '\'', "'m>", "’", 0 },
{ '\'', "'d>", "’", 0 },
{ '-', "--", "—", 1 },
{ '-', "<->", "–", 0 },
{ '.', "...", "…", 2 },
{ '.', ". . .", "…", 4 },
{ '(', "(c)", "©", 2 },
{ '(', "(r)", "®", 2 },
{ '(', "(tm)", "™", 3 },
{ '3', "<3/4>", "¾", 2 },
{ '3', "<3/4ths>", "¾", 2 },
{ '1', "<1/2>", "½", 2 },
{ '1', "<1/4>", "¼", 2 },
{ '1', "<1/4th>", "¼", 2 },
{ '&', "�", 0, 3 },
};
#endif
void
sdhtml_smartypants
(
struct
buf
*
ob
,
const
uint8_t
*
text
,
size_t
size
)
{
size_t
i
;
struct
smartypants_data
smrt
=
{
0
,
0
};
if
(
!
text
)
return
;
bufgrow
(
ob
,
size
);
for
(
i
=
0
;
i
<
size
;
++
i
)
{
size_t
org
;
uint8_t
action
=
0
;
org
=
i
;
while
(
i
<
size
&&
(
action
=
smartypants_cb_chars
[
text
[
i
]])
==
0
)
i
++
;
if
(
i
>
org
)
bufput
(
ob
,
text
+
org
,
i
-
org
);
if
(
i
<
size
)
{
i
+=
smartypants_cb_ptrs
[(
int
)
action
]
(
ob
,
&
smrt
,
i
?
text
[
i
-
1
]
:
0
,
text
+
i
,
size
-
i
);
}
}
}
liteidex/src/3rdparty/sundown/html_block_names.txt
已删除
100644 → 0
浏览文件 @
14e68733
##
p
dl
h1
h2
h3
h4
h5
h6
ol
ul
del
div
ins
pre
form
math
table
figure
iframe
script
style
fieldset
noscript
blockquote
liteidex/src/3rdparty/sundown/mdtohtml.cpp
已删除
100644 → 0
浏览文件 @
14e68733
#include "mdtohtml.h"
#include "markdown.h"
#include "buffer.h"
#include "html.h"
#define READ_UNIT 1024
#define OUTPUT_UNIT 64
QByteArray
md2html
(
const
QByteArray
&
data
,
int
ext
)
{
if
(
data
.
isEmpty
())
{
return
data
;
}
struct
buf
*
ob
;
struct
sd_callbacks
callbacks
;
struct
html_renderopt
options
;
struct
sd_markdown
*
markdown
;
/* performing markdown parsing */
ob
=
bufnew
(
OUTPUT_UNIT
);
sdhtml_renderer
(
&
callbacks
,
&
options
,
0
);
markdown
=
sd_markdown_new
(
ext
,
16
,
&
callbacks
,
&
options
);
sd_markdown_render
(
ob
,
(
uint8_t
*
)
data
.
constData
(),
data
.
size
(),
markdown
);
sd_markdown_free
(
markdown
);
QByteArray
out
((
char
*
)
ob
->
data
,
ob
->
size
);
/* cleanup */
bufrelease
(
ob
);
return
out
;
}
void
fix_qt_textbrowser
(
bool
b
)
{
if
(
b
)
{
set_fix_qt_textbrowser
(
1
);
}
else
{
set_fix_qt_textbrowser
(
0
);
}
}
liteidex/src/3rdparty/sundown/mdtohtml.h
已删除
100644 → 0
浏览文件 @
14e68733
#ifndef MDTOHTML_H
#define MDTOHTML_H
#include <QByteArray>
#include "src/markdown.h"
const
int
MKDEXT_ALL
=
MKDEXT_NO_INTRA_EMPHASIS
|
MKDEXT_TABLES
|
MKDEXT_FENCED_CODE
|
MKDEXT_AUTOLINK
|
MKDEXT_STRIKETHROUGH
|
MKDEXT_SPACE_HEADERS
|
MKDEXT_SUPERSCRIPT
|
MKDEXT_LAX_SPACING
;
QByteArray
md2html
(
const
QByteArray
&
data
,
int
ext
=
MKDEXT_ALL
);
void
fix_qt_textbrowser
(
bool
b
);
#endif // MDTOHTML_H
liteidex/src/3rdparty/sundown/src/autolink.c
已删除
100644 → 0
浏览文件 @
14e68733
/*
* Copyright (c) 2011, Vicent Marti
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include "buffer.h"
#include "autolink.h"
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#if defined(_WIN32)
#define strncasecmp _strnicmp
#endif
int
sd_autolink_issafe
(
const
uint8_t
*
link
,
size_t
link_len
)
{
static
const
size_t
valid_uris_count
=
5
;
static
const
char
*
valid_uris
[]
=
{
"/"
,
"http://"
,
"https://"
,
"ftp://"
,
"mailto:"
};
size_t
i
;
for
(
i
=
0
;
i
<
valid_uris_count
;
++
i
)
{
size_t
len
=
strlen
(
valid_uris
[
i
]);
if
(
link_len
>
len
&&
strncasecmp
((
char
*
)
link
,
valid_uris
[
i
],
len
)
==
0
&&
isalnum
(
link
[
len
]))
return
1
;
}
return
0
;
}
static
size_t
autolink_delim
(
uint8_t
*
data
,
size_t
link_end
,
size_t
max_rewind
,
size_t
size
)
{
uint8_t
cclose
,
copen
=
0
;
size_t
i
;
for
(
i
=
0
;
i
<
link_end
;
++
i
)
if
(
data
[
i
]
==
'<'
)
{
link_end
=
i
;
break
;
}
while
(
link_end
>
0
)
{
if
(
strchr
(
"?!.,"
,
data
[
link_end
-
1
])
!=
NULL
)
link_end
--
;
else
if
(
data
[
link_end
-
1
]
==
';'
)
{
size_t
new_end
=
link_end
-
2
;
while
(
new_end
>
0
&&
isalpha
(
data
[
new_end
]))
new_end
--
;
if
(
new_end
<
link_end
-
2
&&
data
[
new_end
]
==
'&'
)
link_end
=
new_end
;
else
link_end
--
;
}
else
break
;
}
if
(
link_end
==
0
)
return
0
;
cclose
=
data
[
link_end
-
1
];
switch
(
cclose
)
{
case
'"'
:
copen
=
'"'
;
break
;
case
'\''
:
copen
=
'\''
;
break
;
case
')'
:
copen
=
'('
;
break
;
case
']'
:
copen
=
'['
;
break
;
case
'}'
:
copen
=
'{'
;
break
;
}
if
(
copen
!=
0
)
{
size_t
closing
=
0
;
size_t
opening
=
0
;
size_t
i
=
0
;
/* Try to close the final punctuation sign in this same line;
* if we managed to close it outside of the URL, that means that it's
* not part of the URL. If it closes inside the URL, that means it
* is part of the URL.
*
* Examples:
*
* foo http://www.pokemon.com/Pikachu_(Electric) bar
* => http://www.pokemon.com/Pikachu_(Electric)
*
* foo (http://www.pokemon.com/Pikachu_(Electric)) bar
* => http://www.pokemon.com/Pikachu_(Electric)
*
* foo http://www.pokemon.com/Pikachu_(Electric)) bar
* => http://www.pokemon.com/Pikachu_(Electric))
*
* (foo http://www.pokemon.com/Pikachu_(Electric)) bar
* => foo http://www.pokemon.com/Pikachu_(Electric)
*/
while
(
i
<
link_end
)
{
if
(
data
[
i
]
==
copen
)
opening
++
;
else
if
(
data
[
i
]
==
cclose
)
closing
++
;
i
++
;
}
if
(
closing
!=
opening
)
link_end
--
;
}
return
link_end
;
}
static
size_t
check_domain
(
uint8_t
*
data
,
size_t
size
,
int
allow_short
)
{
size_t
i
,
np
=
0
;
if
(
!
isalnum
(
data
[
0
]))
return
0
;
for
(
i
=
1
;
i
<
size
-
1
;
++
i
)
{
if
(
data
[
i
]
==
'.'
)
np
++
;
else
if
(
!
isalnum
(
data
[
i
])
&&
data
[
i
]
!=
'-'
)
break
;
}
if
(
allow_short
)
{
/* We don't need a valid domain in the strict sense (with
* least one dot; so just make sure it's composed of valid
* domain characters and return the length of the the valid
* sequence. */
return
i
;
}
else
{
/* a valid domain needs to have at least a dot.
* that's as far as we get */
return
np
?
i
:
0
;
}
}
size_t
sd_autolink__www
(
size_t
*
rewind_p
,
struct
buf
*
link
,
uint8_t
*
data
,
size_t
max_rewind
,
size_t
size
,
unsigned
int
flags
)
{
size_t
link_end
;
if
(
max_rewind
>
0
&&
!
ispunct
(
data
[
-
1
])
&&
!
isspace
(
data
[
-
1
]))
return
0
;
if
(
size
<
4
||
memcmp
(
data
,
"www."
,
strlen
(
"www."
))
!=
0
)
return
0
;
link_end
=
check_domain
(
data
,
size
,
0
);
if
(
link_end
==
0
)
return
0
;
while
(
link_end
<
size
&&
!
isspace
(
data
[
link_end
]))
link_end
++
;
link_end
=
autolink_delim
(
data
,
link_end
,
max_rewind
,
size
);
if
(
link_end
==
0
)
return
0
;
bufput
(
link
,
data
,
link_end
);
*
rewind_p
=
0
;
return
(
int
)
link_end
;
}
size_t
sd_autolink__email
(
size_t
*
rewind_p
,
struct
buf
*
link
,
uint8_t
*
data
,
size_t
max_rewind
,
size_t
size
,
unsigned
int
flags
)
{
size_t
link_end
,
rewind
;
int
nb
=
0
,
np
=
0
;
for
(
rewind
=
0
;
rewind
<
max_rewind
;
++
rewind
)
{
uint8_t
c
=
data
[
-
rewind
-
1
];
if
(
isalnum
(
c
))
continue
;
if
(
strchr
(
".+-_"
,
c
)
!=
NULL
)
continue
;
break
;
}
if
(
rewind
==
0
)
return
0
;
for
(
link_end
=
0
;
link_end
<
size
;
++
link_end
)
{
uint8_t
c
=
data
[
link_end
];
if
(
isalnum
(
c
))
continue
;
if
(
c
==
'@'
)
nb
++
;
else
if
(
c
==
'.'
&&
link_end
<
size
-
1
)
np
++
;
else
if
(
c
!=
'-'
&&
c
!=
'_'
)
break
;
}
if
(
link_end
<
2
||
nb
!=
1
||
np
==
0
||
!
isalpha
(
data
[
link_end
-
1
]))
return
0
;
link_end
=
autolink_delim
(
data
,
link_end
,
max_rewind
,
size
);
if
(
link_end
==
0
)
return
0
;
bufput
(
link
,
data
-
rewind
,
link_end
+
rewind
);
*
rewind_p
=
rewind
;
return
link_end
;
}
size_t
sd_autolink__url
(
size_t
*
rewind_p
,
struct
buf
*
link
,
uint8_t
*
data
,
size_t
max_rewind
,
size_t
size
,
unsigned
int
flags
)
{
size_t
link_end
,
rewind
=
0
,
domain_len
;
if
(
size
<
4
||
data
[
1
]
!=
'/'
||
data
[
2
]
!=
'/'
)
return
0
;
while
(
rewind
<
max_rewind
&&
isalpha
(
data
[
-
rewind
-
1
]))
rewind
++
;
if
(
!
sd_autolink_issafe
(
data
-
rewind
,
size
+
rewind
))
return
0
;
link_end
=
strlen
(
"://"
);
domain_len
=
check_domain
(
data
+
link_end
,
size
-
link_end
,
flags
&
SD_AUTOLINK_SHORT_DOMAINS
);
if
(
domain_len
==
0
)
return
0
;
link_end
+=
domain_len
;
while
(
link_end
<
size
&&
!
isspace
(
data
[
link_end
]))
link_end
++
;
link_end
=
autolink_delim
(
data
,
link_end
,
max_rewind
,
size
);
if
(
link_end
==
0
)
return
0
;
bufput
(
link
,
data
-
rewind
,
link_end
+
rewind
);
*
rewind_p
=
rewind
;
return
link_end
;
}
liteidex/src/3rdparty/sundown/src/autolink.h
已删除
100644 → 0
浏览文件 @
14e68733
/*
* Copyright (c) 2011, Vicent Marti
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef UPSKIRT_AUTOLINK_H
#define UPSKIRT_AUTOLINK_H
#include "buffer.h"
#ifdef __cplusplus
extern
"C"
{
#endif
enum
{
SD_AUTOLINK_SHORT_DOMAINS
=
(
1
<<
0
),
};
int
sd_autolink_issafe
(
const
uint8_t
*
link
,
size_t
link_len
);
size_t
sd_autolink__www
(
size_t
*
rewind_p
,
struct
buf
*
link
,
uint8_t
*
data
,
size_t
offset
,
size_t
size
,
unsigned
int
flags
);
size_t
sd_autolink__email
(
size_t
*
rewind_p
,
struct
buf
*
link
,
uint8_t
*
data
,
size_t
offset
,
size_t
size
,
unsigned
int
flags
);
size_t
sd_autolink__url
(
size_t
*
rewind_p
,
struct
buf
*
link
,
uint8_t
*
data
,
size_t
offset
,
size_t
size
,
unsigned
int
flags
);
#ifdef __cplusplus
}
#endif
#endif
/* vim: set filetype=c: */
liteidex/src/3rdparty/sundown/src/buffer.c
已删除
100644 → 0
浏览文件 @
14e68733
/*
* Copyright (c) 2008, Natacha Porté
* Copyright (c) 2011, Vicent Martí
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#define BUFFER_MAX_ALLOC_SIZE (1024 * 1024 * 16) //16mb
#include "buffer.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
/* MSVC compat */
#if defined(_MSC_VER)
# define _buf_vsnprintf _vsnprintf
#else
# define _buf_vsnprintf vsnprintf
#endif
int
bufprefix
(
const
struct
buf
*
buf
,
const
char
*
prefix
)
{
size_t
i
;
assert
(
buf
&&
buf
->
unit
);
for
(
i
=
0
;
i
<
buf
->
size
;
++
i
)
{
if
(
prefix
[
i
]
==
0
)
return
0
;
if
(
buf
->
data
[
i
]
!=
prefix
[
i
])
return
buf
->
data
[
i
]
-
prefix
[
i
];
}
return
0
;
}
/* bufgrow: increasing the allocated size to the given value */
int
bufgrow
(
struct
buf
*
buf
,
size_t
neosz
)
{
size_t
neoasz
;
void
*
neodata
;
assert
(
buf
&&
buf
->
unit
);
if
(
neosz
>
BUFFER_MAX_ALLOC_SIZE
)
return
BUF_ENOMEM
;
if
(
buf
->
asize
>=
neosz
)
return
BUF_OK
;
neoasz
=
buf
->
asize
+
buf
->
unit
;
while
(
neoasz
<
neosz
)
neoasz
+=
buf
->
unit
;
neodata
=
realloc
(
buf
->
data
,
neoasz
);
if
(
!
neodata
)
return
BUF_ENOMEM
;
buf
->
data
=
neodata
;
buf
->
asize
=
neoasz
;
return
BUF_OK
;
}
/* bufnew: allocation of a new buffer */
struct
buf
*
bufnew
(
size_t
unit
)
{
struct
buf
*
ret
;
ret
=
malloc
(
sizeof
(
struct
buf
));
if
(
ret
)
{
ret
->
data
=
0
;
ret
->
size
=
ret
->
asize
=
0
;
ret
->
unit
=
unit
;
}
return
ret
;
}
/* bufnullterm: NULL-termination of the string array */
const
char
*
bufcstr
(
struct
buf
*
buf
)
{
assert
(
buf
&&
buf
->
unit
);
if
(
buf
->
size
<
buf
->
asize
&&
buf
->
data
[
buf
->
size
]
==
0
)
return
(
char
*
)
buf
->
data
;
if
(
buf
->
size
+
1
<=
buf
->
asize
||
bufgrow
(
buf
,
buf
->
size
+
1
)
==
0
)
{
buf
->
data
[
buf
->
size
]
=
0
;
return
(
char
*
)
buf
->
data
;
}
return
NULL
;
}
/* bufprintf: formatted printing to a buffer */
void
bufprintf
(
struct
buf
*
buf
,
const
char
*
fmt
,
...)
{
va_list
ap
;
int
n
;
assert
(
buf
&&
buf
->
unit
);
if
(
buf
->
size
>=
buf
->
asize
&&
bufgrow
(
buf
,
buf
->
size
+
1
)
<
0
)
return
;
va_start
(
ap
,
fmt
);
n
=
_buf_vsnprintf
((
char
*
)
buf
->
data
+
buf
->
size
,
buf
->
asize
-
buf
->
size
,
fmt
,
ap
);
va_end
(
ap
);
if
(
n
<
0
)
{
#ifdef _MSC_VER
va_start
(
ap
,
fmt
);
n
=
_vscprintf
(
fmt
,
ap
);
va_end
(
ap
);
#else
return
;
#endif
}
if
((
size_t
)
n
>=
buf
->
asize
-
buf
->
size
)
{
if
(
bufgrow
(
buf
,
buf
->
size
+
n
+
1
)
<
0
)
return
;
va_start
(
ap
,
fmt
);
n
=
_buf_vsnprintf
((
char
*
)
buf
->
data
+
buf
->
size
,
buf
->
asize
-
buf
->
size
,
fmt
,
ap
);
va_end
(
ap
);
}
if
(
n
<
0
)
return
;
buf
->
size
+=
n
;
}
/* bufput: appends raw data to a buffer */
void
bufput
(
struct
buf
*
buf
,
const
void
*
data
,
size_t
len
)
{
assert
(
buf
&&
buf
->
unit
);
if
(
buf
->
size
+
len
>
buf
->
asize
&&
bufgrow
(
buf
,
buf
->
size
+
len
)
<
0
)
return
;
memcpy
(
buf
->
data
+
buf
->
size
,
data
,
len
);
buf
->
size
+=
len
;
}
/* bufputs: appends a NUL-terminated string to a buffer */
void
bufputs
(
struct
buf
*
buf
,
const
char
*
str
)
{
bufput
(
buf
,
str
,
strlen
(
str
));
}
/* bufputc: appends a single uint8_t to a buffer */
void
bufputc
(
struct
buf
*
buf
,
int
c
)
{
assert
(
buf
&&
buf
->
unit
);
if
(
buf
->
size
+
1
>
buf
->
asize
&&
bufgrow
(
buf
,
buf
->
size
+
1
)
<
0
)
return
;
buf
->
data
[
buf
->
size
]
=
c
;
buf
->
size
+=
1
;
}
/* bufrelease: decrease the reference count and free the buffer if needed */
void
bufrelease
(
struct
buf
*
buf
)
{
if
(
!
buf
)
return
;
free
(
buf
->
data
);
free
(
buf
);
}
/* bufreset: frees internal data of the buffer */
void
bufreset
(
struct
buf
*
buf
)
{
if
(
!
buf
)
return
;
free
(
buf
->
data
);
buf
->
data
=
NULL
;
buf
->
size
=
buf
->
asize
=
0
;
}
/* bufslurp: removes a given number of bytes from the head of the array */
void
bufslurp
(
struct
buf
*
buf
,
size_t
len
)
{
assert
(
buf
&&
buf
->
unit
);
if
(
len
>=
buf
->
size
)
{
buf
->
size
=
0
;
return
;
}
buf
->
size
-=
len
;
memmove
(
buf
->
data
,
buf
->
data
+
len
,
buf
->
size
);
}
liteidex/src/3rdparty/sundown/src/buffer.h
已删除
100644 → 0
浏览文件 @
14e68733
/*
* Copyright (c) 2008, Natacha Porté
* Copyright (c) 2011, Vicent Martí
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef BUFFER_H__
#define BUFFER_H__
#include <stddef.h>
#include <stdarg.h>
#if defined(_MSC_VER)
#define uint8_t unsigned char
#else
#include <stdint.h>
#endif
#ifdef __cplusplus
extern
"C"
{
#endif
#if defined(_MSC_VER)
#define __attribute__(x)
#define inline
#endif
typedef
enum
{
BUF_OK
=
0
,
BUF_ENOMEM
=
-
1
,
}
buferror_t
;
/* struct buf: character array buffer */
struct
buf
{
uint8_t
*
data
;
/* actual character data */
size_t
size
;
/* size of the string */
size_t
asize
;
/* allocated size (0 = volatile buffer) */
size_t
unit
;
/* reallocation unit size (0 = read-only buffer) */
};
/* CONST_BUF: global buffer from a string litteral */
#define BUF_STATIC(string) \
{ (uint8_t *)string, sizeof string -1, sizeof string, 0, 0 }
/* VOLATILE_BUF: macro for creating a volatile buffer on the stack */
#define BUF_VOLATILE(strname) \
{ (uint8_t *)strname, strlen(strname), 0, 0, 0 }
/* BUFPUTSL: optimized bufputs of a string litteral */
#define BUFPUTSL(output, literal) \
bufput(output, literal, sizeof literal - 1)
/* bufgrow: increasing the allocated size to the given value */
int
bufgrow
(
struct
buf
*
,
size_t
);
/* bufnew: allocation of a new buffer */
struct
buf
*
bufnew
(
size_t
)
__attribute__
((
malloc
));
/* bufnullterm: NUL-termination of the string array (making a C-string) */
const
char
*
bufcstr
(
struct
buf
*
);
/* bufprefix: compare the beginning of a buffer with a string */
int
bufprefix
(
const
struct
buf
*
buf
,
const
char
*
prefix
);
/* bufput: appends raw data to a buffer */
void
bufput
(
struct
buf
*
,
const
void
*
,
size_t
);
/* bufputs: appends a NUL-terminated string to a buffer */
void
bufputs
(
struct
buf
*
,
const
char
*
);
/* bufputc: appends a single char to a buffer */
void
bufputc
(
struct
buf
*
,
int
);
/* bufrelease: decrease the reference count and free the buffer if needed */
void
bufrelease
(
struct
buf
*
);
/* bufreset: frees internal data of the buffer */
void
bufreset
(
struct
buf
*
);
/* bufslurp: removes a given number of bytes from the head of the array */
void
bufslurp
(
struct
buf
*
,
size_t
);
/* bufprintf: formatted printing to a buffer */
void
bufprintf
(
struct
buf
*
,
const
char
*
,
...)
__attribute__
((
format
(
printf
,
2
,
3
)));
#ifdef __cplusplus
}
#endif
#endif
liteidex/src/3rdparty/sundown/src/html_blocks.h
已删除
100644 → 0
浏览文件 @
14e68733
/* C code produced by gperf version 3.0.3 */
/* Command-line: gperf -N find_block_tag -H hash_block_tag -C -c -E --ignore-case html_block_names.txt */
/* Computed positions: -k'1-2' */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
&& ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
&& (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
&& ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
&& ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
&& ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
&& ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
&& ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
&& ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
&& ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
&& ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
&& ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
&& ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
&& ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
&& ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
&& ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
&& ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
&& ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
&& ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
&& ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
&& ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
&& ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
&& ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
/* The character set is not based on ISO-646. */
error
"gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
#endif
/* maximum key range = 37, duplicates = 0 */
#ifndef GPERF_DOWNCASE
#define GPERF_DOWNCASE 1
static
unsigned
char
gperf_downcase
[
256
]
=
{
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
,
19
,
20
,
21
,
22
,
23
,
24
,
25
,
26
,
27
,
28
,
29
,
30
,
31
,
32
,
33
,
34
,
35
,
36
,
37
,
38
,
39
,
40
,
41
,
42
,
43
,
44
,
45
,
46
,
47
,
48
,
49
,
50
,
51
,
52
,
53
,
54
,
55
,
56
,
57
,
58
,
59
,
60
,
61
,
62
,
63
,
64
,
97
,
98
,
99
,
100
,
101
,
102
,
103
,
104
,
105
,
106
,
107
,
108
,
109
,
110
,
111
,
112
,
113
,
114
,
115
,
116
,
117
,
118
,
119
,
120
,
121
,
122
,
91
,
92
,
93
,
94
,
95
,
96
,
97
,
98
,
99
,
100
,
101
,
102
,
103
,
104
,
105
,
106
,
107
,
108
,
109
,
110
,
111
,
112
,
113
,
114
,
115
,
116
,
117
,
118
,
119
,
120
,
121
,
122
,
123
,
124
,
125
,
126
,
127
,
128
,
129
,
130
,
131
,
132
,
133
,
134
,
135
,
136
,
137
,
138
,
139
,
140
,
141
,
142
,
143
,
144
,
145
,
146
,
147
,
148
,
149
,
150
,
151
,
152
,
153
,
154
,
155
,
156
,
157
,
158
,
159
,
160
,
161
,
162
,
163
,
164
,
165
,
166
,
167
,
168
,
169
,
170
,
171
,
172
,
173
,
174
,
175
,
176
,
177
,
178
,
179
,
180
,
181
,
182
,
183
,
184
,
185
,
186
,
187
,
188
,
189
,
190
,
191
,
192
,
193
,
194
,
195
,
196
,
197
,
198
,
199
,
200
,
201
,
202
,
203
,
204
,
205
,
206
,
207
,
208
,
209
,
210
,
211
,
212
,
213
,
214
,
215
,
216
,
217
,
218
,
219
,
220
,
221
,
222
,
223
,
224
,
225
,
226
,
227
,
228
,
229
,
230
,
231
,
232
,
233
,
234
,
235
,
236
,
237
,
238
,
239
,
240
,
241
,
242
,
243
,
244
,
245
,
246
,
247
,
248
,
249
,
250
,
251
,
252
,
253
,
254
,
255
};
#endif
#ifndef GPERF_CASE_STRNCMP
#define GPERF_CASE_STRNCMP 1
static
int
gperf_case_strncmp
(
s1
,
s2
,
n
)
register
const
char
*
s1
;
register
const
char
*
s2
;
register
unsigned
int
n
;
{
for
(;
n
>
0
;)
{
unsigned
char
c1
=
gperf_downcase
[(
unsigned
char
)
*
s1
++
];
unsigned
char
c2
=
gperf_downcase
[(
unsigned
char
)
*
s2
++
];
if
(
c1
!=
0
&&
c1
==
c2
)
{
n
--
;
continue
;
}
return
(
int
)
c1
-
(
int
)
c2
;
}
return
0
;
}
#endif
#ifdef __GNUC__
__inline
#else
#ifdef __cplusplus
inline
#endif
#endif
static
unsigned
int
hash_block_tag
(
str
,
len
)
register
const
char
*
str
;
register
unsigned
int
len
;
{
static
const
unsigned
char
asso_values
[]
=
{
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
8
,
30
,
25
,
20
,
15
,
10
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
0
,
38
,
0
,
38
,
5
,
5
,
5
,
15
,
0
,
38
,
38
,
0
,
15
,
10
,
0
,
38
,
38
,
15
,
0
,
5
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
0
,
38
,
0
,
38
,
5
,
5
,
5
,
15
,
0
,
38
,
38
,
0
,
15
,
10
,
0
,
38
,
38
,
15
,
0
,
5
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
,
38
};
register
int
hval
=
len
;
switch
(
hval
)
{
default:
hval
+=
asso_values
[(
unsigned
char
)
str
[
1
]
+
1
];
/*FALLTHROUGH*/
case
1
:
hval
+=
asso_values
[(
unsigned
char
)
str
[
0
]];
break
;
}
return
hval
;
}
#ifdef __GNUC__
__inline
#ifdef __GNUC_STDC_INLINE__
__attribute__
((
__gnu_inline__
))
#endif
#endif
const
char
*
find_block_tag
(
str
,
len
)
register
const
char
*
str
;
register
unsigned
int
len
;
{
enum
{
TOTAL_KEYWORDS
=
24
,
MIN_WORD_LENGTH
=
1
,
MAX_WORD_LENGTH
=
10
,
MIN_HASH_VALUE
=
1
,
MAX_HASH_VALUE
=
37
};
static
const
char
*
const
wordlist
[]
=
{
""
,
"p"
,
"dl"
,
"div"
,
"math"
,
"table"
,
""
,
"ul"
,
"del"
,
"form"
,
"blockquote"
,
"figure"
,
"ol"
,
"fieldset"
,
""
,
"h1"
,
""
,
"h6"
,
"pre"
,
""
,
""
,
"script"
,
"h5"
,
"noscript"
,
""
,
"style"
,
"iframe"
,
"h4"
,
"ins"
,
""
,
""
,
""
,
"h3"
,
""
,
""
,
""
,
""
,
"h2"
};
if
(
len
<=
MAX_WORD_LENGTH
&&
len
>=
MIN_WORD_LENGTH
)
{
register
int
key
=
hash_block_tag
(
str
,
len
);
if
(
key
<=
MAX_HASH_VALUE
&&
key
>=
0
)
{
register
const
char
*
s
=
wordlist
[
key
];
if
((((
unsigned
char
)
*
str
^
(
unsigned
char
)
*
s
)
&
~
32
)
==
0
&&
!
gperf_case_strncmp
(
str
,
s
,
len
)
&&
s
[
len
]
==
'\0'
)
return
s
;
}
}
return
0
;
}
liteidex/src/3rdparty/sundown/src/markdown.c
已删除
100644 → 0
浏览文件 @
14e68733
此差异已折叠。
点击以展开。
liteidex/src/3rdparty/sundown/src/markdown.h
已删除
100644 → 0
浏览文件 @
14e68733
/* markdown.h - generic markdown parser */
/*
* Copyright (c) 2009, Natacha Porté
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef UPSKIRT_MARKDOWN_H
#define UPSKIRT_MARKDOWN_H
#include "buffer.h"
#include "autolink.h"
#ifdef __cplusplus
extern
"C"
{
#endif
#define SUNDOWN_VERSION "1.16.0"
#define SUNDOWN_VER_MAJOR 1
#define SUNDOWN_VER_MINOR 16
#define SUNDOWN_VER_REVISION 0
/********************
* TYPE DEFINITIONS *
********************/
/* mkd_autolink - type of autolink */
enum
mkd_autolink
{
MKDA_NOT_AUTOLINK
,
/* used internally when it is not an autolink*/
MKDA_NORMAL
,
/* normal http/http/ftp/mailto/etc link */
MKDA_EMAIL
,
/* e-mail link without explit mailto: */
};
enum
mkd_tableflags
{
MKD_TABLE_ALIGN_L
=
1
,
MKD_TABLE_ALIGN_R
=
2
,
MKD_TABLE_ALIGN_CENTER
=
3
,
MKD_TABLE_ALIGNMASK
=
3
,
MKD_TABLE_HEADER
=
4
};
enum
mkd_extensions
{
MKDEXT_NO_INTRA_EMPHASIS
=
(
1
<<
0
),
MKDEXT_TABLES
=
(
1
<<
1
),
MKDEXT_FENCED_CODE
=
(
1
<<
2
),
MKDEXT_AUTOLINK
=
(
1
<<
3
),
MKDEXT_STRIKETHROUGH
=
(
1
<<
4
),
MKDEXT_SPACE_HEADERS
=
(
1
<<
6
),
MKDEXT_SUPERSCRIPT
=
(
1
<<
7
),
MKDEXT_LAX_SPACING
=
(
1
<<
8
),
};
/* sd_callbacks - functions for rendering parsed data */
struct
sd_callbacks
{
/* block level callbacks - NULL skips the block */
void
(
*
blockcode
)(
struct
buf
*
ob
,
const
struct
buf
*
text
,
const
struct
buf
*
lang
,
void
*
opaque
);
void
(
*
blockquote
)(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
);
void
(
*
blockhtml
)(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
);
void
(
*
header
)(
struct
buf
*
ob
,
const
struct
buf
*
text
,
int
level
,
void
*
opaque
);
void
(
*
hrule
)(
struct
buf
*
ob
,
void
*
opaque
);
void
(
*
list
)(
struct
buf
*
ob
,
const
struct
buf
*
text
,
int
flags
,
void
*
opaque
);
void
(
*
listitem
)(
struct
buf
*
ob
,
const
struct
buf
*
text
,
int
flags
,
void
*
opaque
);
void
(
*
paragraph
)(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
);
void
(
*
table
)(
struct
buf
*
ob
,
const
struct
buf
*
header
,
const
struct
buf
*
body
,
void
*
opaque
);
void
(
*
table_row
)(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
);
void
(
*
table_cell
)(
struct
buf
*
ob
,
const
struct
buf
*
text
,
int
flags
,
void
*
opaque
);
/* span level callbacks - NULL or return 0 prints the span verbatim */
int
(
*
autolink
)(
struct
buf
*
ob
,
const
struct
buf
*
link
,
enum
mkd_autolink
type
,
void
*
opaque
);
int
(
*
codespan
)(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
);
int
(
*
double_emphasis
)(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
);
int
(
*
emphasis
)(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
);
int
(
*
image
)(
struct
buf
*
ob
,
const
struct
buf
*
link
,
const
struct
buf
*
title
,
const
struct
buf
*
alt
,
void
*
opaque
);
int
(
*
linebreak
)(
struct
buf
*
ob
,
void
*
opaque
);
int
(
*
link
)(
struct
buf
*
ob
,
const
struct
buf
*
link
,
const
struct
buf
*
title
,
const
struct
buf
*
content
,
void
*
opaque
);
int
(
*
raw_html_tag
)(
struct
buf
*
ob
,
const
struct
buf
*
tag
,
void
*
opaque
);
int
(
*
triple_emphasis
)(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
);
int
(
*
strikethrough
)(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
);
int
(
*
superscript
)(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
);
/* low level callbacks - NULL copies input directly into the output */
void
(
*
entity
)(
struct
buf
*
ob
,
const
struct
buf
*
entity
,
void
*
opaque
);
void
(
*
normal_text
)(
struct
buf
*
ob
,
const
struct
buf
*
text
,
void
*
opaque
);
/* header and footer */
void
(
*
doc_header
)(
struct
buf
*
ob
,
void
*
opaque
);
void
(
*
doc_footer
)(
struct
buf
*
ob
,
void
*
opaque
);
};
struct
sd_markdown
;
/*********
* FLAGS *
*********/
/* list/listitem flags */
#define MKD_LIST_ORDERED 1
#define MKD_LI_BLOCK 2
/* <li> containing block data */
/**********************
* EXPORTED FUNCTIONS *
**********************/
extern
struct
sd_markdown
*
sd_markdown_new
(
unsigned
int
extensions
,
size_t
max_nesting
,
const
struct
sd_callbacks
*
callbacks
,
void
*
opaque
);
extern
void
sd_markdown_render
(
struct
buf
*
ob
,
const
uint8_t
*
document
,
size_t
doc_size
,
struct
sd_markdown
*
md
);
extern
void
sd_markdown_free
(
struct
sd_markdown
*
md
);
extern
void
sd_version
(
int
*
major
,
int
*
minor
,
int
*
revision
);
#ifdef __cplusplus
}
#endif
#endif
/* vim: set filetype=c: */
liteidex/src/3rdparty/sundown/src/stack.c
已删除
100644 → 0
浏览文件 @
14e68733
#include "stack.h"
#include <string.h>
int
stack_grow
(
struct
stack
*
st
,
size_t
new_size
)
{
void
**
new_st
;
if
(
st
->
asize
>=
new_size
)
return
0
;
new_st
=
realloc
(
st
->
item
,
new_size
*
sizeof
(
void
*
));
if
(
new_st
==
NULL
)
return
-
1
;
memset
(
new_st
+
st
->
asize
,
0x0
,
(
new_size
-
st
->
asize
)
*
sizeof
(
void
*
));
st
->
item
=
new_st
;
st
->
asize
=
new_size
;
if
(
st
->
size
>
new_size
)
st
->
size
=
new_size
;
return
0
;
}
void
stack_free
(
struct
stack
*
st
)
{
if
(
!
st
)
return
;
free
(
st
->
item
);
st
->
item
=
NULL
;
st
->
size
=
0
;
st
->
asize
=
0
;
}
int
stack_init
(
struct
stack
*
st
,
size_t
initial_size
)
{
st
->
item
=
NULL
;
st
->
size
=
0
;
st
->
asize
=
0
;
if
(
!
initial_size
)
initial_size
=
8
;
return
stack_grow
(
st
,
initial_size
);
}
void
*
stack_pop
(
struct
stack
*
st
)
{
if
(
!
st
->
size
)
return
NULL
;
return
st
->
item
[
--
st
->
size
];
}
int
stack_push
(
struct
stack
*
st
,
void
*
item
)
{
if
(
stack_grow
(
st
,
st
->
size
*
2
)
<
0
)
return
-
1
;
st
->
item
[
st
->
size
++
]
=
item
;
return
0
;
}
void
*
stack_top
(
struct
stack
*
st
)
{
if
(
!
st
->
size
)
return
NULL
;
return
st
->
item
[
st
->
size
-
1
];
}
liteidex/src/3rdparty/sundown/src/stack.h
已删除
100644 → 0
浏览文件 @
14e68733
#ifndef STACK_H__
#define STACK_H__
#include <stdlib.h>
#ifdef __cplusplus
extern
"C"
{
#endif
struct
stack
{
void
**
item
;
size_t
size
;
size_t
asize
;
};
void
stack_free
(
struct
stack
*
);
int
stack_grow
(
struct
stack
*
,
size_t
);
int
stack_init
(
struct
stack
*
,
size_t
);
int
stack_push
(
struct
stack
*
,
void
*
);
void
*
stack_pop
(
struct
stack
*
);
void
*
stack_top
(
struct
stack
*
);
#ifdef __cplusplus
}
#endif
#endif
liteidex/src/3rdparty/sundown/sundown.def
已删除
100644 → 0
浏览文件 @
14e68733
LIBRARY SUNDOWN
EXPORTS
sdhtml_renderer
sdhtml_toc_renderer
sdhtml_smartypants
bufgrow
bufnew
bufcstr
bufprefix
bufput
bufputs
bufputc
bufrelease
bufreset
bufslurp
bufprintf
sd_markdown_new
sd_markdown_render
sd_markdown_free
sd_version
\ No newline at end of file
liteidex/src/3rdparty/sundown/sundown.pri
已删除
100644 → 0
浏览文件 @
14e68733
LIBS *= -l$$qtLibraryName(sundown)
liteidex/src/3rdparty/sundown/sundown.pro
已删除
100644 → 0
浏览文件 @
14e68733
TEMPLATE
=
lib
CONFIG
+=
staticlib
TARGET
=
sundown
include
(..
/../
liteideutils
.
pri
)
DEPENDPATH
+=
html
src
INCLUDEPATH
+=
.
.
/
src
.
/
html
HEADERS
+=
src
/
autolink
.
h
\
src
/
buffer
.
h
\
src
/
html_blocks
.
h
\
src
/
markdown
.
h
\
src
/
stack
.
h
\
html
/
houdini
.
h
\
html
/
html
.
h
\
mdtohtml
.
h
\
SOURCES
+=
html
/
houdini_href_e
.
c
\
html
/
houdini_html_e
.
c
\
html
/
html
.
c
\
html
/
html_smartypants
.
c
\
src
/
autolink
.
c
\
src
/
buffer
.
c
\
src
/
markdown
.
c
\
src
/
stack
.
c
\
mdtohtml
.
cpp
\
QMAKE_CFLAGS_WARN_ON
-=
-
W
-
Wextra
QMAKE_CXXFLAGS_WARN_ON
-=
-
W
-
Wextra
liteidex/src/plugins/markdown/htmlpreview.cpp
浏览文件 @
14eabaa9
...
...
@@ -23,7 +23,6 @@
#include "markdown_global.h"
#include "htmlpreview.h"
//#include "sundown/mdtohtml.h"
#include "cmark/libcmark.h"
#include <QScrollBar>
#include <QMenu>
...
...
liteidex/src/plugins/markdown/markdown.pro
浏览文件 @
14eabaa9
...
...
@@ -2,7 +2,6 @@ TARGET = markdown
TEMPLATE
=
lib
include
(..
/../
liteideplugin
.
pri
)
#
include
(..
/../
3
rdparty
/
sundown
/
sundown
.
pri
)
include
(..
/../
3
rdparty
/
cmark
/
cmark
.
pri
)
DEFINES
+=
MARKDOWN_LIBRARY
...
...
liteidex/src/plugins/markdown/markdownbatchbrowser.cpp
浏览文件 @
14eabaa9
...
...
@@ -23,7 +23,6 @@
#include "markdownbatchbrowser.h"
#include "ui_markdownbatchwidget.h"
//#include "sundown/mdtohtml.h"
#include "cmark/libcmark.h"
#include <QFileDialog>
#include <QStandardItemModel>
...
...
liteidex/src/plugins/webkithtmlwidget/webkitbrowser.cpp
浏览文件 @
14eabaa9
...
...
@@ -22,7 +22,6 @@
// Creator: visualfc <visualfc@gmail.com>
#include "webkitbrowser.h"
//#include "sundown/mdtohtml.h"
#include "cmark/libcmark.h"
#include <QWebView>
#include <QNetworkProxyFactory>
...
...
liteidex/src/plugins/webkithtmlwidget/webkithtmlwidget.pro
浏览文件 @
14eabaa9
...
...
@@ -2,7 +2,6 @@ TARGET = webkithtmlwidget
TEMPLATE
=
lib
include
(..
/../
liteideplugin
.
pri
)
#
include
(..
/../
3
rdparty
/
sundown
/
sundown
.
pri
)
include
(..
/../
3
rdparty
/
cmark
/
cmark
.
pri
)
greaterThan
(
QT_MAJOR_VERSION
,
4
)
{
...
...
liteidex/src/plugins/welcome/litedoc.cpp
浏览文件 @
14eabaa9
...
...
@@ -24,7 +24,6 @@
#include "litedoc.h"
#include "documentbrowser/documentbrowser.h"
#include "htmlutil/htmlutil.h"
//#include "sundown/mdtohtml.h"
#include "cmark/libcmark.h"
#include <QAction>
...
...
liteidex/src/plugins/welcome/welcome.pro
浏览文件 @
14eabaa9
...
...
@@ -4,7 +4,6 @@ TEMPLATE = lib
QT
+=
xml
include
(..
/../
liteideplugin
.
pri
)
#
include
(..
/../
3
rdparty
/
sundown
/
sundown
.
pri
)
include
(..
/../
3
rdparty
/
cmark
/
cmark
.
pri
)
include
(..
/../
3
rdparty
/
elidedlabel
/
elidedlabel
.
pri
)
include
(..
/../
utils
/
documentbrowser
/
documentbrowser
.
pri
)
...
...
liteidex/src/utils/documentbrowser/documentbrowser.cpp
浏览文件 @
14eabaa9
...
...
@@ -23,7 +23,6 @@
#include "documentbrowser.h"
#include "extension/extension.h"
//#include "sundown/mdtohtml.h"
#include "cmark/libcmark.h"
#include <QTextBrowser>
...
...
liteidex/src/utils/documentbrowser/documentbrowser.pri
浏览文件 @
14eabaa9
...
...
@@ -2,7 +2,6 @@ LIBS *= -l$$qtLibraryName(documentbrowser)
include(../../utils/extension/extension.pri)
include(../../api/docbrowserapi/docbrowserapi.pri)
#include(../../3rdparty/sundown/sundown.pri)
include(../../3rdparty/cmark/cmark.pri)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录