OSDN Git Service

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

index 08a90ae..4459175 100644 (file)
@@ -53,4 +53,7 @@ extern char *chxj_convert_chtml50(
   chxjconvrule_entry    *entryp,
   cookie_t              *cookie);
 
+
+extern char *chxj_chtml50_emoji_only_converter(request_rec *r, const char *src, apr_size_t len);
+
 #endif
index cc8449d..a3e6075 100644 (file)
@@ -570,6 +570,64 @@ s_chtml50_search_emoji(chtml50_t *chtml50, char *txt, char **rslt)
 }
 
 
+char *
+chxj_chtml50_emoji_only_converter(request_rec *r, const char *src, apr_size_t len)
+{
+  apr_size_t ii;
+  Doc doc;
+  chtml50_t __chtml50;
+  chtml50_t *chtml50;
+  char one_byte[2];
+  char two_byte[3];
+  apr_pool_t *pool;
+
+  chtml50 = &__chtml50;
+
+  DBG(r, "REQ[%X] start chxj_chtml50_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+  memset(doc,     0, sizeof(Doc));
+  memset(chtml50, 0, sizeof(chtml50_t));
+
+  doc->r        = r;
+  chtml50->doc  = doc;
+  chtml50->spec = spec;
+  chtml50->out  = qs_alloc_zero_byte_string(r->pool);
+  chtml50->conf = chxj_get_module_config(r->per_dir_config, &chxj_module);
+  chtml50->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_chtml50_search_emoji(chtml50, &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_chtml50_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+  return chtml50->out;
+}
+
+
 /**
  * It is a handler who processes the HTML tag.
  *