diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/build/maven/continuations-plugin-pom.xml | 9 | ||||
-rw-r--r-- | src/build/maven/jline-pom.xml | 9 | ||||
-rw-r--r-- | src/build/maven/scala-actors-pom.xml | 9 | ||||
-rw-r--r-- | src/build/maven/scala-compiler-pom.xml | 9 | ||||
-rw-r--r-- | src/build/maven/scala-dbc-pom.xml | 9 | ||||
-rw-r--r-- | src/build/maven/scala-dotnet-library-pom.xml | 9 | ||||
-rw-r--r-- | src/build/maven/scala-library-pom.xml | 9 | ||||
-rw-r--r-- | src/build/maven/scala-partest-pom.xml | 9 | ||||
-rw-r--r-- | src/build/maven/scala-swing-pom.xml | 9 | ||||
-rw-r--r-- | src/build/maven/scalap-pom.xml | 9 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala | 4 | ||||
-rw-r--r-- | src/library/scala/collection/immutable/StringLike.scala | 15 | ||||
-rw-r--r-- | src/library/scala/util/matching/Regex.scala | 58 |
13 files changed, 109 insertions, 58 deletions
diff --git a/src/build/maven/continuations-plugin-pom.xml b/src/build/maven/continuations-plugin-pom.xml index aca519b87e..9abb0a36f0 100644 --- a/src/build/maven/continuations-plugin-pom.xml +++ b/src/build/maven/continuations-plugin-pom.xml @@ -23,13 +23,12 @@ </license> </licenses> <scm> - <connection>scm:svn:http://lampsvn.epfl.ch/svn-repos/scala/scala/trunk</connection> - <url>https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk</url> + <connection>scm:git:git://github.com/scala/scala.git</connection> + <url>https://github.com/scala/scala.git</url> </scm> <issueManagement> - <system>trac</system> - <url>http://lampsvn.epfl.ch/trac/scala - </url> + <system>JIRA</system> + <url>https://issues.scala-lang.org/</url> </issueManagement> <dependencies> diff --git a/src/build/maven/jline-pom.xml b/src/build/maven/jline-pom.xml index 4752deb5e0..0d6e801551 100644 --- a/src/build/maven/jline-pom.xml +++ b/src/build/maven/jline-pom.xml @@ -28,13 +28,12 @@ </license> </licenses> <scm> - <connection>scm:svn:http://lampsvn.epfl.ch/svn-repos/scala/scala/trunk</connection> - <url>https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk</url> + <connection>scm:git:git://github.com/scala/scala.git</connection> + <url>https://github.com/scala/scala.git</url> </scm> <issueManagement> - <system>trac</system> - <url>http://lampsvn.epfl.ch/trac/scala - </url> + <system>JIRA</system> + <url>https://issues.scala-lang.org/</url> </issueManagement> <dependencies> diff --git a/src/build/maven/scala-actors-pom.xml b/src/build/maven/scala-actors-pom.xml index 12bae2a23d..e8c6649721 100644 --- a/src/build/maven/scala-actors-pom.xml +++ b/src/build/maven/scala-actors-pom.xml @@ -23,13 +23,12 @@ </license> </licenses> <scm> - <connection>scm:svn:http://lampsvn.epfl.ch/svn-repos/scala/scala/trunk</connection> - <url>https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk</url> + <connection>scm:git:git://github.com/scala/scala.git</connection> + <url>https://github.com/scala/scala.git</url> </scm> <issueManagement> - <system>trac</system> - <url>http://lampsvn.epfl.ch/trac/scala - </url> + <system>JIRA</system> + <url>https://issues.scala-lang.org/</url> </issueManagement> <dependencies> <dependency> diff --git a/src/build/maven/scala-compiler-pom.xml b/src/build/maven/scala-compiler-pom.xml index f9bcb6719d..82d0ed7c91 100644 --- a/src/build/maven/scala-compiler-pom.xml +++ b/src/build/maven/scala-compiler-pom.xml @@ -23,13 +23,12 @@ </license> </licenses> <scm> - <connection>scm:svn:http://lampsvn.epfl.ch/svn-repos/scala/scala/trunk</connection> - <url>https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk</url> + <connection>scm:git:git://github.com/scala/scala.git</connection> + <url>https://github.com/scala/scala.git</url> </scm> <issueManagement> - <system>trac</system> - <url>http://lampsvn.epfl.ch/trac/scala - </url> + <system>JIRA</system> + <url>https://issues.scala-lang.org/</url> </issueManagement> <dependencies> diff --git a/src/build/maven/scala-dbc-pom.xml b/src/build/maven/scala-dbc-pom.xml index 23092d10ad..aa3d050c1e 100644 --- a/src/build/maven/scala-dbc-pom.xml +++ b/src/build/maven/scala-dbc-pom.xml @@ -23,13 +23,12 @@ </license> </licenses> <scm> - <connection>scm:svn:http://lampsvn.epfl.ch/svn-repos/scala/scala/trunk</connection> - <url>https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk</url> + <connection>scm:git:git://github.com/scala/scala.git</connection> + <url>https://github.com/scala/scala.git</url> </scm> <issueManagement> - <system>trac</system> - <url>http://lampsvn.epfl.ch/trac/scala - </url> + <system>JIRA</system> + <url>https://issues.scala-lang.org/</url> </issueManagement> <dependencies> <dependency> diff --git a/src/build/maven/scala-dotnet-library-pom.xml b/src/build/maven/scala-dotnet-library-pom.xml index 339460924a..007e8be173 100644 --- a/src/build/maven/scala-dotnet-library-pom.xml +++ b/src/build/maven/scala-dotnet-library-pom.xml @@ -24,13 +24,12 @@ </license> </licenses> <scm> - <connection>scm:svn:http://lampsvn.epfl.ch/svn-repos/scala/scala/trunk</connection> - <url>https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk</url> + <connection>scm:git:git://github.com/scala/scala.git</connection> + <url>https://github.com/scala/scala.git</url> </scm> <issueManagement> - <system>trac</system> - <url>http://lampsvn.epfl.ch/trac/scala - </url> + <system>JIRA</system> + <url>https://issues.scala-lang.org/</url> </issueManagement> <distributionManagement> <repository> diff --git a/src/build/maven/scala-library-pom.xml b/src/build/maven/scala-library-pom.xml index 8e0abd4937..673c3dfada 100644 --- a/src/build/maven/scala-library-pom.xml +++ b/src/build/maven/scala-library-pom.xml @@ -23,13 +23,12 @@ </license> </licenses> <scm> - <connection>scm:svn:http://lampsvn.epfl.ch/svn-repos/scala/scala/trunk</connection> - <url>https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk</url> + <connection>scm:git:git://github.com/scala/scala.git</connection> + <url>https://github.com/scala/scala.git</url> </scm> <issueManagement> - <system>trac</system> - <url>http://lampsvn.epfl.ch/trac/scala - </url> + <system>JIRA</system> + <url>https://issues.scala-lang.org/</url> </issueManagement> <distributionManagement> <repository> diff --git a/src/build/maven/scala-partest-pom.xml b/src/build/maven/scala-partest-pom.xml index f18ca46c50..ac05f242d5 100644 --- a/src/build/maven/scala-partest-pom.xml +++ b/src/build/maven/scala-partest-pom.xml @@ -23,13 +23,12 @@ </license> </licenses> <scm> - <connection>scm:svn:http://lampsvn.epfl.ch/svn-repos/scala/scala/trunk</connection> - <url>https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk</url> + <connection>scm:git:git://github.com/scala/scala.git</connection> + <url>https://github.com/scala/scala.git</url> </scm> <issueManagement> - <system>trac</system> - <url>http://lampsvn.epfl.ch/trac/scala - </url> + <system>JIRA</system> + <url>https://issues.scala-lang.org/</url> </issueManagement> <dependencies> diff --git a/src/build/maven/scala-swing-pom.xml b/src/build/maven/scala-swing-pom.xml index a03bc07ab0..3df5db5b21 100644 --- a/src/build/maven/scala-swing-pom.xml +++ b/src/build/maven/scala-swing-pom.xml @@ -23,13 +23,12 @@ </license> </licenses> <scm> - <connection>scm:svn:http://lampsvn.epfl.ch/svn-repos/scala/scala/trunk</connection> - <url>https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk</url> + <connection>scm:git:git://github.com/scala/scala.git</connection> + <url>https://github.com/scala/scala.git</url> </scm> <issueManagement> - <system>trac</system> - <url>http://lampsvn.epfl.ch/trac/scala - </url> + <system>JIRA</system> + <url>https://issues.scala-lang.org/</url> </issueManagement> <dependencies> <dependency> diff --git a/src/build/maven/scalap-pom.xml b/src/build/maven/scalap-pom.xml index d7f867d4a1..50c08e899c 100644 --- a/src/build/maven/scalap-pom.xml +++ b/src/build/maven/scalap-pom.xml @@ -23,13 +23,12 @@ </license> </licenses> <scm> - <connection>scm:svn:http://lampsvn.epfl.ch/svn-repos/scala/scala/trunk</connection> - <url>https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk</url> + <connection>scm:git:git://github.com/scala/scala.git</connection> + <url>https://github.com/scala/scala.git</url> </scm> <issueManagement> - <system>trac</system> - <url>http://lampsvn.epfl.ch/trac/scala - </url> + <system>JIRA</system> + <url>https://issues.scala-lang.org/</url> </issueManagement> <dependencies> diff --git a/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala b/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala index 4c77cb7082..8e326c202a 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala +++ b/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala @@ -739,7 +739,7 @@ abstract class GenJVM extends SubComponent with GenJVMUtil with GenAndroid with clasz.cunit.warning(sym.pos, """|compiler bug: created invalid generic signature for %s in %s |signature: %s - |if this is reproducible, please report bug at http://lampsvn.epfl.ch/trac/scala + |if this is reproducible, please report bug at https://issues.scala-lang.org/ """.trim.stripMargin.format(sym, sym.owner.skipPackageObject.fullName, sig)) return } @@ -753,7 +753,7 @@ abstract class GenJVM extends SubComponent with GenJVMUtil with GenAndroid with |original type: %s |normalized type: %s |erasure type: %s - |if this is reproducible, please report bug at http://lampsvn.epfl.ch/trac/scala + |if this is reproducible, please report bug at https://issues.scala-lang.org/ """.trim.stripMargin.format(sym, sym.owner.skipPackageObject.fullName, sig, memberTpe, normalizedTpe, bytecodeTpe)) return } diff --git a/src/library/scala/collection/immutable/StringLike.scala b/src/library/scala/collection/immutable/StringLike.scala index f9697565de..fc4e7bf0a8 100644 --- a/src/library/scala/collection/immutable/StringLike.scala +++ b/src/library/scala/collection/immutable/StringLike.scala @@ -207,9 +207,20 @@ self => /** You can follow a string with `.r`, turning it into a `Regex`. E.g. * - * """A\w*""".r is the regular expression for identifiers starting with `A`. + * `"""A\w*""".r` is the regular expression for identifiers starting with `A`. */ - def r: Regex = new Regex(toString) + def r: Regex = r() + + /** You can follow a string with `.r(g1, ... , gn)`, turning it into a `Regex`, + * with group names g1 through gn. + * + * `"""(\d\d)-(\d\d)-(\d\d\d\d)""".r("month", "day", "year")` matches dates + * and provides its subcomponents through groups named "month", "day" and + * "year". + * + * @param groupNames The names of the groups in the pattern, in the order they appear. + */ + def r(groupNames: String*): Regex = new Regex(toString, groupNames: _*) def toBoolean: Boolean = parseBoolean(toString) def toByte: Byte = java.lang.Byte.parseByte(toString) diff --git a/src/library/scala/util/matching/Regex.scala b/src/library/scala/util/matching/Regex.scala index ca97515e23..3f21cc9724 100644 --- a/src/library/scala/util/matching/Regex.scala +++ b/src/library/scala/util/matching/Regex.scala @@ -133,6 +133,15 @@ import java.util.regex.{ Pattern, Matcher } * * @param regex A string representing a regular expression * @param groupNames A mapping from names to indices in capture groups + * + * @define replacementString + * In the replacement String, a dollar sign (`$`) followed by a number will be + * interpreted as a reference to a group in the matched pattern, with numbers + * 1 through 9 corresponding to the first nine groups, and 0 standing for the + * whole match. Any other character is an error. The backslash (`\`) character + * will be interpreted as an escape character, and can be used to escape the + * dollar sign. One can use [[scala.util.matching.Regex]]'s `quoteReplacement` + * to automatically escape these characters. */ @SerialVersionUID(-2094783597747625537L) class Regex(regex: String, groupNames: String*) extends Serializable { @@ -180,7 +189,7 @@ class Regex(regex: String, groupNames: String*) extends Serializable { None } - /** Return all matches of this regexp in given character sequence as a [[scala.util.mathcing.Regex.MatchIterator]], + /** Return all matches of this regexp in given character sequence as a [[scala.util.matching.Regex.MatchIterator]], * which is a special [[scala.collection.Iterator]] that returns the * matched strings, but can also be converted into a normal iterator * that returns objects of type [[scala.util.matching.Regex.Match]] @@ -193,6 +202,25 @@ class Regex(regex: String, groupNames: String*) extends Serializable { */ def findAllIn(source: java.lang.CharSequence) = new Regex.MatchIterator(source, this, groupNames) + + /** Return all matches of this regexp in given character sequence as a + * [[scala.collection.Iterator]] of [[scala.util.matching.Regex.Match]. + * + * @param source The text to match against. + * @return A [[scala.collection.Iterator]] of [[scala.util.matching.Regex.Match]] for all matches. + * @example {{{for (words <- """\w+""".r findAllMatchIn "A simple example.") yield words.start}}} + */ + def findAllMatchIn(source: java.lang.CharSequence): Iterator[Match] = { + val matchIterator = findAllIn(source) + new Iterator[Match] { + def hasNext = matchIterator.hasNext + def next: Match = { + matchIterator.next; + new Match(matchIterator.source, matchIterator.matcher, matchIterator.groupNames).force + } + } + } + /** Return optionally first matching string of this regexp in given character sequence, * or None if it does not exist. * @@ -258,6 +286,8 @@ class Regex(regex: String, groupNames: String*) extends Serializable { /** Replaces all matches by a string. * + * $replacementString + * * @param target The string to match * @param replacement The string that will replace each match * @return The resulting string @@ -280,6 +310,8 @@ class Regex(regex: String, groupNames: String*) extends Serializable { * val repl = datePattern replaceAllIn (text, m => m.group("month")+"/"+m.group("day")) * }}} * + * $replacementString + * * @param target The string to match. * @param replacer The function which maps a match to another string. * @return The target string after replacements. @@ -298,13 +330,15 @@ class Regex(regex: String, groupNames: String*) extends Serializable { * {{{ * import scala.util.matching.Regex._ * - * val map = Map("x" -> "a var", "y" -> "another var") + * val map = Map("x" -> "a var", "y" -> """some $ and \ signs""") * val text = "A text with variables %x, %y and %z." * val varPattern = """%(\w+)""".r - * val mapper = (m: Match) => map get (m group 1) + * val mapper = (m: Match) => map get (m group 1) map (quoteReplacement(_)) * val repl = varPattern replaceSomeIn (text, mapper) * }}} * + * $replacementString + * * @param target The string to match. * @param replacer The function which optionally maps a match to another string. * @return The target string after replacements. @@ -319,6 +353,8 @@ class Regex(regex: String, groupNames: String*) extends Serializable { /** Replaces the first match by a string. * + * $replacementString + * * @param target The string to match * @param replacement The string that will replace the match * @return The resulting string @@ -505,7 +541,7 @@ object Regex { class MatchIterator(val source: java.lang.CharSequence, val regex: Regex, val groupNames: Seq[String]) extends AbstractIterator[String] with Iterator[String] with MatchData { self => - protected val matcher = regex.pattern.matcher(source) + protected[Regex] val matcher = regex.pattern.matcher(source) private var nextSeen = false /** Is there another match? */ @@ -569,4 +605,18 @@ object Regex { def replace(rs: String) = matcher.appendReplacement(sb, rs) } + + /** Quotes replacement strings to be used in replacement methods. + * + * Replacement methods give special meaning to backslashes (`\`) and + * dollar signs (`$`) in replacement strings, so they are not treated + * as literals. This method escapes these characters so the resulting + * string can be used as a literal replacement representing the input + * string. + * + * @param text The string one wishes to use as literal replacement. + * @return A string that can be used to replace matches with `text`. + * @example {{{"CURRENCY".r.replaceAllIn(input, Regex quoteReplacement "US$")}}} + */ + def quoteReplacement(text: String): String = Matcher quoteReplacement text } |