aboutsummaryrefslogtreecommitdiff
path: root/ide/richprinter.ml
diff options
context:
space:
mode:
authorEmilio Jesus Gallego Arias2016-06-01 17:06:25 +0200
committerEmilio Jesus Gallego Arias2016-06-02 16:45:39 +0200
commit318fc2c04df1e73cc8a178d4fc1ce8bf5543649b (patch)
tree440fb8e51d1fe118d866d0c620a86724e3c6eae8 /ide/richprinter.ml
parentffd89ea323937b7d323e24a2b6d53cdc857117dd (diff)
Move ide serialization libraries from lib/ to ide/
This makes the core free from particular protocol choices. It should help with the ppx serialization project and shrinks clib.cma a bit.
Diffstat (limited to 'ide/richprinter.ml')
-rw-r--r--ide/richprinter.ml24
1 files changed, 24 insertions, 0 deletions
diff --git a/ide/richprinter.ml b/ide/richprinter.ml
new file mode 100644
index 0000000000..5f39f36eab
--- /dev/null
+++ b/ide/richprinter.ml
@@ -0,0 +1,24 @@
+open Richpp
+
+module RichppConstr = Ppconstr.Richpp
+module RichppVernac = Ppvernac.Richpp
+module RichppTactic = Pptactic.Richpp
+
+type rich_pp =
+ Ppannotation.t Richpp.located Xml_datatype.gxml
+ * Xml_datatype.xml
+
+let get_annotations obj = Pp.Tag.prj obj Ppannotation.tag
+
+let make_richpp pr ast =
+ let rich_pp =
+ rich_pp get_annotations (pr ast)
+ in
+ let xml = Ppannotation.(
+ xml_of_rich_pp tag_of_annotation attributes_of_annotation rich_pp
+ )
+ in
+ (rich_pp, xml)
+
+let richpp_vernac = make_richpp RichppVernac.pr_vernac
+let richpp_constr = make_richpp RichppConstr.pr_constr_expr