aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/scalam/m/ast/Identifier.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/scalam/m/ast/Identifier.scala')
-rw-r--r--src/main/scala/scalam/m/ast/Identifier.scala20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/main/scala/scalam/m/ast/Identifier.scala b/src/main/scala/scalam/m/ast/Identifier.scala
index 6778e74..45dd967 100644
--- a/src/main/scala/scalam/m/ast/Identifier.scala
+++ b/src/main/scala/scalam/m/ast/Identifier.scala
@@ -7,15 +7,21 @@ package scalam.m.ast
* @define construct identifier
*/
case class Identifier(name: String) extends Mable {
-
def m = name
+}
+
+object Identifier {
+
+ def makeValid(raw: String) = {
+ val transformSymbols = Map(' ' -> '_').withDefault(c => c)
- def toValid = {
- val word = name.filter(c => c.isLetterOrDigit || c == '_')
- val id = word.headOption match {
- case None => "x"
- case Some(c) => if (!c.isLetter) 'x' + word else word
+ val validChars = raw.map(c => transformSymbols(c))
+
+ validChars.headOption match {
+ case Some(c) if (!c.isLetter) => 'x' + validChars
+ case Some(c) => validChars
+ case None => "id"
}
- Identifier(id)
}
+
} \ No newline at end of file