Rob Lanphier  committed 5179ae7

Updating the docs. Using reStructured text on greatly expanded README.txt

  • Participants
  • Parent commits 85b3d5b
  • Branches default

Comments (0)

Files changed (2)

-This library allows an application developer to provide a curses-based user 
-interface for an application using not much more than a JSON schema.  The 
-JSON schema language is described here:
-However, most people will find it much simpler to use a tool to generate a 
-schema for tweaking.  The tool available here will generate a schema from an
-example piece of JSON, and allow editing the resulting file:
+jsonwidget is a general-purpose JSON validation and manipulation library.  This 
+library provides the following functions for applications:
-This library currently only operates on a subset of JSON files, but a near-term
-goal is to allow editing of any arbitrary JSON file.
+*  Validation of JSON-compatible data against a schema
+*  Automatic generation of a schema from JSON-compatible data
+*  Construction of a curses-based tree data editing user interface from a schema
+*  Construction of a Javascript-based web tree data editing user interface 
+   from a schema
+*  Simple WSGI server to serve the web user interface, and validate and store 
+   result of editing with the web user interface
+Though jsonwidget is optimized for working with JSON, it is useful for 
+providing editing capability for any JSON-compatible data structure.
+Schema language
+There are two JSON schema languages that are supported by jsonwidget:
+*  Version 1 is broadly supported by the library, and is documented here:
+   `Version 1 JSON Schema documentation`__
+*  Version 2 is a subset of the JSON schema format documented here:
+   Version 2 is not fully supported by jsonwidget at this time.  The Python 
+   portions of the library support v1 and v2 equally well (more or less), but 
+   the Javascript portion only supports v1.
+Included utilities
 The following utilities are included with jsonwidget:
-jsonedit - a general purpose json editing program
-jsonaddress - an example JSON address book editor
+* jsonedit - A terminal-based application (like you would use via SSH or 
+  local terminal on Linux and Mac). It's based on urwid, an excellent 
+  Python-based library for building terminal-based user interfaces.
+* csvedit - A variation on jsonedit that allows editing of .csv/tsv files.
+* jsonaddress - an example JSON address book editor
+* jwc - a command line utility with the following functions:
+  * editserver - launch a web server to edit a json file from a browser
+  * json2yaml - convert a json file to yaml with comments pulled from schema 
+    (also yaml2json to go back)
+  * schemagen - create a schema from an example json file
+  * validate - validate a JSON file against a schema
+Using the jsonwidget library
+A good example (as of this writing) of how to use jsonwidget as a library is 
+"yamledit" in the examples directory, which demonstrates where to hook in file
+parsers for formats other than JSON.
+Most of jsonwidget is licensed under the BSD license.  Portions were
+derived from urwid, and thus are LGPL.  Copies of both licenses can 
+be found in the docs directory.
+Unless otherwise indicated, all files in this distribution are under the
+following license (BSD).
+Reporting Bugs
+Please send bug reports to me (Rob Lanphier <>), or file a bug
+at the `bug tracker`__
+The `latest source`__ can be found at Bitbucket.
 Roadmap for future versions
+There's no firm roadmap for features right now.
 On deck:
+*  Consolidate several modules into jsonwidget/
-*  Put "Add field" over in the data area
+next version (e.g. 0.1.x):
 *  "Space" and "enter" should toggle expand/collapse on parent nodes
 *  Implement ability to edit arbitrary JSON
 *  Highlight all children when deleting
 *  Add a schema selection menu
 *  Add support for configuration files (look into ConfigObj)
 *  Only highlight the "Add Field" buttons rather than the whole row
-*  Make ordermaps optional
 *  Add ability to load schema from string buffer (so that an ordermap can be 
-*  Add schemagen tool
+next major version (e.g. 0.2.x):
 *  Update to urwid 0.9.9 mainloop
 *  Remap ctrl-s, ctrl-q, ctrl-c, etc
 *  Look at SitePen internet draft to see if compatibility is feasible
 *  Implement "File exists.  Overwrite?"
 *  Implement immediate filename prompt when write fails
 *  Implement read-only flag
+*  Put "Add field" over in the data area