]> git.wincent.com - wikitext.git/commitdiff
Teach Wikitext::Parser#parse to accept an options hash
authorWincent Colaiuta <win@wincent.com>
Fri, 8 Feb 2008 13:58:46 +0000 (14:58 +0100)
committerWincent Colaiuta <win@wincent.com>
Fri, 8 Feb 2008 13:58:46 +0000 (14:58 +0100)
This is actually the way it used to be but I removed it seeing as I
never used any options. But now I plan to add support for using a
preset indentation so this is a necessary prerequisite.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
ext/parser.c
ext/parser.h
ext/wikitext.c

index 5ee5cb71dac8e5fe3f2a4967b2e36c645bc77f71..30076c4993ec2d871d61f20957142a02da8b74a1 100644 (file)
@@ -695,12 +695,15 @@ VALUE Wikitext_parser_initialize(VALUE self)
 VALUE Wikitext_parser_profiling_parse(VALUE self, VALUE string)
 {
     for (int i = 0; i < 100000; i++)
-        Wikitext_parser_parse(self, string);
+        Wikitext_parser_parse(1, &string, self);
 }
 
-VALUE Wikitext_parser_parse(VALUE self, VALUE string)
+VALUE Wikitext_parser_parse(int argc, VALUE *argv, VALUE self)
 {
     // process arguments
+    VALUE string, options;
+    if (rb_scan_args(argc, argv, "11", &string, &options) == 1) // 1 mandatory argument, 1 optional argument
+        options = rb_hash_new();                                // default to an empty hash if no argument passed
     if (NIL_P(string))
         return Qnil;
     string = StringValue(string);
index 662865d1e346560727e147ac7a0f665f2d9b8c7a..b42c9edbe09fc0f98611a51f7f9cc422c5b0dbda 100644 (file)
@@ -24,6 +24,6 @@ VALUE Wikitext_parser_sanitize_link_target(VALUE self, VALUE string);
 
 VALUE Wikitext_parser_encode_link_target(VALUE self, VALUE in);
 
-VALUE Wikitext_parser_parse(VALUE self, VALUE string);
+VALUE Wikitext_parser_parse(int argc, VALUE *argv, VALUE self);
 
 VALUE Wikitext_parser_profiling_parse(VALUE self, VALUE string);
index cfa5f59dd5f175d9c6fe92de59026573005d3f53..faf3eb71079aeb3d7209277c5850a79e9aac6453 100644 (file)
@@ -28,7 +28,7 @@ void Init_wikitext()
     // Wikitext::Parser
     cWikitextParser = rb_define_class_under(mWikitext, "Parser", rb_cObject);
     rb_define_method(cWikitextParser, "initialize", Wikitext_parser_initialize, 0);
-    rb_define_method(cWikitextParser, "parse", Wikitext_parser_parse, 1);
+    rb_define_method(cWikitextParser, "parse", Wikitext_parser_parse, -1);
     rb_define_method(cWikitextParser, "profiling_parse", Wikitext_parser_profiling_parse, 1);
     rb_define_method(cWikitextParser, "tokenize", Wikitext_parser_tokenize, 1);
     rb_define_method(cWikitextParser, "benchmarking_tokenize", Wikitext_parser_benchmarking_tokenize, 1);