*** /usr/local/lib/ruby/gems/1.9.1/gems/htmlgrid-1.0.0/ext/htmlgrid/grid.c 2011-11-18 14:43:11.623268177 +0100
--- /usr/local/lib/ruby/gems/1.9.1/gems/htmlgrid-1.0.0/ext/htmlgrid/grid.c 2011-10-14 09:16:08.818860527 +0200
***************
*** 288,301 ****
VALUE grid_cat_attribute(pair, string)
VALUE pair, string;
{
! VALUE val;
char *key, *value;
long len;
val = rb_ary_entry(pair, 1);
if(val == Qnil)
return string;
! key = STR2CSTR(rb_ary_entry(pair, 0));
! value = STR2CSTR(rb_funcall(val, rb_intern("to_s"), 0));
char attr[strlen(key) + strlen(value) + 5];
len = sprintf(attr, " %s=\"%s\"", key, value);
return rb_str_cat(string, attr, len);
--- 288,303 ----
VALUE grid_cat_attribute(pair, string)
VALUE pair, string;
{
! VALUE val, tmp1, tmp2;
char *key, *value;
long len;
val = rb_ary_entry(pair, 1);
if(val == Qnil)
return string;
! tmp1 = rb_ary_entry(pair, 0);
! key = StringValuePtr(tmp1);
! tmp2 = rb_funcall(val, rb_intern("to_s"), 0);
! value = StringValuePtr(tmp2);
char attr[strlen(key) + strlen(value) + 5];
len = sprintf(attr, " %s=\"%s\"", key, value);
return rb_str_cat(string, attr, len);
***************
*** 333,340 ****
VALUE pair, attrs;
{
char* key;
!
! key = STR2CSTR(rb_ary_entry(pair, 0));
if( strcasecmp(key, "align") == 0
|| strcasecmp(key, "class") == 0
|| strcasecmp(key, "colspan") == 0
--- 335,343 ----
VALUE pair, attrs;
{
char* key;
! VALUE tmp;
! tmp = rb_ary_entry(pair, 0);
! key = StringValuePtr(tmp);
if( strcasecmp(key, "align") == 0
|| strcasecmp(key, "class") == 0
|| strcasecmp(key, "colspan") == 0
***************
*** 367,372 ****
--- 370,376 ----
long idx, cdx, xval, yval, spanplus, len;
Data_Get_Struct(self, cGrid, cg);
//attrs = rb_iv_get(self, "@attributes");
+ //printf("getin grid_to_html\n");
result = rb_str_new2("");
grid_cat_starttag(result, "TABLE", cg->attributes);
for(idx=0, yval=0; yval < cg->height; yval++)
***************
*** 416,428 ****
for(cdx=0; cdxcontent_count; cdx++)
{
item = cf->content[cdx];
if(rb_obj_class(item) == rb_cString)
rb_str_concat(result, item);
else if(rb_respond_to(item, id_to_html))
{
VALUE item_html = rb_funcall(item, id_to_html, 1, cgi);
! if(rb_obj_is_kind_of(item_html, rb_cString) == Qtrue)
rb_str_concat(result, item_html);
}
else if(rb_obj_is_kind_of(item, rb_eException) == Qtrue)
{
--- 420,444 ----
for(cdx=0; cdxcontent_count; cdx++)
{
item = cf->content[cdx];
+ //item => ODDB::View::WelcomeHead
+ //printf("item.encoding = %s \n", StringValuePtr(item));
+ //printf("item.encoding = %s \n", rb_enc_get(item)->name);
if(rb_obj_class(item) == rb_cString)
rb_str_concat(result, item);
else if(rb_respond_to(item, id_to_html))
{
VALUE item_html = rb_funcall(item, id_to_html, 1, cgi);
! if(rb_obj_is_kind_of(item_html, rb_cString) == Qtrue){
! // koko
! //result = rb_str_force_encoding(result, "UTF-8");
! //item_html = rb_str_force_encoding(item_html, "UTF-8");
! //VALUE enc;
! //enc = rb_obj_encoding(result);
! //printf("encoding type ");
! //printf("%s %s\n", rb_enc_get(result)->name, rb_enc_get(item_html)->name);
rb_str_concat(result, item_html);
+ //printf("4\n");
+ }
}
else if(rb_obj_is_kind_of(item, rb_eException) == Qtrue)
{
***************
*** 441,452 ****
--- 457,470 ----
else
rb_str_concat(result, rb_funcall(item, id_to_s, 0));
}
+ //printf("10\n");
}
grid_cat_endtag(result, cf->tag);
}
rb_str_cat(result, tr_close, 5);
}
rb_str_cat(result, "", 8);
+ //printf("end grid_to_html\n");
return result;
}
***************
*** 749,755 ****
cField * cf;
VALUE tagname;
{
! strcpy(cf->tag, STR2CSTR(tagname));
}
VALUE grid_add_tag(argc, argv, self)
--- 767,773 ----
cField * cf;
VALUE tagname;
{
! strcpy(cf->tag, StringValuePtr(tagname));
}
VALUE grid_add_tag(argc, argv, self)