同じコードを頻繁に入力する場合は、任意の
GeneXus オブジェクトで
コードスニペットをテンプレートとして再利用すると便利です。コードスニペットを挿入するには、スニペットツールボックスからドラッグ アンド ドロップするか、ショートカットを使用します。
たとえば、
Work With パターンを頻繁に使用しており、そのパターンで自動的に生成される、セキュリティチェック用の次のコードを簡単に再利用したい場合を考えます:
PGetContext.Call(&Context)
IsAuthorized.Call(&PgmName, &IsAuthorized)
If (not &IsAuthorized)
NotAuthorized.Call(&PgmName)
Endif
オブジェクト間でこのコードをコピーして貼り付けて変数を定義する代わりに、
プロシージャーにこのコードを簡単に挿入する方法があります。そのためには、
Call や
For Each コマンド、
For In などの既存の
コードスニペットと同じように、このコードを
コードスニペットとしてカプセル化し、コマンドとして使用します。
コードスニペットを作成するには、次の手順に従います:
GeneXus X Evolution 1 のインストールフォルダには、既定の
コードスニペット用のフォルダ (
<GeneXus のインストールフォルダ>\Snippets) があります。
独自のコードスニペットを作成する一番簡単な方法は、既存のスニペットをコピーして、必要な変更を加えることです。このアプローチを使用します。
既存のコマンドのスニペットのいずれかをコピーして、名前を変更します。この場合は、
Check Security command.snippet という名前にします。
その中身を次のコードに置き換えます:
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>Check Security Sample</Title>
<Shortcut>css</Shortcut>
<Description>Reuses the security checking generated by the Work With Pattern</Description>
<Author>Artech</Author>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
</Header>
<Snippet>
<Declarations>
<Literal Editable="true">
<ID>ContextVariable</ID>
<ToolTip>Context SDT Variable</ToolTip>
<Default>&Context</Default>
<Function>
</Function>
</Literal>
<Literal Editable="true">
<ID>IsAuthorizedVariable</ID>
<ToolTip>IsAuthorized Boolean Variable</ToolTip>
<Default>&IsAuthorized</Default>
<Function>
</Function>
</Literal>
</Declarations>
<Code Language="">
<! [ CDATA [ LoadContext.Call($ContextVariable$)
IsAuthorized.Call(&PgmName, $IsAuthorizedVariable$)
If (not $IsAuthorizedVariable$)
NotAuthorized.Call(&PgmName)
Endif
] ] >
</Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>
次に、上記のコードについて説明します:
- Title タグ、および Shortcut タグと Description タグで指定したテキストは、GeneXus IDE で、コードスニペットのタイトル、およびその使い方を示すことになります。この例では:
- Title タグで指定した Check Security Sample は、スニペットの一覧に表示される、このスニペットのタイトルになります。
- このスニペットの上にマウスポインターを置くと、スニペットの説明 (Description タグで指定) と css というショートカット (Shortcut タグで指定) が示されます。
- Code タグの間にあるのは、挿入するコードのブロックです。この場合は、一番上で示したコードを若干変更して、$ContextVariable$ パラメーターと$IsAuthorizedVariable$ パラメーターを使っています。これらは、実行時に実際の値に置き換えられるリテラルです。
- Declarations タグの間で、これらの変数の既定値を宣言しています。
スニペットファイルを作成したら、目的の
GeneXus オブジェクトに、そのスニペットを登録します。
このためには、
GeneXus オブジェクトの XML ファイルにエントリーを追加します。
GeneXus オブジェクトには、使用可能なスニペットのセクションごとに
config.xml ファイルがあります。
ここでは、
プロシージャーの [ Source ] エレメントの設定ファイル (<GeneXus のインストールフォルダ>\Snippets\Procedure\Procedure\config.xml) に、次のような
Snippet タグを追加します:
<Snippets>
<Category name="Snippets">
<Snippet name="Check Security command"/>
<Snippet name="Call command"/>
......
これで、スニペットの登録完了です。
GeneXus IDE を再起動します。
プロシージャーの [ Source ] エレメントに新しく登録したカスタムのスニペットが使用できることを確認するには、既存の
プロシージャーを開くか、新しいプロシージャーを作成して、スニペットのツールボックスを開きます。新しいスニペットのタイトルの上にマウスポインターを置き、ツールチップが表示されることを確認します。
新しい
Check Security スニペットをドラッグ アンド ドロップするか、ショートカット (
css) を入力して Tab キーを押します。前の手順で指定したコードが挿入されるはずです。
コードが挿入されたら、
&Context 変数と &
IsAuthorized 変数 (上の図の緑色の部分) を作成します。
お疲れ様でした!これで、GeneXus でカスタムの
コードスニペットを使用できるようになりました。
注: GeneXus をアップグレードする場合は、新バージョンをインストールする前に、必ずカスタムの
コードスニペットをバックアップしてください。