docs: def generate_map(map, name='url_map'):
      """
      Generates a JavaScript function containing the rules defined in
      this map, to be used with a MapAdapter's generate_javascript
      method.  If you don't pass a name the returned JavaScript code is
      an expression that returns a function.  Otherwise it's a standalone
      script that assigns the function with that name.  Dotted names are
      resolved (so you an use a name like 'obj.url_for')
  
      In order to use JavaScript generation, simplejson must be installed.
  
      Note that using this feature will expose the rules
      defined in your map to users. If your rules contain sensitive
      information, don't use JavaScript generation!
      """
      from warnings import warn
      warn(DeprecationWarning('This module is deprecated'))
      map.update()
      rules = []
      converters = []
      for rule in map.iter_rules():
          trace = [{
              'is_dynamic':   is_dynamic,
              'data':         data
          } for is_dynamic, data in rule._trace]
          rule_converters = {}
          for key, converter in iteritems(rule._converters):
              js_func = js_to_url_function(converter)
              try:
                  index = converters.index(js_func)
              except ValueError:
                  converters.append(js_func)
                  index = len(converters) - 1
              rule_converters[key] = index
          rules.append({
              u'endpoint':    rule.endpoint,
              u'arguments':   list(rule.arguments),
              u'converters':  rule_converters,
              u'trace':       trace,
              u'defaults':    rule.defaults
          })
  
      return render_template(name_parts=name and name.split('.') or [],
                             rules=dumps(rules),
                             converters=converters)