[All]
GetPublishedにおける自動的な構文強調表示
By: Tomohiro Takahashi
Abstract: GetPublishedは、記事中のソースコードに対する自動的な構文強調表示をサポートしました。
自動的な構文強調表示
デベロッパーネットワークの記事は通常、技術的なもので、ソースコードを含んでいます。デベロッパーネットワークのコンテンツ管理システム「GetPublished」は、YAPPを利用した自動的な構文強調表示をサポートしました。
YAPP (Yet Another Pretty Printer)は、ソースコードの構文強調表示を行うもので、John Kasterにより書かれました。YAPPのWin32版のオリジナルバージョンの実行形式はCodeCentralにあります。YAPPはWebサービスとしても利用可能です。
記事にソースコードを含める
ソースコードは <pre class="sourcecode">(HTML記事用) でタグ付けするか、デベロッパーネットワーク用のWordのテンプレートに含まれるコードの書式を設定すべきです。埋め込んだソースコードを構文強調表示させるには、コードの言語も指定しなければなりません。

|
新機能: YAPPはPHPとRubyの構文強調表示もサポートしました。PHPとRubyのサポートはまだ実験的なものです。 |
|
|
Wordでコードの言語を指定する
Wordのテンプレートは、YAPPがサポートする言語に対応した複数のソースコードの書式を含んでいます。
- C# Code
- C++ Code
- Delphi Code
- Java Code
- JavaScript Code
- PHP Code (beta)
- Ruby Code (beta)
- SQL Code
- DFM Code
- OMG IDL Code
- MS IDL Code
- Xbase Code
あなたが記述した言語が未サポートの場合には、書式として汎用的な「SourceCode」を使用できます。
例えば、次のコードは「Delphi Code」の書式に設定されています。
class procedure WebUtils.RequireSSL;
var
redir: string;
begin
if (HttpContext.Current.Request.ServerVariables['HTTPS'] = 'off') then
begin
redir := 'https://' + HttpContext.Current.Request.ServerVariables['SERVER_NAME']
+ HttpContext.Current.Request.RawUrl;
HttpContext.Current.Response.Redirect(redir, True);
end;
end;
HTMLでコードの言語を指定する
HTML文書中のソースコードは、preタグのclass属性に「sourcecode」を設定してタグ付けされます。このlanguage属性を使用して、コードの言語を指定できます。
<pre class="sourcecode" language="csharp">
using System;
using System.IO;
class Test
{
public static void Main()
{
// Create an instance of StreamWriter to write text to a file.
// The using statement also closes the StreamWriter.
using (StreamWriter sw = new StreamWriter("TestFile.txt"))
{
// Add some text to the file.
sw.Write("This is the ");
sw.WriteLine("header for the file.");
sw.WriteLine("-------------------");
// Arbitrary objects can also be written to the file.
sw.Write("The date is: ");
sw.WriteLine(DateTime.Now);
}
}
}
</pre>
上のHTMLの断片は、C#の構文を使用して自動的に構文強調表示されます。
using System;
using System.IO;
class Test
{
public static void Main()
{
using (StreamWriter sw = new StreamWriter("TestFile.txt"))
{
sw.Write("This is the ");
sw.WriteLine("header for the file.");
sw.WriteLine("-------------------");
sw.Write("The date is: ");
sw.WriteLine(DateTime.Now);
}
}
}
language属性として認識されるのは以下の値です。
言語 |
属性値 |
Delphi |
delphi |
C# |
csharp |
C/C++ |
Cpp |
Java |
Java |
JavaScript |
javascript |
PHP |
php |
Ruby |
ruby |
SQL |
sql |
DFM |
dfm |
xBase |
xbase |
OMG IDL |
omgidl |
MS IDL |
msidl |
|
|
コードブロックの書式
GetPublishedの自動的な構文強調表示は、ソースコードブロック内にあるあらゆる既存の書式をオーバーライドします。もちろん、もし指定したコードの言語をGetPublishedが認識できない場合には、既存の書式はそのままです。
言語によるフィルタリング
ソースコードの言語を指定するもう1つのメリットは、言語によりフィルタリングが可能になることです。ある記事が複数言語のサンプルコードを含んでいる場合、ページの上部にある言語フィルターボタンをクリックして、表示される言語をフィルタリングできます。


|
新機能:記事中のサンプルコードをフィルタリングできます。 |
|
|
この一覧で何か言語をクリックすると、その他の言語のコードは隠されます(language属性の無いコードは常に表示されます)。利用可能な全ての言語を見るには、「Show All」をクリックします。
Connect with Us