|
Scala example source code file (StripMarginInterpolator.scala)
The StripMarginInterpolator.scala Scala example source codepackage scala package reflect package internal package util trait StripMarginInterpolator { def stringContext: StringContext /** * A safe combination of [[scala.collection.immutable.StringLike#stripMargin]] * and [[scala.StringContext#raw]]. * * The margin of each line is defined by whitespace leading up to a '|' character. * This margin is stripped '''before''' the arguments are interpolated into to string. * * String escape sequences are '''not''' processed; this interpolater is designed to * be used with triple quoted Strings. * * {{{ * scala> val foo = "f|o|o" * foo: String = f|o|o * scala> sm"""|${foo} * |""" * res0: String = * "f|o|o * " * }}} */ final def sm(args: Any*): String = { def isLineBreak(c: Char) = c == '\n' || c == '\f' // compatible with StringLike#isLineBreak def stripTrailingPart(s: String) = { val (pre, post) = s.span(c => !isLineBreak(c)) pre + post.stripMargin } val stripped: List[String] = stringContext.parts.toList match { case head :: tail => head.stripMargin :: (tail map stripTrailingPart) case Nil => Nil } new StringContext(stripped: _*).raw(args: _*) } } Other Scala source code examplesHere is a short list of links related to this Scala StripMarginInterpolator.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.