From ec812521b31471ce9ac3d9bdf1288b1569defbc8 Mon Sep 17 00:00:00 2001
From: Sébastien Dailly <sebastien@chimrod.com>
Date: Wed, 23 Dec 2020 19:11:31 +0100
Subject: Add svg output

---
 ppx_hash/dune        |  6 ++++++
 ppx_hash/ppx_hash.ml | 32 ++++++++++++++++++++++++++++++++
 2 files changed, 38 insertions(+)
 create mode 100755 ppx_hash/dune
 create mode 100755 ppx_hash/ppx_hash.ml

(limited to 'ppx_hash')

diff --git a/ppx_hash/dune b/ppx_hash/dune
new file mode 100755
index 0000000..7cb4bc8
--- /dev/null
+++ b/ppx_hash/dune
@@ -0,0 +1,6 @@
+(library 
+  (name ppx_hash) 
+  (kind ppx_deriver)
+  (libraries ppxlib ) 
+  (preprocess (pps ppxlib.metaquot))
+  )
diff --git a/ppx_hash/ppx_hash.ml b/ppx_hash/ppx_hash.ml
new file mode 100755
index 0000000..59584d5
--- /dev/null
+++ b/ppx_hash/ppx_hash.ml
@@ -0,0 +1,32 @@
+open Ppxlib
+
+(**
+
+   This is a simple ppx which evaluate hash for string at compilation time.
+
+    [%static_hash "deadbeef"] is equivalent to [Hashtbl.hash "deadbeef"]
+
+    the ppx only evaluate strings.
+*)
+
+let name = "static_hash"
+
+let expand ~loc ~path:_ (value : string) =
+  let h = Hashtbl.hash value in
+  Ast_builder.Default.eint ~loc h
+
+let extension =
+  Extension.declare
+    name
+    Extension.Context.expression
+    Ast_pattern.(single_expr_payload (estring __))
+    expand
+
+
+
+let rule = Ppxlib.Context_free.Rule.extension extension
+
+let () =
+  Driver.register_transformation
+    ~rules:[rule]
+    name
-- 
cgit v1.2.3