[ekg2-commit] r3698 - trunk/plugins/ruby
svn w toxygen.net
svn w toxygen.net
Nie, 27 Sty 2008, 00:07:46 CET
Author: darkjames
Date: 2008-01-27 00:07:45 +0100 (Sun, 27 Jan 2008)
New Revision: 3698
Modified:
trunk/plugins/ruby/ruby_ekg.c
Log:
implement format_add() and print with more params.
Modified: trunk/plugins/ruby/ruby_ekg.c
===================================================================
--- trunk/plugins/ruby/ruby_ekg.c 2008-01-26 21:01:16 UTC (rev 3697)
+++ trunk/plugins/ruby/ruby_ekg.c 2008-01-26 23:07:45 UTC (rev 3698)
@@ -67,6 +67,24 @@
return ekg2_ruby_script;
}
+static VALUE ruby_format_add(int argc, VALUE *argv, VALUE self) {
+ int replace = 1;
+
+ if (argc != 2 && argc != 3) rb_raise(rb_eArgError, "format_add() accepts 2 or 3 params, but %d given", argc);
+
+ Check_Type(argv[0], T_STRING);
+ Check_Type(argv[1], T_STRING);
+
+ if (argc == 3) {
+ Check_Type(argv[2], T_FIXNUM);
+ replace = FIX2INT(argv[2]);
+ }
+
+ format_add(RSTRING(argv[0])->ptr, RSTRING(argv[1])->ptr, replace);
+
+ return Qnil;
+}
+
static VALUE ruby_print(int argc, VALUE *argv, VALUE self) {
script_t *scr = ruby_find_script(self);
@@ -74,12 +92,24 @@
rb_raise(RUBY_EKG_INTERNAL_ERROR, "@ handler_bind internal error");
return Qnil;
}
- if (argc != 1) rb_raise(rb_eArgError, "print() accepts 1 param, but %d given", argc);
+ if (argc == 0 || argc > 10) rb_raise(rb_eArgError, "print() accepts 1-10 params, but %d given", argc);
Check_Type(argv[0], T_STRING);
- print("script_generic", "ruby", scr->name, RSTRING(argv[0])->ptr);
+ if (argc == 1)
+ print("script_generic", "ruby", scr->name, RSTRING(argv[0])->ptr);
+ else {
+ char *args[9] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };
+ int i;
+ for (i = 1; i < argc; i++) {
+ Check_Type(argv[i], T_STRING);
+ args[i-1] = RSTRING(argv[i])->ptr;
+ }
+
+ print(RSTRING(argv[0])->ptr, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9]);
+ }
+
return Qnil;
}
@@ -117,7 +147,6 @@
return Qnil;
}
-
static VALUE ruby_handler_bind(int argc, VALUE *argv, VALUE self) {
script_t *scr = ruby_find_script(self);
char *query_name = NULL;
@@ -126,7 +155,7 @@
rb_raise(RUBY_EKG_INTERNAL_ERROR, "@ handler_bind internal error");
return Qnil;
}
- if (argc != 2 && argc != 3) rb_raise(rb_eArgError, "handler_bind() accepts 2 or 3 params, but %d given", argc);
+ if (argc != 2) rb_raise(rb_eArgError, "handler_bind() accepts 2 params, but %d given", argc);
#if 0
if (TYPE(obj) == T_STRING) query_name = RSTRING(argv[0])->ptr;
@@ -155,6 +184,7 @@
rb_define_method(ekg2_ruby_script, "command_bind", ruby_command_bind, -1);
rb_define_method(ekg2_ruby_script, "handler_bind", ruby_handler_bind, -1);
rb_define_method(ekg2_ruby_script, "timer_bind", ruby_timer_bind, -1);
+ rb_define_method(ekg2_ruby_script, "format_add", ruby_format_add, -1);
rb_define_method(ekg2_ruby_script, "print", ruby_print, -1);
rb_define_method(ekg2_ruby_script, "initialize", ekg2_scripts_initialize, 0);
Więcej informacji o liście dyskusyjnej ekg2-commit