src/Pure/Tools/server_commands.scala
changeset 67937 91eb307511bb
parent 67931 f7917c15b566
child 67940 b4e80f062fbf
equal deleted inserted replaced
67936:141a93b93aa6 67937:91eb307511bb
     8 
     8 
     9 
     9 
    10 object Server_Commands
    10 object Server_Commands
    11 {
    11 {
    12   def default_preferences: String = Options.read_prefs()
    12   def default_preferences: String = Options.read_prefs()
    13   def default_qualifier: String = Sessions.DRAFT
       
    14 
    13 
    15   def unapply_name_pos(json: JSON.T): Option[(String, Position.T)] =
    14   def unapply_name_pos(json: JSON.T): Option[(String, Position.T)] =
    16     json match {
    15     json match {
    17       case JSON.Value.String(name) => Some((name, Position.none))
    16       case JSON.Value.String(name) => Some((name, Position.none))
    18       case JSON.Object(map) if map.keySet == Set("name", "pos") =>
    17       case JSON.Object(map) if map.keySet == Set("name", "pos") =>
   164   object Use_Theories
   163   object Use_Theories
   165   {
   164   {
   166     sealed case class Args(
   165     sealed case class Args(
   167       session_id: UUID,
   166       session_id: UUID,
   168       theories: List[(String, Position.T)],
   167       theories: List[(String, Position.T)],
   169       qualifier: String = default_qualifier,
       
   170       master_dir: String = "",
   168       master_dir: String = "",
   171       pretty_margin: Double = Pretty.default_margin,
   169       pretty_margin: Double = Pretty.default_margin,
   172       unicode_symbols: Boolean = false)
   170       unicode_symbols: Boolean = false)
   173 
   171 
   174     def unapply(json: JSON.T): Option[Args] =
   172     def unapply(json: JSON.T): Option[Args] =
   175       for {
   173       for {
   176         session_id <- JSON.uuid(json, "session_id")
   174         session_id <- JSON.uuid(json, "session_id")
   177         theories <- JSON.list(json, "theories", unapply_name_pos _)
   175         theories <- JSON.list(json, "theories", unapply_name_pos _)
   178         qualifier <- JSON.string_default(json, "qualifier", default_qualifier)
       
   179         master_dir <- JSON.string_default(json, "master_dir")
   176         master_dir <- JSON.string_default(json, "master_dir")
   180         pretty_margin <- JSON.double_default(json, "pretty_margin", Pretty.default_margin)
   177         pretty_margin <- JSON.double_default(json, "pretty_margin", Pretty.default_margin)
   181         unicode_symbols <- JSON.bool_default(json, "unicode_symbols")
   178         unicode_symbols <- JSON.bool_default(json, "unicode_symbols")
   182       }
   179       }
   183       yield {
   180       yield {
   184         Args(session_id, theories, qualifier = qualifier, master_dir = master_dir,
   181         Args(session_id, theories, master_dir = master_dir,
   185           pretty_margin = pretty_margin, unicode_symbols)
   182           pretty_margin = pretty_margin, unicode_symbols)
   186       }
   183       }
   187 
   184 
   188     def command(args: Args,
   185     def command(args: Args,
   189       session: Thy_Resources.Session,
   186       session: Thy_Resources.Session,
   190       id: UUID = UUID(),
   187       id: UUID = UUID(),
   191       progress: Progress = No_Progress): (JSON.Object.T, Thy_Resources.Theories_Result) =
   188       progress: Progress = No_Progress): (JSON.Object.T, Thy_Resources.Theories_Result) =
   192     {
   189     {
   193       val result =
   190       val result =
   194         session.use_theories(args.theories, qualifier = args.qualifier,
   191         session.use_theories(args.theories, master_dir = args.master_dir,
   195           master_dir = args.master_dir, id = id, progress = progress)
   192           id = id, progress = progress)
   196 
   193 
   197       def output_text(s: String): String =
   194       def output_text(s: String): String =
   198         if (args.unicode_symbols) Symbol.decode(s) else Symbol.encode(s)
   195         if (args.unicode_symbols) Symbol.decode(s) else Symbol.encode(s)
   199 
   196 
   200       def output_message(tree: XML.Tree, pos: Position.T): JSON.Object.T =
   197       def output_message(tree: XML.Tree, pos: Position.T): JSON.Object.T =