Skip to content

Commit

Permalink
Merge pull request #9 from afriggeri/master
Browse files Browse the repository at this point in the history
Added support for flags [afriggeri]
  • Loading branch information
tj committed Jul 27, 2011
2 parents 5dcb701 + 4f43ef2 commit 7ab0d14
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 5 deletions.
6 changes: 4 additions & 2 deletions examples/example.md
@@ -1,6 +1,6 @@

# Title

[this is a link](http://foo)
Just some random paragraph stuff here.

## Lists
Expand All @@ -16,4 +16,6 @@ Just some random paragraph stuff here.
Even some code:

foobar!
bazz!
bazz!

~~strikethrough~~
11 changes: 11 additions & 0 deletions examples/flags.js
@@ -0,0 +1,11 @@

/**
* Module dependencies.
*/

var md = require('../build/default/markdown')
, fs = require('fs');

fs.readFile(__dirname + '/example.md', 'utf8', function(err, str){
console.log(md.parse(str, md.flags.noStrikethrough|md.flags.noLinks));
});
41 changes: 39 additions & 2 deletions src/markdown.cc
Expand Up @@ -7,6 +7,7 @@

#include <v8.h>
#include <node.h>
#include <stdio.h>

extern "C" {
#include <mkdio.h>
Expand All @@ -24,13 +25,24 @@ Parse(const Arguments& args) {
HandleScope scope;
char *buf;
int len;
int flags;
if (args.Length() < 1 || !args[0]->IsString())
return ThrowException(Exception::TypeError(String::New("String expected")));

if (args.Length() == 2){
if (!args[1]->IsNumber()){
return ThrowException(Exception::TypeError(String::New("Flag should be a number")));
}else{
flags = args[1]->Int32Value();
}
} else {
flags = 0;
}
MMIOT *doc;
String::Utf8Value in(args[0]);
if ((doc = mkd_string(*in, in.length(), 0)) == 0)
if ((doc = mkd_string(*in, in.length(), flags)) == 0)
return ThrowException(Exception::Error(String::New("Failed to parse markdown")));
if (mkd_compile(doc, 0))
if (mkd_compile(doc, flags))
len = mkd_document(doc, &buf);
Handle<String> md = String::New(buf);
mkd_cleanup(doc);
Expand All @@ -45,6 +57,31 @@ extern "C" void
init (Handle<Object> target)
{
HandleScope scope;
Handle<Object> flags;
flags = Object::New();
flags->Set(String::New("noLinks"), Number::New(MKD_NOLINKS));
flags->Set(String::New("noImage"), Number::New(MKD_NOIMAGE));
flags->Set(String::New("noPants"), Number::New(MKD_NOPANTS));
flags->Set(String::New("noHTML"), Number::New(MKD_NOHTML));
flags->Set(String::New("strict"), Number::New(MKD_STRICT));
flags->Set(String::New("tagText"), Number::New(MKD_TAGTEXT));
flags->Set(String::New("noExt"), Number::New(MKD_NO_EXT));
flags->Set(String::New("cdata"), Number::New(MKD_CDATA));
flags->Set(String::New("noSuperscript"), Number::New(MKD_NOSUPERSCRIPT));
flags->Set(String::New("noRelaxed"), Number::New(MKD_NORELAXED));
flags->Set(String::New("noTables"), Number::New(MKD_NOTABLES));
flags->Set(String::New("noStrikethrough"), Number::New(MKD_NOSTRIKETHROUGH));
flags->Set(String::New("toc"), Number::New(MKD_TOC));
flags->Set(String::New("md1Compat"), Number::New(MKD_1_COMPAT));
flags->Set(String::New("autolink"), Number::New(MKD_AUTOLINK));
flags->Set(String::New("safelink"), Number::New(MKD_SAFELINK));
flags->Set(String::New("noHeader"), Number::New(MKD_NOHEADER));
flags->Set(String::New("tabStop"), Number::New(MKD_TABSTOP));
flags->Set(String::New("noDivQuote"), Number::New(MKD_NODIVQUOTE));
flags->Set(String::New("noAlphaList"), Number::New(MKD_NOALPHALIST));
flags->Set(String::New("noDlist"), Number::New(MKD_NODLIST));
flags->Set(String::New("extraFootnote"), Number::New(MKD_EXTRA_FOOTNOTE));
target->Set(String::New("version"), String::New("0.1.2"));
target->Set(String::New("flags"), flags);
NODE_SET_METHOD(target, "parse", Parse);
}
2 changes: 1 addition & 1 deletion wscript
Expand Up @@ -10,7 +10,7 @@ def configure(conf):
conf.check_tool('node_addon')
conf.check(
lib = 'markdown',
libpath = ['/usr/lib', '/usr/local/lib', '/opt/local/lib'],
libpath = ['/usr/lib', '/usr/local/lib'],
uselib_store = 'DISCOUNT'
)

Expand Down

0 comments on commit 7ab0d14

Please sign in to comment.