(for Internet Explorer)
/MultiText/Target
@path
処理対象のパス。複数可能。
処理対象のパス。 関連
/MultiText/EnabledTemplateIDs
現在使われている(変換後の)テンプレートのアドレス。
複数指定するときは、複数行記述してください。
@type
"Lines" を指定してください。
text()
/MultiText/ReplaceTemplateID_From
→ Samples\ReplaceTemplate フォルダー
サンプル
${ } 変数、テキストファイルのテンプレート
ReplaceTemplate タグを記述するファイルです。 ファイル名は、ReplaceTemplate.xml とは限りません。
ReplaceTemplate.xml は、
詳細
/MultiText/ReplaceTemplate
@before
@after
置き換える前のテキストがある Text タグの URL
置き換えた後のテキストがある Text タグの URL
/MultiText/Text
置き換える前または後のテンプレート
の 
<?xml version="1.0" encoding="UTF-16"?>
<MultiText>
<ReplaceTemplate  before="#Before"  after="#After"/>

<Text id="Before"><![CDATA[
/* Function: ${FunctionName} */
]]></Text>

<Text id="After"><![CDATA[
/* Func: ${FunctionName} */
]]></Text>

</MultiText>
サンプル
/* Function: … */ を /* Func: … */ に置き換える設定
${ } 変数で置き換える前の内容を置き換えた後にコピーできます。
text()
インデント、改行コード
@id
@cut_indent
@indent
テンプレートに記述できる ---- 形式のコメント
値の末尾が "_Keyword" のとき
text()
置き換える前のテンプレートのアドレス。
/MultiText/ReplaceTemplateID_To
置き換えた後のテンプレートのアドレス。
text()
Dim  ReplaceTemplateClass::IsPause as boolean
ユーザーへの確認を行うかどうか。
を呼び出したとき、置き換え内容を
たとえば、False に設定すると、
ユーザーに要求しなくなります。
→ SyncFilesMenuLib.vbs
ソース
Sub  ReplaceTemplateClass::EchoOld()
現在使われているテンプレートと合っていない(古い)テンプレートの場所を表示します。
以下の場所にあるテキスト ファイルの一部がテンプレートがマッチしませんでした。
下記のパスの末尾にある番号は、テンプレートの中のキーワードがある行番号です。
vbslib Prompt.vbs の OpenByStepPath コマンドで開くことができます。
基準パス:"C:\Folder"
GetDifference コマンドでテンプレートの中のマッチしなかった行の行番号が表示されま
す。
-------------------------------------------------------------------------------
Target\a.txt(2)
Target\a.txt(13)
-------------------------------------------------------------------------------
サンプル
EchoOld 実行時の表示内容
関連
設定してください。

そのテンプレートを囲むタグの id 属性( /MultiText/Text/@id ) と
/MultiText/EnabledTemplateIDs/text() の ID が同じになるように ID を設定してください。
ただし、 /MultiText/EnabledTemplateIDs/text() の各行の先頭には # を記述してください。
# を記述することは、HTML の A href 属性と同じ仕様です。
/MultiText/EnabledTemplateIDs/text() に複数行のテキストを指定すると、複数の
テンプレートについて処理を行います。

テンプレートが id="A" にあるとき(/MultiText/Text[@id='A']/text() にあるとき)、
_Keyword を末尾に追加した id 属性のテキスト (/MultiText/Text[@id='A_Keyword ']/text() )
にテンプレートの中の1行にヒットする正規表現を設定してください。
上記テンプレートを ReplaceTemplate.xml の一部に設定する内容の例
<EnabledTemplateIDs type="Lines">
#vbslib_copyright
</EnabledTemplateIDs>

<Text id="vbslib_copyright_Keyword"><![CDATA[
vbslib is provided under
]]></Text><Text id="vbslib_copyright"><![CDATA[
'* vbslib is provided under 3-clause BSD license.
'* Copyright (C) Sofrware Design Gallery "Sage Plaisir 21" All Rights Reserved.
]]></Text>
参考
'* vbslib is provided under 3-clause BSD license.
'* Copyright (C) Sofrware Design Gallery "Sage Plaisir 21" All Rights Reserved.
テンプレートの例
の /MultiText/Text/text() に、現在使われているテンプレートを
GetDifference コマンド
OpenByStepPath コマンド
→ SyncFilesMenuLib.vbs
ソース
Sub  ReplaceTemplateClass::RunGetDifference()
現在使われているテンプレートと合っていない(古い)テンプレートの中の場所を表示します。
Enterのみ:"Target\a.txt"
調べるファイルのパス >
以下の場所にあるテンプレートがマッチしませんでした。
-------------------------------------------------------------------------------
Target\a.txt(5)
-------------------------------------------------------------------------------
サンプル
表示内容
調べる対象のファイルの入力を要求されます。
関連
Sub  ReplaceTemplateClass::SetTargetPath( in_Path as string or PathDictionaryClass )
処理対象のファイルやフォルダーのパスを設定します。
【引数】
in_Path
処理対象のファイルやフォルダーのパス
→ SyncFilesMenuLib.vbs
ソース
の /MultiText/Target が設定されていないときは、本関数で設定する必要が
あります。
→ SyncFilesMenuLib.vbs
ソース
Sub  ReplaceTemplateClass::RunReplace()
テンプレートを置き換えます。
以下の場所にあるファイルの中にあるテンプレートを置き換えます
編集するフォルダー = Target
ReplaceTemplateID_From = #vbslib_copyright_old
ReplaceTemplateID_To = #vbslib_copyright
続行するには Enter キーを押してください . . .
-------------------------------------------------------------------------------
>ReplaceStringTemplate  "Target", "\* Function:"
Target\a.txt
サンプル
表示内容
実行するかどうかの確認を要求されます。
参考
上記テンプレートを ReplaceTemplate.xml の一部に設定する内容の例
<ReplaceTemplateID_From>#vbslib_copyright_old</ReplaceTemplateID_From>
<ReplaceTemplateID_To  >#vbslib_copyright</ReplaceTemplateID_To>

<Text id="vbslib_copyright_old_Keyword"><![CDATA[
vbslib is provided under
]]></Text><Text id="vbslib_copyright_old"><![CDATA[
'* vbslib is provided under 3-clause BSD license.
'* Copyright (C) "Sage Plaisir 21" All Rights Reserved.
]]></Text>

<Text id="vbslib_copyright_Keyword"><![CDATA[
vbslib is provided under
]]></Text><Text id="vbslib_copyright"><![CDATA[
'* vbslib is provided under 3-clause BSD license.
'* Copyright (C) Sofrware Design Gallery "Sage Plaisir 21" All Rights Reserved.
]]></Text>
'* vbslib is provided under 3-clause BSD license.
'* Copyright (C) Sofrware Design Gallery "Sage Plaisir 21" All Rights Reserved.
置き換えた後のテンプレートの例
置き換える前のテンプレートの例
'* vbslib is provided under 3-clause BSD license.
'* Copyright (C) "Sage Plaisir 21" All Rights Reserved.
してください。 別の /MultiText/Text/text() に、置き換えた後のテンプレートを設定して
ください。

置き換える前のテンプレートを囲むタグの id 属性( /MultiText/Text/@id ) と
/MultiText/ReplaceTemplateID_From/text() の ID が同じになるように ID を設定してください。
置き換えた後のテンプレートを囲むタグの id 属性( /MultiText/Text/@id ) と
/MultiText/ReplaceTemplateID_To/text() の ID が同じになるように ID を設定してください。
ただし、 /MultiText/ReplaceTemplateID_From/text() の先頭と
/MultiText/ReplaceTemplateID_To/text() の先頭には # を記述してください。
# を記述することは、HTML の A href 属性と同じ仕様です。

テンプレートが id="A" にあるとき(/MultiText/Text[@id='A']/text() にあるとき)、
_Keyword を末尾に追加した id 属性のテキスト (/MultiText/Text[@id='A_Keyword ']/text() )
にテンプレートの中の1行にヒットする正規表現を設定してください。
の /MultiText/Text/text() に、置き換える前のテンプレートを設定
    Set rep = StartReplace( "a.txt", "a.txt.updating", True )
    Do Until rep.r.AtEndOfStream
        SplitLineAndCRLF  rep.r.ReadLine(), line, cr_lf  '// Set "line", "cr_lf"

        line = Replace( line, "Value=0", "Value=1" )
        rep.w.WriteLine  line + cr_lf
    Loop
    rep.Finish
    SafeFileUpdateEx  "a.txt.updating",  "a.txt",  Empty
    Set rep = StartReplace( "a.txt", GetTempPath("*.txt"), False )
    Do Until rep.r.AtEndOfStream
        SplitLineAndCRLF  rep.r.ReadLine(), line, cr_lf  '// Set "line", "cr_lf"

        line = Replace( line, "Value=0", "Value=1" )
        rep.w.WriteLine  line + cr_lf
    Loop
    rep.Finish
(src)
Function  StartReplace( SrcPath as string, TmpDstPath as string, IsDstWillBeExist as boolean )
             as StartReplaceObj
ファイルの一部を行単位で置き換える準備をします。
【引数】
SrcPath
TmpDstPath
置き換えようとするファイル
一時ファイルのパス、または置き換えた後のパス
TmpDstPath が置き換えた後のパスかどうか
IsDstWillBeExist
StartReplace を呼び出すと、SrcPath と TmpDstPath のファイルを開きます。
返り値を使って、ファイルにアクセスできます。(下記サンプルを参照)
返り値
コンテキスト
関連
→ T_Replace.vbs # [T_StartReplace]
テスト
改行文字コードは、SrcPath に記述されているものが、そのまま継承されます。 ただし、
が使える環境である必要があります。 (通常、使えます)
また、rep.r 「以外」のファイルから rep.w にライトするときは、リードするファイルを開くときに、
ReadLine で取得できる行の末尾には、vbCRLF または vbLF が付きます。
その他のサンプル
IsDstWillBeExist に g_VBS_Lib.DstIsBackUp を指定すると、TmpDstPath にバックアップを作成し、
SrcPath 置き換えた後の内容が入ります。
IsDstWillBeExist = False のときは、返り値の Finish メソッドを呼び出すと、全てのファイルを閉じ、
TmpDstPath から SrcPath へ、ファイルコピーを行い、TmpDstPath を削除します。
WriteLine で行を出力するときは、ReadLine で取得した改行文字を付けてください。
を使えば、改行文字を分けることができます。
関連
( g_VBS_Lib.KeepLineSeparators ) が必要です。
は、改行文字コードを明示的に指定する
ことができます。
重要なファイルを上書き更新するときは、StartReplace の TmpDstPath 引数に一時的に
出力するパスを指定し、その一時ファイルを作成した後(ファイルを閉じた後)で、
を呼び出してください。 ただし、内部で2〜3回のファイルコピーを行います。
テキストファイルの一部を置き換えるインターフェース
取得
置き換えようとするファイルのストリーム
一時ファイル、または置き換えた後のファイルのストリーム
Finish
正常に完了したら呼び出す必要がある関数
Class_Terminate
デストラクタ。 Finish または ExitFinish が呼ばれなかったら警告します
ExitFinish  Empty
置き換えをキャンセルします。
Sub  ReplaceTextFile( SrcPath as string, TmpDstPath as string,
       bDstWillBeExist as boolean, ReplaceList as ReplaceItem, Opt as variant )
ファイルの一部を置き換えます。
【引数】
SrcPath
TmpDstPath
置き換えようとするファイル
一時ファイルのパス、または置き換えた後のパス
TmpDstPath が置き換えた後のパス=True, 一時パス=False
bDstWillBeExist
ReplaceList
置き換えるテキスト
Opt
Empty を指定してください
  Dim  reps : new_ReplaceItem_array  reps, 1
  reps(0).Src = "%base%" : reps(0).Dst = g_sh.CurrentDirectory
  ReplaceTextFile  "file.txt", GetTempPath("*.txt"), False, reps, Empty
サンプル:
(src)
1
new_ReplaceItem_array については、
Class  ReplaceItem
  Public  Src
  Public  Dst
End Class
%base%
g_sh.CurrentDirectory
file.txt
→ TextFileConvertFormat::Set_
参考
ver4 で、廃止になりました。  OpenForReplace を使ってください。
Sub  Main( Opt, AppKey )
    Dim  c : Set c = g_VBS_Lib
    Dim  path : path = InputPath( "変換するファイル >", c.CheckFileExists or c.UseArgument1 )
    Dim  w_:Set w_=AppKey.NewWritable( path ).Enable()
    Dim  rep, line, cr_lf

    Set rep = StartReplace( path, GetTempPath("Replace_*.txt"), c.DstIsBackUp )
    Do Until rep.r.AtEndOfStream
        SplitLineAndCRLF  rep.r.ReadLine(), line, cr_lf

        line = "> "+ line

        rep.w.WriteLine  line + cr_lf
    Loop
    rep.Finish

    start  GetEditorCmdLine( path )
End Sub
スクリプト・ファイルに処理をするファイルを直接ドラッグ&ドロップしても、スクリプト・ファイルをダブル・
クリックして開いたウィンドウに処理するファイルをドラッグ&ドロップしても処理ができます。
「line = "> "+ line」 の部分を処理内容に書き換えてお使いください。
Sub  main2( Opt, AppKey )
  Dim  exe_name
  Dim  desktop : desktop = g_sh.SpecialFolders( "Desktop" )
  Dim  rep, line

  Dim w_:Set w_=AppKey.NewWritable( desktop ).Enable()

  '//=== Input exe name
  Do
    exe_name = input( "exe name>" )
    If exist( desktop + "\" + exe_name ) Then
      Raise  1, "すでにデスクトップに " + exe_name + " が存在するため、新規作成できません"
    Else
      Exit Do
    End If
  Loop


  '//=== Make output folder
  mkdir  desktop + "\" + exe_name
  copy  g_vbslib_folder + "*", desktop + "\" + exe_name + "\scriptlib"


  '//=== Make exe_name.c
  Set rep = StartReplace( "files\template.c", _
                desktop + "\" + exe_name + "\" + exe_name + ".c", True )
  Do Until rep.r.AtEndOfStream
    line = rep.r.ReadLine()
    line = Replace( line, "Sample", exe_name )
    rep.w.WriteLine  line
  Loop
  rep.Finish


  '//=== Open output folder
  Setting_openFolder  desktop + "\" + exe_name
End Sub
sample_wizard.vbs
wizard
sample_wizard.vbs
files
template.c
デスクトップに、テンプレート・ファイルを少し加工してフォルダを作成します。
exe name>
と表示されるので、入力すると、
_src\Test\vbslib_test\T_Replace\T_Replace_Sample1 にあります。
Function  StartReplace2( SrcPath as string, MidPath as string, Flags as integer,
               TmpDstPath as string, bDstWillBeExist as boolean ) as StartReplaceObj
F_Txt2BinTxt を指定してください(下記)
ファイルの一部を置き換えて、更にフィルタ処理をするための準備をします。
【引数】
SrcPath
TmpDstPath
置き換えようとするファイル
一時ファイルのパス、または置き換えた後のパス
TmpDstPath が置き換えた後のパスかどうか
bDstWillBeExist
返り値
コンテキスト
MidPath
Flags
一時ファイルのパス
StartReplaceObj.w に、Chr(&hFF) から始める行を出力すると、その行はバイナリになり
ます。
→ TextFileConvertFormat::Set_
参考
Sub  PassThroughLineFilters( SrcPath as string, TmpDstPath as string,
       IsDstWillBeExist as boolean, Opt as Empty, FilterArray as array of string )
指定のキーワードを含む行を抽出します。
【引数】
SrcPath
TmpDstPath
置き換えようとするファイル
一時ファイルのパス、または置き換えた後のパス
IsDstWillBeExist
TmpDstPath が置き換えた後のパスかどうか
キーワードの配列
Empty または False (=FilterArray に含まない行を抽出)
FilterArray
Opt
(src)
  PassThroughLineFilters( "a.txt", GetTempPath("*.txt"), False, Empty, _
    Array( "(TRACE)", "(DEBUG)" )
(TRACE) と (DEBUG) を含む行だけにします。
→ T_Replace.vbs # [T_PassThroughLineFilters]
テスト
関連
廃止予定
代わり
Sub  SplitLineAndCRLF( LineAndCRLF as string, out_Line as string, out_CRLF as string )
行の本文と、行末の改行文字を分けます。
【引数】
LineAndCRLF
out_Line
改行文字が末尾に含まれている可能性がある文字列
(出力) 改行文字より前の文字列
ファイル:
vbslib
out_CRLF
(出力) 行末の改行文字
(src)
関連
Function  CutCRLF( Line as string )
改行文字を削除します。
【引数】
Line
返り値
改行文字が削除される文字列
改行文字が削除された文字列
ファイル:
vbslib
(src)
→ T_Replace.vbs # [T_CutCRLF]
テスト
関連
Sub  Translate( TranslatorPath as string, FromLanguage as string, ToLanguage as string )
翻訳ファイルの情報に従って、テキストファイルの一部を翻訳します。
【引数】
TranslatorPath
FromLanguage
翻訳ファイル(*.trans)のパス、または、フォルダーのパス
翻訳前の言語。 通常 "JP"
ToLanguage
翻訳後の言語。 通常 "EN"
→ T_Translate.vbs
テスト
英語に翻訳するときに、英文字以外が残っていたときは、get_ToolsLibConsts().E_NotEnglishChar
エラーが発生します。
参考
ソース
→ ToolsLib.vbs
翻訳ファイル(*.trans) の説明など
TranslatorPath 引数にフォルダーのパスを指定した場合、サブ フォルダーも含めた、拡張子が
.trans のすべての翻訳ファイルから翻訳します。 ある1つの翻訳ファイルから翻訳しても英文字
以外が残っていたときは、すべての翻訳ファイルから翻訳した後でエラーが発生します。
T_Translate1
T_Translate_sth
T_TranslateFolder
関連
スイッチに従って、複数のファイルを編集
Sub  TranslateTest( TranslatorPath as string, FromLanguage as string, ToLanguage as string,
                    OutFolderPath as string )
翻訳ファイルの情報に従って、テキストファイルの一部を翻訳できるかどうかチェックします。
【引数】
TranslatorPath
FromLanguage
翻訳ファイルのパス、または、フォルダーのパス
翻訳前の言語。 通常 "JP"
ToLanguage
翻訳後の言語。 通常 "EN"
OutFolderPath
翻訳後を格納するフォルダーのパス。 または "" = 出力しない
参考
→ T_Translate.vbs
テスト
→ T_Translate.vbs
翻訳ファイル(*.trans) の説明など
関連
EN(英語)に翻訳するときは、翻訳後に Ascii 文字だけ使っているかどうかをチェックします。
Ascii 文字以外の文字があるときは、get_ToolsLibConsts().E_NotEnglishChar エラーになります。
TranslatorPath 引数にフォルダーのパスを指定した場合、サブ フォルダーも含めた、拡張子が
.trans のすべての翻訳ファイルから翻訳できるかどうかチェックします。 ある1つの翻訳ファイル
から翻訳しても英文字以外が残っていたときは、すべての翻訳ファイルから翻訳できるかどうか
チェックした後でエラーが発生します。
翻訳ファイルの内容は上書きされるため注意してください(要 NewWritable)。
翻訳するファイル名と行番号が追記され、行番号の順番でソートされます。
T_TranslateTest
T_TranslateTest_sth
ソース
→ ToolsLib.vbs