markdowncxx.cpp 875 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include <stdio.h>
  2. #include <stdarg.h>
  3. #include <string>
  4. #include <iostream>
  5. extern "C" {
  6. #include "markdown.h"
  7. }
  8. static void mywrite(char const *s,int len,void *str_ptr)
  9. {
  10. std::string *cxx_str=static_cast<std::string *>(str_ptr);
  11. cxx_str->append(s,len);
  12. }
  13. void markdown2html(std::string const &in,std::string &out)
  14. {
  15. markdown_str(mkd_string(const_cast<char *>(in.c_str()),in.size(),0),&out,mywrite,0);
  16. }
  17. void markdown2html(const char *in, int len, std::string &out)
  18. {
  19. markdown_str(mkd_string(in, len, 0), &out,mywrite,0);
  20. }
  21. void markdown2html(const char *in, std::string &out)
  22. {
  23. markdown2html(in, strlen(in), out);
  24. }
  25. #ifdef TEST_MARKDOWN_LIBRARY
  26. int main()
  27. {
  28. std::string test;
  29. test.reserve(32000);
  30. int c;
  31. while((c=getchar())!=EOF) {
  32. test+=(char)c;
  33. }
  34. std::string out;
  35. out.reserve(32000);
  36. markdown2html(test,out);
  37. std::cout<<out;
  38. return 0;
  39. }
  40. #endif