diff --git a/jvm/src/test/scala-2.x/scala/xml/CompilerErrors.scala b/jvm/src/test/scala-2.x/scala/xml/CompilerErrors.scala index 2ad3a329..9a0df05d 100644 --- a/jvm/src/test/scala-2.x/scala/xml/CompilerErrors.scala +++ b/jvm/src/test/scala-2.x/scala/xml/CompilerErrors.scala @@ -193,7 +193,7 @@ class CompilerTesting { // note: `code` should have a | margin // the import's needed because toolbox compiler does not accumulate imports like the real one (TODO: verify hypothesis) def xmlErrorMessages(msg: String, code: String): List[String] = - errorMessages(msg)("import scala.xml.{TopScope => $scope}\n"+ code.stripMargin) + errorMessages(msg)("import scala.xml.{TopScope => $scope}\n"+ code.stripMargin) // TODO what is this $scope? def expectXmlError(msg: String, code: String): Unit = { val errors: List[String] = xmlErrorMessages(msg, code) @@ -203,6 +203,6 @@ class CompilerTesting { def expectXmlErrors(msgCount: Int, msg: String, code: String): Unit = { val errors: List[String] = xmlErrorMessages(msg, code) val errorCount: Int = errors.count(_.contains(msg)) - assert(errorCount == msgCount, s"$errorCount occurrences of \'$msg\' found -- expected $msgCount in:\n${errors.mkString("\n")}") + assert(errorCount == msgCount, s"$errorCount occurrences of '$msg' found -- expected $msgCount in:\n${errors.mkString("\n")}") } } diff --git a/shared/src/main/scala/scala/xml/Atom.scala b/shared/src/main/scala/scala/xml/Atom.scala index d79ce287..d2e1c23d 100644 --- a/shared/src/main/scala/scala/xml/Atom.scala +++ b/shared/src/main/scala/scala/xml/Atom.scala @@ -24,7 +24,7 @@ import scala.collection.Seq */ class Atom[+A](val data: A) extends SpecialNode with Serializable { if (data == null) - throw new IllegalArgumentException("cannot construct " + getClass.getSimpleName + " with null") + throw new IllegalArgumentException(s"cannot construct ${getClass.getSimpleName} with null") override protected def basisForHashCode: Seq[Any] = Seq(data) diff --git a/shared/src/main/scala/scala/xml/Attribute.scala b/shared/src/main/scala/scala/xml/Attribute.scala index 9d2be60d..cb2b2d97 100644 --- a/shared/src/main/scala/scala/xml/Attribute.scala +++ b/shared/src/main/scala/scala/xml/Attribute.scala @@ -98,9 +98,9 @@ trait Attribute extends MetaData { if (value == null) return if (isPrefixed) - sb.append(pre).append(':') + sb.append(s"$pre:") - sb.append(key).append('=') + sb.append(s"$key=") val sb2: StringBuilder = new StringBuilder() Utility.sequenceToXML(value, TopScope, sb2, stripComments = true) Utility.appendQuoted(sb2.toString, sb) diff --git a/shared/src/main/scala/scala/xml/Comment.scala b/shared/src/main/scala/scala/xml/Comment.scala index 76d1be4a..aee8dc07 100644 --- a/shared/src/main/scala/scala/xml/Comment.scala +++ b/shared/src/main/scala/scala/xml/Comment.scala @@ -30,7 +30,7 @@ case class Comment(commentText: String) extends SpecialNode { final override def doTransform: Boolean = false if (commentText.contains("--")) { - throw new IllegalArgumentException("text contains \"--\"") + throw new IllegalArgumentException(s"""text contains "--"""") } if (commentText.nonEmpty && commentText.charAt(commentText.length - 1) == '-') { throw new IllegalArgumentException("The final character of a XML comment may not be '-'. See https://www.w3.org/TR/xml11//#IDA5CES") @@ -40,5 +40,5 @@ case class Comment(commentText: String) extends SpecialNode { * Appends "" to this string buffer. */ override def buildString(sb: StringBuilder): StringBuilder = - sb.append("") + sb.append(s"") } diff --git a/shared/src/main/scala/scala/xml/EntityRef.scala b/shared/src/main/scala/scala/xml/EntityRef.scala index 07be3c5a..5b5b1f2a 100644 --- a/shared/src/main/scala/scala/xml/EntityRef.scala +++ b/shared/src/main/scala/scala/xml/EntityRef.scala @@ -41,5 +41,5 @@ case class EntityRef(entityName: String) extends SpecialNode { * @return the modified string buffer `sb`. */ override def buildString(sb: StringBuilder): StringBuilder = - sb.append("&").append(entityName).append(";") + sb.append(s"&$entityName;") } diff --git a/shared/src/main/scala/scala/xml/Group.scala b/shared/src/main/scala/scala/xml/Group.scala index b212899a..4c8fd7ba 100644 --- a/shared/src/main/scala/scala/xml/Group.scala +++ b/shared/src/main/scala/scala/xml/Group.scala @@ -40,7 +40,7 @@ final case class Group(nodes: Seq[Node]) extends Node { * Since Group is very much a hack it throws an exception if you * try to do anything with it. */ - private def fail(msg: String): Nothing = throw new UnsupportedOperationException("class Group does not support method '%s'".format(msg)) + private def fail(msg: String): Nothing = throw new UnsupportedOperationException(s"class Group does not support method '$msg'") override def label: Nothing = fail("label") override def attributes: Nothing = fail("attributes") diff --git a/shared/src/main/scala/scala/xml/MetaData.scala b/shared/src/main/scala/scala/xml/MetaData.scala index 9d621aa5..b55b3187 100644 --- a/shared/src/main/scala/scala/xml/MetaData.scala +++ b/shared/src/main/scala/scala/xml/MetaData.scala @@ -174,7 +174,7 @@ abstract class MetaData * prefixed, and "key" otherwise. */ def prefixedKey: String = this match { - case x: Attribute if x.isPrefixed => x.pre + ":" + key + case x: Attribute if x.isPrefixed => s"${x.pre}:$key" case _ => key } diff --git a/shared/src/main/scala/scala/xml/NamespaceBinding.scala b/shared/src/main/scala/scala/xml/NamespaceBinding.scala index 6ddeb99c..7e851eda 100644 --- a/shared/src/main/scala/scala/xml/NamespaceBinding.scala +++ b/shared/src/main/scala/scala/xml/NamespaceBinding.scala @@ -79,10 +79,8 @@ case class NamespaceBinding(prefix: String, uri: String, parent: NamespaceBindin private def doBuildString(sb: StringBuilder, stop: NamespaceBinding): Unit = { if (List(null, stop, TopScope).contains(this)) return - val s: String = " xmlns%s=\"%s\"".format( - if (prefix != null) ":" + prefix else "", - if (uri != null) uri else "" - ) - parent.doBuildString(sb.append(s), stop) // copy(ignore) + val prefixStr: String = if (prefix != null) s":$prefix" else "" + val uriStr: String = if (uri != null) uri else "" + parent.doBuildString(sb.append(s""" xmlns$prefixStr="$uriStr""""), stop) // copy(ignore) } } diff --git a/shared/src/main/scala/scala/xml/Node.scala b/shared/src/main/scala/scala/xml/Node.scala index ee7a9f50..ff719ec4 100755 --- a/shared/src/main/scala/scala/xml/Node.scala +++ b/shared/src/main/scala/scala/xml/Node.scala @@ -184,13 +184,8 @@ abstract class Node extends NodeSeq { /** * Appends qualified name of this node to `StringBuilder`. */ - def nameToString(sb: StringBuilder): StringBuilder = { - if (null != prefix) { - sb.append(prefix) - sb.append(':') - } - sb.append(label) - } + def nameToString(sb: StringBuilder): StringBuilder = + sb.append(s"${if (prefix == null) "" else s"$prefix:"}$label") /** * Returns a type symbol (e.g. DTD, XSD), default `'''null'''`. diff --git a/shared/src/main/scala/scala/xml/NodeSeq.scala b/shared/src/main/scala/scala/xml/NodeSeq.scala index 26880d26..cbb5b047 100644 --- a/shared/src/main/scala/scala/xml/NodeSeq.scala +++ b/shared/src/main/scala/scala/xml/NodeSeq.scala @@ -157,7 +157,7 @@ abstract class NodeSeq extends AbstractSeq[Node] with immutable.Seq[Node] with S * Convenience method which returns string text of the named attribute. Use: * - `that \@ "foo"` to get the string text of attribute `"foo"`; */ - def \@(attributeName: String): String = (this \ ("@" + attributeName)).text + def \@(attributeName: String): String = (this \ s"@$attributeName").text override def toString: String = theSeq.mkString diff --git a/shared/src/main/scala/scala/xml/Null.scala b/shared/src/main/scala/scala/xml/Null.scala index 0ece843a..5613a462 100644 --- a/shared/src/main/scala/scala/xml/Null.scala +++ b/shared/src/main/scala/scala/xml/Null.scala @@ -51,7 +51,7 @@ case object Null extends MetaData { override def apply(namespace: String, scope: NamespaceBinding, key: String): ScalaVersionSpecificReturnTypes.NullApply3 = null override def apply(key: String): ScalaVersionSpecificReturnTypes.NullApply1 = if (Utility.isNameStart(key.head)) null - else throw new IllegalArgumentException("not a valid attribute name '" + key + "', so can never match !") + else throw new IllegalArgumentException(s"not a valid attribute name '$key', so can never match !") override protected def toString1(sb: StringBuilder): Unit = () override protected def toString1: String = "" diff --git a/shared/src/main/scala/scala/xml/PCData.scala b/shared/src/main/scala/scala/xml/PCData.scala index c5da01d7..ee91aa24 100644 --- a/shared/src/main/scala/scala/xml/PCData.scala +++ b/shared/src/main/scala/scala/xml/PCData.scala @@ -30,8 +30,10 @@ class PCData(data: String) extends Atom[String](data) { * @param sb the input string buffer associated to some XML element * @return the input string buffer with the formatted CDATA section */ - override def buildString(sb: StringBuilder): StringBuilder = - sb.append("".format(data.replaceAll("]]>", "]]]]>"))) + override def buildString(sb: StringBuilder): StringBuilder = { + val dataStr: String = data.replaceAll("]]>", "]]]]>") + sb.append(s"") + } } /** diff --git a/shared/src/main/scala/scala/xml/ProcInstr.scala b/shared/src/main/scala/scala/xml/ProcInstr.scala index b2433ec8..4d09b373 100644 --- a/shared/src/main/scala/scala/xml/ProcInstr.scala +++ b/shared/src/main/scala/scala/xml/ProcInstr.scala @@ -23,11 +23,11 @@ package xml // Note: used by the Scala compiler. case class ProcInstr(target: String, proctext: String) extends SpecialNode { if (!Utility.isName(target)) - throw new IllegalArgumentException(target + " must be an XML Name") + throw new IllegalArgumentException(s"$target must be an XML Name") if (proctext.contains("?>")) - throw new IllegalArgumentException(proctext + " may not contain \"?>\"") + throw new IllegalArgumentException(s"""$proctext may not contain "?>"""") if (target.toLowerCase == "xml") - throw new IllegalArgumentException(target + " is reserved") + throw new IllegalArgumentException(s"$target is reserved") final override def doCollectNamespaces: Boolean = false final override def doTransform: Boolean = false @@ -39,6 +39,8 @@ case class ProcInstr(target: String, proctext: String) extends SpecialNode { * appends "<?" target (" "+text)?+"?>" * to this stringbuffer. */ - override def buildString(sb: StringBuilder): StringBuilder = - sb.append("".format(target, if (proctext == "") "" else " " + proctext)) + override def buildString(sb: StringBuilder): StringBuilder = { + val textStr: String = if (proctext == "") "" else s" $proctext" + sb.append(s"") + } } diff --git a/shared/src/main/scala/scala/xml/Utility.scala b/shared/src/main/scala/scala/xml/Utility.scala index bc6b02a8..ab3592f2 100755 --- a/shared/src/main/scala/scala/xml/Utility.scala +++ b/shared/src/main/scala/scala/xml/Utility.scala @@ -112,7 +112,7 @@ object Utility extends AnyRef with parsing.TokenTests { "quot" -> '"', "apos" -> '\'' ) - val escMap: Map[Char, String] = (pairs - "apos").map { case (s, c) => c -> "&%s;".format(s) } + val escMap: Map[Char, String] = (pairs - "apos").map { case (s, c) => c -> s"&$s;" } val unescMap: Map[String, Char] = pairs } import Escapes.{ escMap, unescMap } @@ -265,7 +265,7 @@ object Utility extends AnyRef with parsing.TokenTests { val csp = e.child.forall(isAtomAndNotText) ser(e.child.toList :: ns :: r, e.scope :: pscopes, csp :: spaced, e :: toClose) } - case n => throw new IllegalArgumentException("Don't know how to serialize a " + n.getClass.getName) + case n => throw new IllegalArgumentException(s"Don't know how to serialize a ${n.getClass.getName}") } } ser(List(ns.toList), List(pscope), List(spaced), Nil) @@ -309,7 +309,7 @@ object Utility extends AnyRef with parsing.TokenTests { */ def appendQuoted(s: String, sb: StringBuilder): StringBuilder = { val ch: Char = if (s.contains('"')) '\'' else '"' - sb.append(ch).append(s).append(ch) + sb.append(s"$ch$s$ch") } /** @@ -347,10 +347,10 @@ object Utility extends AnyRef with parsing.TokenTests { case '&' => val n: String = getName(value, i + 1) if (n.eq(null)) - return "malformed entity reference in attribute value [" + value + "]" + return s"malformed entity reference in attribute value [$value]" i = i + n.length + 1 if (i >= value.length || value.charAt(i) != ';') - return "malformed entity reference in attribute value [" + value + "]" + return s"malformed entity reference in attribute value [$value]" case _ => } i = i + 1 @@ -423,14 +423,13 @@ object Utility extends AnyRef with parsing.TokenTests { case 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' => if (!hex) - reportSyntaxError("hex char not allowed in decimal char ref\n" + - "Did you mean to write &#x ?") + reportSyntaxError("hex char not allowed in decimal char ref\nDid you mean to write &#x ?") else i = i * base + ch().asDigit case SU => reportTruncatedError("") case _ => - reportSyntaxError("character '" + ch() + "' not allowed in char ref\n") + reportSyntaxError(s"character '${ch()}' not allowed in char ref\n") } nextch() } diff --git a/shared/src/main/scala/scala/xml/XML.scala b/shared/src/main/scala/scala/xml/XML.scala index 43135acf..9cf06d13 100755 --- a/shared/src/main/scala/scala/xml/XML.scala +++ b/shared/src/main/scala/scala/xml/XML.scala @@ -125,8 +125,8 @@ object XML extends XMLLoader[Elem] { minimizeTags: MinimizeMode.Value = MinimizeMode.Default ): Unit = { /* TODO: optimize by giving writer parameter to toXML*/ - if (xmlDecl) w.write("\n") - if (doctype.ne(null)) w.write(doctype.toString + "\n") + if (xmlDecl) w.write(s"\n") + if (doctype.ne(null)) w.write(s"$doctype\n") w.write(Utility.serialize(node, minimizeTags = minimizeTags).toString) } } diff --git a/shared/src/main/scala/scala/xml/dtd/ContentModel.scala b/shared/src/main/scala/scala/xml/dtd/ContentModel.scala index b626bbf4..1c6b0a00 100644 --- a/shared/src/main/scala/scala/xml/dtd/ContentModel.scala +++ b/shared/src/main/scala/scala/xml/dtd/ContentModel.scala @@ -38,7 +38,7 @@ object ContentModel extends WordExp { } case class ElemName(name: String) extends Label { - override def toString: String = """ElemName("%s")""".format(name) + override def toString: String = s"""ElemName("$name")""" } def isMixed(cm: ContentModel): Boolean = cond(cm) { case _: MIXED => true } diff --git a/shared/src/main/scala/scala/xml/dtd/DTD.scala b/shared/src/main/scala/scala/xml/dtd/DTD.scala index a3f588ec..9b334a8d 100644 --- a/shared/src/main/scala/scala/xml/dtd/DTD.scala +++ b/shared/src/main/scala/scala/xml/dtd/DTD.scala @@ -33,8 +33,5 @@ abstract class DTD { var ent: mutable.Map[String, EntityDecl] = new mutable.HashMap[String, EntityDecl]() override def toString: String = - "DTD %s [\n%s]".format( - Option(externalID).getOrElse(""), - decls.mkString("", "\n", "\n") - ) + s"DTD ${Option(externalID).getOrElse("")} [\n${decls.mkString("\n")}\n]" } diff --git a/shared/src/main/scala/scala/xml/dtd/Decl.scala b/shared/src/main/scala/scala/xml/dtd/Decl.scala index bdde0337..570669dc 100644 --- a/shared/src/main/scala/scala/xml/dtd/Decl.scala +++ b/shared/src/main/scala/scala/xml/dtd/Decl.scala @@ -40,8 +40,7 @@ sealed abstract class MarkupDecl extends Decl { case class ElemDecl(name: String, contentModel: ContentModel) extends MarkupDecl { override def buildString(sb: StringBuilder): StringBuilder = { - sb.append("') } @@ -49,9 +48,8 @@ case class ElemDecl(name: String, contentModel: ContentModel) case class AttListDecl(name: String, attrs: List[AttrDecl]) extends MarkupDecl { - override def buildString(sb: StringBuilder): StringBuilder = { - sb.append("")) - } + override def buildString(sb: StringBuilder): StringBuilder = + sb.append(s"") } /** @@ -63,10 +61,9 @@ case class AttrDecl(name: String, tpe: String, default: DefaultDecl) { override def toString: String = sbToString(buildString) def buildString(sb: StringBuilder): StringBuilder = { - sb.append(" ").append(name).append(' ').append(tpe).append(' ') + sb.append(s" $name $tpe ") default.buildString(sb) } - } /** an entity declaration */ @@ -75,7 +72,7 @@ sealed abstract class EntityDecl extends MarkupDecl /** a parsed general entity declaration */ case class ParsedEntityDecl(name: String, entdef: EntityDef) extends EntityDecl { override def buildString(sb: StringBuilder): StringBuilder = { - sb.append("') } } @@ -83,7 +80,7 @@ case class ParsedEntityDecl(name: String, entdef: EntityDef) extends EntityDecl /** a parameter entity declaration */ case class ParameterEntityDecl(name: String, entdef: EntityDef) extends EntityDecl { override def buildString(sb: StringBuilder): StringBuilder = { - sb.append("') } } @@ -91,15 +88,15 @@ case class ParameterEntityDecl(name: String, entdef: EntityDef) extends EntityDe /** an unparsed entity declaration */ case class UnparsedEntityDecl(name: String, extID: ExternalID, notation: String) extends EntityDecl { override def buildString(sb: StringBuilder): StringBuilder = { - sb.append("') + sb.append(s"") } } /** a notation declaration */ case class NotationDecl(name: String, extID: ExternalID) extends MarkupDecl { override def buildString(sb: StringBuilder): StringBuilder = { - sb.append("') } } @@ -120,7 +117,7 @@ case class IntDef(value: String) extends EntityDef { val n: String = tmp.substring(ix, iz) if (!Utility.isName(n)) - throw new IllegalArgumentException("internal entity def: \"" + n + "\" must be an XML Name") + throw new IllegalArgumentException(s"""internal entity def: "$n" must be an XML Name""") tmp = tmp.substring(iz + 1, tmp.length) ix = tmp.indexOf('%') @@ -145,7 +142,7 @@ case class PEReference(ent: String) extends MarkupDecl { throw new IllegalArgumentException("ent must be an XML Name") override def buildString(sb: StringBuilder): StringBuilder = - sb.append('%').append(ent).append(';') + sb.append(s"%$ent;") } // default declarations for attributes diff --git a/shared/src/main/scala/scala/xml/dtd/DocType.scala b/shared/src/main/scala/scala/xml/dtd/DocType.scala index efdfcf83..1318e3b2 100644 --- a/shared/src/main/scala/scala/xml/dtd/DocType.scala +++ b/shared/src/main/scala/scala/xml/dtd/DocType.scala @@ -27,7 +27,7 @@ import scala.collection.Seq */ case class DocType(name: String, extID: ExternalID, intSubset: Seq[dtd.Decl]) { if (!Utility.isName(name)) - throw new IllegalArgumentException(name + " must be an XML Name") + throw new IllegalArgumentException(s"$name must be an XML Name") /** returns "<!DOCTYPE + name + extID? + ("["+intSubSet+"]")? >" */ final override def toString: String = { @@ -35,7 +35,7 @@ case class DocType(name: String, extID: ExternalID, intSubset: Seq[dtd.Decl]) { if (intSubset.isEmpty) "" else intSubset.mkString("[", "", "]") - """""".format(name, extID.toString, intString) + s"" } } diff --git a/shared/src/main/scala/scala/xml/dtd/ExternalID.scala b/shared/src/main/scala/scala/xml/dtd/ExternalID.scala index f2a5d40f..80b9da86 100644 --- a/shared/src/main/scala/scala/xml/dtd/ExternalID.scala +++ b/shared/src/main/scala/scala/xml/dtd/ExternalID.scala @@ -22,19 +22,16 @@ package dtd sealed abstract class ExternalID extends parsing.TokenTests { def quoted(s: String): String = { val c: Char = if (s.contains('"')) '\'' else '"' - c.toString + s + c + s"$c$s$c" } // public != null: PUBLIC " " publicLiteral " " [systemLiteral] // public == null: SYSTEM " " systemLiteral - override def toString: String = { - lazy val quotedSystemLiteral: String = quoted(systemId) - lazy val quotedPublicLiteral: String = quoted(publicId) + override def toString: String = + if (publicId == null) s"SYSTEM ${quoted(systemId)}" else + if (systemId == null) s"PUBLIC ${quoted(publicId)}" else + s"PUBLIC ${quoted(publicId)} ${quoted(systemId)}" - if (publicId == null) "SYSTEM " + quotedSystemLiteral - else "PUBLIC " + quotedPublicLiteral + - (if (systemId == null) "" else " " + quotedSystemLiteral) - } def buildString(sb: StringBuilder): StringBuilder = sb.append(this.toString) diff --git a/shared/src/main/scala/scala/xml/dtd/ValidationException.scala b/shared/src/main/scala/scala/xml/dtd/ValidationException.scala index 71f741d8..01d4cad0 100644 --- a/shared/src/main/scala/scala/xml/dtd/ValidationException.scala +++ b/shared/src/main/scala/scala/xml/dtd/ValidationException.scala @@ -21,25 +21,24 @@ case class ValidationException(e: String) extends Exception(e) */ object MakeValidationException { def fromFixedAttribute(k: String, value: String, actual: String): ValidationException = - ValidationException("value of attribute " + k + " FIXED to \"" + - value + "\", but document tries \"" + actual + "\"") + ValidationException(s"""value of attribute $k FIXED to "$value", but document tries "$actual"""") def fromNonEmptyElement(): ValidationException = ValidationException("element should be *empty*") def fromUndefinedElement(label: String): ValidationException = - ValidationException("element \"" + label + "\" not allowed here") + ValidationException(s"""element "$label" not allowed here""") def fromUndefinedAttribute(key: String): ValidationException = - ValidationException("attribute " + key + " not allowed here") + ValidationException(s"attribute $key not allowed here") def fromMissingAttribute(allKeys: Set[String]): ValidationException = { val sb: StringBuilder = new StringBuilder("missing value for REQUIRED attribute") if (allKeys.size > 1) sb.append('s') - allKeys.foreach(k => sb.append("'%s'".format(k))) + allKeys.foreach(k => sb.append(s"'$k'")) ValidationException(sb.toString) } def fromMissingAttribute(key: String, tpe: String): ValidationException = - ValidationException("missing value for REQUIRED attribute %s of type %s".format(key, tpe)) + ValidationException(s"missing value for REQUIRED attribute $key of type $tpe") } diff --git a/shared/src/main/scala/scala/xml/dtd/impl/BaseBerrySethi.scala b/shared/src/main/scala/scala/xml/dtd/impl/BaseBerrySethi.scala index 6a055bf8..267277e0 100644 --- a/shared/src/main/scala/scala/xml/dtd/impl/BaseBerrySethi.scala +++ b/shared/src/main/scala/scala/xml/dtd/impl/BaseBerrySethi.scala @@ -49,7 +49,7 @@ private[dtd] abstract class BaseBerrySethi { val (l1: Seq[lang._regexpT], l2: Seq[lang._regexpT]) = x.rs.span(_.isNullable) (l1 ++ l2.take(1)).map(compFunction).foldLeft(emptySet)(_ ++ _) case Star(t) => compFunction(t) - case _ => throw new IllegalArgumentException("unexpected pattern " + r.getClass) + case _ => throw new IllegalArgumentException(s"unexpected pattern ${r.getClass}") } /** Computes `first(r)` for the word regexp `r`. */ @@ -90,7 +90,7 @@ private[dtd] abstract class BaseBerrySethi { if (p.isNullable) fol ++ first else first } - case _ => throw new IllegalArgumentException("unexpected pattern: " + r.getClass) + case _ => throw new IllegalArgumentException(s"unexpected pattern: ${r.getClass}") } /** @@ -102,6 +102,6 @@ private[dtd] abstract class BaseBerrySethi { case x: Sequ => x.rs.foreach(traverse) case x: Meta => traverse(x.r) case Star(t) => traverse(t) - case _ => throw new IllegalArgumentException("unexp pattern " + r.getClass) + case _ => throw new IllegalArgumentException(s"unexp pattern ${r.getClass}") } } diff --git a/shared/src/main/scala/scala/xml/dtd/impl/DetWordAutom.scala b/shared/src/main/scala/scala/xml/dtd/impl/DetWordAutom.scala index 5eb98603..94402451 100644 --- a/shared/src/main/scala/scala/xml/dtd/impl/DetWordAutom.scala +++ b/shared/src/main/scala/scala/xml/dtd/impl/DetWordAutom.scala @@ -35,17 +35,13 @@ private[dtd] abstract class DetWordAutom[T <: AnyRef] { def next(q: Int, label: T): Int = delta(q).getOrElse(label, default(q)) override def toString: String = { - val sb: StringBuilder = new StringBuilder("[DetWordAutom nstates=") - sb.append(nstates) - sb.append(" finals=") val map: Map[Int, Int] = finals.zipWithIndex.map(_.swap).toMap - sb.append(map.toString) - sb.append(" delta=\n") + val sb: StringBuilder = new StringBuilder(s"[DetWordAutom nstates=$nstates finals=$map delta=\n") for (i <- 0.until(nstates)) { - sb.append("%d->%s\n".format(i, delta(i))) + sb.append(s"$i->${delta(i)}\n") if (i < default.length) - sb.append("_>%s\n".format(default(i))) + sb.append(s"_>${default(i)}\n") } sb.toString } diff --git a/shared/src/main/scala/scala/xml/dtd/impl/NondetWordAutom.scala b/shared/src/main/scala/scala/xml/dtd/impl/NondetWordAutom.scala index afa6c8ab..1bfefcc3 100644 --- a/shared/src/main/scala/scala/xml/dtd/impl/NondetWordAutom.scala +++ b/shared/src/main/scala/scala/xml/dtd/impl/NondetWordAutom.scala @@ -56,11 +56,10 @@ private[dtd] abstract class NondetWordAutom[T <: AnyRef] { private def finalStates: immutable.Seq[Int] = 0.until(nstates).filter(isFinal) override def toString: String = { - val finalString: String = Map(finalStates.map(j => j -> finals(j)): _*).toString val deltaString: String = 0.until(nstates) - .map(i => " %d->%s\n _>%s\n".format(i, delta(i), default(i))).mkString + .map(i => s" $i->${delta(i)}\n _>${default(i)}\n").mkString - "[NondetWordAutom nstates=%d finals=%s delta=\n%s".format(nstates, finalString, deltaString) + s"[NondetWordAutom nstates=$nstates finals=$finalString delta=\n$deltaString" } } diff --git a/shared/src/main/scala/scala/xml/include/sax/XIncludeFilter.scala b/shared/src/main/scala/scala/xml/include/sax/XIncludeFilter.scala index 0b8ab37c..9c70136b 100644 --- a/shared/src/main/scala/scala/xml/include/sax/XIncludeFilter.scala +++ b/shared/src/main/scala/scala/xml/include/sax/XIncludeFilter.scala @@ -95,7 +95,7 @@ class XIncludeFilter extends XMLFilterImpl { bases.push(new URL(base)) } catch { case _: MalformedURLException => - throw new UnsupportedOperationException("Unrecognized SYSTEM ID: " + base) + throw new UnsupportedOperationException(s"Unrecognized SYSTEM ID: $base") } super.setDocumentLocator(locator) } @@ -129,8 +129,7 @@ class XIncludeFilter extends XMLFilterImpl { currentBase = new URL(parentBase, base) } catch { case e: MalformedURLException => - throw new SAXException("Malformed base URL: " - + currentBase, e) + throw new SAXException(s"Malformed base URL: $currentBase", e) } } bases push currentBase @@ -154,7 +153,7 @@ class XIncludeFilter extends XMLFilterImpl { } // Need to check this also in DOM and JDOM???? else { throw new SAXException( - "Illegal value for parse attribute: " + parse) + s"Illegal value for parse attribute: $parse") } level += 1 } else { @@ -235,9 +234,7 @@ class XIncludeFilter extends XMLFilterImpl { line = locator.getLineNumber column = locator.getColumnNumber } - locationString = (" in document included from " + publicID - + " at " + systemID - + " at line " + line + ", column " + column) + locationString = s" in document included from $publicID at $systemID at line $line, column $column" locationString } @@ -263,10 +260,9 @@ class XIncludeFilter extends XMLFilterImpl { source = new URL(base, url) } catch { case e: MalformedURLException => - val ex: UnavailableResourceException = new UnavailableResourceException("Unresolvable URL " + url - + getLocation) + val ex: UnavailableResourceException = new UnavailableResourceException(s"Unresolvable URL $url$getLocation") ex.setRootCause(e) - throw new SAXException("Unresolvable URL " + url + getLocation, ex) + throw new SAXException(s"Unresolvable URL $url$getLocation", ex) } try { @@ -299,11 +295,9 @@ class XIncludeFilter extends XMLFilterImpl { } ; charsRead != -1}) () } catch { case e: UnsupportedEncodingException => - throw new SAXException("Unsupported encoding: " - + encoding + getLocation, e) + throw new SAXException(s"Unsupported encoding: $encoding$getLocation", e) case e: IOException => - throw new SAXException("Document not found: " - + source.toExternalForm + getLocation, e) + throw new SAXException(s"Document not found: ${source.toExternalForm}$getLocation", e) } } @@ -324,9 +318,9 @@ class XIncludeFilter extends XMLFilterImpl { try new URL(bases.peek, url) catch { case e: MalformedURLException => - val ex: UnavailableResourceException = new UnavailableResourceException("Unresolvable URL " + url + getLocation) + val ex: UnavailableResourceException = new UnavailableResourceException(s"Unresolvable URL $url$getLocation") ex setRootCause e - throw new SAXException("Unresolvable URL " + url + getLocation, ex) + throw new SAXException(s"Unresolvable URL $url$getLocation", ex) } try { @@ -349,7 +343,7 @@ class XIncludeFilter extends XMLFilterImpl { if (bases.contains(source)) throw new SAXException( "Circular XInclude Reference", - new CircularIncludeException("Circular XInclude Reference to " + source + getLocation) + new CircularIncludeException(s"Circular XInclude Reference to $source$getLocation") ) bases push source @@ -361,7 +355,7 @@ class XIncludeFilter extends XMLFilterImpl { bases.pop() } catch { case e: IOException => - throw new SAXException("Document not found: " + source.toExternalForm + getLocation, e) + throw new SAXException(s"Document not found: ${source.toExternalForm}$getLocation", e) } } } diff --git a/shared/src/main/scala/scala/xml/include/sax/XIncluder.scala b/shared/src/main/scala/scala/xml/include/sax/XIncluder.scala index fd576e3a..ec94be79 100644 --- a/shared/src/main/scala/scala/xml/include/sax/XIncluder.scala +++ b/shared/src/main/scala/scala/xml/include/sax/XIncluder.scala @@ -32,8 +32,7 @@ class XIncluder(outs: OutputStream, encoding: String) extends ContentHandler wit override def startDocument(): Unit = { try { - out.write("\r\n") + out.write(s"\r\n") } catch { case e: IOException => throw new SAXException("Write failed", e) @@ -55,17 +54,14 @@ class XIncluder(outs: OutputStream, encoding: String) extends ContentHandler wit override def startElement(namespaceURI: String, localName: String, qualifiedName: String, atts: Attributes): Unit = { try { - out.write("<" + qualifiedName) + out.write(s"<$qualifiedName") var i: Int = 0 while (i < atts.getLength) { - out.write(" ") - out.write(atts.getQName(i)) - out.write("='") val value: String = atts.getValue(i) // @todo Need to use character references if the encoding // can't support the character - out.write(scala.xml.Utility.escape(value)) - out.write("'") + val valueStr: String = scala.xml.Utility.escape(value) + out.write(s" ${atts.getQName(i)}='$valueStr'") i += 1 } out.write(">") @@ -77,7 +73,7 @@ class XIncluder(outs: OutputStream, encoding: String) extends ContentHandler wit override def endElement(namespaceURI: String, localName: String, qualifiedName: String): Unit = { try { - out.write("") + out.write(s"") } catch { case e: IOException => throw new SAXException("Write failed", e) @@ -113,7 +109,7 @@ class XIncluder(outs: OutputStream, encoding: String) extends ContentHandler wit // do I need to escape text in PI???? override def processingInstruction(target: String, data: String): Unit = { try { - out.write("") + out.write(s"") } catch { case e: IOException => throw new SAXException("Write failed", e) @@ -122,7 +118,7 @@ class XIncluder(outs: OutputStream, encoding: String) extends ContentHandler wit override def skippedEntity(name: String): Unit = { try { - out.write("&" + name + ";") + out.write(s"&$name;") } catch { case e: IOException => throw new SAXException("Write failed", e) @@ -138,10 +134,10 @@ class XIncluder(outs: OutputStream, encoding: String) extends ContentHandler wit // if this is the source document, output a DOCTYPE declaration if (entities.isEmpty) { var id: String = "" - if (publicID != null) id = " PUBLIC \"" + publicID + "\" \"" + systemID + '"' - else if (systemID != null) id = " SYSTEM \"" + systemID + '"' + if (publicID != null) id = s""" PUBLIC "$publicID" "$systemID"""" + else if (systemID != null) id = s""" SYSTEM "$systemID"""" try { - out.write("\r\n") + out.write(s"\r\n") } catch { case e: IOException => throw new SAXException("Error while writing DOCTYPE", e) @@ -151,7 +147,7 @@ class XIncluder(outs: OutputStream, encoding: String) extends ContentHandler wit override def endDTD(): Unit = () override def startEntity(name: String): Unit = { - entities = name :: entities + entities = name :: entities } override def endEntity(name: String): Unit = { diff --git a/shared/src/main/scala/scala/xml/parsing/ExternalSources.scala b/shared/src/main/scala/scala/xml/parsing/ExternalSources.scala index 74e49c23..778ef627 100644 --- a/shared/src/main/scala/scala/xml/parsing/ExternalSources.scala +++ b/shared/src/main/scala/scala/xml/parsing/ExternalSources.scala @@ -34,6 +34,6 @@ trait ExternalSources { case x => x.take(x.lastIndexOf(separator) + 1) } - Source.fromFile(fileStr + systemId) + Source.fromFile(s"$fileStr$systemId") } } diff --git a/shared/src/main/scala/scala/xml/parsing/FactoryAdapter.scala b/shared/src/main/scala/scala/xml/parsing/FactoryAdapter.scala index 362c1516..d3f75dd5 100644 --- a/shared/src/main/scala/scala/xml/parsing/FactoryAdapter.scala +++ b/shared/src/main/scala/scala/xml/parsing/FactoryAdapter.scala @@ -27,9 +27,7 @@ trait ConsoleErrorHandler extends DefaultHandler2 { protected def printError(errtype: String, ex: SAXParseException): Unit = Console.withOut(Console.err) { - val s: String = "[%s]:%d:%d: %s".format( - errtype, ex.getLineNumber, ex.getColumnNumber, ex.getMessage) - Console.println(s) + Console.println(s"[$errtype]:${ex.getLineNumber}:${ex.getColumnNumber}: ${ex.getMessage}") Console.flush() } } diff --git a/shared/src/main/scala/scala/xml/parsing/MarkupHandler.scala b/shared/src/main/scala/scala/xml/parsing/MarkupHandler.scala index 1628a75a..ab647cf7 100755 --- a/shared/src/main/scala/scala/xml/parsing/MarkupHandler.scala +++ b/shared/src/main/scala/scala/xml/parsing/MarkupHandler.scala @@ -40,9 +40,9 @@ abstract class MarkupHandler { def replacementText(entityName: String): Source = Source.fromString(ent.get(entityName) match { case Some(ParsedEntityDecl(_, IntDef(value))) => value - case Some(ParameterEntityDecl(_, IntDef(value))) => " %s ".format(value) - case Some(_) => "".format(entityName) - case None => "".format(entityName) + case Some(ParameterEntityDecl(_, IntDef(value))) => s" value " + case Some(_) => s"" + case None => s"" }) def endDTD(n: String): Unit = () diff --git a/shared/src/main/scala/scala/xml/parsing/MarkupParser.scala b/shared/src/main/scala/scala/xml/parsing/MarkupParser.scala index 3bd46c0c..f76520da 100755 --- a/shared/src/main/scala/scala/xml/parsing/MarkupParser.scala +++ b/shared/src/main/scala/scala/xml/parsing/MarkupParser.scala @@ -40,7 +40,7 @@ trait MarkupParser extends MarkupParserCommon with TokenTests { override type NamespaceType = NamespaceBinding override def truncatedError(msg: String): Nothing = throw FatalError(msg) - override def errorNoEnd(tag: String): Nothing = throw FatalError("expected closing tag of " + tag) + override def errorNoEnd(tag: String): Nothing = throw FatalError(s"expected closing tag of $tag") override def xHandleError(that: Char, msg: String): Unit = reportSyntaxError(msg) @@ -182,7 +182,7 @@ trait MarkupParser extends MarkupParserCommon with TokenTests { case null => case Text(enc) => if (!isValidIANAEncoding(enc)) - reportSyntaxError("\"" + enc + "\" is not a valid encoding") + reportSyntaxError(s""""$enc" is not a valid encoding""") else { info_enc = Some(enc) n += 1 @@ -202,7 +202,7 @@ trait MarkupParser extends MarkupParserCommon with TokenTests { if (m.length - n != 0) { val s: String = if (isProlog) "SDDecl? " else "" - reportSyntaxError("VersionInfo EncodingDecl? %sor '?>' expected!".format(s)) + reportSyntaxError(s"VersionInfo EncodingDecl? $s or '?>' expected!") } (info_ver, info_enc, info_stdl) @@ -655,7 +655,7 @@ trait MarkupParser extends MarkupParserCommon with TokenTests { putChar(ch) //println("hello '"+ch+"'"+isPubIDChar(ch)) if (!isPubIDChar(ch)) - reportSyntaxError("char '" + ch + "' is not allowed in public id") + reportSyntaxError(s"char '$ch' is not allowed in public id") nextch() } nextch() @@ -752,7 +752,7 @@ trait MarkupParser extends MarkupParserCommon with TokenTests { xToken('>') case _ => - curInput.reportError(pos, "unexpected character '" + ch + "', expected some markupdecl") + curInput.reportError(pos, s"unexpected character '$ch', expected some markupdecl") while (ch != '>' && !eof) nextch() } @@ -776,7 +776,7 @@ trait MarkupParser extends MarkupParserCommon with TokenTests { case _ if isSpace(ch) => xSpace() case _ => - reportSyntaxError("markupdecl: unexpected character '" + ch + "' #" + ch.toInt) + reportSyntaxError(s"markupdecl: unexpected character '$ch' #${ch.toInt}") nextch() } diff --git a/shared/src/main/scala/scala/xml/parsing/MarkupParserCommon.scala b/shared/src/main/scala/scala/xml/parsing/MarkupParserCommon.scala index ff43221d..8179b8a7 100644 --- a/shared/src/main/scala/scala/xml/parsing/MarkupParserCommon.scala +++ b/shared/src/main/scala/scala/xml/parsing/MarkupParserCommon.scala @@ -88,7 +88,7 @@ private[scala] trait MarkupParserCommon extends TokenTests { case `end` => return buf.toString case ch => buf.append(ch) } - scala.sys.error("Expected '%s'".format(end)) + scala.sys.error(s"Expected '$end'") } /** @@ -116,7 +116,7 @@ private[scala] trait MarkupParserCommon extends TokenTests { if (ch == SU) truncatedError("") else if (!isNameStart(ch)) - return errorAndResult("name expected, but char '%s' cannot start a name".format(ch), "") + return errorAndResult(s"name expected, but char '$ch' cannot start a name", "") val buf: StringBuilder = new StringBuilder @@ -136,7 +136,7 @@ private[scala] trait MarkupParserCommon extends TokenTests { case "apos" => "'" case "quot" => "\"" case "quote" => "\"" - case _ => "&" + s + ";" + case _ => s"&$s;" } /** @@ -206,7 +206,7 @@ private[scala] trait MarkupParserCommon extends TokenTests { def xToken(that: Char): Unit = { if (ch == that) nextch() - else xHandleError(that, "'%s' expected instead of '%s'".format(that, ch)) + else xHandleError(that, s"'$that' expected instead of '$ch'") } def xToken(that: Seq[Char]): Unit = that.foreach(xToken) diff --git a/shared/src/test/scala-2.x/scala/xml/TransformersTest.scala b/shared/src/test/scala-2.x/scala/xml/TransformersTest.scala index c67453e0..9f7e744f 100644 --- a/shared/src/test/scala-2.x/scala/xml/TransformersTest.scala +++ b/shared/src/test/scala-2.x/scala/xml/TransformersTest.scala @@ -67,7 +67,7 @@ class TransformersTest { n match { case t: Text if t.text.trim.nonEmpty => i += 1 - Text(t.text + "!") + Text(s"${t.text}!") case _ => n } } diff --git a/shared/src/test/scala/scala/xml/XMLTest.scala b/shared/src/test/scala/scala/xml/XMLTest.scala index 19d28c39..2b1c553a 100644 --- a/shared/src/test/scala/scala/xml/XMLTest.scala +++ b/shared/src/test/scala/scala/xml/XMLTest.scala @@ -25,7 +25,9 @@ class XMLTest { val pelems_1: NodeSeq = for (x <- p \ "bar"; y <- p \ "baz") yield { - Text(x.attributes("value").toString + y.attributes("bazValue").toString + "!") + val value = x.attributes("value") + val bazValue = y.attributes("bazValue") + Text(s"$value$bazValue!") } val pelems_2: NodeSeq = NodeSeq.fromSeq(List(Text("38!"), Text("58!")))