#include <ctype.h>  /* ***********  jpredit.c  ********** */
#include <string.h>   /*  title, spacedel, predit, kaiwaColon, kutouTen */
#include <ctype.h>    /*  quoteMk, remForm */
#include <stdio.h>
/* #include <process.h> */    /*       for MS-C && TURBO C++ */
/*   #include <stdlib.h>         for Lattice C         */
#include "jehonfnc.h"

#define GLOBAL_DEFINE

/* #define QWJTOE  */

#define USER

#include "macro.h"

#include "honyavar.h"


static void kutoutenCk(char wdh[]);



void title(void)
begin
   cls();
   color_green;
   printf("\n\nJapaneseEnglishJapaneseEnglishJapanesEnglishJapaneseEnglishJapaneseEnglish");
   color_white;
     printf("\na                                                                        J");
     printf("\np   *** ");
   color_yellow;
               printf("  US 式   和英・機械翻訳システム                                 a\n");
   color_magenta;
       printf("a           version 2.05 (C) Copyright by K.Shibata : 2005/06/27");
   color_white;
                                                                       printf("  ***    p");
   color_green;
     printf("\nn                                                                        a");
     printf("\neseEnglishJapaneseEnglishJapanesEnglishJapaneseEnglishJapaneseEnglishJapan\n\n");
   color_white;
end

int  spacedel(void)  /* 余分な空白を削除する。 */
begin     /* global variable: jps[] */
   int ln, sentCk = 0;
   char *psp;
#if defined(USER)
   char *jpsz;
#endif

   ln = strlen(jps);
   if ((ln == 0) || (strcmp(jps," ") == 0) || (strcmp(jps,"  ") == 0))
      sentCk = 1;
   else {
   _  psp = jps + ln - 1;
   _  while (*psp == ' ')
   _    *psp-- = '\0';
   _  ln = strlen(jps);
   _  if (ln == 0 || strcmp(jps," ") == 0)
   _    sentCk = 1;
   _  else {
#if defined(USER)
   _  _  jpsz = jps + ln - 2;
   _  _  if ((! strstr("。？！：、」）”’．０１２３４５６７８９日)",jpsz)) && (ln > 27) && (! strstr(jps,"日時")) && (! strstr(jps,"時間")) && (! strstr(jps,"場所"))) {
   _  _  _  if ( (ln > 13) && strcmp(jps + ln - 6,"の概要") && strcmp(jps + ln - 2,"様") ) {
   _  _  _  _  beeping(15);  /* 上の第３の条件を加えた。2002.10.16 */
   _  _  _  _  color_green;
   _  _  _  _  printf("\n 日本文の末尾が正常に終了していません。\n jps = %s \n\n",jps);
   _  _  _  _  printf("文末は必ず、句点（平叙文）読点（呼びかけ文）、疑問符（疑問文）、感嘆符（感嘆文）、引用符（会話文）、または「日」（日記や手紙の日付）、のいずれかで終了して下さい。\n");
   _  _  _  _  color_white;
   _  _  _  _  printf("  なお、タイトル文等の場合も七文字以上の場合は「。」で終了して下さい。\n");
   _  _  _  _  printf("    日本文を訂正して、翻訳をやり直して下さい。\n");
   _  _  _  _  exit(1);
   _  _  _  }
   _  _  }
#endif
   _  _  psp = jps;
   _  _  while (*psp == ' ')
   _  _     psp++;
   _  _  if (psp > jps) {
   _  _  _  ptptcut(jps,psp - 1);
   _  _  _  ln = strlen(jps);
   _  _  }
   _  _  if (ln == 0 || strcmp(jps," ") == 0)
   _  _     sentCk = 1;
   _  _  else {
   _  _  _  psp = strstr(jps,"  ");
   _  _  _  while (psp) {
   _  _  _  _  ptcut(psp,1);
   _  _  _  _  psp = strstr(jps,"  ");
   _  _  _  }
   _  _  _  puts("\n");
   _  _  _  puts("　現在、下の日本文を翻訳中です。");
   _  _  _  puts(" ");
   _  _  _  printf("　［原文］　");
   _  _  _  color_yellow;
   _  _  _  printf("%s \n",jps);
   _  _  _  color_white;
   _  _  _  if (Dbg2 == 'Y') {
   _  _  _  _  fprintf(dbgfl_pt,"\n\n\n");
   _  _  _  _  fprintf(dbgfl_pt,"　現在、下の日本文を翻訳中です。\n");
   _  _  _  _  fprintf(dbgfl_pt," %s \n",jps);
   _  _  _  }
   _  _  }
   _  }
   }
   return(sentCk);
end

void predit(char wdh[], char wdp[])
/*  *****  原文のプレエディット（区切り記号の処理など） ***** */
begin /* global variables: wc, jps[], pwd[], shpfg, wd[], SERRNB */
   int ln;
   char commt[SentLen], *pt;

   strcpy(wdh,jps);
   ln = strlen(wdh);
   pt = strstr(wdh,"  ");
   while (pt) {
   _  ptcut(pt,1);
   _  pt = strstr(wdh,"  ");
   }
   pt = strstr(wdh," ");
   if ( pt && (! strchr(pt + 1,' ')) && (strlen(pt)%2 == 1) )
      ptinsert(pt," ");
   ln = strlen(wdh);
   if (ln > JSentLen - 2) {
   _  beeping(10);
   _  printf("\n\n 入力された日本語文が長すぎます。原文の長さ =  %d \n",ln);
   _  strcpy(commt,wdh + 150);
   _  *(wdh + 150) = '\0';
   _  printf("%s%s\n",wdh,commt);
   _  exit(1);
   } 
   kutoutenCk(wdh); /*「 ．」「，」を「。」「、」に直す。*/
   if (! SERR) {
   _  wc = -1;
   _  pwd[0] = shpfg = *wdp = '\0';
   _  if (ln >= 4) {
   _  _  ptcpy(jwd,wdh,wdh + 4);   /* 原文中の先頭倍角２文字を jwd[] として切り出す。 */
   _  _  if ((strcmp(jwd + 2,"「") == 0) && (strcmp(wdh + ln - 2,"」") == 0)) {
   _  _  _  *(jwd + 2) = '\0';
   _  _  _  *(wdh + ln - 2) = '\0';
   _  _  _  ln -= 2;
   _  _  _  ptreplace(wdh + 2,2,"：");
   _  _  }
   _  }
   _  else
   _     strcpy(jwd,wdh);
   _  SERRNB = -5;   /* ただし、日本文はベタ書きなので、特別な工夫が必要。*/
   }
end


static void kutoutenCk(char wdh[])   /*「 ．」「，」を「。」「、」に直す。*/
begin
   char *pt, mae[3];
   unsigned int lnparity, lnpt;
   
   pt = strstr(wdh,"．");
   while ( pt && (strlen(pt)%2 == 0) ) {
   _  if ( (wdh  + 1 < pt)  && (strlen(pt)%2 == 0) ) {
   _  _  ptcpy(mae,pt - 2,pt);
   _  _  if ( (! strstr("０１２３４５６７８９．",mae)) && ((pt + 2) != strstr(pt + 2,"．")) )
   _  _     ptreplace(pt,2,"。");
   _  }
   _  pt = strstr(pt + 2,"．");
   }
   pt = strstr(wdh,"，");
   while ( pt && (strlen(pt)%2 == 0) ) {
     lnpt = strlen (pt);
     lnparity = lnpt % 2;
   _  if ( (wdh  + 1 < pt) && (strlen(pt)%2 == 0) ) {
   _  _  ptcpy(mae,pt - 2,pt);
   _  _  if (! strstr("０１２３４５６７８９",mae))
   _  _     ptreplace(pt,2,"、");
   _  }
   _  pt = strstr(pt + 2,"，");
   }
end
