src/Pure/Tools/sql.scala
author wenzelm
Sun, 04 Sep 2016 15:44:20 +0200
changeset 63778 e06e899b78d0
child 63779 9da65bc75610
permissions -rw-r--r--
clarified modules; tuned signature;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
63778
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
     1
/*  Title:      Pure/Tools/sql.scala
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
     3
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
     4
Support for SQL.
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
     5
*/
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
     6
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
     7
package isabelle
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
     8
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
     9
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    10
object SQL
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    11
{
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    12
  /* concrete syntax */
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    13
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    14
  def quote_char(c: Char): String =
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    15
    c match {
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    16
      case '\u0000' => "\\0"
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    17
      case '\'' => "\\'"
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    18
      case '\"' => "\\\""
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    19
      case '\b' => "\\b"
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    20
      case '\n' => "\\n"
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    21
      case '\r' => "\\r"
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    22
      case '\t' => "\\t"
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    23
      case '\u001a' => "\\Z"
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    24
      case '\\' => "\\\\"
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    25
      case _ => c.toString
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    26
    }
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    27
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    28
  def quote_string(s: String): String =
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    29
    quote(s.map(quote_char(_)).mkString)
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    30
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    31
  def quote_ident(s: String): String = "`" + s + "`"
e06e899b78d0 clarified modules;
wenzelm
parents:
diff changeset
    32
}