Move "required development tools" section from top-level README into
[mkws-moved-to-github.git] / doc / mkws-developer.markdown
index c678b83..f4b9919 100644 (file)
@@ -3,6 +3,28 @@
 % 11 August 2014
 
 
+Required development tools
+==========================
+
+If you are building the widget set, as opposed to just using it, you
+will need the following Debian packages (or their equivalents on your
+operating system):
+
+       $ sudo apt-get install curl git pandoc yui-compressor libbsd-resource-perl
+
+You also need Node.js, but unfortunately the `node-js` package is not
+available for Debian wheezy. You can either get it from
+wheezy-backports or download the source from
+http://nodejs.org/download/ and build it yourself. You need both Node
+itself and its package manager NPM: `make install` puts them into
+`/usr/local/bin`.
+
+To compile the default templates you'll need to install the stable
+version of Handlebars. Currently it's at 2.0.0 and available by npm:
+
+       $ npm install handlebars@2.0.0 -g
+
+
 Overview
 ========
 
@@ -148,9 +170,24 @@ be used by the derived widget.
        `responsive_design_width`. Should be used for "unimportant"
        widgets that can be omitted from the mobile version of a site.
 
-* TODO subwidget()
-
-* TODO expandValue()
+* `expandValue()` --
+       TODO: either document this or remove it from the API.
+
+* `subwidget(type, overrides, defaults)` --
+       Returns the HTML of a subwidget of the specified type, which
+       can then be inserted into the widget using the
+       `this.node.html` function. The subwidget is given the same
+       attributes at the parent widget that invokes this function,
+       except where overrides are passed in. If defaults are also
+       provided, then these are used when the parent widget provides
+       no values. Both the `overrides` and `defaults` arguments are
+       hashes: the latter is optional.
+  
+       See for example the `Credo` widget defined in the example
+       area's `mkws-widget-credo.js` file. This uses several
+       invocations of `subwidget` to create a complex compound widget
+       with numerous text, facet and image panes. TODO: rename this
+       widget and everything related to it.
 
 In addition to these properties and methods of the bare widget object,
 some kinds of specific widget add other properties of their own. For
@@ -243,4 +280,4 @@ TODO: list of events that can be usefully subscribed to.
 
 - - -
 
-Copyright (C) 2013-2014 by IndexData ApS, <http://www.indexdata.com>
+Copyright (C) 2013-2014 by Index Data ApS, <http://www.indexdata.com>