From 3102d8bce3426d9cf41aeaf201c360d342677770 Mon Sep 17 00:00:00 2001 From: Jesse Morgan Date: Sat, 9 Apr 2016 14:22:20 -0700 Subject: Switching from Ivy+Ant to Maven. --- src/main/resources/templates/utils/dump.ftl | 98 +++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 src/main/resources/templates/utils/dump.ftl (limited to 'src/main/resources/templates/utils/dump.ftl') diff --git a/src/main/resources/templates/utils/dump.ftl b/src/main/resources/templates/utils/dump.ftl new file mode 100644 index 0000000..6491a25 --- /dev/null +++ b/src/main/resources/templates/utils/dump.ftl @@ -0,0 +1,98 @@ +<#-- dump.ftl + -- + -- Generates tree representations of data model items. + -- + -- Usage: + -- <#import "dump.ftl" as dumper> + -- + -- <#assign foo = something.in["your"].data[0].model /> + -- + -- <@dumper.dump foo /> + -- + -- When used within html pages you've to use
-tags to get the wanted
+  -- result:
+  -- 
+  -- <@dumper.dump foo />
+  -- 
+  -->
+
+<#-- The black_list contains bad hash keys. Any hash key which matches a 
+  -- black_list entry is prevented from being displayed.
+  -->
+<#assign black_list = ["class"] />
+
+
+<#-- 
+  -- The main macro.
+  -->
+  
+<#macro dump data>
+(root)
+<#if data?is_enumerable>
+<@printList data,[] />
+<#elseif data?is_hash_ex>
+<@printHashEx data,[] />
+
+
+
+<#-- private helper macros. it's not recommended to use these macros from 
+  -- outside the macro library.
+  -->
+
+<#macro printList list has_next_array>
+<#local counter=0 />
+<#list list as item>
+<#list has_next_array+[true] as has_next><#if !has_next>    <#else>  | 
+<#list has_next_array as has_next><#if !has_next>    <#else>  | <#t>
+<#t><@printItem item?if_exists,has_next_array+[item_has_next], counter />
+<#local counter = counter + 1/>
+
+
+
+<#macro printHashEx hash has_next_array>
+<#list hash?keys as key>
+<#list has_next_array+[true] as has_next><#if !has_next>    <#else>  | 
+<#list has_next_array as has_next><#if !has_next>    <#else>  | <#t>
+<#t><@printItem hash[key]?if_exists,has_next_array+[key_has_next], key />
+
+
+
+<#macro printItem item has_next_array key>
+<#if item?is_method>
+  +- ${key} = ?? (method)
+<#elseif item?is_enumerable>
+  +- ${key}
+  <@printList item, has_next_array /><#t>
+<#elseif item?is_hash_ex && omit(key?string)><#-- omit bean-wrapped java.lang.Class objects -->
+  +- ${key} (omitted)
+<#elseif item?is_hash_ex>
+  +- ${key}
+  <@printHashEx item, has_next_array /><#t>
+<#elseif item?is_number>
+  +- ${key} = ${item}
+<#elseif item?is_string>
+  +- ${key} = "${item}"
+<#elseif item?is_boolean>
+  +- ${key} = ${item?string}
+<#elseif item?is_date>
+  +- ${key} = ${item?string("yyyy-MM-dd HH:mm:ss zzzz")}
+<#elseif item?is_transform>
+  +- ${key} = ?? (transform)
+<#elseif item?is_macro>
+  +- ${key} = ?? (macro)
+<#elseif item?is_hash>
+  +- ${key} = ?? (hash)
+<#elseif item?is_node>
+  +- ${key} = ?? (node)
+
+
+
+<#function omit key>
+    <#local what = key?lower_case>
+    <#list black_list as item>
+        <#if what?index_of(item) gte 0>
+            <#return true>
+        
+    
+    <#return false>
+
\ No newline at end of file
-- 
cgit v1.2.3