示例#1
0
文件: blocks.c 项目: gcgft/cmark
cmark_parser *cmark_parser_new(int options) {
  cmark_parser *parser = (cmark_parser *)malloc(sizeof(cmark_parser));
  cmark_node *document = make_document();
  cmark_strbuf *line = (cmark_strbuf *)malloc(sizeof(cmark_strbuf));
  cmark_strbuf *buf = (cmark_strbuf *)malloc(sizeof(cmark_strbuf));
  cmark_strbuf_init(line, 256);
  cmark_strbuf_init(buf, 0);

  parser->refmap = cmark_reference_map_new();
  parser->root = document;
  parser->current = document;
  parser->line_number = 0;
  parser->offset = 0;
  parser->column = 0;
  parser->first_nonspace = 0;
  parser->first_nonspace_column = 0;
  parser->indent = 0;
  parser->blank = false;
  parser->curline = line;
  parser->last_line_length = 0;
  parser->linebuf = buf;
  parser->options = options;

  return parser;
}
modify_collection& modify_collection::index(bsoncxx::document::view_or_value index_spec,
                                            std::chrono::seconds seconds) {
    _index.emplace(
        make_document(kvp("keyPattern", bsoncxx::types::b_document{std::move(index_spec)}),
                      kvp("expireAfterSeconds", bsoncxx::types::b_int64{seconds.count()})));
    return *this;
}
示例#3
0
int 
iter_bson(const bson_t *bson, ERL_NIF_TERM *out, decode_state *ds) 
{
    vec_term_t vec;
    bson_iter_t iter;
    int ret = 0;

    vec_init(&vec);
    ds->vec = &vec;

    if(!bson_iter_init(&iter, bson)) {
        goto finish;
    }
    if(bson_iter_visit_all(&iter, &decode_visitors, ds) || 
            iter.err_off) {
        goto finish;
    }
    if(!make_document(ds->env, ds->vec, out, ds->return_maps)) {
        goto finish;
    }
    ret = 1;

finish:
    vec_deinit(&vec);
    ds->vec = NULL;
    return ret;
}
示例#4
0
cmark_doc_parser *cmark_new_doc_parser()
{
	cmark_doc_parser *parser = (cmark_doc_parser*)malloc(sizeof(cmark_doc_parser));
	cmark_node *document = make_document();
	strbuf *line = (strbuf*)malloc(sizeof(strbuf));
	cmark_strbuf_init(line, 256);

	parser->refmap = reference_map_new();
	parser->root = document;
	parser->current = document;
	parser->line_number = 0;
	parser->curline = line;

	return parser;
}
示例#5
0
cmark_parser *cmark_parser_new()
{
	cmark_parser *parser = (cmark_parser*)malloc(sizeof(cmark_parser));
	cmark_node *document = make_document();
	cmark_strbuf *line = (cmark_strbuf*)malloc(sizeof(cmark_strbuf));
	cmark_strbuf *buf  = (cmark_strbuf*)malloc(sizeof(cmark_strbuf));
	cmark_strbuf_init(line, 256);
	cmark_strbuf_init(buf, 0);

	parser->refmap = cmark_reference_map_new();
	parser->root = document;
	parser->current = document;
	parser->line_number = 0;
	parser->curline = line;
	parser->last_line_length = 0;
	parser->linebuf = buf;

	return parser;
}
示例#6
0
TEST_CASE("options::rewriter::rewrite_find_modifiers() with $comment", "[find][option]") {
    instance::current();

    SECTION("$comment with k_utf8 type is translated") {
        auto find_opts = options::rewriter::rewrite_find_modifiers(
            options::find{}.modifiers_deprecated(make_document(kvp("$comment", "test"))));
        REQUIRE(!find_opts.modifiers_deprecated());
        REQUIRE(find_opts.comment());
        REQUIRE(*find_opts.comment() == stdx::string_view("test"));
    }

    SECTION("$comment with other types is rejected") {
        REQUIRE_THROWS_AS(
            options::rewriter::rewrite_find_modifiers(
                options::find{}.modifiers_deprecated(make_document(kvp("$comment", 1)))),
            logic_error);
    }
}

TEST_CASE("options::rewriter::rewrite_find_modifiers() with $explain", "[find][option]") {
    instance::current();

    SECTION("$explain isn't supported") {
        REQUIRE_THROWS_AS(
            options::rewriter::rewrite_find_modifiers(
                options::find{}.modifiers_deprecated(make_document(kvp("$explain", true)))),
            logic_error);
    }
}
示例#7
0
文件: main.c 项目: CyberLight/stmd
int main(int argc, char *argv[]) {
  int i;
  bool ast = false;
  int g = 0;
  int numfps = 0;
  int files[argc];

  for (i=1; i < argc; i++) {
    if (strcmp(argv[i], "--version") == 0) {
      printf("stmd %s", VERSION);
      printf(" - standard markdown converter (c) 2014 John MacFarlane\n");
      exit(0);
    } else if ((strcmp(argv[i], "--help") == 0) ||
               (strcmp(argv[i], "-h") == 0)) {
      print_usage();
      exit(0);
    } else if (strcmp(argv[i], "--ast") == 0) {
      ast = true;
    } else if (*argv[i] == '-') {
      print_usage();
      exit(1);
    } else { // treat as file argument
      files[g] = i;
      g++;
    }
  }

  numfps = g;
  bstring s = NULL;
  bstring html;
  g = 0;
  block * cur = make_document();
  int linenum = 1;
  extern int errno;
  FILE * fp = NULL;

  if (numfps == 0) {
    // read from stdin
    while ((s = bgets((bNgetc) fgetc, stdin, '\n'))) {
      check(incorporate_line(s, linenum, &cur) == 0,
          "error incorporating line %d", linenum);
      bdestroy(s);
      linenum++;
    }
  } else {
    // iterate over input file pointers
    for (g=0; g < numfps; g++) {

      fp = fopen(argv[files[g]], "r");
      if (fp == NULL) {
        fprintf(stderr, "Error opening file %s: %s\n",
                argv[files[g]], strerror(errno));
        exit(1);
      }

      while ((s = bgets((bNgetc) fgetc, fp, '\n'))) {
        check(incorporate_line(s, linenum, &cur) == 0,
            "error incorporating line %d", linenum);
        bdestroy(s);
        linenum++;
      }
      fclose(fp);
    }
  }

  while (cur != cur->top) {
    finalize(cur, linenum);
    cur = cur->parent;
  }
  check(cur == cur->top, "problems finalizing open containers");
  finalize(cur, linenum);
  process_inlines(cur, cur->attributes.refmap);
  if (ast) {
    print_blocks(cur, 0);
  } else {
    check(blocks_to_html(cur, &html, false) == 0, "could not format as HTML");
    printf("%s", html->data);
    bdestroy(html);
  }
  free_blocks(cur);
  return 0;
error:
  return -1;
}