Exemple #1
0
/* char* markdownify (char *in) { */
struct buf* markdownify (char *in) {
	struct buf *ib, *ob, *ob1;
	struct mkd_renderer renderer;

	/* reading everything */
	ib = bufnew (READ_UNIT);
	ib->size = strlen (in);
	ib->data = in;
	
	ob = bufnew (OUTPUT_UNIT);
	ob->size = 0;
	
	ob1 = bufnew (OUTPUT_UNIT);
	ob1->size = 0;

	
	/* Markdown parse */
	upshtml_renderer (&renderer, 65535);
	ups_markdown (ob, ib, &renderer, 65535);
	upshtml_free_renderer (&renderer);
	bufrelease (ib);
		
	upshtml_smartypants (ob1, ob);
	bufrelease (ob);
	
	
	return ob1;
}
Exemple #2
0
SEXP rmd_render_smartypants(SEXP Sfile, SEXP Soutput, SEXP Stext)
{
   struct buf *ib, *ob;
   SEXP ret_val = R_NilValue;
   Rboolean success;

   ib = bufnew(READ_UNIT);
   if (!ib)
      error("Out of memory!");

   success = rmd_input_to_buf(Sfile, Stext, ib);

   if (!success)
   {
      bufrelease(ib);
      error("Input error!");
   }

   ob = bufnew(OUTPUT_UNIT);
   if (!ob)
      error("Out of memory!");

   sdhtml_smartypants(ob,ib->data,ib->size);

   success = rmd_buf_to_output(ob,Soutput,&ret_val);

   bufrelease(ib);
   bufrelease(ob);

   if (!success)
      error("Output error!");

   return ret_val;
}
Exemple #3
0
/* sundown.markdown(input_string) ==> output_string */
static int sundown_markdown(lua_State *L) {
    const char *indoc;
    size_t indocSize;
    struct buf *inbuf;
    struct buf *outbuf;
    struct html_renderopt options;
    struct sd_callbacks callbacks;
    struct sd_markdown *markdown;

    /* read input_string */
    indoc = luaL_checklstring(L, 1, &indocSize);
    inbuf = bufnew(READ_UNIT);
    bufgrow(inbuf, indocSize);
    bufput(inbuf, indoc, indocSize);

    /* prepare for output_string */
    outbuf = bufnew(OUTPUT_UNIT);
    sdhtml_renderer(&callbacks, &options, 0);
    markdown = sd_markdown_new(0, 16, &callbacks, &options);

    /* write output_string */
    sd_markdown_render(outbuf, inbuf->data, inbuf->size, markdown);
    lua_pushlstring(L, (const char*) outbuf->data, outbuf->size);
    
    bufrelease(inbuf);
    bufrelease(outbuf);
    sd_markdown_free(markdown);
    
    return 1;
}
Exemple #4
0
static QString markdown(QString in){
    struct buf *ib, *ob;
    struct sd_callbacks cbs;
    struct html_renderopt opts;
    struct sd_markdown *mkd;

    if(in.size() > 0){
        QByteArray qba = in.toUtf8();
        const char *txt = qba.constData();
        if(NULL == txt) qDebug() << "txt was null!";
        if(0 < qba.size()){
            ib = bufnew(qba.size());
            bufputs(ib,txt);
            ob = bufnew(64);
            sdhtml_renderer(&cbs,&opts,0);
            mkd = sd_markdown_new(0,16,&cbs,&opts);
            sd_markdown_render(ob,ib->data,ib->size,mkd);
            sd_markdown_free(mkd);
            return QString::fromUtf8(bufcstr(ob));
        }
        else
            qDebug() <<"qstrlen was null";
    }
    return "";
}
Exemple #5
0
Document Parser::parse(const char* mkd) {
    document = Document();

    if (mkd) {
        struct buf *ib, *ob;

        ib = bufnew(INPUT_UNIT);
        bufputs(ib, mkd);

        ob = bufnew(OUTPUT_UNIT);

        mkd_callbacks.opaque = this;

        //parse and assemble document
        markdown(ob, ib, &mkd_callbacks);

        for (std::map<int, Element>::iterator it = elementSoup.begin(); it != elementSoup.end(); ++it) {
            document.append(it->second);
        }

        bufrelease(ib);
        bufrelease(ob);
    }

    return document;
}
Exemple #6
0
JNIEXPORT jstring JNICALL Java_com_commonsware_cwac_anddown_AndDown_markdownToHtml
  (JNIEnv *env, jobject o, jstring raw) {
	struct buf *ib, *ob;
	int ret;
  jstring result;

	struct sd_callbacks callbacks;
	struct html_renderopt options;
	struct sd_markdown *markdown;

  const char* str;
  str = (*env)->GetStringUTFChars(env, raw, NULL);

	ib = bufnew(INPUT_UNIT);
  bufputs(ib, str);
	ob = bufnew(OUTPUT_UNIT);

  (*env)->ReleaseStringUTFChars(env, raw, str);

	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);

  result=(*env)->NewStringUTF(env, bufcstr(ob));

	/* cleanup */
	bufrelease(ib);
	bufrelease(ob);

  return(result);
}
Exemple #7
0
static VALUE rb_redcarpet__render(VALUE self, RendererType render_type)
{
    VALUE text = rb_funcall(self, rb_intern("text"), 0);
    VALUE result;

    struct buf input_buf, *output_buf;
    struct mkd_renderer renderer;
    unsigned int enabled_extensions, render_flags;

    Check_Type(text, T_STRING);

    memset(&input_buf, 0x0, sizeof(struct buf));
    input_buf.data = RSTRING_PTR(text);
    input_buf.size = RSTRING_LEN(text);

    output_buf = bufnew(128);
    bufgrow(output_buf, RSTRING_LEN(text) * 1.2f);

    rb_redcarpet__get_flags(self, &enabled_extensions, &render_flags);

    switch (render_type) {
    case REDCARPET_RENDER_HTML:
        upshtml_renderer(&renderer, render_flags);
        break;

    case REDCARPET_RENDER_TOC:
        upshtml_toc_renderer(&renderer);
        break;

    default:
        return Qnil;
    }

    ups_markdown(output_buf, &input_buf, &renderer, enabled_extensions);

    if (rb_funcall(self, rb_intern("smart"), 0) == Qtrue) {
        struct buf *smart_buf = bufnew(128);
        upshtml_smartypants(smart_buf, output_buf);
        result = rb_str_new(smart_buf->data, smart_buf->size);
        bufrelease(smart_buf);
    } else {
        result = rb_str_new(output_buf->data, output_buf->size);
    }

    bufrelease(output_buf);
    upshtml_free_renderer(&renderer);

    /* force the input encoding */
    if (rb_respond_to(text, rb_intern("encoding"))) {
        VALUE encoding = rb_funcall(text, rb_intern("encoding"), 0);
        rb_funcall(result, rb_intern("force_encoding"), 1, encoding);
    }

    return result;
}
Exemple #8
0
SEXP rmd_render_markdown(SEXP Sfile, SEXP Soutput, SEXP Stext, SEXP Srenderer,
                            SEXP Soptions, SEXP Sextensions)
{
   const char *name;
   struct buf *ib, *ob;
   SEXP ret_val = R_NilValue;
   Rboolean success;

   name = CHAR(STRING_ELT(Srenderer,0));

   if (!rmd_renderer_exists(name))
   {
      error("Renderer '%s' not registered!",name);
      return R_NilValue;
   }

   ib = bufnew(READ_UNIT);
   if (!ib)
      error("Out of memory!");

   success = rmd_input_to_buf(Sfile,Stext,ib);
   if (!success)
   {
      bufrelease(ib);
      error("Input error!");
   }

   skip_pandoc_title_block(ib);
   skip_jekyll_front_matter(ib);

   ob = bufnew(OUTPUT_UNIT);
   if (!ob)
      error("Out of memory!");

   success = renderer(name)->render(ib,ob,Soptions,Sextensions);
   if (!success)
   {
      bufrelease(ib);
      bufrelease(ob);
      error("Render error!");
   }

   success = rmd_buf_to_output(ob,Soutput,&ret_val);

   bufrelease(ib);
   bufrelease(ob);

   if (!success)
      error("Output error!");

   return ret_val;
}
Exemple #9
0
/* 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;
}
Exemple #10
0
static VALUE rb_redcarpet_to_html(int argc, VALUE *argv, VALUE self)
{
	VALUE text = rb_funcall(self, rb_intern("text"), 0);
	VALUE result;

	struct buf input_buf, *output_buf;
	struct mkd_renderer redcarpet_render;

	Check_Type(text, T_STRING);

	memset(&input_buf, 0x0, sizeof(struct buf));
	input_buf.data = RSTRING_PTR(text);
	input_buf.size = RSTRING_LEN(text);

	output_buf = bufnew(64);

	rb_redcarpet__setup_render(self, &redcarpet_render);
	markdown(output_buf, &input_buf, &redcarpet_render);

	result = rb_str_new(output_buf->data, output_buf->size);
	bufrelease(output_buf);

	/* force the input encoding */
	if (rb_respond_to(text, rb_intern("encoding"))) {
		VALUE encoding = rb_funcall(text, rb_intern("encoding"), 0);
		rb_funcall(result, rb_intern("force_encoding"), 1, encoding);
	}

	return result;
}
/**
 * Generic template
 */
static VALUE
rb_eu__generic(
	VALUE self, VALUE str,
	houdini_cb callback,
	size_t chunk_size)
{
	VALUE result;
	struct buf *out_buf;

	if (NIL_P(str))
		return rb_str_new2("");

	Check_Type(str, T_STRING);
	out_buf = bufnew(chunk_size);

	callback(out_buf, (uint8_t *)RSTRING_PTR(str), RSTRING_LEN(str));
	result = rb_str_new((char *)out_buf->data, out_buf->size);
	bufrelease(out_buf);

#ifdef HAVE_RUBY_ENCODING_H
	rb_enc_copy(result, str);
#endif

	return result;
}
Exemple #12
0
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;
}
Exemple #13
0
/**
 * HTML methods
 */
static VALUE rb_eu_escape_html(int argc, VALUE *argv, VALUE self)
{
	VALUE rb_out_buf, str, rb_secure;
	struct buf *out_buf;
	int secure = g_html_secure;

	if (rb_scan_args(argc, argv, "11", &str, &rb_secure) == 2) {
		if (rb_secure == Qfalse) {
			secure = 0;
		}
	}

	Check_Type(str, T_STRING);
	out_buf = bufnew(128);

	houdini_escape_html0(out_buf, (uint8_t *)RSTRING_PTR(str), RSTRING_LEN(str), secure);

	rb_out_buf = rb_str_new((char *)out_buf->data, out_buf->size);
	bufrelease(out_buf);

#ifdef HAVE_RUBY_ENCODING_H
	rb_enc_copy(rb_out_buf, str);
#endif

	return rb_out_buf;
}
Exemple #14
0
caryll_buffer *caryll_write_gsub_ligature_subtable(otl_subtable *_subtable) {
	caryll_buffer *buf = bufnew();
	subtable_gsub_ligature *subtable = &(_subtable->gsub_ligature);
	ligature_aggerator *h = NULL, *s, *tmp;
	uint16_t nLigatures = subtable->to->numGlyphs;
	for (uint16_t j = 0; j < nLigatures; j++) {
		int sgid = subtable->from[j]->glyphs[0].gid;
		HASH_FIND_INT(h, &sgid, s);
		if (!s) {
			NEW(s);
			s->gid = sgid;
			s->ligid = HASH_COUNT(h);
			HASH_ADD_INT(h, gid, s);
		}
	}
	HASH_SORT(h, by_gid);

	otl_coverage *startCoverage;
	NEW(startCoverage);
	startCoverage->numGlyphs = HASH_COUNT(h);
	NEW_N(startCoverage->glyphs, startCoverage->numGlyphs);

	uint16_t jj = 0;
	foreach_hash(s, h) {
		s->ligid = jj;
		startCoverage->glyphs[jj].gid = s->gid;
		startCoverage->glyphs[jj].name = NULL;
		jj++;
	}
Exemple #15
0
static PyObject *
snudown_md(PyObject *self, PyObject *args, PyObject *kwargs)
{
    static char *kwlist[] = {"text", "nofollow", "target", NULL};

    struct buf ib, *ob;
    PyObject *py_result;
    const char* result_text;

    memset(&ib, 0x0, sizeof(struct buf));

    /* Parse arguments */
    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#|iz", kwlist,
                                     &ib.data, &ib.size, &_state.options.nofollow, &_state.options.target)) {
        return NULL;
    }

    /* Output buffer */
    ob = bufnew(128);

    /* do the magic */
    sd_markdown_render(ob, ib.data, ib.size, sundown);

    /* make a Python string */
    result_text = "";
    if (ob->data)
        result_text = (const char*)ob->data;
    py_result = Py_BuildValue("s#", result_text, (int)ob->size);

    /* Cleanup */
    bufrelease(ob);
    return py_result;
}
Exemple #16
0
static VALUE rb_redcarpet_md_render(VALUE self, VALUE text)
{
	VALUE rb_rndr;
	struct buf *output_buf;
	struct sd_markdown *markdown;

	Check_Type(text, T_STRING);
	check_utf8_encoding(text);

	rb_rndr = rb_iv_get(self, "@renderer");
	Data_Get_Struct(self, struct sd_markdown, markdown);

	if (rb_respond_to(rb_rndr, rb_intern("preprocess")))
		text = rb_funcall(rb_rndr, rb_intern("preprocess"), 1, text);

	/* initialize buffers */
	output_buf = bufnew(128);

	/* render the magic */
	sd_markdown_render(
		output_buf,
		RSTRING_PTR(text),
		RSTRING_LEN(text),
		markdown);

	/* build the Ruby string */
	text = redcarpet_str_new(output_buf->data, output_buf->size);

	bufrelease(output_buf);

	if (rb_respond_to(rb_rndr, rb_intern("postprocess")))
		text = rb_funcall(rb_rndr, rb_intern("postprocess"), 1, text);

	return text;
}
Exemple #17
0
int
main(int argc, char **argv)
{
	int i;
	bd_status_t sts = BD_SUCCESS;
	struct buf *ib, *ob;
	FILE *in;

	/* performing markdown parsing */
	ib = bufnew(READ_UNIT);
	ob = bufnew(OUTPUT_UNIT);

	if (ib && ob)
	{
		if (argc <= 1)
			sts = bd_io(ob, ib, stdin);

		for (i = 1; i < argc && BD_SUCCESS == sts; ++i)
		{
			if ((in = fopen(argv[i], "r")))
			{
				sts = bd_io(ob, ib, in);
				fclose(in);
				/* reset buffet for next step */
				bufreset(ib);
				bufreset(ob);
			}
			else
			{
				sts = BD_UNABLE_OPEN_FILE;
			}
		}
	}
	else
	{
		sts = BD_UNABLE_ALLOCATE_MEMORY;
	}

	/* cleanup */
	bufrelease(ib);
	bufrelease(ob);

	/* result output with status */
	bd_result(sts);
	return sts;
}
Exemple #18
0
caryll_Buffer *cff_build_Charset(cff_Charset cset) {
	switch (cset.t) {
		case cff_CHARSET_ISOADOBE:
		case cff_CHARSET_EXPERT:
		case cff_CHARSET_EXPERTSUBSET: {
			return bufnew();
		}
		case cff_CHARSET_FORMAT0: {
			caryll_Buffer *blob = bufnew();
			blob->size = 1 + cset.s * 2;
			NEW(blob->data, blob->size);
			blob->data[0] = 0;
			for (uint32_t i = 0; i < cset.s; i++)
				blob->data[1 + 2 * i] = cset.f0.glyph[i] / 256, blob->data[2 + 2 * i] = cset.f0.glyph[i] % 256;
			blob->cursor = blob->size;
			return blob;
		}
		case cff_CHARSET_FORMAT1: {
			caryll_Buffer *blob = bufnew();
			blob->size = 1 + cset.s * 3;
			NEW(blob->data, blob->size);
			blob->data[0] = 1;
			for (uint32_t i = 0; i < cset.s; i++)
				blob->data[1 + 3 * i] = cset.f1.range1[i].first / 256,
				                   blob->data[2 + 3 * i] = cset.f1.range1[i].first % 256,
				                   blob->data[3 + 3 * i] = cset.f1.range1[i].nleft;
			return blob;
		}
		case cff_CHARSET_FORMAT2: {
			caryll_Buffer *blob = bufnew();
			blob->size = 1 + cset.s * 4;
			NEW(blob->data, blob->size);
			blob->data[0] = 2;
			for (uint32_t i = 0; i < cset.s; i++)
				blob->data[1 + 4 * i] = cset.f2.range2[i].first / 256,
				                   blob->data[2 + 4 * i] = cset.f2.range2[i].first % 256,
				                   blob->data[3 + 4 * i] = cset.f2.range2[i].nleft / 256,
				                   blob->data[4 + 4 * i] = cset.f2.range2[i].nleft % 256;
			blob->cursor = blob->size;
			return blob;
		}
	}
	return NULL;
}
Exemple #19
0
static PyObject *
misaka_render(const char *text, unsigned int extensions,
                 unsigned int render_flags, char toc_only)
{
    struct buf *ib, *ob;
    struct mkd_renderer renderer;

    /* Input buffer */
    ib = bufnew(1);
    bufputs(ib, text);

    /* Output buffer */
    ob = bufnew(ib->size * 1.2);

    /* Parse Markdown */
    if (toc_only != -1) {
        upshtml_toc_renderer(&renderer);
    } else {
        upshtml_renderer(&renderer, render_flags);
    }

    ups_markdown(ob, ib, &renderer, extensions);
    upshtml_free_renderer(&renderer);

    /* Smartypants actions */
    if (render_flags & HTML_SMARTYPANTS)
    {
        struct buf *sb = bufnew(1);
        upshtml_smartypants(sb, ob);
        ob = bufdup(sb, sb->size); /* Duplicate Smartypants buffer to output buffer */
        bufrelease(sb); /* Cleanup Smartypants buffer */
    }

    /* Append a null terminator to the output buffer and make a Python string */
    bufnullterm(ob);
    PyObject *html = Py_BuildValue("s", ob->data);

    /* Cleanup */
    bufrelease(ib);
    bufrelease(ob);

    return html;
}
int main()
{
	const char TEST_STRING[] = "This &#x2663; is & just &quot;an example&diams;&quot;";
	struct buf *buffer;

	buffer = bufnew(128);
	houdini_unescape_html(buffer, TEST_STRING, strlen(TEST_STRING));
	printf("Result: %.*s\n", (int)buffer->size, buffer->data);
	bufrelease(buffer);
	return 0;
}
Exemple #21
0
/* new_work_buffer • get a new working buffer from the stack or create one */
static struct buf *
new_work_buffer(struct render *rndr) {
	struct buf *ret = 0;

	if (rndr->work.size < rndr->work.asize) {
		ret = rndr->work.item[rndr->work.size ++];
		ret->size = 0; }
	else {
		ret = bufnew(WORK_UNIT);
		parr_push(&rndr->work, ret); }
	return ret; }
Exemple #22
0
caryll_Buffer *bufninit(uint32_t n, ...) {
	caryll_Buffer *buf = bufnew();
	bufbeforewrite(buf, n);
	va_list ap;
	va_start(ap, n);
	for (uint16_t j = 0; j < n; j++) {
		bufwrite8(buf, (uint8_t)va_arg(ap, int));
	}
	va_end(ap);
	return buf;
}
Exemple #23
0
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);

	ups_xhtml_smartypants(ob, ib);

	/* writing the result to stdout */
	fwrite(ob->data, 1, ob->size, stdout);

	/* cleanup */
	bufrelease(ib);
	bufrelease(ob);

	return 0;
}
BOOL convMd2Html(LPCTSTR outpath, const CString& csspath)
{
	struct buf *ob;
	int ret;
	FILE *outf = NULL;
	unsigned int extensions = 0xff;
	char hHead[] = "<!DOCTYPE html>\n<html>\n<head>\n<meta charset=""utf-8"">\n";
	char hSym[] = "<link href=""%s"" rel=""stylesheet""></link>\n</head>\n<body>\n";
	char hTail[] = "</body>\n</html>";
	char *hCSS = NULL;

	struct sd_callbacks callbacks;
	struct html_renderopt options;
	struct sd_markdown *markdown;

	char *cssbuf = unicode2Utf8((LPCTSTR)csspath, csspath.GetLength());
	int aclen = strlen(cssbuf) + strlen(hSym);

	hCSS = (char*)malloc(aclen+1);
	memset(hCSS, 0, aclen);
	sprintf(hCSS, "<link href=""%s"" rel=""stylesheet""></link>\n</head>\n<body>\n", cssbuf);
	free(cssbuf);


	/* performing markdown parsing */
	ob = bufnew(OUTPUT_UNIT);

	//extensions = MKDEXT_TABLES|MKDEXT_FENCED_CODE|MKDEXT_AUTOLINK|MKDEXT_STRIKETHROUGH|MKDEXT_SUPERSCRIPT|MKDEXT_LAX_SPACING;

	sdhtml_renderer(&callbacks, &options, 0);
	markdown = sd_markdown_new(extensions, 16, &callbacks, &options);

	sd_markdown_render(ob, mib_utf8->data, mib_utf8->size, markdown);
	sd_markdown_free(markdown);

	outf = _tfopen(outpath, _T("w"));
	if(outf != NULL) {
		fwrite(hHead, 1, strlen(hHead), outf);
		fwrite(hCSS, 1, strlen(hCSS), outf);
		/* writing the result to stdout */
		ret = fwrite(ob->data, 1, ob->size, outf);
		fwrite(hTail, 1, strlen(hTail), outf);
		fclose(outf);
	}

	/* cleanup */
	free(hCSS);
	bufrelease(mib_utf8);
	bufrelease(ob);
	mib_utf8 = NULL;

	return TRUE;
}
Exemple #25
0
/* main • main function, interfacing STDIO with the parser */
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[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 to LaTeX */
	ob = bufnew(OUTPUT_UNIT);
	markdown(ob, ib, &to_latex);

	/* writing the result to stdout */
	ret = fwrite(ob->data, 1, ob->size, stdout);
	if (ret < ob->size)
		fprintf(stderr, "Warning: only %zu output byte written, "
				"out of %zu\n",
				ret,
				ob->size);

	/* cleanup */
	bufrelease(ib);
	bufrelease(ob);
	return 0; }
void getEditText(LPCTSTR unicode, UINT nLen)
{
	int idx = 0;
    int len = WideCharToMultiByte(CP_UTF8, 0, unicode, nLen, NULL, 0, NULL, NULL);  

	mib_utf8 = bufnew(READ_UNIT);
	bufgrow(mib_utf8, len+idx+1);
	memset(mib_utf8->data, 0, mib_utf8->asize);
	//memcpy(mib_utf8->data, UTF8_BOM, idx);
	//mib_utf8->size += idx;

	mib_utf8->size += WideCharToMultiByte(CP_UTF8, 0, unicode, nLen, (LPSTR)&mib_utf8->data[idx], len, NULL, NULL);
}
Exemple #27
0
static inline struct buf *
rndr_newbuf(struct render *rndr)
{
	struct buf *work = NULL;

	if (rndr->work.size < rndr->work.asize) {
		work = rndr->work.item[rndr->work.size++];
		work->size = 0;
	} else {
		work = bufnew(WORK_UNIT);
		parr_push(&rndr->work, work);
	}

	return work;
}
Exemple #28
0
tdRenderer::tdRenderer(QPlainTextEdit *editor, int extensions, QWebElement body)
    : QObject(editor),
      m_ext(extensions),
      m_editor(editor),
      m_undoStack(new QUndoStack(this)),
      m_buffer(bufnew(1024)),
      m_tmpbuffer(bufnew(1024)),
      m_markdown(initSundown()),
      m_body(body),
      m_fframe(0),
      m_lframe(0),
      m_count(0),
      m_index(1),
      m_pants(true),
      m_undoSteps(0),
      m_isUndoRedo(false)
{
    connect(m_editor, SIGNAL(cursorPositionChanged()), this, SLOT(updateFrameInterval()));
    connect(m_editor, SIGNAL(selectionChanged()), this, SLOT(updateFrameInterval()));
    connect(editor->document(), SIGNAL(contentsChange(int, int, int)),
            this, SLOT(parseMarkdown(int, int, int)));

    updateFrameInterval();
}
Exemple #29
0
static VALUE rb_redcarpet_smartypants_render(VALUE self, VALUE text)
{
	VALUE result;
	struct buf *output_buf;

	Check_Type(text, T_STRING);

	output_buf = bufnew(128);

	sdhtml_smartypants(output_buf, RSTRING_PTR(text), RSTRING_LEN(text));
	result = redcarpet_str_new(output_buf->data, output_buf->size, rb_enc_get(text));

	bufrelease(output_buf);
	return result;
}
Exemple #30
0
/**
* returns html. NOTE that buffer NEEDS to be deallocated using bufrelease(output_buf);!!!
*/
static struct buf *ghmd_to_html(char const *text, const size_t textSize) {
    struct buf *output_buf;
    struct sd_markdown *md = g_markdown.md;

    /* initialize buffers */
    output_buf = bufnew(256);

    /* render the magic */
    sd_markdown_render(output_buf, text, textSize, md);

    //printf((char const *) output_buf->data);
    //printf("size %d\n", (int) output_buf->size);
    //printf("asize %d\n", (int) output_buf->asize);

    return output_buf;
}