OSDN Git Service

書式をlong intに指定
[hengband/hengband.git] / src / japanese.c
index 523b881..353c947 100644 (file)
@@ -5,6 +5,106 @@
 
 #ifdef JP
 
+typedef struct convert_key convert_key;
+
+struct convert_key
+{
+       cptr key1;
+       cptr key2;
+};
+
+static const convert_key s2j_table[] = {
+       {"mb","nb"}, {"mp","np"}, {"mv","nv"}, {"mm","nm"},
+       {"x","ks"},
+       /* sindar:¥·¥ó¥À¡¼¥ë  parantir:¥Ñ¥é¥ó¥Æ¥£¥¢  feanor:¥Õ¥§¥¢¥Î¡¼¥ë */
+       {"ar$","a-ru$"}, {"ir$","ia$"}, {"or$","o-ru$"},
+       {"ra","¥é"}, {"ri","¥ê"}, {"ru","¥ë"}, {"re","¥ì"}, {"ro","¥í"},
+       {"ir","ia"}, {"ur","ua"}, {"er","ea"}, {"ar","a¥ë"},
+       {"sha","¥·¥ã"}, {"shi","¥·"}, {"shu","¥·¥å"}, {"she","¥·¥§"}, {"sho","¥·¥ç"},
+       {"tha","¥µ"}, {"thi","¥·"}, {"thu","¥¹"}, {"the","¥»"}, {"tho","¥½"},
+       {"cha","¥Ï"}, {"chi","¥Ò"}, {"chu","¥Õ"}, {"che","¥Ø"}, {"cho","¥Û"},
+       {"dha","¥¶"}, {"dhi","¥¸"}, {"dhu","¥º"}, {"dhe","¥¼"}, {"dho","¥¾"},
+       {"ba","¥Ð"}, {"bi","¥Ó"}, {"bu","¥Ö"}, {"be","¥Ù"}, {"bo","¥Ü"},
+       {"ca","¥«"}, {"ci","¥­"}, {"cu","¥¯"}, {"ce","¥±"}, {"co","¥³"},
+       {"da","¥À"}, {"di","¥Ç¥£"}, {"du","¥É¥¥"}, {"de","¥Ç"}, {"do","¥É"},
+       {"fa","¥Õ¥¡"}, {"fi","¥Õ¥£"}, {"fu","¥Õ"}, {"fe","¥Õ¥§"}, {"fo","¥Õ¥©"},
+       {"ga","¥¬"}, {"gi","¥®"}, {"gu","¥°"}, {"ge","¥²"}, {"go","¥´"},
+       {"ha","¥Ï"}, {"hi","¥Ò"}, {"hu","¥Õ"}, {"he","¥Ø"}, {"ho","¥Û"},
+       {"ja","¥¸¥ã"}, {"ji","¥¸"}, {"ju","¥¸¥å"}, {"je","¥¸¥§"}, {"jo","¥¸¥ç"},
+       {"ka","¥«"}, {"ki","¥­"}, {"ku","¥¯"}, {"ke","¥±"}, {"ko","¥³"},
+       {"la","¥é"}, {"li","¥ê"}, {"lu","¥ë"}, {"le","¥ì"}, {"lo","¥í"},
+       {"ma","¥Þ"}, {"mi","¥ß"}, {"mu","¥à"}, {"me","¥á"}, {"mo","¥â"},
+       {"na","¥Ê"}, {"ni","¥Ë"}, {"nu","¥Ì"}, {"ne","¥Í"}, {"no","¥Î"},
+       {"pa","¥Ñ"}, {"pi","¥Ô"}, {"pu","¥×"}, {"pe","¥Ú"}, {"po","¥Ý"},
+       {"qu","¥¯"},
+       {"sa","¥µ"}, {"si","¥·"}, {"su","¥¹"}, {"se","¥»"}, {"so","¥½"},
+       {"ta","¥¿"}, {"ti","¥Æ¥£"}, {"tu","¥È¥¥"}, {"te","¥Æ"}, {"to","¥È"},
+       {"va","¥ô¥¡"}, {"vi","¥ô¥£"}, {"vu","¥ô"}, {"ve","¥ô¥§"}, {"vo","¥ô¥©"},
+       {"wa","¥ï"}, {"wi","¥¦¥£"}, {"wu","¥¦"}, {"we","¥¦¥§"}, {"wo","¥¦¥©"},
+       {"ya","¥ä"}, {"yu","¥æ"}, {"yo","¥è"},
+       {"za","¥¶"}, {"zi","¥¸"}, {"zu","¥º"}, {"ze","¥¼"}, {"zo","¥¾"},
+       {"dh","¥º"}, {"ch","¥Õ"}, {"th","¥¹"},
+       {"b","¥Ö"}, {"c","¥¯"}, {"d","¥É"}, {"f","¥Õ"}, {"g","¥°"},
+       {"h","¥Õ"}, {"j","¥¸¥å"}, {"k","¥¯"}, {"l","¥ë"}, {"m","¥à"},
+       {"n","¥ó"}, {"p","¥×"}, {"q","¥¯"}, {"r","¥ë"}, {"s","¥¹"},
+       {"t","¥È"}, {"v","¥ô"}, {"w","¥¦"}, {"y","¥¤"},
+       {"a","¥¢"}, {"i","¥¤"}, {"u","¥¦"}, {"e","¥¨"}, {"o","¥ª"},
+       {"-","¡¼"},
+       {NULL,NULL}
+};
+
+/* ¥·¥ó¥À¥ê¥ó¤òÆüËܸì¤ÎÆɤߤËÊÑ´¹¤¹¤ë */
+void sindarin_to_kana(char *kana, const char *sindarin)
+{
+       char buf[256];
+       int idx;
+
+       sprintf(kana, "%s$", sindarin);
+       for (idx = 0; kana[idx]; idx++)
+               if (isupper(kana[idx])) kana[idx] = tolower(kana[idx]);
+
+       for (idx = 0; s2j_table[idx].key1 != NULL; idx++)
+       {
+               cptr pat1 = s2j_table[idx].key1;
+               cptr pat2 = s2j_table[idx].key2;
+               int len = strlen(pat1);
+               char *src = kana;
+               char *dest = buf;
+
+               while (*src)
+               {
+                       if (strncmp(src, pat1, len) == 0)
+                       {
+                               strcpy(dest, pat2);
+                               src += len;
+                               dest += strlen(pat2);
+                       }
+                       else
+                       {
+                               if (iskanji(*src))
+                               {
+                                       *dest = *src;
+                                       src++;
+                                       dest++;
+                               }
+                               *dest = *src;
+                               src++;
+                               dest++;
+                       }
+               }
+
+               *dest = 0;
+               strcpy(kana, buf);
+       }
+
+       idx = 0;
+
+       while (kana[idx] != '$') idx++;
+
+       kana[idx] = '\0';
+}
+
+
 /*ÆüËܸìÆ°»ì³èÍÑ (ÂǤġäÂǤäÆ,ÂǤÁ etc) */
 
 #define CMPTAIL(y) strncmp(&in[l-strlen(y)],y,strlen(y))
@@ -124,35 +224,6 @@ void jverb( const char *in , char *out , int flag){
   }
 }
 
-char* strstr_j(const char* s, const char* t)
-{
-       int i, l1, l2;
-
-       l1 = strlen(s);
-       l2 = strlen(t);
-       if (l1 >= l2) {
-               for(i = 0; i <= l1 - l2; i++) {
-                       if(!strncmp(s + i, t, l2))
-                               return (char *)s + i;
-                       if (iskanji(*(s + i)))
-                               i++;
-               }
-       }
-       return NULL;
-}
-
-
-char *strchr_j(const char *ptr, char ch)
-{
-       for ( ; *ptr != '\0'; ++ptr)
-       {
-               if (*ptr == ch) return (char *)ptr;
-               if (iskanji(*ptr)) ++ptr;
-       }
-
-       return NULL;
-}
-
 
 /*
  * Convert SJIS string to EUC string