OSDN Git Service

Added Emoji Only Mode for JXHTML.
authorAtsushi Konno <konn@users.sourceforge.jp>
Tue, 3 Mar 2009 04:09:05 +0000 (13:09 +0900)
committerAtsushi Konno <konn@users.sourceforge.jp>
Tue, 3 Mar 2009 04:09:05 +0000 (13:09 +0900)
include/chxj_jxhtml.h
src/chxj_jxhtml.c

index 6501f7c..04094a2 100644 (file)
@@ -60,4 +60,7 @@ extern char *chxj_convert_jxhtml(
   chxjconvrule_entry        *entryp,
   cookie_t                  *cookie);
 
+
+extern char *chxj_jxhtml_emoji_only_converter(request_rec *r, const char *src, apr_size_t len);
+
 #endif
index 481b825..80ac317 100644 (file)
@@ -588,6 +588,64 @@ s_jxhtml_search_emoji(jxhtml_t *jxhtml, char *txt, char **rslt)
 }
 
 
+char *
+chxj_jxhtml_emoji_only_converter(request_rec *r, const char *src, apr_size_t len)
+{
+  apr_size_t ii;
+  Doc doc;
+  jxhtml_t __jxhtml;
+  jxhtml_t *jxhtml;
+  char one_byte[2];
+  char two_byte[3];
+  apr_pool_t *pool;
+
+  jxhtml = &__jxhtml;
+
+  DBG(r, "REQ[%X] start chxj_jxhtml_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+  memset(doc,     0, sizeof(Doc));
+  memset(jxhtml, 0, sizeof(jxhtml_t));
+
+  doc->r        = r;
+  jxhtml->doc  = doc;
+  jxhtml->spec = spec;
+  jxhtml->out  = qs_alloc_zero_byte_string(r->pool);
+  jxhtml->conf = chxj_get_module_config(r->per_dir_config, &chxj_module);
+  jxhtml->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_jxhtml_search_emoji(jxhtml, &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_jxhtml_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+  return jxhtml->out;
+}
+
+
 /**
  * It is a handler who processes the HTML tag.
  *