anchor.diff:  * dynamically generate runtime config info at build time where possible, e.g. pull version info from resource metadata instead of hardcoding it
   
   * etc.
  +
  +
  +WARNING: BREAKING CHANGES: configurations are now written in `.edn`
  +files and the data format has changed.  The documentation here is
  +out-of-date with respect to details although the overall design is
  +pretty much the same.  See the link:webjars/[webjars] testapp for the most
  +up-to-date config examples.
   
   == usage
   
  
positive.code: sufficiently rich to support inference to their URIs.  So we have to
  explicitly indicate them in the `:bundles` maps.
  
  [source,clojure]
  .bower.clj
  ----
  (ns bower)
  
  (def config-map
    [{:bower "moment"
      :runtime 'hello.scripts/moment}
     {:bower "materialize"
      :bundles [{:runtime 'hello.styles/materialize
                 :uri "bower_components/Materialize/bin/materialize.css"}
                {:runtime 'hello.scripts/materialize
                 :uri "bower_components/Materialize/bin/materialize.js"}]}])
  ----
  
  === polymer
  
  `boot-bowdlerize` began life as a tool to help write
  https://www.polymer-project.org/1.0/[Polymer] webapps in Clojure.  A
  config map for Polymer resources looks just like one for bower
  resources, except `:polymer` replaces `:bower`, and for bundles a
  `:kw` entry must be supplied.  The latter ensures correct mapping from
  the user-specified `:runtime` symbol for the component and its HTML
  tag.
  
  A sample Polymer app may be found in the `polymer` subdirectory.
  
  [source,clojure]
  .polymer.clj
  ----
  (ns polymer)
  
  (def config-map
    [{:polymer "PolymerElements/iron-icon" :runtime 'miraj.iron/icon}
     {:polymer "PolymerElements/paper-button" :runtime 'miraj.paper/button}
     {:polymer "PolymerElements/paper-input"
      :bundles [{:runtime 'miraj.paper/input
                 :kw :paper-input
                 :uri "bower_components/paper-input/paper-input.html"}
                {:runtime 'miraj.paper.input/textarea
                 :kw :paper-textarea
                 :uri "bower_components/paper-input/paper-textarea.html"}
                {:runtime 'miraj.paper.input/behavior
                 :kw :paper-input-behavior
                 :uri "bower_components/paper-input/paper-input-behavior.html"}
                {:runtime 'miraj.paper.input/container
                 :kw :paper-input-container
                 :uri "bower_components/paper-input/paper-input-container.html"}
                {:runtime 'miraj.paper.input/error
                 :kw :paper-input-error
                 :uri "bower_components/paper-input/paper-input-error.html"}
                {:runtime 'miraj.paper.input/addon-behavior
                 :kw :paper-input-addon-behavior
                 :uri "bower_components/paper-input/paper-input-addon-behavior.html"}
                {:runtime 'miraj.paper.input/char-counter
                 :kw :paper-input-char-counter
                 :uri "bower_components/paper-input/paper-input-char-counter.html"}]}])
  ----
  
  === non-bower
  
  You can also specify resources that do not rely on bower, e.g.
  
  
negative.code: implementation of a simple technique for generating namespaced runtime
  configuration information at build-time.
  
  You can think of `boot-bowdlerize` as a meta-configuration tool.  Or a
  meta-package-manager.
  
  == motivation
  
  