当前位置: 首页 > news >正文

电工培训课程seo网站模版

电工培训课程,seo网站模版,腾讯建设网站视频,做网站和淘宝美工 最低电脑如果在C或者C项目中解析Markdown#xff0c;可以使用cmark库。 开发环境 Fedora系统可以直接通过 dnf install cmark-devel来安装cmark的开发库。 安装之后#xff0c;就可以使用头文件/usr/include/cmark.h 中的函数进行开发#xff0c;最后在程序中链接-lcmark即可。 …如果在C或者C项目中解析Markdown可以使用cmark库。 开发环境 Fedora系统可以直接通过 dnf install cmark-devel来安装cmark的开发库。 安装之后就可以使用头文件/usr/include/cmark.h 中的函数进行开发最后在程序中链接-lcmark即可。 为了简化这一操作也可以使用pkg-config文件。 需要注意的是在Fedora系统中cmark的pkgconfig文件名字是libcmark.pc。即pkg-config命令需要查询libcmark。 如 ~/$ pkg-config --cflags --libs libcmark -lcmark使用方法 cmark使用三个主要的数据结构分别是cmark_parser、cmark_iter与cmark_node。 其中cmark_parser用来解析有一系列与解析相关的函数cmark_iter用来遍历可以实现在cmark_node节点间切换而cmark_node是所有数据节点。 在头文件中使用注释的方式说明了cmark_parser的使用方法。 443 * ## Parsing 444 * 445 * Simple interface: 446 * 447 * cmark_node *document cmark_parse_document(Hello *world*, 13, 448 * CMARK_OPT_DEFAULT); 449 * 450 * Streaming interface: 451 * 452 * cmark_parser *parser cmark_parser_new(CMARK_OPT_DEFAULT); 453 * FILE *fp fopen(myfile.md, rb); 454 * while ((bytes fread(buffer, 1, sizeof(buffer), fp)) 0) { 455 * cmark_parser_feed(parser, buffer, bytes); 456 * if (bytes sizeof(buffer)) { 457 * break; 458 * } 459 * } 460 * document cmark_parser_finish(parser); 461 * cmark_parser_free(parser); 462 即可以使用cmark_parse_document解析文本内容输入参数分别是字符串指针与大小。 也可以使用cmark_parser来解析流式数据方法为先创建一个cmark_parser之后使用cmark_parser_feed来喂数据最后调用cmark_parser_finish来指示解析结束返回解析出来的cmark_node。 cmark_node cmark的几个主要数据结构定义并没有在头文件里而是使用了typedef的别名。如果只是使用cmark可以不用关心它们的具体定义只使用头文件中的操作它们的函数即可。这种信息隐藏也是一种故意为之的设计起到了类似C中的private作用。 cmark_node的主要属性就是它的类型即cmark_node_type可以通过 261 /** Returns the type of node, or CMARK_NODE_NONE on error. 262 */ 263 CMARK_EXPORT cmark_node_type cmark_node_get_type(cmark_node *node); 264 265 /** Like cmark_node_get_type, but returns a string representation 266 of the type, or unknown. 267 */ 268 CMARK_EXPORT 269 const char *cmark_node_get_type_string(cmark_node *node);这两个方法分别获得cmark_node的类型值与类型的字符串表示。 cmark_node_type是一个枚举值定义为 /** ## Node Structure31 */32 33 typedef enum {34 /* Error status */35 CMARK_NODE_NONE,36 37 /* Block */38 CMARK_NODE_DOCUMENT,39 CMARK_NODE_BLOCK_QUOTE,40 CMARK_NODE_LIST,41 CMARK_NODE_ITEM,42 CMARK_NODE_CODE_BLOCK,43 CMARK_NODE_HTML_BLOCK,44 CMARK_NODE_CUSTOM_BLOCK,45 CMARK_NODE_PARAGRAPH,46 CMARK_NODE_HEADING,47 CMARK_NODE_THEMATIC_BREAK,48 49 CMARK_NODE_FIRST_BLOCK CMARK_NODE_DOCUMENT,50 CMARK_NODE_LAST_BLOCK CMARK_NODE_THEMATIC_BREAK,51 52 /* Inline */53 CMARK_NODE_TEXT,54 CMARK_NODE_SOFTBREAK,55 CMARK_NODE_LINEBREAK,56 CMARK_NODE_CODE,57 CMARK_NODE_HTML_INLINE,58 CMARK_NODE_CUSTOM_INLINE,59 CMARK_NODE_EMPH,60 CMARK_NODE_STRONG,61 CMARK_NODE_LINK,62 CMARK_NODE_IMAGE,63 64 CMARK_NODE_FIRST_INLINE CMARK_NODE_TEXT,65 CMARK_NODE_LAST_INLINE CMARK_NODE_IMAGE66 } cmark_node_type;熟悉Markdown的应该很清楚这些类型的意义不再赘述。 需要注意的是获取这些node的属性的方法需要根据不同的类型才能取得相应的值。 比如如果是一个CMARK_NODE_HEADDING就可以通过cmark_node_get_heading_level来取得层级。 /** Returns the heading level of node, or 0 if node is not a heading. 283 */ 284 CMARK_EXPORT int cmark_node_get_heading_level(cmark_node *node);通过cmark_node_set_heading_level来设置层级。 290 /** Sets the heading level of node, returning 1 on success and 0 on error. 291 */ 292 CMARK_EXPORT int cmark_node_set_heading_level(cmark_node *node, int level);而如果是一个CMARK_NODE_IMAGE或者CMARK_NODE_URL则可以通过cmark_node_get_title取得图片的标题或者URL的显示文本。 /** Returns the title of a link or image node, or an empty 353 string if no title is set. Returns NULL if called on a node 354 that is not a link or image. 355 */ 356 CMARK_EXPORT const char *cmark_node_get_title(cmark_node *node);通过cmark_node_get_url取得实际的链接地址。 341 /** Returns the URL of a link or image node, or an empty string 342 if no URL is set. Returns NULL if called on a node that is 343 not a link or image. 344 */ 345 CMARK_EXPORT const char *cmark_node_get_url(cmark_node *node); 346 渲染 我们除了可以根据cmark_node来做自定义的操作之外还可以使用cmark库的渲染方法把Markdown文本渲染成其它文本格式。 比如渲染成XML 508 /** Render a node tree as XML. It is the callers responsibility 509 * to free the returned buffer. 510 */ 511 CMARK_EXPORT 512 char *cmark_render_xml(cmark_node *root, int options); 渲染成HTML 514 /** Render a node tree as an HTML fragment. It is up to the user 515 * to add an appropriate header and footer. It is the callers 516 * responsibility to free the returned buffer. 517 */ 518 CMARK_EXPORT 519 char *cmark_render_html(cmark_node *root, int options); 渲染成man手册页 521 /** Render a node tree as a groff man page, without the header. 522 * It is the callers responsibility to free the returned buffer. 523 */ 524 CMARK_EXPORT 525 char *cmark_render_man(cmark_node *root, int options, int width); 渲染成commonmark 527 /** Render a node tree as a commonmark document. 528 * It is the callers responsibility to free the returned buffer. 529 */ 530 CMARK_EXPORT 531 char *cmark_render_commonmark(cmark_node *root, int options, int width); 或者渲染成latex 533 /** Render a node tree as a LaTeX document. 534 * It is the callers responsibility to free the returned buffer. 535 */ 536 CMARK_EXPORT 537 char *cmark_render_latex(cmark_node *root, int options, int width);以上这些都是渲染一个节点即cmark_node如果只是最简单的把一个Markdown渲染成HTML还可以不解析直接使用一个方法 27 CMARK_EXPORT 28 char *cmark_markdown_to_html(const char *text, size_t len, int options);输入参数是一个字符串和长度输出一个HTML的字符串编码都是UTF-8。
http://www.zqtcl.cn/news/949265/

相关文章:

  • 麻涌网站建设河北网站建设联系方式
  • 建设银行官方网站打不开啊寮步仿做网站
  • 一个人可做几次网站备案峰峰网站建设
  • 怎么盗号网站怎么做北京高端网站设计外包公司
  • 著名的淘宝客网站wordpress博客内容预览
  • 成都网站seo公司甘肃网站建设推广
  • 做网站加班网站项目意义
  • 在虚拟机中如何做二级域名网站个人网站做哪种能赚钱
  • 贵州建设水利厅考试网站wordpress主查询翻页
  • 网站优化网络推广seo天津建设工程信息网几点更新
  • 兰州网站seo技术厂家比较实用的h5网页建设网站
  • 怎样让自己做的网站被百度收录动漫制作软件
  • 西安网站制作哪家公司好怎么向企业推销网站建设
  • 电子商务网站建设新闻深圳坂田网站设计公司有哪些
  • 上海电子商城网站制作wordpress循环该分类子分类
  • 茶山做网站教育网站建设计划书
  • 成品门户网站源码免费海外网络加速器免费
  • 企业网站怎么建设公司深圳企业招聘信息最新招聘信息
  • 天津网站经营性备案下载网站上的表格 怎么做
  • 胶州企业网站设计十大互联网营销公司
  • 视频解析wordpresswordpress 优化版本
  • 柳州网站建设哪家便宜广东省建设厅三库一平台
  • 云南城市建设官方网站wordpress和织梦哪个好
  • 国外企业招聘网站专门做外贸的网站有哪些
  • 陕西交通建设集团网站营销公司是什么意思
  • 网站建设自建与租用区别杭州建设局网站官网
  • 广告公司企业介绍seo研究中心怎么样
  • 苏州网站建设熊掌岳阳做网站哪家好
  • 深圳网站制作公司报价单宝塔做两个网站6
  • 百度站长工具怎么查排名贵港网站制作