Syntax-Highlighting


Halleluja, WordPress hat sein Syntaxhighlighting-Plugin geupdated und Scala kann jetzt endlich als Scala formatiert werden. Ein kleiner Test:

//Wie bisher als Java formatiert
object SwapSorter {

    def sort[T <% Ordered[T]](sortMe: List[T]):List[T] = sortMe match {
        case Nil => Nil
        case head :: tail =>
            val smaller = tail.filter(head > _).length
            if (smaller > 0) {
                val (h1 :: t1, h2 :: t2) = sortMe.splitAt(smaller)
                sort(h2 :: t1 ::: h1 :: t2)
            } else head :: sort(tail)
    }

    def main(args: Array[String]) {
        val a = List(3, 7, 45, 1, 33, 5, 2, 9)
        println("unsorted: " + a.mkString(" "))
        println("sorted: " + sort(a).mkString(" "))
    }
}
//Und jetzt als Scala formatiert
object SwapSorter {

    def sort[T <% Ordered[T]](sortMe: List[T]):List[T] = sortMe match {
        case Nil => Nil
        case head :: tail =>
            val smaller = tail.filter(head > _).length
            if (smaller > 0) {
                val (h1 :: t1, h2 :: t2) = sortMe.splitAt(smaller)
                sort(h2 :: t1 ::: h1 :: t2)
            } else head :: sort(tail)
    }

    def main(args: Array[String]) {
        val a = List(3, 7, 45, 1, 33, 5, 2, 9)
        println("unsorted: " + a.mkString(" "))
        println("sorted: " + sort(a).mkString(" "))
    }
}

Wie man sieht ist die Formatierung noch nicht perfekt. So scheinen Bezeichner mit Zahlen (wie h1) nicht hinzuhauen. Aber ein Anfang ist gemacht, z.B. werden im obigen Sourcecode alle Schlüsselwörter erkannt. Dafür von mir ein herzliches Dankeschön an WordPress!

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s