Develop and Download Open Source Software

Browse CVS Repository

Diff of /gikonavigoeson/gikonavi/AbonUnit.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.2 by h677, Tue Aug 12 14:13:53 2003 UTC revision 1.3 by h677, Wed Aug 13 05:06:20 2003 UTC
# Line 14  type Line 14  type
14      FAbonString : String;      FAbonString : String;
15      FRetStrings : TStringList;      FRetStrings : TStringList;
16      FCutoffNum : Integer; //この数以上連続する同じ英字をNGワードとする      FCutoffNum : Integer; //この数以上連続する同じ英字をNGワードとする
17        FDeleterlo : Boolean; //&rlo;を削るか
18        FReplaceul :Boolean ; //<ul>タグを<br>タグに置換するか
19        FReverse : Boolean ;  //NGワードでのあぼ〜んの結果を反転させるか
20        FAbonPopupRes : Boolean; //レスポップアップの時にあぼーんするか
21        FCreateNGwordFile : Boolean; //指定されたpathにNGワードtxtが無かったときに自動的に生成するか
22      procedure SetTokens(index: integer ; argline:String);      procedure SetTokens(index: integer ; argline:String);
23    
24    public    public
25      { Public 宣言 }      { Public 宣言 }
26      constructor Create; // コンストラクタ      constructor Create; // コンストラクタ
27      destructor Destroy; override; // デストラクタ      destructor Destroy; override; // デストラクタ
28        property Deleterlo: Boolean read FDeleterlo write FDeleterlo  default false;
29        property Replaceul: Boolean read FReplaceul write FReplaceul  default false;
30        property Reverse: Boolean read FReverse write FReverse  default false;
31        property CreateNGwordFile: Boolean read FCreateNGwordFile write FCreateNGwordFile  default true;
32        property AbonString : String read FAbonString write FAbonString;
33        property  AbonPopupRes : Boolean read FAbonPopupRes write FAbonPopupRes default false;
34      procedure Setroot(root :String);      procedure Setroot(root :String);
35      function Getroot() : String;      function Getroot() : String;
36      procedure SetNGwordpath(path :String);      procedure SetNGwordpath(path :String);
# Line 29  type Line 39  type
39      function GetCutoffNum() : Integer;      function GetCutoffNum() : Integer;
40      function LoadFromNGwordFile(path :String) : Boolean;      function LoadFromNGwordFile(path :String) : Boolean;
41      function ReLoadFromNGwordFile() : Boolean;      function ReLoadFromNGwordFile() : Boolean;
42        function CheckAbonPopupRes(line : String) :Boolean;
43      function FindNGwords(line : String) : Boolean; //1ラインずつ用。      function FindNGwords(line : String) : Boolean; //1ラインずつ用。
44      function Cutoff(line : String) : String; //CutOff値以上個の同じ英数が並んでいたらtrue      function Cutoff(line : String) : Boolean; //CutOff値以上個の同じ英数が並んでいたらtrue
45      //あぼ〜んの時についでに&rlo;をさくる、<ul>タグを<br>タグに置換するか、末尾のブール値はtrueだと、NGワードを含むものだけを返す。      //あぼ〜ん処理
46      function Execute(DestStrings : TStringList; deleterlo : Boolean; replaceul :Boolean ; reverse : Boolean) : TStringList; overload;      function Execute(DestStrings : TStringList) : TStringList; overload;
47      function Execute(DestStrings : TStringList; NGwords : TStringList ; deleterlo : Boolean; replaceul :Boolean ;reverse : Boolean) : TStringList; overload;      function Execute(DestStrings : TStringList; NGwords : TStringList) : TStringList; overload;
48      function Execute(DestStrings : TStringList; NGwords : TStrings ; deleterlo : Boolean; replaceul :Boolean ;reverse : Boolean) : TStringList; overload;      function Execute(DestStrings : TStringList; NGwords : TStrings) : TStringList; overload;
49      //--      //--
50      function ExecuteFile(datfilepath : String; NGwordpath : String) : Boolean; overload;//DATファイルを直にいじる      function ExecuteFile(datfilepath : String; NGwordpath : String) : Boolean; overload;//DATファイルを直にいじる
51      function ExecuteFile(datfilepath : String; resnum : Integer) : Boolean; overload; //DATファイルを直にいじる      function ExecuteFile(datfilepath : String; resnum : Integer) : Boolean; overload; //DATファイルを直にいじる
# Line 106  begin Line 117  begin
117      bufstl := TStringList.Create;      bufstl := TStringList.Create;
118      try      try
119          bufstl.LoadFromFile(path);          bufstl.LoadFromFile(path);
120            for i := bufstl.Count -1  downto 0 do begin
121                if bufstl.Strings[i] = '' then begin
122                    bufstl.Delete(i);
123                end;
124            end;
125          SetLength(Ftokens,bufstl.Count);          SetLength(Ftokens,bufstl.Count);
126          for i := 0  to bufstl.Count -1 do begin          for i := 0  to bufstl.Count -1 do begin
127              SetTokens(i , bufstl.Strings[i]);              SetTokens(i , bufstl.Strings[i]);
128          end;          end;
129    
130      except      except
131            if CreateNGwordFile = true then begin
132                bufstl.LoadFromFile(path);
133            end;
134          bufstl.Free;          bufstl.Free;
135          Result := false;          Result := false;
136          Exit;          Exit;
# Line 149  begin Line 168  begin
168  end;  end;
169  procedure TAbon.SetCutoffNum(value : Integer);  procedure TAbon.SetCutoffNum(value : Integer);
170  begin  begin
171      if value > 2 then begin      if value > 0 then begin
172          FCutoffNum := value;          FCutoffNum := value;
173      end else begin      end else begin
174          FCutoffNum := 0;          FCutoffNum := 0;
# Line 202  begin Line 221  begin
221      Result := hit;      Result := hit;
222    
223  end;  end;
224  //CutOff値以上個の同じ英数が並んでいたらあぼ〜ん  //CutOff値以上個の同じ英数が並んでいたらtrue
225  function TAbon.Cutoff(line : String) : String;  function TAbon.Cutoff(line : String) : Boolean;
226  var  var
227      i : Integer;      i : Integer;
228      sheed : AnsiChar;      sheed : AnsiChar;
229      buf : String;      buf : String;
230      ret : String;      ret : Bool;
231  begin  begin
232      ret := line;      ret := false;
233      if FCutoffNum <> 0 then begin      if FCutoffNum <> 0 then begin
234          for i := 65 to 90 do begin          for i := 65 to 90 do begin
235              sheed := Chr(i);              sheed := Chr(i);
236              buf := DupeString(sheed, FCutoffNum);              buf := DupeString(sheed, FCutoffNum);
237              if AnsiContainsText(line, buf) = true then begin              if AnsiContainsText(line, buf) = true then begin
238                  ret := FAbonString;                  ret := true;
239                  break;                  break;
240              end;              end;
241          end;          end;
# Line 224  begin Line 243  begin
243      Result := ret;      Result := ret;
244  end;  end;
245  //末尾のブール値はtrueだと、NGワードを含むものだけを返す。  //末尾のブール値はtrueだと、NGワードを含むものだけを返す。
246  function TAbon.Execute(DestStrings : TStringList; deleterlo : Boolean; replaceul :Boolean ;reverse : Boolean) : TStringList;  function TAbon.Execute(DestStrings : TStringList) : TStringList;
247  var  var
248      i : Integer;      i : Integer;
249      bufline : String;      bufline : String;
250  begin  begin
251      FRetStrings.Clear;      FRetStrings.Clear;
252    
253      if reverse = false then begin      if Reverse = false then begin
254          for i:=0 to DestStrings.Count - 1 do begin          for i:=0 to DestStrings.Count - 1 do begin
255              if FindNGwords(DestStrings.Strings[i]) = true  then begin              if FindNGwords(DestStrings.Strings[i]) = true  then begin
256                  FRetStrings.Append(FAbonString);                  FRetStrings.Append(FAbonString);
257              end else begin              end else begin
258                  bufline := DestStrings.Strings[i];                  bufline := DestStrings.Strings[i];
259                  if deleterlo = true then begin                  if Deleterlo = true then begin
260                      bufline := AnsiReplaceText( bufline,'&rlo;','' );                      bufline := AnsiReplaceText( bufline,'&rlo;','' );
261                  end;                  end;
262                  if replaceul = true then begin                  if Replaceul = true then begin
263                       bufline := AnsiReplaceText( bufline,'<ul>','<br>' );                       bufline := AnsiReplaceText( bufline,'<ul>','<br>' );
264                       bufline := AnsiReplaceText( bufline,'</ul>','<br>' );                       bufline := AnsiReplaceText( bufline,'</ul>','<br>' );
265                  end;                  end;
# Line 253  begin Line 272  begin
272                  FRetStrings.Append(FAbonString);                  FRetStrings.Append(FAbonString);
273              end else begin              end else begin
274                  bufline := DestStrings.Strings[i];                  bufline := DestStrings.Strings[i];
275                  if deleterlo = true then begin                  if Deleterlo = true then begin
276                      while  AnsiPos('&rlo',bufline) <> 0 do begin                      while  AnsiPos('&rlo',bufline) <> 0 do begin
277                          Delete(bufline,AnsiPos('&rlo',bufline),4);                          Delete(bufline,AnsiPos('&rlo',bufline),4);
278                      end;                      end;
279                  end;                  end;
280                  if replaceul = true then begin                  if Replaceul = true then begin
281                       bufline := AnsiReplaceText( bufline,'<ul>','<br>' );                       bufline := AnsiReplaceText( bufline,'<ul>','<br>' );
282                       bufline := AnsiReplaceText( bufline,'</ul>','<br>' );                       bufline := AnsiReplaceText( bufline,'</ul>','<br>' );
283                  end;                  end;
# Line 270  begin Line 289  begin
289      Result := FRetStrings;      Result := FRetStrings;
290    
291  end;  end;
292  function TAbon.Execute(DestStrings : TStringList; NGwords : TStringList ; deleterlo : Boolean; replaceul :Boolean ; reverse : Boolean) : TStringList;  function TAbon.Execute(DestStrings : TStringList; NGwords : TStringList) : TStringList;
293  var  var
294      i : Integer;      i : Integer;
295  begin  begin
# Line 278  begin Line 297  begin
297      for i := 0  to NGwords.Count -1 do begin      for i := 0  to NGwords.Count -1 do begin
298          SetTokens(i , NGwords.Strings[i]);          SetTokens(i , NGwords.Strings[i]);
299      end;      end;
300      Result := Execute(DestStrings,deleterlo,replaceul,reverse);      Result := Execute(DestStrings);
301    
302  end;  end;
303  function TAbon.Execute(DestStrings : TStringList; NGwords : TStrings ; deleterlo : Boolean; replaceul :Boolean ;reverse : Boolean) : TStringList;  function TAbon.Execute(DestStrings : TStringList; NGwords : TStrings) : TStringList;
304  var  var
305      i : Integer;      i : Integer;
306      buf : TStringList;      buf : TStringList;
# Line 292  begin Line 311  begin
311      for i := 0  to buf.Count -1 do begin      for i := 0  to buf.Count -1 do begin
312          SetTokens(i , buf.Strings[i]);          SetTokens(i , buf.Strings[i]);
313      end;      end;
314      Result := Execute(DestStrings,deleterlo,replaceul,reverse);      Result := Execute(DestStrings);
315      buf.Free;      buf.Free;
316  end;  end;
317    
# Line 493  procedure TAbon.EditNGwords(); Line 512  procedure TAbon.EditNGwords();
512  begin  begin
513      ShellExecute(0 ,nil,PChar(FNGwordpath),nil,nil,SW_SHOW);      ShellExecute(0 ,nil,PChar(FNGwordpath),nil,nil,SW_SHOW);
514  end;  end;
515    function TAbon.CheckAbonPopupRes(line : String) :Boolean;
516    var
517        i : Integer;
518    begin
519        if FCutoffNum  = 0 then begin
520            if AbonPopupRes = true then begin
521                Result := FindNGwords(line);
522            end else begin
523                Result := false;
524            end;
525        end else begin
526            if AbonPopupRes = true then begin
527                Result := FindNGwords(line);
528                if Result = false then begin
529                    for i := 0 to 2 do begin
530                        Delete(line,1,Ansipos('<>',line)+1);
531                    end;
532                    Delete(line,Ansipos('<>',line),Length(line)-Ansipos('<>',line)+1);
533                    Result := Cutoff(line);
534                end;
535            end else begin
536                Result := false;
537            end;
538        end;
539    end;
540    
541    
542  end.  end.

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26