kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

stripMarginの歴史

ScalaのString(正確にはStringOps)にはstripMarginというメソッドがあります。これは、主に複数行文字列に使われる機能で、たとえば、

"""|class Hello {
   |  
   |}""".stripMargin

のようにすると、

res0: String =
class Hello {

}

という文字列が得られ、行頭のスペースを除きたい場合に非常に便利な機能です。この機能、どうやらGroovyにもあるらしく、名前もまんまstripMarginです。さて、これ、GroovyがScalaのそれにインスパイアされたのか、それとも逆なのか調べていたところ、Groovyの過去のIssueにstripMargin()を追加するというものがあり、

[GROOVY-3349] Add stripMargin() to multi-line strings - ASF JIRA

どうやらScalaのstripMargin()が先のようです。他には、npmのstripmarginがありますが、これは、

A helper for strip string's margin like scala

なので、元がScalaということのようです。Kotlinにはメソッド名を微妙に変えた trimMargin

kotlinlang.org

というメソッドがありますが、登場年代からしても、おそらくScalaの影響を受けたものでしょう。他にも類似メソッドがあるかもしれませんが、とりあえずこんなところで。