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のテンプレートに含まれるコードの書式を設定すべきです。埋め込んだソースコードを構文強調表示させるには、コードの言語も指定しなければなりません。

03000001

新機能: 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() 
    {
        // 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);
        }
    }
}

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つのメリットは、言語によりフィルタリングが可能になることです。ある記事が複数言語のサンプルコードを含んでいる場合、ページの上部にある言語フィルターボタンをクリックして、表示される言語をフィルタリングできます。

Hide image
03000002

03000001

新機能:記事中のサンプルコードをフィルタリングできます。

この一覧で何か言語をクリックすると、その他の言語のコードは隠されます(language属性の無いコードは常に表示されます)。利用可能な全ての言語を見るには、「Show All」をクリックします。

Server Response from: ETNASC03