はてなブログ開発ブログ

はてなブログからの公式のお知らせを発信します。

はてな記法とMarkdownのシンタックス・ハイライトで、Swift言語に対応しました

はてなブログでは、ソースコードなどを構文(シンタックス)に応じて色付け(ハイライト)表示する シンタックス・ハイライト において、新しくプログラミング言語 Swift に対応しました。どうぞご利用ください。

※Swiftは、Appleが公開したiOSおよびOS X用のプログラミング言語で、iPhoneアプリ開発などに利用されます。
Swift - Overview - Apple Developer

シンタックス・ハイライトとは

シンタックス・ハイライトは、編集画面が「はてな記法」モードおよび「Markdown」モードのときに利用できます。はてな記法のスーパーpre記法や、Markdownのコードブロックにおいて、記述したコードがどの構文かをファイルタイプで指示します。

はてな記法でシンタックス・ハイライトを利用する

はてな記法では、スーパーpre記法で先頭の>||の2本のパイプ(||)の間にファイルタイプを指定します。Swiftでは次のように記述します。

>|swift|

...ソースコードを記述する...

||<

Markdownでシンタックスハイライトを利用する

バッククオート(`)を3つ続けた```で囲まれたコードブロックにおいて、先頭のバッククォートの最後にファイルタイプを指定します。Swiftでは次のように記述します。

```swift

...ソースコードを記述する...

```

表示例

シンタックス・ハイライトで表示したSwiftによるFizzBuzzプラグラムです。構文に応じて見やすく色付けされています。

// FizzBuzz by Enum
enum FizzBuzz {
    case Fizz, Buzz, FizzBuzz, Other(Int)
    
    var state: String {
        switch self {
        case .Fizz:         return "Fizz"
        case .Buzz:         return "Buzz"
        case .FizzBuzz:     return "FizzBuzz"
        case .Other(let i): return "\(i)"
        }
    }
}

func judge(i: Int) -> FizzBuzz {
    switch (i % 3, i % 5) {
    case (0, 0): return .FizzBuzz
    case (0, _): return .Fizz
    case (_, 0): return .Buzz
    default:     return .Other(i)
    }
}

func generate(to: Int) -> [FizzBuzz] {
    switch to {
    case 1:  return [judge(to)]
    default: return generate(to - 1) + [judge(to)]
    }
}

generate(15).map { println($0.state) }

// FizzBuzz by extension of Int
extension Int {
    var fizzBuzz: String {
        switch (self % 3, self % 5) {
        case (0, 0): return "FizzBuzz"
        case (0, _): return "Fizz"
        case (_, 0): return "Buzz"
        default:     return "\(self)"
        }
    }
}

func gen(x: Int) -> [String] {
    switch x {
    case 1: return [x.fizzBuzz]
    default: return gen(x - 1) + [x.fizzBuzz]
    }
}

println(gen(15))

関連項目

はてなブログのシンタックス・ハイライトでは、このほかC、Perl、Python、Ruby、Go……など、現時点で543の構文に対応しています。詳細は次のヘルプを参照してください。

関連記事

はてなダイアリー・はてなグループでは

シンタックス・ハイライトは、はてなダイアリー・はてなグループでも利用できますが、対応している構文が異なります。詳細は次のヘルプを参照してください。