本文整理汇总了C++中bufputc函数的典型用法代码示例。如果您正苦于以下问题:C++ bufputc函数的具体用法?C++ bufputc怎么用?C++ bufputc使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了bufputc函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: rndr_raw_block
static void
rndr_raw_block(struct buf *ob, const struct buf *text, void *opaque)
{
size_t org, size;
struct html_renderopt *options = opaque;
if (!text)
return;
size = text->size;
while (size > 0 && text->data[size - 1] == '\n')
size--;
for (org = 0; org < size && text->data[org] == '\n'; ++org)
if (org >= size)
return;
/* Remove style tags if the `:no_styles` option is enabled */
if ((options->flags & HTML_SKIP_STYLE) != 0 &&
sdhtml_is_tag(text->data, size, "style"))
return;
if (ob->size)
bufputc(ob, '\n');
bufput(ob, text->data + org, size - org);
bufputc(ob, '\n');
}
开发者ID:ecomba,项目名称:ecomba.github.io,代码行数:29,代码来源:html.c
示例2: rndr_link
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;
}
开发者ID:ecomba,项目名称:ecomba.github.io,代码行数:30,代码来源:html.c
示例3: parse_blockcode
/* parse_blockquote • hanldes parsing of a block-level code fragment */
static size_t
parse_blockcode(struct buf *ob, struct render *rndr,
char *data, size_t size) {
size_t beg, end, pre;
struct buf *work = new_work_buffer(rndr);
beg = 0;
while (beg < size) {
for (end = beg + 1; end < size && data[end - 1] != '\n';
end += 1);
pre = prefix_code(data + beg, end - beg);
if (pre) beg += pre; /* skipping prefix */
else if (!is_empty(data + beg, end - beg))
/* non-empty non-prefixed line breaks the pre */
break;
if (beg < end) {
/* verbatim copy to the working buffer,
escaping entities */
if (is_empty(data + beg, end - beg))
bufputc(work, '\n');
else bufput(work, data + beg, end - beg); }
beg = end; }
while (work->size && work->data[work->size - 1] == '\n')
work->size -= 1;
bufputc(work, '\n');
if (rndr->make.blockcode)
rndr->make.blockcode(ob, work, rndr->make.opaque);
release_work_buffer(rndr, work);
return beg; }
开发者ID:Alopez21,项目名称:contentful-qa-app,代码行数:31,代码来源:markdown.c
示例4: rndr_blockcode
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)
escape_html(ob, text->data, text->size);
BUFPUTSL(ob, "</code></pre>\n");
}
开发者ID:mdietz,项目名称:misaka,代码行数:35,代码来源:html.c
示例5: houdini_escape_js
void
houdini_escape_js(struct buf *ob, const uint8_t *src, size_t size)
{
size_t i = 0, org, ch;
bufgrow(ob, ESCAPE_GROW_FACTOR(size));
while (i < size) {
org = i;
while (i < size && JS_ESCAPE[src[i]] == 0)
i++;
if (i > org)
bufput(ob, src + org, i - org);
/* escaping */
if (i >= size)
break;
ch = src[i];
switch (ch) {
case '/':
/*
* Escape only if preceded by a lt
*/
if (i && src[i - 1] == '<')
bufputc(ob, '\\');
bufputc(ob, ch);
break;
case '\r':
/*
* Escape as \n, and skip the next \n if it's there
*/
if (i + 1 < size && src[i + 1] == '\n') i++;
case '\n':
/*
* Escape actually as '\','n', not as '\', '\n'
*/
ch = 'n';
default:
/*
* Normal escaping
*/
bufputc(ob, '\\');
bufputc(ob, ch);
break;
}
i++;
}
}
开发者ID:AmesianX,项目名称:haroopress,代码行数:56,代码来源:houdini_js_e.c
示例6: rndr_raw_block
static void
rndr_raw_block(struct buf *ob, struct buf *text, void *opaque) {
size_t org, sz;
if (!text) return;
sz = text->size;
while (sz > 0 && text->data[sz - 1] == '\n') sz -= 1;
org = 0;
while (org < sz && text->data[org] == '\n') org += 1;
if (org >= sz) return;
if (ob->size) bufputc(ob, '\n');
bufput(ob, text->data + org, sz - org);
bufputc(ob, '\n'); }
开发者ID:biowink,项目名称:MarkdownParser,代码行数:12,代码来源:renderers.c
示例7: rndr_list
static void
rndr_list(struct buf *ob, 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);
}
开发者ID:rcstolle,项目名称:redcarpet,代码行数:7,代码来源:render.c
示例8: rndr_header
static void
rndr_header(struct buf *ob, struct buf *text, int level, void *opaque) {
if (ob->size) bufputc(ob, '\n');
bufprintf(ob, "<h%d>", level);
if (text) bufput(ob, text->data, text->size);
bufprintf(ob, "</h%d>\n", level);
}
开发者ID:rcstolle,项目名称:redcarpet,代码行数:7,代码来源:render.c
示例9: rndr_blockcode
static void
rndr_blockcode(struct buf *ob, struct buf *text, void *opaque) {
if (ob->size) bufputc(ob, '\n');
BUFPUTSL(ob, "<pre><code>");
if (text) lus_attr_escape(ob, text->data, text->size);
BUFPUTSL(ob, "</code></pre>\n");
}
开发者ID:rcstolle,项目名称:redcarpet,代码行数:7,代码来源:render.c
示例10: rndr_hrule
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");
}
开发者ID:CantareFacile,项目名称:redcarpet,代码行数:7,代码来源:html.c
示例11: build_ref_id
/* build_ref_id • collapse whitespace from input text to make it a ref id */
static int
build_ref_id(struct buf *id, const char *data, size_t size) {
size_t beg, i;
/* skip leading whitespace */
while (size > 0
&& (data[0] == ' ' || data[0] == '\t' || data[0] == '\n')) {
data += 1;
size -= 1; }
/* skip trailing whitespace */
while (size > 0
&& (data[size - 1] == ' ' || data[size - 1] == '\t'
|| data[size - 1] == '\n'))
size -= 1;
if (size == 0) return -1;
/* making the ref id */
i = 0;
id->size = 0;
while (i < size) {
/* copy non-whitespace into the output buffer */
beg = i;
while (i < size
&& !(data[i] == ' ' || data[i] == '\t' || data[i] == '\n'))
i += 1;
bufput(id, data + beg, i - beg);
/* add a single space and skip all consecutive whitespace */
if (i < size) bufputc(id, ' ');
while (i < size
&& (data[i] == ' ' || data[i] == '\t' || data[i] == '\n'))
i += 1; }
return 0; }
开发者ID:stevenwilkin,项目名称:markdown-app,代码行数:35,代码来源:markdown.c
示例12: smartypants_cb__number
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;
}
开发者ID:bezigon,项目名称:liteide,代码行数:31,代码来源:html_smartypants.c
示例13: houdini_escape_html0
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 if (HTML_ESCAPE_TABLE[src[i]] == 7) {
/* skip control characters */
} else {
bufputs(ob, HTML_ESCAPES[esc]);
}
i++;
}
}
开发者ID:JimAllanson,项目名称:snudown,代码行数:31,代码来源:houdini_html_e.c
示例14: rndr_blockcode_github
/*
* GitHub style code block:
*
* <pre lang="LANG"><code>
* ...
* </pre></code>
*
* Unlike other parsers, we store the language identifier in the <pre>,
* and don't let the user generate custom classes.
*
* The language identifier in the <pre> block gets postprocessed and all
* the code inside gets syntax highlighted with Pygments. This is much safer
* than letting the user specify a CSS class for highlighting.
*
* Note that we only generate HTML for the first specifier.
* E.g.
* ~~~~ {.python .numbered} => <pre lang="python"><code>
*/
static void
rndr_blockcode_github(struct buf *ob, struct buf *text, struct buf *lang, void *opaque)
{
if (ob->size) bufputc(ob, '\n');
if (lang && lang->size) {
size_t i = 0;
BUFPUTSL(ob, "<pre lang=\"");
while (i < lang->size && !isspace(lang->data[i]))
i++;
if (lang->data[0] == '.')
sdhtml_escape(ob, lang->data + 1, i - 1);
else
sdhtml_escape(ob, lang->data, i);
BUFPUTSL(ob, "\"><code>");
} else
BUFPUTSL(ob, "<pre><code>");
if (text)
sdhtml_escape(ob, text->data, text->size);
BUFPUTSL(ob, "</code></pre>\n");
}
开发者ID:practicingruby,项目名称:redcarpet,代码行数:44,代码来源:html.c
示例15: rndr_blockcode_github
/*
* GitHub style code block:
*
* <pre lang="LANG"><code>
* ...
* </pre></code>
*
* Unlike other parsers, we store the language identifier in the <pre>,
* and don't let the user generate custom classes.
*
* The language identifier in the <pre> block gets postprocessed and all
* the code inside gets syntax highlighted with Pygments. This is much safer
* than letting the user specify a CSS class for highlighting.
*
* Note that we only generate HTML for the first specifier.
* E.g.
* ~~~~ {.python .numbered} => <pre lang="python"><code>
*/
static void
rndr_blockcode_github(struct buf *ob, struct buf *text, struct buf *lang, void *opaque)
{
if (ob->size) bufputc(ob, '\n');
if (lang && lang->size) {
size_t i = 0;
BUFPUTSL(ob, "<pre lang=\"");
for (; i < lang->size; ++i)
if (isspace(lang->data[i]))
break;
if (lang->data[0] == '.')
bufput(ob, lang->data + 1, i - 1);
else
bufput(ob, lang->data, i);
BUFPUTSL(ob, "\"><code>");
} else
BUFPUTSL(ob, "<pre><code>");
if (text)
attr_escape(ob, text->data, text->size);
BUFPUTSL(ob, "</code></pre>\n");
}
开发者ID:nono,项目名称:upskirt,代码行数:45,代码来源:xhtml.c
示例16: rndr_tablecell
static void
rndr_tablecell(struct buf *ob, struct buf *text, int align, void *opaque)
{
if (ob->size) bufputc(ob, '\n');
switch (align) {
case MKD_TABLE_ALIGN_L:
BUFPUTSL(ob, "<td align=\"left\">");
break;
case MKD_TABLE_ALIGN_R:
BUFPUTSL(ob, "<td align=\"right\">");
break;
case MKD_TABLE_ALIGN_CENTER:
BUFPUTSL(ob, "<td align=\"center\">");
break;
default:
BUFPUTSL(ob, "<td>");
break;
}
if (text)
bufput(ob, text->data, text->size);
BUFPUTSL(ob, "</td>");
}
开发者ID:BinaryMuse,项目名称:robotskirt,代码行数:26,代码来源:html.c
示例17: smartypants_cb__parens
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;
}
开发者ID:bezigon,项目名称:liteide,代码行数:26,代码来源:html_smartypants.c
示例18: rndr_blockcode_github
static void rndr_blockcode_github(struct buf *ob, const struct buf *text, const struct buf *lang, void *opaque) {
if (ob->size)
bufputc(ob, '\n');
if (!text || !text->size) {
BUFPUTSL(ob, "<pre><code></code></pre>");
return;
}
if (lang && lang->size) {
size_t i = 0, lang_size;
const char *lang_name = NULL;
while (i < lang->size && !isspace(lang->data[i]))
i++;
if (lang->data[0] == '.') {
lang_name = (char const *) (lang->data + 1);
lang_size = i - 1;
} else {
lang_name = (char const *) lang->data;
lang_size = i;
}
BUFPUTSL(ob, "<pre lang=\"");
houdini_escape_html0(ob, (uint8_t const *) lang_name, lang_size, 0);
BUFPUTSL(ob, "\"><code>");
} else {
BUFPUTSL(ob, "<pre><code>");
}
houdini_escape_html0(ob, text->data, text->size, 0);
BUFPUTSL(ob, "</code></pre>\n");
}
开发者ID:LzIManD,项目名称:gfm-plugin,代码行数:35,代码来源:java_markdown.c
示例19: rndr_header_anchor
static void
rndr_header_anchor(struct buf *out, const struct buf *anchor)
{
static const char *STRIPPED = " -&+$,/:;[email protected]\"#{}|^~[]`\\*()%.!'";
const uint8_t *a = anchor->data;
const size_t size = anchor->size;
size_t i = 0;
int stripped = 0, inserted = 0;
for (; i < size; ++i) {
// skip html tags
if (a[i] == '<') {
while (i < size && a[i] != '>')
i++;
// skip html entities
} else if (a[i] == '&') {
while (i < size && a[i] != ';')
i++;
}
// replace non-ascii or invalid characters with dashes
else if (!isascii(a[i]) || strchr(STRIPPED, a[i])) {
if (inserted && !stripped)
bufputc(out, '-');
// and do it only once
stripped = 1;
}
else {
bufputc(out, tolower(a[i]));
stripped = 0;
inserted++;
}
}
// replace the last dash if there was anything added
if (stripped && inserted)
out->size--;
// if anchor found empty, use djb2 hash for it
if (!inserted && anchor->size) {
unsigned long hash = 5381;
for (i = 0; i < size; ++i) {
hash = ((hash << 5) + hash) + a[i]; /* h * 33 + c */
}
bufprintf(out, "part-%lx", hash);
}
}
开发者ID:ecomba,项目名称:ecomba.github.io,代码行数:47,代码来源:html.c
示例20: rndr_blockquote
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");
}
开发者ID:CantareFacile,项目名称:redcarpet,代码行数:8,代码来源:html.c
注:本文中的bufputc函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论