1 /* Title: Pure/General/markup.scala
4 Common markup elements.
14 val Empty = Markup("", Nil)
20 val Name = new Properties.String(NAME)
23 val Kind = new Properties.String(KIND)
28 val BINDING = "binding"
35 def unapply(markup: Markup): Option[(String, String)] =
37 case Markup(ENTITY, props @ Kind(kind)) =>
39 case Name(name) => Some(kind, name)
51 val END_OFFSET = "end_offset"
55 val DEF_LINE = "def_line"
56 val DEF_OFFSET = "def_offset"
57 val DEF_END_OFFSET = "def_end_offset"
58 val DEF_FILE = "def_file"
61 val POSITION_PROPERTIES = Set(LINE, OFFSET, END_OFFSET, FILE, ID)
62 val POSITION = "position"
71 def unapply(markup: Markup): Option[String] =
73 case Markup(PATH, Name(name)) => Some(name)
81 val Indent = new Properties.Int("indent")
83 val Width = new Properties.Int("width")
92 /* logical entities */
97 val CONSTANT = "constant"
99 val DYNAMIC_FACT = "dynamic_fact"
107 val SKOLEM = "skolem"
114 val LITERAL = "literal"
115 val DELIMITER = "delimiter"
116 val INNER_STRING = "inner_string"
117 val INNER_COMMENT = "inner_comment"
119 val TOKEN_RANGE = "token_range"
126 val ATTRIBUTE = "attribute"
127 val METHOD = "method"
130 /* embedded source text */
132 val ML_SOURCE = "ML_source"
133 val DOC_SOURCE = "doc_source"
136 val ML_ANTIQUOTATION = "ML antiquotation"
137 val DOCUMENT_ANTIQUOTATION = "document antiquotation"
138 val DOCUMENT_ANTIQUOTATION_OPTION = "document antiquotation option"
143 val ML_KEYWORD = "ML_keyword"
144 val ML_DELIMITER = "ML_delimiter"
145 val ML_IDENT = "ML_ident"
146 val ML_TVAR = "ML_tvar"
147 val ML_NUMERAL = "ML_numeral"
148 val ML_CHAR = "ML_char"
149 val ML_STRING = "ML_string"
150 val ML_COMMENT = "ML_comment"
151 val ML_MALFORMED = "ML_malformed"
153 val ML_DEF = "ML_def"
154 val ML_OPEN = "ML_open"
155 val ML_STRUCT = "ML_struct"
156 val ML_TYPING = "ML_typing"
161 val KEYWORD_DECL = "keyword_decl"
162 val COMMAND_DECL = "command_decl"
164 val KEYWORD = "keyword"
165 val OPERATOR = "operator"
166 val COMMAND = "command"
168 val STRING = "string"
169 val ALTSTRING = "altstring"
170 val VERBATIM = "verbatim"
171 val COMMENT = "comment"
172 val CONTROL = "control"
173 val MALFORMED = "malformed"
175 val COMMAND_SPAN = "command_span"
176 val IGNORED_SPAN = "ignored_span"
177 val MALFORMED_SPAN = "malformed_span"
182 val LOADED_THEORY = "loaded_theory"
187 val TIMING = "timing"
188 val ELAPSED = "elapsed"
194 def apply(timing: isabelle.Timing): Markup =
196 (ELAPSED, Properties.Value.Double(timing.elapsed.seconds)),
197 (CPU, Properties.Value.Double(timing.cpu.seconds)),
198 (GC, Properties.Value.Double(timing.gc.seconds))))
199 def unapply(markup: Markup): Option[isabelle.Timing] =
201 case Markup(TIMING, List(
202 (ELAPSED, Properties.Value.Double(elapsed)),
203 (CPU, Properties.Value.Double(cpu)),
204 (GC, Properties.Value.Double(gc)))) =>
205 Some(new isabelle.Timing(Time.seconds(elapsed), Time.seconds(cpu), Time.seconds(gc)))
213 val SUBGOALS = "subgoals"
214 val PROOF_STATE = "proof_state"
217 val SUBGOAL = "subgoal"
218 val SENDBACK = "sendback"
219 val HILITE = "hilite"
226 val FORKED = "forked"
227 val JOINED = "joined"
228 val FAILED = "failed"
229 val FINISHED = "finished"
232 /* interactive documents */
234 val VERSION = "version"
236 val ASSIGN = "assign"
242 val PROVER_COMMAND = "prover_command"
243 val PROVER_ARG = "prover_arg"
248 val Serial = new Properties.Long("serial")
250 val MESSAGE = "message"
253 val STATUS = "status"
254 val REPORT = "report"
255 val WRITELN = "writeln"
256 val TRACING = "tracing"
257 val WARNING = "warning"
260 val SYSTEM = "system"
261 val STDOUT = "stdout"
264 val NO_REPORT = "no_report"
271 /* raw message functions */
273 val FUNCTION = "function"
274 val Function = new Properties.String(FUNCTION)
276 val INVOKE_SCALA = "invoke_scala"
279 def unapply(props: Properties.T): Option[(String, String)] =
281 case List((FUNCTION, INVOKE_SCALA), (NAME, name), (ID, id)) => Some((name, id))
286 val CANCEL_SCALA = "cancel_scala"
289 def unapply(props: Properties.T): Option[String] =
291 case List((FUNCTION, CANCEL_SCALA), (ID, id)) => Some(id)
299 val Data = Markup("data", Nil)
302 sealed case class Markup(name: String, properties: Properties.T)