comparison json_eval.xml @ 2:1fce03693725 draft

Uploaded
author kellrott
date Tue, 24 Jul 2012 17:41:32 -0400
parents
children
comparison
equal deleted inserted replaced
1:bda961c955d5 2:1fce03693725
1 <tool id="json_eval" name="JSON Eval" version="1.0">
2 <description>Evalutate and Format JSON</description>
3 <command interpreter="python">$script_file</command>
4 <inputs>
5 <param name="json_txt" type="text" area="True" size="5x35" label="JSON Text" optional="True">
6 <sanitizer>
7 <valid initial="string.printable">
8 <remove value="&quot;"/>
9 </valid>
10 <mapping initial="none">
11 <add source="&quot;" target="\&quot;"/>
12 </mapping>
13 </sanitizer>
14 </param>
15 <param name="json_data" type="data" label="JSON File" optional="True"/>
16 <param name="multi_line" type="boolean" label="MultiLine file" checked="False"/>
17 <param name="end_line" type="boolean" label="Add endfiles" checked="True"/>
18 <param name="eval_txt" type="text" area="True" size="5x35" label="PYTHON Eval">
19 <sanitizer>
20 <valid initial="string.printable">
21 <remove value="&quot;"/>
22 <remove value="\"/>
23 </valid>
24 <mapping initial="none">
25 <add source="&quot;" target="\&quot;"/>
26 <add source="\" target="\\"/>
27 </mapping>
28 </sanitizer>
29 </param>
30 </inputs>
31 <outputs>
32 <data format="txt" name="outfile" />
33 </outputs>
34 <configfiles>
35 <configfile name="script_file"><![CDATA[#!/usr/bin/env python
36 import os
37 import sys
38 import json
39 from StringIO import StringIO
40 json_txt = """${json_txt}"""
41 json_path = """${json_data}"""
42 eval_txt = """${eval_txt}"""
43 out_path = """${outfile}"""
44 multi_line = "${multi_line}"
45 add_endline = "${end_line}"
46
47 print eval_txt
48
49 if len(json_path) and json_path != "None":
50 handle = open(json_path)
51 else:
52 handle = StringIO(json_txt)
53
54 ohandle = open(out_path, "w")
55 if multi_line == "true":
56 for line in handle:
57 funcmap = {
58 "len":len,
59 "value" : json.loads(line)
60 }
61 ohandle.write( eval(eval_txt,{"__builtins__":None},funcmap) )
62 if add_endline == "true":
63 ohandle.write("\n")
64
65 else:
66 line = handle.read()
67 funcmap = {
68 "len":len,
69 "value" : json.loads(line)
70 }
71 ohandle.write( eval(eval_txt,{"__builtins__":None},funcmap) )
72 if add_endline == "true":
73 ohandle.write("\n")
74
75 handle.close()
76 ohandle.close()
77
78
79 ]]></configfile>
80 </configfiles>
81 <help>
82 This is a utility to decode JSON data into text info.
83
84 The 'multiline' mode assumes that each line in an input is a seperate and complete
85 JSON record (ie no return characters in the middle of a record)
86
87 Given a files with
88
89 { "@id" : "Test_1" }
90 { "@id" : "Test_2" }
91 { "@id" : "Test_3" }
92
93 Example:
94 value['@id']
95
96 Prints out the file:
97 Test_1
98 Test_2
99 Test_3
100
101
102
103
104 </help>
105 </tool>