OSDN Git Service

Added Emoji Only Mode for CHTML3.0
authorAtsushi Konno <konn@users.sourceforge.jp>
Tue, 3 Mar 2009 03:56:14 +0000 (12:56 +0900)
committerAtsushi Konno <konn@users.sourceforge.jp>
Tue, 3 Mar 2009 03:56:14 +0000 (12:56 +0900)
include/chxj_chtml30.h
src/chxj_chtml30.c

index 491933b..230180a 100644 (file)
@@ -53,4 +53,7 @@ extern char *chxj_convert_chtml30(
   chxjconvrule_entry    *entryp,
   cookie_t              *cookie);
 
+
+extern char *chxj_chtml30_emoji_only_converter(request_rec *r, const char *src, apr_size_t len);
+
 #endif
index f9efdbd..95ddc19 100644 (file)
@@ -570,6 +570,64 @@ s_chtml30_search_emoji(chtml30_t *chtml30, char *txt, char **rslt)
 }
 
 
+char *
+chxj_chtml30_emoji_only_converter(request_rec *r, const char *src, apr_size_t len)
+{
+  apr_size_t ii;
+  Doc doc;
+  chtml30_t __chtml30;
+  chtml30_t *chtml30;
+  char one_byte[2];
+  char two_byte[3];
+  apr_pool_t *pool;
+
+  chtml30 = &__chtml30;
+
+  DBG(r, "REQ[%X] start chxj_chtml30_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+  memset(doc,     0, sizeof(Doc));
+  memset(chtml30, 0, sizeof(chtml30_t));
+
+  doc->r        = r;
+  chtml30->doc  = doc;
+  chtml30->spec = spec;
+  chtml30->out  = qs_alloc_zero_byte_string(r->pool);
+  chtml30->conf = chxj_get_module_config(r->per_dir_config, &chxj_module);
+  chtml30->doc->parse_mode = PARSE_MODE_CHTML;
+
+  apr_pool_create(&pool, r->pool);
+
+  chxj_buffered_write_init(pool, &doc.buf);
+
+  for (ii=0; ii<len; ii++) {
+    char *out;
+    int   rtn;
+
+    rtn = s_chtml30_search_emoji(chtml30, &src[ii], &out);
+    if (rtn) {
+      W_V(out);
+      ii+=(rtn - 1);
+      continue;
+    }
+
+    if (is_sjis_kanji(src[ii])) {
+      two_byte[0] = src[ii+0];
+      two_byte[1] = src[ii+1];
+      two_byte[2] = 0;
+      W_V(two_byte);
+      ii++;
+    }
+    else {
+      one_byte[0] = src[ii+0];
+      one_Byte[1] = 0;
+      W_V(one_byte);
+    }
+  }
+
+  DBG(r, "REQ[%X] end chxj_chtml30_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+  return chtml30->out;
+}
+
+
 /**
  * It is a handler who processes the HTML tag.
  *