From 77544bdfad2af41514ec1435f706fee87ea2969e Mon Sep 17 00:00:00 2001
From: Sébastien Dailly <sebastien@dailly.me>
Date: Mon, 7 Feb 2022 15:38:37 +0100
Subject: Added viz.js code

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

(limited to 'lib/ppx_hash')

diff --git a/lib/ppx_hash/dune b/lib/ppx_hash/dune
new file mode 100755
index 0000000..7cb4bc8
--- /dev/null
+++ b/lib/ppx_hash/dune
@@ -0,0 +1,6 @@
+(library 
+  (name ppx_hash) 
+  (kind ppx_deriver)
+  (libraries ppxlib ) 
+  (preprocess (pps ppxlib.metaquot))
+  )
diff --git a/lib/ppx_hash/ppx_hash.ml b/lib/ppx_hash/ppx_hash.ml
new file mode 100755
index 0000000..59584d5
--- /dev/null
+++ b/lib/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