couchdb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kxe...@apache.org
Subject [14/14] couchdb commit: updated refs/heads/master to cdac729
Date Thu, 16 Oct 2014 09:09:26 GMT
Documentation was moved to couchdb-documentation repository


Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/cdac7299
Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/cdac7299
Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/cdac7299

Branch: refs/heads/master
Commit: cdac72996d4429303577ee16128e53522b9d3615
Parents: 3d6478f
Author: Alexander Shorin <kxepal@apache.org>
Authored: Thu Oct 16 13:08:35 2014 +0400
Committer: Alexander Shorin <kxepal@apache.org>
Committed: Thu Oct 16 13:08:55 2014 +0400

----------------------------------------------------------------------
 LICENSE                                      |  136 ---
 NOTICE                                       |   24 -
 license.skip                                 |   11 -
 share/doc/ext/configdomain.py                |  127 ---
 share/doc/ext/github.py                      |   44 -
 share/doc/ext/httpdomain.py                  |  656 -----------
 share/doc/images/epub-icon.png               |  Bin 19185 -> 0 bytes
 share/doc/images/favicon.ico                 |  Bin 9326 -> 0 bytes
 share/doc/images/futon-createdb.png          |  Bin 76194 -> 0 bytes
 share/doc/images/futon-editdoc.png           |  Bin 52733 -> 0 bytes
 share/doc/images/futon-editeddoc.png         |  Bin 56005 -> 0 bytes
 share/doc/images/futon-overview.png          |  Bin 50815 -> 0 bytes
 share/doc/images/futon-replform.png          |  Bin 52223 -> 0 bytes
 share/doc/images/intro-consistency-01.png    |  Bin 35605 -> 0 bytes
 share/doc/images/intro-consistency-02.png    |  Bin 48145 -> 0 bytes
 share/doc/images/intro-consistency-03.png    |  Bin 17333 -> 0 bytes
 share/doc/images/intro-consistency-04.png    |  Bin 13744 -> 0 bytes
 share/doc/images/intro-consistency-05.png    |  Bin 25592 -> 0 bytes
 share/doc/images/intro-consistency-06.png    |  Bin 56651 -> 0 bytes
 share/doc/images/intro-consistency-07.png    |  Bin 53634 -> 0 bytes
 share/doc/images/intro-tour-01.png           |  Bin 50815 -> 0 bytes
 share/doc/images/intro-tour-02.png           |  Bin 83380 -> 0 bytes
 share/doc/images/intro-tour-03.png           |  Bin 53795 -> 0 bytes
 share/doc/images/intro-tour-04.png           |  Bin 56470 -> 0 bytes
 share/doc/images/intro-tour-05.png           |  Bin 53778 -> 0 bytes
 share/doc/images/intro-tour-06.png           |  Bin 61296 -> 0 bytes
 share/doc/images/intro-tour-07.png           |  Bin 67121 -> 0 bytes
 share/doc/images/intro-tour-08.png           |  Bin 83494 -> 0 bytes
 share/doc/images/intro-tour-09.png           |  Bin 84701 -> 0 bytes
 share/doc/images/intro-tour-10.png           |  Bin 61631 -> 0 bytes
 share/doc/images/intro-why-01.png            |  Bin 25755 -> 0 bytes
 share/doc/images/intro-why-02.png            |  Bin 5937 -> 0 bytes
 share/doc/images/intro-why-03.png            |  Bin 5134 -> 0 bytes
 share/doc/images/logo.png                    |  Bin 13195 -> 0 bytes
 share/doc/images/views-intro-01.png          |  Bin 1026767 -> 0 bytes
 share/doc/images/views-intro-02.png          |  Bin 9758 -> 0 bytes
 share/doc/images/views-intro-03.png          |  Bin 12650 -> 0 bytes
 share/doc/images/views-intro-04.png          |  Bin 14537 -> 0 bytes
 share/doc/src/about.rst                      |   25 -
 share/doc/src/api/basics.rst                 |  601 ----------
 share/doc/src/api/database/bulk-api.rst      |  646 -----------
 share/doc/src/api/database/changes.rst       |  584 ----------
 share/doc/src/api/database/common.rst        |  436 --------
 share/doc/src/api/database/compact.rst       |  243 -----
 share/doc/src/api/database/index.rst         |   47 -
 share/doc/src/api/database/misc.rst          |  351 ------
 share/doc/src/api/database/security.rst      |  182 ----
 share/doc/src/api/database/temp-views.rst    |   79 --
 share/doc/src/api/ddoc/common.rst            |  226 ----
 share/doc/src/api/ddoc/index.rst             |   37 -
 share/doc/src/api/ddoc/render.rst            |  388 -------
 share/doc/src/api/ddoc/rewrites.rst          |   90 --
 share/doc/src/api/ddoc/views.rst             |  792 --------------
 share/doc/src/api/document/attachments.rst   |  318 ------
 share/doc/src/api/document/common.rst        | 1206 ---------------------
 share/doc/src/api/document/index.rst         |   25 -
 share/doc/src/api/index.rst                  |   42 -
 share/doc/src/api/local.rst                  |   84 --
 share/doc/src/api/server/authn.rst           |  452 --------
 share/doc/src/api/server/common.rst          | 1016 -----------------
 share/doc/src/api/server/configuration.rst   |  336 ------
 share/doc/src/api/server/index.rst           |   28 -
 share/doc/src/conf.py                        |  161 ---
 share/doc/src/config/auth.rst                |  384 -------
 share/doc/src/config/compaction.rst          |  174 ---
 share/doc/src/config/couchdb.rst             |  200 ----
 share/doc/src/config/externals.rst           |  179 ---
 share/doc/src/config/http-handlers.rst       |  291 -----
 share/doc/src/config/http.rst                |  628 -----------
 share/doc/src/config/index.rst               |   34 -
 share/doc/src/config/intro.rst               |  181 ----
 share/doc/src/config/logging.rst             |   94 --
 share/doc/src/config/misc.rst                |  258 -----
 share/doc/src/config/proxying.rst            |   98 --
 share/doc/src/config/query-servers.rst       |  161 ---
 share/doc/src/config/replicator.rst          |  200 ----
 share/doc/src/config/services.rst            |  150 ---
 share/doc/src/contents.rst                   |   40 -
 share/doc/src/contributing.rst               |  167 ---
 share/doc/src/couchapp/ddocs.rst             |  768 -------------
 share/doc/src/couchapp/index.rst             |   31 -
 share/doc/src/couchapp/views/collation.rst   |  261 -----
 share/doc/src/couchapp/views/index.rst       |   30 -
 share/doc/src/couchapp/views/intro.rst       |  675 ------------
 share/doc/src/couchapp/views/joins.rst       |  430 --------
 share/doc/src/couchapp/views/nosql.rst       |  530 ---------
 share/doc/src/couchapp/views/pagination.rst  |  269 -----
 share/doc/src/cve/2010-0009.rst              |   54 -
 share/doc/src/cve/2010-2234.rst              |   64 --
 share/doc/src/cve/2010-3854.rst              |   57 -
 share/doc/src/cve/2012-5641.rst              |   77 --
 share/doc/src/cve/2012-5649.rst              |   50 -
 share/doc/src/cve/2012-5650.rst              |   69 --
 share/doc/src/cve/2014-2668.rst              |   54 -
 share/doc/src/cve/index.rst                  |   73 --
 share/doc/src/experimental.rst               |   98 --
 share/doc/src/externals.rst                  |  261 -----
 share/doc/src/fauxton/addons.rst             |  199 ----
 share/doc/src/fauxton/index.rst              |   23 -
 share/doc/src/fauxton/install.rst            |  109 --
 share/doc/src/install/freebsd.rst            |   80 --
 share/doc/src/install/index.rst              |   26 -
 share/doc/src/install/mac.rst                |  194 ----
 share/doc/src/install/unix.rst               |  272 -----
 share/doc/src/install/windows.rst            |  275 -----
 share/doc/src/intro/api.rst                  |  783 -------------
 share/doc/src/intro/consistency.rst          |  465 --------
 share/doc/src/intro/curl.rst                 |  122 ---
 share/doc/src/intro/futon.rst                |  186 ----
 share/doc/src/intro/index.rst                |   56 -
 share/doc/src/intro/overview.rst             |  388 -------
 share/doc/src/intro/security.rst             |  603 -----------
 share/doc/src/intro/tour.rst                 |  542 ---------
 share/doc/src/intro/why.rst                  |  315 ------
 share/doc/src/json-structure.rst             |  641 -----------
 share/doc/src/maintenance/compaction.rst     |  193 ----
 share/doc/src/maintenance/index.rst          |   21 -
 share/doc/src/maintenance/performance.rst    |  293 -----
 share/doc/src/query-server/erlang.rst        |  139 ---
 share/doc/src/query-server/index.rst         |   40 -
 share/doc/src/query-server/javascript.rst    |  288 -----
 share/doc/src/query-server/protocol.rst      |  967 -----------------
 share/doc/src/replication/conflicts.rst      |  793 --------------
 share/doc/src/replication/index.rst          |   37 -
 share/doc/src/replication/intro.rst          |   95 --
 share/doc/src/replication/protocol.rst       |  202 ----
 share/doc/src/replication/replicator.rst     |  403 -------
 share/doc/src/whatsnew/0.10.rst              |  150 ---
 share/doc/src/whatsnew/0.11.rst              |  357 ------
 share/doc/src/whatsnew/0.8.rst               |  178 ---
 share/doc/src/whatsnew/0.9.rst               |  262 -----
 share/doc/src/whatsnew/1.0.rst               |  277 -----
 share/doc/src/whatsnew/1.1.rst               |  175 ---
 share/doc/src/whatsnew/1.2.rst               |  242 -----
 share/doc/src/whatsnew/1.3.rst               |  260 -----
 share/doc/src/whatsnew/1.4.rst               |   65 --
 share/doc/src/whatsnew/1.5.rst               |   62 --
 share/doc/src/whatsnew/1.6.rst               |   74 --
 share/doc/src/whatsnew/index.rst             |   33 -
 share/doc/static/rtd.css                     |  795 --------------
 share/doc/templates/couchdb/domainindex.html |   49 -
 share/doc/templates/couchdb/theme.conf       |   13 -
 share/doc/templates/help.html                |   33 -
 share/doc/templates/layout.html              |   27 -
 share/doc/templates/pages/download.html      |   48 -
 share/doc/templates/pages/index.html         |  175 ---
 share/doc/templates/searchbox.html           |   31 -
 share/doc/templates/tracking.html            |   30 -
 share/doc/templates/utilities.html           |   22 -
 149 files changed, 28591 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/LICENSE
----------------------------------------------------------------------
diff --git a/LICENSE b/LICENSE
index adbd792..b60c0c9 100644
--- a/LICENSE
+++ b/LICENSE
@@ -207,114 +207,6 @@ The Apache CouchDB project includes a number of subcomponents with separate
 copyright notices and license terms. Your use of the code for the these
 subcomponents is subject to the terms and conditions of the following licenses.
 
-For the share/doc/build/html/_static components:
-
-  Copyright (c) 2007-2011 by the Sphinx team (see AUTHORS file).
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are
-  met:
-
-  * Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-
-  * Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-For the share/doc/build/html/_static/jquery.js component:
-
-  Copyright 2010, John Resig
-  
-  Copyright 2010, The Dojo Foundation
-  
-  Copyright 2012 jQuery Foundation and other contributors
-  http://jquery.com/
-
-  Permission is hereby granted, free of charge, to any person obtaining
-  a copy of this software and associated documentation files (the
-  "Software"), to deal in the Software without restriction, including
-  without limitation the rights to use, copy, modify, merge, publish,
-  distribute, sublicense, and/or sell copies of the Software, and to
-  permit persons to whom the Software is furnished to do so, subject to
-  the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-For the share/doc/build/html/_static/underscore.js component:
-
-  Copyright (c) 2009-2012 Jeremy Ashkenas, DocumentCloud
-
-  Permission is hereby granted, free of charge, to any person
-  obtaining a copy of this software and associated documentation
-  files (the "Software"), to deal in the Software without
-  restriction, including without limitation the rights to use,
-  copy, modify, merge, publish, distribute, sublicense, and/or sell
-  copies of the Software, and to permit persons to whom the
-  Software is furnished to do so, subject to the following
-  conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-  OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-  WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-  OTHER DEALINGS IN THE SOFTWARE.
-
-For the share/doc/static/rtd.css component:
-
-  Copyright (c) 2007-2011 by the Sphinx team (see AUTHORS file).
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions are
-  met:
-
-  * Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-
-  * Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 For the share/www/script/jquery.js component:
 
@@ -1045,34 +937,6 @@ The above copyright notice and this permission notice shall be included in all c
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 
-For share/doc/ext/httpdomain.py
-
-Copyright (c) 2010 by the contributors Hong Minhee <minhee@dahlia.kr>.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-* Redistributions of source code must retain the above copyright
-  notice, this list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright
-  notice, this list of conditions and the following disclaimer in the
-  documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
 for src/fauxton/assets/js/lib/ace/*
 
 Copyright (c) 2010, Ajax.org B.V.

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/NOTICE
----------------------------------------------------------------------
diff --git a/NOTICE b/NOTICE
index 85a05b1..489524e 100644
--- a/NOTICE
+++ b/NOTICE
@@ -150,30 +150,6 @@ This product also includes the following third-party components:
 
    Copyright (c) 2013 Dave Gandy
 
- * httpdomain.py (https://bitbucket.org/birkenfeld/sphinx-contrib/src/6a3a8ca714cfce957530890d0431d9a7b88c930f/httpdomain/sphinxcontrib/httpdomain.py?at=httpdomain-1.1.9)
-
-   Copyright (c) 2010, Hong Minhee <minhee@dahlia.kr>
-
- * externals.rst (http://davispj.com/2010/09/26/new-couchdb-externals-api.html)
-
-   Copyright 2008-2010, Paul Joseph Davis <paul.joseph.davis@gmail.com>
-
- * protocol.rst (http://www.dataprotocols.org/en/latest/couchdb_replication.html)
-
-   Copyright 2011-2013, Benoît Chesneau <benoitc@refuge.io>
-
- * views/intro.rst views/nosql.rst views/pagination.rst
-
-   Copyright 2013, Creative Commons Attribution license
-
- * share/doc/src/couchapp/views/joins.rst (Using View Collation)
-
-   Copyright 2007, Christopher Lenz <cmlenz@gmail.com>
-
- * share/doc/src/templates/couchdb/domainindex.html
-
-   Copyright 2007-2011 by the Sphinx team
-
  * sandbox.js https://github.com/KlausTrainer/sandbox.js
 
    (c) 2013 Klaus Trainer

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/license.skip
----------------------------------------------------------------------
diff --git a/license.skip b/license.skip
index 7b6ca04..9c1d6ac 100644
--- a/license.skip
+++ b/license.skip
@@ -64,17 +64,6 @@
 ^rel/overlay/etc/local.*
 ^share/Makefile
 ^share/Makefile.in
-^share/doc/Makefile
-^share/doc/Makefile.in
-^share/doc/build/.*
-^share/doc/ext/__pycache__/.*
-^share/doc/ext/.*.pyc
-^share/doc/ext/httpdomain.py
-^share/doc/ext/http-api-descr.json
-^share/doc/images/.*
-^share/doc/src/conf.pyc
-^share/doc/static/rtd.css
-^share/doc/templates/couchdb/domainindex.html
 ^share/server/json2.js
 ^share/server/mimeparse.js
 ^share/server/coffee-script.js

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/ext/configdomain.py
----------------------------------------------------------------------
diff --git a/share/doc/ext/configdomain.py b/share/doc/ext/configdomain.py
deleted file mode 100644
index a02938b..0000000
--- a/share/doc/ext/configdomain.py
+++ /dev/null
@@ -1,127 +0,0 @@
-## Licensed under the Apache License, Version 2.0 (the "License"); you may not
-## use this file except in compliance with the License. You may obtain a copy of
-## the License at
-##
-##   http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing, software
-## distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-## WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-## License for the specific language governing permissions and limitations under
-## the License.
-
-from sphinx import addnodes
-from sphinx.roles import XRefRole
-from sphinx.domains import Domain, ObjType, Index
-from sphinx.directives import ObjectDescription
-from sphinx.util.nodes import make_refnode
-
-
-class ConfigObject(ObjectDescription):
-
-    def handle_signature(self, sig, signode):
-        if '::' in sig:
-            name, descr = map(lambda i: i.strip(), sig.split('::'))
-        else:
-            name, descr = sig.strip(), ''
-
-        signode['name'] = name
-        signode['descr'] = descr
-
-        domain, objtype = self.name.split(':')
-        if objtype == 'section':
-            self.env.temp_data['section'] = signode['name']
-            name = '[%s]' % signode['name']
-
-        signode += addnodes.desc_name(name, name)
-
-        return signode['name']
-
-    def needs_arglist(self):
-        return False
-
-    def add_target_and_index(self, name, sig, signode):
-        section = self.env.temp_data['section']
-        domain, objtype = self.name.split(':')
-        data = self.env.domaindata[domain][objtype]
-        if objtype == 'section':
-            data[name] = (self.env.docname, signode['descr'])
-            signode['ids'].append(signode['name'])
-        elif objtype == 'option':
-            idx = '%s/%s' % (section, signode['name'])
-            data[idx] = (self.env.docname, signode['descr'])
-            signode['ids'].append(idx)
-        else:
-            assert 'unknown object type %r' % objtype
-
-
-class ConfigIndex(Index):
-
-    name = 'ref'
-    localname = 'Configuration Reference'
-    shortname = 'Config Reference'
-
-    def generate(self, docnames=None):
-        content = dict(
-            (name, [(name, 1, info[0], name, '', '', info[1])])
-            for name, info in self.domain.data['section'].items()
-        )
-
-        options = self.domain.data['option']
-        for idx, info in sorted(options.items()):
-            path, descr = info
-            section, name = idx.split('/', 1)
-            content[section].append((
-                name, 2, path,
-                '%s/%s' % (section, name),
-                '', '', descr
-            ))
-
-        return (sorted(content.items()), False)
-
-
-class ConfigDomain(Domain):
-
-    name = 'config'
-    label = 'CONFIG'
-
-    object_types = {
-        'section': ObjType('section', 'section', 'obj'),
-        'option': ObjType('option', 'option', 'obj'),
-    }
-
-    directives = {
-        'section': ConfigObject,
-        'option': ConfigObject,
-    }
-
-    roles = {
-        'section': XRefRole(),
-        'option': XRefRole(),
-    }
-
-    initial_data = {
-        'section': {},
-        'option': {}
-    }
-
-    indices = [ConfigIndex]
-
-    def resolve_xref(self, env, fromdocname, builder, typ, target,
-                     node, contnode):
-        if typ == 'section':
-            info = self.data[typ][target]
-            title = '[%s]' % target
-        elif typ == 'option':
-            assert '/' in target, 'option without section: %r' % target
-            section, option = target.split('/', 1)
-            info = self.data[typ][target]
-            title = option
-        else:
-            assert 'unknown role %r for target %r' % (typ, target)
-        return make_refnode(builder, fromdocname, info[0], target, contnode,
-                            title)
-
-
-def setup(app):
-    app.add_domain(ConfigDomain)

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/ext/github.py
----------------------------------------------------------------------
diff --git a/share/doc/ext/github.py b/share/doc/ext/github.py
deleted file mode 100644
index 79bc193..0000000
--- a/share/doc/ext/github.py
+++ /dev/null
@@ -1,44 +0,0 @@
-## Licensed under the Apache License, Version 2.0 (the "License"); you may not
-## use this file except in compliance with the License. You may obtain a copy of
-## the License at
-##
-##   http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing, software
-## distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-## WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-## License for the specific language governing permissions and limitations under
-## the License.
-
-import os
-
-
-def get_github_url(app, view, path):
-    return 'https://github.com/{project}/{view}/{branch}/{path}'.format(
-        project=app.config.github_project,
-        view=view,
-        branch=app.config.github_branch,
-        path=path)
- 
- 
-def html_page_context(app, pagename, templatename, context, doctree):
-    # base template for common sphinx pages like search or genindex
-    # there is no need to provide github show/edit links for them
-    if templatename != 'page.html':
-        return
-
-    # ok, I'm aware about that this is wrong way to concat url segments
-    # but this is one is most portable between 2.x and 3.x versions
-    # plus it fits our current requirements. But still, patches are welcome (:
-    path = os.path.join(
-        app.config.github_docs_path,
-        os.path.relpath(doctree.get('source'), app.builder.srcdir))
-    context['github_show_url'] = get_github_url(app, 'blob', path)
-    context['github_edit_url'] = get_github_url(app, 'edit', path)
- 
- 
-def setup(app):
-    app.add_config_value('github_project', '', True)
-    app.add_config_value('github_branch', 'master', True)
-    app.add_config_value('github_docs_path', '', True)
-    app.connect('html-page-context', html_page_context)

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/ext/httpdomain.py
----------------------------------------------------------------------
diff --git a/share/doc/ext/httpdomain.py b/share/doc/ext/httpdomain.py
deleted file mode 100644
index 5571054..0000000
--- a/share/doc/ext/httpdomain.py
+++ /dev/null
@@ -1,656 +0,0 @@
-"""
-    sphinxcontrib.httpdomain
-    ~~~~~~~~~~~~~~~~~~~~~~~~
-
-    The HTTP domain for documenting RESTful HTTP APIs.
-
-    :copyright: Copyright 2011 by Hong Minhee
-    :license: BSD, see LICENSE for details.
-
-"""
-
-import re
-
-from docutils import nodes
-from docutils.parsers.rst.roles import set_classes
-
-from pygments.lexer import RegexLexer, bygroups
-from pygments.lexers import get_lexer_by_name
-from pygments.token import Literal, Text,  Operator, Keyword, Name, Number
-from pygments.util import ClassNotFound
-
-from sphinx import addnodes
-from sphinx.roles import XRefRole
-from sphinx.domains import Domain, ObjType, Index
-from sphinx.directives import ObjectDescription, directives
-from sphinx.util.nodes import make_refnode
-from sphinx.util.docfields import GroupedField, TypedField
-
-
-class DocRef(object):
-    """Represents a link to an RFC which defines an HTTP method."""
-
-    def __init__(self, base_url, anchor, section):
-        """Stores the specified attributes which represent a URL which links to
-        an RFC which defines an HTTP method.
-
-        """
-        self.base_url = base_url
-        self.anchor = anchor
-        self.section = section
-
-    def __repr__(self):
-        """Returns the URL which this object represents, which points to the
-        location of the RFC which defines some HTTP method.
-
-        """
-        return '{0}#{1}{2}'.format(self.base_url, self.anchor, self.section)
-
-
-class RFC2616Ref(DocRef):
-
-    def __init__(self, section):
-        url = 'http://www.w3.org/Protocols/rfc2616/rfc2616-sec{0:d}.html'
-        url = url.format(int(section))
-        super(RFC2616Ref, self).__init__(url, 'sec', section)
-
-
-class IETFRef(DocRef):
-
-    def __init__(self, rfc, section):
-        url = 'http://tools.ietf.org/html/rfc{0:d}'.format(rfc)
-        super(IETFRef, self).__init__(url, 'section-', section)
-
-
-class EventSourceRef(DocRef):
-
-    def __init__(self, section):
-        url = 'http://www.w3.org/TR/eventsource/'
-        super(EventSourceRef, self).__init__(url, section, '')
-
-
-#: Mapping from lowercase HTTP method name to :class:`DocRef` object which
-#: maintains the URL which points to the section of the RFC which defines that
-#: HTTP method.
-METHOD_REFS = {
-    'patch': IETFRef(5789, 2),
-    'options': RFC2616Ref(9.2),
-    'get': RFC2616Ref(9.3),
-    'head': RFC2616Ref(9.4),
-    'post': RFC2616Ref(9.5),
-    'put': RFC2616Ref(9.6),
-    'delete': RFC2616Ref(9.7),
-    'trace': RFC2616Ref(9.8),
-    'connect': RFC2616Ref(9.9),
-    'copy': IETFRef(2518, 8.8),
-    'any': ''
-}
-
-#: Mapping from HTTP header name to :class:`DocRef` object which
-#: maintains the URL which points to the related section of the RFC.
-HEADER_REFS = {
-    'Accept': RFC2616Ref(14.1),
-    'Accept-Charset': RFC2616Ref(14.2),
-    'Accept-Encoding': RFC2616Ref(14.3),
-    'Accept-Language': RFC2616Ref(14.4),
-    'Accept-Ranges': RFC2616Ref(14.5),
-    'Age': RFC2616Ref(14.6),
-    'Allow': RFC2616Ref(14.7),
-    'Authorization': RFC2616Ref(14.8),
-    'Cache-Control': RFC2616Ref(14.9),
-    'Cookie': IETFRef(2109, '4.3.4'),
-    'Connection': RFC2616Ref(14.10),
-    'Content-Encoding': RFC2616Ref(14.11),
-    'Content-Language': RFC2616Ref(14.12),
-    'Content-Length': RFC2616Ref(14.13),
-    'Content-Location': RFC2616Ref(14.14),
-    'Content-MD5': RFC2616Ref(14.15),
-    'Content-Range': RFC2616Ref(14.16),
-    'Content-Type': RFC2616Ref(14.17),
-    'Date': RFC2616Ref(14.18),
-    'Destination': IETFRef(2518, 9.3),
-    'ETag': RFC2616Ref(14.19),
-    'Expect': RFC2616Ref(14.20),
-    'Expires': RFC2616Ref(14.21),
-    'From': RFC2616Ref(14.22),
-    'Host': RFC2616Ref(14.23),
-    'If-Match': RFC2616Ref(14.24),
-    'If-Modified-Since': RFC2616Ref(14.25),
-    'If-None-Match': RFC2616Ref(14.26),
-    'If-Range': RFC2616Ref(14.27),
-    'If-Unmodified-Since': RFC2616Ref(14.28),
-    'Last-Event-ID': EventSourceRef('last-event-id'),
-    'Last-Modified': RFC2616Ref(14.29),
-    'Location': RFC2616Ref(14.30),
-    'Max-Forwards': RFC2616Ref(14.31),
-    'Pragma': RFC2616Ref(14.32),
-    'Proxy-Authenticate': RFC2616Ref(14.33),
-    'Proxy-Authorization': RFC2616Ref(14.34),
-    'Range': RFC2616Ref(14.35),
-    'Referer': RFC2616Ref(14.36),
-    'Retry-After': RFC2616Ref(14.37),
-    'Server': RFC2616Ref(14.38),
-    'Set-Cookie': IETFRef(2109, '4.2.2'),
-    'TE': RFC2616Ref(14.39),
-    'Trailer': RFC2616Ref(14.40),
-    'Transfer-Encoding': RFC2616Ref(14.41),
-    'Upgrade': RFC2616Ref(14.42),
-    'User-Agent': RFC2616Ref(14.43),
-    'Vary': RFC2616Ref(14.44),
-    'Via': RFC2616Ref(14.45),
-    'Warning': RFC2616Ref(14.46),
-    'WWW-Authenticate': RFC2616Ref(14.47)
-}
-
-
-HTTP_STATUS_CODES = {
-    100: 'Continue',
-    101: 'Switching Protocols',
-    102: 'Processing',
-    200: 'OK',
-    201: 'Created',
-    202: 'Accepted',
-    203: 'Non Authoritative Information',
-    204: 'No Content',
-    205: 'Reset Content',
-    206: 'Partial Content',
-    207: 'Multi Status',
-    226: 'IM Used',              # see RFC 3229
-    300: 'Multiple Choices',
-    301: 'Moved Permanently',
-    302: 'Found',
-    303: 'See Other',
-    304: 'Not Modified',
-    305: 'Use Proxy',
-    307: 'Temporary Redirect',
-    400: 'Bad Request',
-    401: 'Unauthorized',
-    402: 'Payment Required',     # unused
-    403: 'Forbidden',
-    404: 'Not Found',
-    405: 'Method Not Allowed',
-    406: 'Not Acceptable',
-    407: 'Proxy Authentication Required',
-    408: 'Request Timeout',
-    409: 'Conflict',
-    410: 'Gone',
-    411: 'Length Required',
-    412: 'Precondition Failed',
-    413: 'Request Entity Too Large',
-    414: 'Request URI Too Long',
-    415: 'Unsupported Media Type',
-    416: 'Requested Range Not Satisfiable',
-    417: 'Expectation Failed',
-    418: "I'm a teapot",        # see RFC 2324
-    422: 'Unprocessable Entity',
-    423: 'Locked',
-    424: 'Failed Dependency',
-    426: 'Upgrade Required',
-    449: 'Retry With',           # proprietary MS extension
-    500: 'Internal Server Error',
-    501: 'Not Implemented',
-    502: 'Bad Gateway',
-    503: 'Service Unavailable',
-    504: 'Gateway Timeout',
-    505: 'HTTP Version Not Supported',
-    507: 'Insufficient Storage',
-    510: 'Not Extended'
-}
-
-http_sig_param_re = re.compile(r'\((?:(?P<type>[^:)]+):)?(?P<name>[\w_]+)\)',
-                               re.VERBOSE)
-
-
-def sort_by_method(entries):
-    def cmp(item):
-        order = ['HEAD', 'GET', 'POST', 'PUT', 'DELETE', 'COPY', 'OPTIONS']
-        method = item[0].split(' ', 1)[0]
-        if method in order:
-            return order.index(method)
-        return 100
-    return sorted(entries, key=cmp)
-
-
-def http_resource_anchor(method, path):
-    path = re.sub(r'[{}]', '', re.sub(r'[<>:/]', '-', path))
-    return method.lower() + '-' + path
-
-
-class HTTPResource(ObjectDescription):
-
-    doc_field_types = [
-        TypedField('parameter', label='Parameters',
-                   names=('param', 'parameter', 'arg', 'argument'),
-                   typerolename='obj', typenames=('paramtype', 'type')),
-        TypedField('jsonobject', label='JSON Object',
-                   names=('jsonparameter', 'jsonparam', 'json'),
-                   typerolename='obj', typenames=('jsonparamtype', 'jsontype')),
-        TypedField('requestjsonobject', label='Request JSON Object',
-                   names=('reqjsonobj', 'reqjson', '<jsonobj', '<json'),
-                   typerolename='obj', typenames=('reqjsontype', '<jsontype')),
-        TypedField('requestjsonarray', label='Request JSON Array of Objects',
-                   names=('reqjsonarr', '<jsonarr'),
-                   typerolename='obj',
-                   typenames=('reqjsonarrtype', '<jsonarrtype')),
-        TypedField('responsejsonobject', label='Response JSON Object',
-                   names=('resjsonobj', 'resjson', '>jsonobj', '>json'),
-                   typerolename='obj', typenames=('resjsontype', '>jsontype')),
-
-        TypedField('responsejsonarray', label='Response JSON Array of Objects',
-                   names=('resjsonarr', '>jsonarr'),
-                   typerolename='obj',
-                   typenames=('resjsonarrtype', '>jsonarrtype')),
-        TypedField('queryparameter', label='Query Parameters',
-                   names=('queryparameter', 'queryparam', 'qparam', 'query'),
-                   typerolename='obj', typenames=('queryparamtype',
-                                                  'querytype',
-                                                  'qtype')),
-        GroupedField('formparameter', label='Form Parameters',
-                     names=('formparameter', 'formparam', 'fparam', 'form')),
-        GroupedField('requestheader', label='Request Headers',
-                     rolename='mailheader',
-                     names=('<header', 'reqheader', 'requestheader')),
-        GroupedField('responseheader', label='Response Headers',
-                     rolename='mailheader',
-                     names=('>header', 'resheader', 'responseheader')),
-        GroupedField('statuscode', label='Status Codes',
-                     rolename='statuscode',
-                     names=('statuscode', 'status', 'code'))
-    ]
-
-    option_spec = {
-        'deprecated': directives.flag,
-        'noindex': directives.flag,
-        'synopsis': lambda x: x,
-    }
-
-    method = NotImplemented
-
-    def handle_signature(self, sig, signode):
-        method = self.method.upper() + ' '
-        signode += addnodes.desc_name(method, method)
-        offset = 0
-        path = None
-        for match in http_sig_param_re.finditer(sig):
-            path = sig[offset:match.start()]
-            signode += addnodes.desc_name(path, path)
-            params = addnodes.desc_parameterlist()
-            typ = match.group('type')
-            if typ:
-                typ += ': '
-                params += addnodes.desc_annotation(typ, typ)
-            name = match.group('name')
-            params += addnodes.desc_parameter(name, name)
-            signode += params
-            offset = match.end()
-        if offset < len(sig):
-            path = sig[offset:len(sig)]
-            signode += addnodes.desc_name(path, path)
-        if path is None:
-            assert False, 'no matches for sig: %s' % sig
-        fullname = self.method.upper() + ' ' + path
-        signode['method'] = self.method
-        signode['path'] = sig
-        signode['fullname'] = fullname
-        return (fullname, self.method, sig)
-
-    def needs_arglist(self):
-        return False
-
-    def add_target_and_index(self, name_cls, sig, signode):
-        signode['ids'].append(http_resource_anchor(*name_cls[1:]))
-        if 'noindex' not in self.options:
-            self.env.domaindata['http'][self.method][sig] = (
-                self.env.docname,
-                self.options.get('synopsis', ''),
-                'deprecated' in self.options)
-
-    def get_index_text(self, modname, name):
-        return ''
-
-
-class HTTPOptions(HTTPResource):
-
-    method = 'options'
-
-
-class HTTPHead(HTTPResource):
-
-    method = 'head'
-
-
-class HTTPPatch(HTTPResource):
-
-    method = 'patch'
-
-
-class HTTPPost(HTTPResource):
-
-    method = 'post'
-
-
-class HTTPGet(HTTPResource):
-
-    method = 'get'
-
-
-class HTTPPut(HTTPResource):
-
-    method = 'put'
-
-
-class HTTPDelete(HTTPResource):
-
-    method = 'delete'
-
-
-class HTTPTrace(HTTPResource):
-
-    method = 'trace'
-
-
-class HTTPCopy(HTTPResource):
-
-    method = 'copy'
-
-
-class HTTPAny(HTTPResource):
-
-    method = 'any'
-
-
-def http_statuscode_role(name, rawtext, text, lineno, inliner,
-                         options=None, content=None):
-    if options is None:
-        options = {}
-    if content is None:
-        content = []
-    if text.isdigit():
-        code = int(text)
-        try:
-            status = HTTP_STATUS_CODES[code]
-        except KeyError:
-            msg = inliner.reporter.error('%d is invalid HTTP status code'
-                                         % code, lineno=lineno)
-            prb = inliner.problematic(rawtext, rawtext, msg)
-            return [prb], [msg]
-    else:
-        try:
-            code, status = re.split(r'\s', text.strip(), 1)
-            code = int(code)
-        except ValueError:
-            msg = inliner.reporter.error(
-                'HTTP status code must be an integer (e.g. `200`) or '
-                'start with an integer (e.g. `200 OK`); %r is invalid' %
-                text,
-                line=lineno
-            )
-            prb = inliner.problematic(rawtext, rawtext, msg)
-            return [prb], [msg]
-    nodes.reference(rawtext)
-    if code == 226:
-        url = 'http://www.ietf.org/rfc/rfc3229.txt'
-    elif code == 418:
-        url = 'http://www.ietf.org/rfc/rfc2324.txt'
-    elif code == 449:
-        url = 'http://msdn.microsoft.com/en-us/library/dd891478(v=prot.10).aspx'
-    elif code in HTTP_STATUS_CODES:
-        url = 'http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html' \
-              '#sec10.' + ('%d.%d' % (code // 100, 1 + code % 100))
-    else:
-        url = ''
-    set_classes(options)
-    node = nodes.reference(rawtext, '%d %s' % (code, status),
-                           refuri=url, **options)
-    return [node], []
-
-
-def http_method_role(name, rawtext, text, lineno, inliner,
-                     options=None, content=None):
-    if options is None:
-        options = {}
-    if content is None:
-        content = []
-    method = str(text).lower()
-    if method not in METHOD_REFS:
-        msg = inliner.reporter.error('%s is not valid HTTP method' % method,
-                                     lineno=lineno)
-        prb = inliner.problematic(rawtext, rawtext, msg)
-        return [prb], [msg]
-    url = str(METHOD_REFS[method])
-    node = nodes.reference(rawtext, method.upper(), refuri=url, **options)
-    return [node], []
-
-
-def http_header_role(name, rawtext, text, lineno, inliner,
-                     options=None, content=None):
-    if options is None:
-        options = {}
-    if content is None:
-        content = []
-    header = str(text)
-    if header not in HEADER_REFS:
-        header = header.title()
-    if header not in HEADER_REFS:
-        if header.startswith(('X-Couch-', 'Couch-')):
-            return [nodes.strong(header, header)], []
-        msg = inliner.reporter.error('%s is not unknown HTTP header' % header,
-                                     lineno=lineno)
-        prb = inliner.problematic(rawtext, rawtext, msg)
-        return [prb], [msg]
-    url = str(HEADER_REFS[header])
-    node = nodes.reference(rawtext, header, refuri=url, **options)
-    return [node], []
-
-
-class HTTPXRefRole(XRefRole):
-
-    def __init__(self, method, **kwargs):
-        XRefRole.__init__(self, **kwargs)
-        self.method = method
-
-    def process_link(self, env, refnode, has_explicit_title, title, target):
-        if not target.startswith('/'):
-            pass
-        if not has_explicit_title:
-            title = self.method.upper() + ' ' + title
-        return title, target
-
-
-class HTTPIndex(Index):
-
-    name = 'api'
-    localname = 'HTTP API Reference'
-    shortname = 'API Reference'
-
-    def generate(self, docnames=None):
-        content = {}
-        items = ((method, path, info)
-                 for method, routes in self.domain.routes.items()
-                 for path, info in routes.items())
-        items = sorted(items, key=lambda item: item[1])
-        for method, path, info in items:
-            entries = content.setdefault(path, [])
-            entry_name = method.upper() + ' ' + path
-            entries.append([
-                entry_name, 0, info[0],
-                http_resource_anchor(method, path),
-                '', 'Deprecated' if info[2] else '', info[1]
-            ])
-        items = sorted(
-            (path, sort_by_method(entries))
-            for path, entries in content.items()
-        )
-        return (items, True)
-
-
-class HTTPDomain(Domain):
-    """HTTP domain."""
-
-    name = 'http'
-    label = 'HTTP'
-
-    object_types = {
-        'options': ObjType('options', 'options', 'obj'),
-        'head': ObjType('head', 'head', 'obj'),
-        'post': ObjType('post', 'post', 'obj'),
-        'get': ObjType('get', 'get', 'obj'),
-        'put': ObjType('put', 'put', 'obj'),
-        'patch': ObjType('patch', 'patch', 'obj'),
-        'delete': ObjType('delete', 'delete', 'obj'),
-        'trace': ObjType('trace', 'trace', 'obj'),
-        'copy': ObjType('copy', 'copy', 'obj'),
-        'any': ObjType('any', 'any', 'obj')
-    }
-
-    directives = {
-        'options': HTTPOptions,
-        'head': HTTPHead,
-        'post': HTTPPost,
-        'get': HTTPGet,
-        'put': HTTPPut,
-        'patch': HTTPPatch,
-        'delete': HTTPDelete,
-        'trace': HTTPTrace,
-        'copy': HTTPCopy,
-        'any': HTTPAny
-    }
-
-    roles = {
-        'options': HTTPXRefRole('options'),
-        'head': HTTPXRefRole('head'),
-        'post': HTTPXRefRole('post'),
-        'get': HTTPXRefRole('get'),
-        'put': HTTPXRefRole('put'),
-        'patch': HTTPXRefRole('patch'),
-        'delete': HTTPXRefRole('delete'),
-        'trace': HTTPXRefRole('trace'),
-        'copy': HTTPXRefRole('copy'),
-        'all': HTTPXRefRole('all'),
-        'statuscode': http_statuscode_role,
-        'method': http_method_role,
-        'header': http_header_role
-    }
-
-    initial_data = {
-        'options': {},  # path: (docname, synopsis)
-        'head': {},
-        'post': {},
-        'get': {},
-        'put': {},
-        'patch': {},
-        'delete': {},
-        'trace': {},
-        'copy': {},
-        'any': {}
-    }
-
-    indices = [HTTPIndex]
-
-    @property
-    def routes(self):
-        return dict((key, self.data[key]) for key in self.object_types)
-
-    def clear_doc(self, docname):
-        for typ, routes in self.routes.items():
-            for path, info in list(routes.items()):
-                if info[0] == docname:
-                    del routes[path]
-
-    def resolve_xref(self, env, fromdocname, builder, typ, target,
-                     node, contnode):
-        try:
-            info = self.data[str(typ)][target]
-        except KeyError:
-            text = contnode.rawsource
-            if typ == 'statuscode':
-                return http_statuscode_role(None, text, text, None, None)[0][0]
-            elif typ == 'mailheader':
-                return http_header_role(None, text, text, None, None)[0][0]
-            else:
-                return nodes.emphasis(text, text)
-        else:
-            anchor = http_resource_anchor(typ, target)
-            title = typ.upper() + ' ' + target
-            return make_refnode(builder, fromdocname, info[0], anchor,
-                                contnode, title)
-
-    def get_objects(self):
-        for method, routes in self.routes.items():
-            for path, info in routes.items():
-                anchor = http_resource_anchor(method, path)
-                yield (path, path, method, info[0], anchor, 1)
-
-
-class HTTPLexer(RegexLexer):
-    """Lexer for HTTP sessions."""
-
-    name = 'HTTP'
-    aliases = ['http']
-
-    flags = re.DOTALL
-
-    def header_callback(self, match):
-        if match.group(1).lower() == 'content-type':
-            content_type = match.group(5).strip()
-            if ';' in content_type:
-                content_type = content_type[:content_type.find(';')].strip()
-            self.content_type = content_type
-        yield match.start(1), Name.Attribute, match.group(1)
-        yield match.start(2), Text, match.group(2)
-        yield match.start(3), Operator, match.group(3)
-        yield match.start(4), Text, match.group(4)
-        yield match.start(5), Literal, match.group(5)
-        yield match.start(6), Text, match.group(6)
-
-    def continuous_header_callback(self, match):
-        yield match.start(1), Text, match.group(1)
-        yield match.start(2), Literal, match.group(2)
-        yield match.start(3), Text, match.group(3)
-
-    def content_callback(self, match):
-        content_type = getattr(self, 'content_type', None)
-        content = match.group()
-        offset = match.start()
-        if content_type:
-            from pygments.lexers import get_lexer_for_mimetype
-            try:
-                lexer = get_lexer_for_mimetype(content_type)
-            except ClassNotFound:
-                pass
-            else:
-                for idx, token, value in lexer.get_tokens_unprocessed(content):
-                    yield offset + idx, token, value
-                return
-        yield offset, Text, content
-
-    tokens = {
-        'root': [
-            (r'(GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS|TRACE|COPY)'
-             r'( +)([^ ]+)( +)'
-             r'(HTTPS?)(/)(1\.[01])(\r?\n|$)',
-             bygroups(Name.Function, Text, Name.Namespace, Text,
-                      Keyword.Reserved, Operator, Number, Text),
-             'headers'),
-            (r'(HTTPS?)(/)(1\.[01])( +)(\d{3})( +)([^\r\n]+)(\r?\n|$)',
-             bygroups(Keyword.Reserved, Operator, Number, Text, Number,
-                      Text, Name.Exception, Text),
-             'headers'),
-        ],
-        'headers': [
-            (r'([^\s:]+)( *)(:)( *)([^\r\n]+)(\r?\n|$)', header_callback),
-            (r'([\t ]+)([^\r\n]+)(\r?\n|$)', continuous_header_callback),
-            (r'\r?\n', Text, 'content')
-        ],
-        'content': [
-            (r'.+', content_callback)
-        ]
-    }
-
-
-def setup(app):
-    app.add_domain(HTTPDomain)
-    try:
-        get_lexer_by_name('http')
-    except ClassNotFound:
-        app.add_lexer('http', HTTPLexer())

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/epub-icon.png
----------------------------------------------------------------------
diff --git a/share/doc/images/epub-icon.png b/share/doc/images/epub-icon.png
deleted file mode 100644
index 3fda935..0000000
Binary files a/share/doc/images/epub-icon.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/favicon.ico
----------------------------------------------------------------------
diff --git a/share/doc/images/favicon.ico b/share/doc/images/favicon.ico
deleted file mode 100644
index 34bfaa8..0000000
Binary files a/share/doc/images/favicon.ico and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/futon-createdb.png
----------------------------------------------------------------------
diff --git a/share/doc/images/futon-createdb.png b/share/doc/images/futon-createdb.png
deleted file mode 100644
index c8c1b9d..0000000
Binary files a/share/doc/images/futon-createdb.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/futon-editdoc.png
----------------------------------------------------------------------
diff --git a/share/doc/images/futon-editdoc.png b/share/doc/images/futon-editdoc.png
deleted file mode 100644
index f31dbbe..0000000
Binary files a/share/doc/images/futon-editdoc.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/futon-editeddoc.png
----------------------------------------------------------------------
diff --git a/share/doc/images/futon-editeddoc.png b/share/doc/images/futon-editeddoc.png
deleted file mode 100644
index a5913bc..0000000
Binary files a/share/doc/images/futon-editeddoc.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/futon-overview.png
----------------------------------------------------------------------
diff --git a/share/doc/images/futon-overview.png b/share/doc/images/futon-overview.png
deleted file mode 100644
index e1daf5c..0000000
Binary files a/share/doc/images/futon-overview.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/futon-replform.png
----------------------------------------------------------------------
diff --git a/share/doc/images/futon-replform.png b/share/doc/images/futon-replform.png
deleted file mode 100644
index 72b9ff5..0000000
Binary files a/share/doc/images/futon-replform.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-consistency-01.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-consistency-01.png b/share/doc/images/intro-consistency-01.png
deleted file mode 100644
index 9ae6912..0000000
Binary files a/share/doc/images/intro-consistency-01.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-consistency-02.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-consistency-02.png b/share/doc/images/intro-consistency-02.png
deleted file mode 100644
index 06c23ea..0000000
Binary files a/share/doc/images/intro-consistency-02.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-consistency-03.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-consistency-03.png b/share/doc/images/intro-consistency-03.png
deleted file mode 100644
index 2164c6c..0000000
Binary files a/share/doc/images/intro-consistency-03.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-consistency-04.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-consistency-04.png b/share/doc/images/intro-consistency-04.png
deleted file mode 100644
index 068fa77..0000000
Binary files a/share/doc/images/intro-consistency-04.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-consistency-05.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-consistency-05.png b/share/doc/images/intro-consistency-05.png
deleted file mode 100644
index a94f9c3..0000000
Binary files a/share/doc/images/intro-consistency-05.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-consistency-06.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-consistency-06.png b/share/doc/images/intro-consistency-06.png
deleted file mode 100644
index af316d4..0000000
Binary files a/share/doc/images/intro-consistency-06.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-consistency-07.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-consistency-07.png b/share/doc/images/intro-consistency-07.png
deleted file mode 100644
index 7fb5027..0000000
Binary files a/share/doc/images/intro-consistency-07.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-tour-01.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-tour-01.png b/share/doc/images/intro-tour-01.png
deleted file mode 100644
index e6fe9df..0000000
Binary files a/share/doc/images/intro-tour-01.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-tour-02.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-tour-02.png b/share/doc/images/intro-tour-02.png
deleted file mode 100644
index 2c6f0cc..0000000
Binary files a/share/doc/images/intro-tour-02.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-tour-03.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-tour-03.png b/share/doc/images/intro-tour-03.png
deleted file mode 100644
index 7137583..0000000
Binary files a/share/doc/images/intro-tour-03.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-tour-04.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-tour-04.png b/share/doc/images/intro-tour-04.png
deleted file mode 100644
index 7bc5678..0000000
Binary files a/share/doc/images/intro-tour-04.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-tour-05.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-tour-05.png b/share/doc/images/intro-tour-05.png
deleted file mode 100644
index 972cb65..0000000
Binary files a/share/doc/images/intro-tour-05.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-tour-06.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-tour-06.png b/share/doc/images/intro-tour-06.png
deleted file mode 100644
index 9f27df1..0000000
Binary files a/share/doc/images/intro-tour-06.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-tour-07.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-tour-07.png b/share/doc/images/intro-tour-07.png
deleted file mode 100644
index 229ce63..0000000
Binary files a/share/doc/images/intro-tour-07.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-tour-08.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-tour-08.png b/share/doc/images/intro-tour-08.png
deleted file mode 100644
index 4aa549b..0000000
Binary files a/share/doc/images/intro-tour-08.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-tour-09.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-tour-09.png b/share/doc/images/intro-tour-09.png
deleted file mode 100644
index b850ade..0000000
Binary files a/share/doc/images/intro-tour-09.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-tour-10.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-tour-10.png b/share/doc/images/intro-tour-10.png
deleted file mode 100644
index 68038bf..0000000
Binary files a/share/doc/images/intro-tour-10.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-why-01.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-why-01.png b/share/doc/images/intro-why-01.png
deleted file mode 100644
index c927450..0000000
Binary files a/share/doc/images/intro-why-01.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-why-02.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-why-02.png b/share/doc/images/intro-why-02.png
deleted file mode 100644
index a5bb4ce..0000000
Binary files a/share/doc/images/intro-why-02.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/intro-why-03.png
----------------------------------------------------------------------
diff --git a/share/doc/images/intro-why-03.png b/share/doc/images/intro-why-03.png
deleted file mode 100644
index 1f5e536..0000000
Binary files a/share/doc/images/intro-why-03.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/logo.png
----------------------------------------------------------------------
diff --git a/share/doc/images/logo.png b/share/doc/images/logo.png
deleted file mode 100644
index 9eac89e..0000000
Binary files a/share/doc/images/logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/views-intro-01.png
----------------------------------------------------------------------
diff --git a/share/doc/images/views-intro-01.png b/share/doc/images/views-intro-01.png
deleted file mode 100644
index b102d5e..0000000
Binary files a/share/doc/images/views-intro-01.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/views-intro-02.png
----------------------------------------------------------------------
diff --git a/share/doc/images/views-intro-02.png b/share/doc/images/views-intro-02.png
deleted file mode 100644
index 4e9f3dc..0000000
Binary files a/share/doc/images/views-intro-02.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/views-intro-03.png
----------------------------------------------------------------------
diff --git a/share/doc/images/views-intro-03.png b/share/doc/images/views-intro-03.png
deleted file mode 100644
index 83929ee..0000000
Binary files a/share/doc/images/views-intro-03.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/images/views-intro-04.png
----------------------------------------------------------------------
diff --git a/share/doc/images/views-intro-04.png b/share/doc/images/views-intro-04.png
deleted file mode 100644
index 51e3de8..0000000
Binary files a/share/doc/images/views-intro-04.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/src/about.rst
----------------------------------------------------------------------
diff --git a/share/doc/src/about.rst b/share/doc/src/about.rst
deleted file mode 100644
index fe24c61..0000000
--- a/share/doc/src/about.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-.. Licensed under the Apache License, Version 2.0 (the "License"); you may not
-.. use this file except in compliance with the License. You may obtain a copy of
-.. the License at
-..
-..   http://www.apache.org/licenses/LICENSE-2.0
-..
-.. Unless required by applicable law or agreed to in writing, software
-.. distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-.. WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-.. License for the specific language governing permissions and limitations under
-.. the License.
-
-
-.. _about:
-
-===========================
-About CouchDB Documentation
-===========================
-
-License
-=======
-
-.. literalinclude:: ../../../LICENSE
-   :lines: 1-202
-

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/src/api/basics.rst
----------------------------------------------------------------------
diff --git a/share/doc/src/api/basics.rst b/share/doc/src/api/basics.rst
deleted file mode 100644
index 6a86f3c..0000000
--- a/share/doc/src/api/basics.rst
+++ /dev/null
@@ -1,601 +0,0 @@
-.. Licensed under the Apache License, Version 2.0 (the "License"); you may not
-.. use this file except in compliance with the License. You may obtain a copy of
-.. the License at
-..
-..   http://www.apache.org/licenses/LICENSE-2.0
-..
-.. Unless required by applicable law or agreed to in writing, software
-.. distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-.. WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-.. License for the specific language governing permissions and limitations under
-.. the License.
-
-.. _api/basics:
-
-==========
-API Basics
-==========
-
-The CouchDB API is the primary method of interfacing to a CouchDB
-instance. Requests are made using HTTP and requests are used to request
-information from the database, store new data, and perform views and
-formatting of the information stored within the documents.
-
-Requests to the API can be categorised by the different areas of the
-CouchDB system that you are accessing, and the HTTP method used to send
-the request. Different methods imply different operations, for example
-retrieval of information from the database is typically handled by the
-``GET`` operation, while updates are handled by either a ``POST`` or
-``PUT`` request. There are some differences between the information that
-must be supplied for the different methods. For a guide to the basic
-HTTP methods and request structure, see :ref:`api/format`.
-
-For nearly all operations, the submitted data, and the returned data
-structure, is defined within a JavaScript Object Notation (JSON) object.
-Basic information on the content and data types for JSON are provided in
-:ref:`json`.
-
-Errors when accessing the CouchDB API are reported using standard HTTP
-Status Codes. A guide to the generic codes returned by CouchDB are
-provided in :ref:`errors`.
-
-When accessing specific areas of the CouchDB API, specific information
-and examples on the HTTP methods and request, JSON structures, and error
-codes are provided.
-
-.. _api/format:
-
-Request Format and Responses
-============================
-
-CouchDB supports the following HTTP request methods:
-
--  ``GET``
-
-   Request the specified item. As with normal HTTP requests, the format
-   of the URL defines what is returned. With CouchDB this can include
-   static items, database documents, and configuration and statistical
-   information. In most cases the information is returned in the form of
-   a JSON document.
-
--  ``HEAD``
-
-   The ``HEAD`` method is used to get the HTTP header of a ``GET``
-   request without the body of the response.
-
--  ``POST``
-
-   Upload data. Within CouchDB ``POST`` is used to set values, including
-   uploading documents, setting document values, and starting certain
-   administration commands.
-
--  ``PUT``
-
-   Used to put a specified resource. In CouchDB ``PUT`` is used to
-   create new objects, including databases, documents, views and design
-   documents.
-
--  ``DELETE``
-
-   Deletes the specified resource, including documents, views, and
-   design documents.
-
--  ``COPY``
-
-   A special method that can be used to copy documents and objects.
-
-If you use the an unsupported HTTP request type with a URL that does not
-support the specified type, a 405 error will be returned, listing the
-supported HTTP methods. For example:
-
-.. code-block:: javascript
-
-    {
-        "error":"method_not_allowed",
-        "reason":"Only GET,HEAD allowed"
-    }
-          
-
-The CouchDB design document API and the functions when returning HTML
-(for example as part of a show or list) enables you to include custom
-HTTP headers through the ``headers`` block of the return object.
-
-HTTP Headers
-============
-
-Because CouchDB uses HTTP for all communication, you need to ensure that
-the correct HTTP headers are supplied (and processed on retrieval) so
-that you get the right format and encoding. Different environments and
-clients will be more or less strict on the effect of these HTTP headers
-(especially when not present). Where possible you should be as specific
-as possible.
-
-Request Headers
----------------
-
--  ``Content-type``
-
-   Specifies the content type of the information being supplied within
-   the request. The specification uses MIME type specifications. For the
-   majority of requests this will be JSON (``application/json``). For
-   some settings the MIME type will be plain text. When uploading
-   attachments it should be the corresponding MIME type for the
-   attachment or binary (``application/octet-stream``).
-
-   The use of the ``Content-type`` on a request is highly recommended.
-
--  ``Accept``
-
-   Specifies the list of accepted data types to be returned by the
-   server (i.e. that are accepted/understandable by the client). The
-   format should be a list of one or more MIME types, separated by
-   colons.
-
-   For the majority of requests the definition should be for JSON data
-   (``application/json``). For attachments you can either specify the
-   MIME type explicitly, or use ``*/*`` to specify that all file types
-   are supported. If the ``Accept`` header is not supplied, then the
-   ``*/*`` MIME type is assumed (i.e. client accepts all formats).
-
-   The use of ``Accept`` in queries for CouchDB is not required, but is
-   highly recommended as it helps to ensure that the data returned can
-   be processed by the client.
-
-   If you specify a data type using the ``Accept`` header, CouchDB will
-   honor the specified type in the ``Content-type`` header field
-   returned. For example, if you explicitly request ``application/json``
-   in the ``Accept`` of a request, the returned HTTP headers will use
-   the value in the returned ``Content-type`` field.
-
-   For example, when sending a request without an explicit ``Accept``
-   header, or when specifying ``*/*``:
-
-   .. code-block:: http
-
-       GET /recipes HTTP/1.1
-       Host: couchdb:5984
-       Accept: */*
-
-   The returned headers are:
-
-   .. code-block:: http
-
-       Server: CouchDB (Erlang/OTP)
-       Date: Thu, 13 Jan 2011 13:39:34 GMT
-       Content-Type: text/plain;charset=utf-8
-       Content-Length: 227
-       Cache-Control: must-revalidate
-
-   Note that the returned content type is ``text/plain`` even though the
-   information returned by the request is in JSON format.
-
-   Explicitly specifying the ``Accept`` header:
-
-   .. code-block:: http
-
-       GET /recipes HTTP/1.1
-       Host: couchdb:5984
-       Accept: application/json
-
-   The headers returned include the ``application/json`` content type:
-
-   .. code-block:: http
-
-       Server: CouchDB (Erlang/OTP)
-       Date: Thu, 13 Jan 2013 13:40:11 GMT
-       Content-Type: application/json
-       Content-Length: 227
-       Cache-Control: must-revalidate
-
-Response Headers
-----------------
-
-Response headers are returned by the server when sending back content
-and include a number of different header fields, many of which are
-standard HTTP response header and have no significance to CouchDB
-operation. The list of response headers important to CouchDB are listed
-below.
-
--  ``Content-type``
-
-   Specifies the MIME type of the returned data. For most request, the
-   returned MIME type is ``text/plain``. All text is encoded in Unicode
-   (UTF-8), and this is explicitly stated in the returned
-   ``Content-type``, as ``text/plain;charset=utf-8``.
-
--  ``Cache-control``
-
-   The cache control HTTP response header provides a suggestion for
-   client caching mechanisms on how to treat the returned information.
-   CouchDB typically returns the ``must-revalidate``, which indicates
-   that the information should be revalidated if possible. This is used
-   to ensure that the dynamic nature of the content is correctly
-   updated.
-
--  ``Content-length``
-
-   The length (in bytes) of the returned content.
-
--  ``Etag``
-
-   The ``Etag`` HTTP header field is used to show the revision for a
-   document, or a view.
-
-   ETags have been assigned to a map/reduce group (the collection of
-   views in a single design document). Any change to any of the indexes
-   for those views would generate a new ETag for all view URLs in a
-   single design doc, even if that specific view's results had not
-   changed.
-
-   Each ``_view`` URL has its own ETag which only gets updated when
-   changes are made to the database that effect that index. If the
-   index for that specific view does not change, that view keeps the
-   original ETag head (therefore sending back 304 Not Modified more
-   often).
-
-.. _json:
-
-JSON Basics
-===========
-
-The majority of requests and responses to CouchDB use the JavaScript
-Object Notation (JSON) for formatting the content and structure of the
-data and responses.
-
-JSON is used because it is the simplest and easiest to use solution for
-working with data within a web browser, as JSON structures can be
-evaluated and used as JavaScript objects within the web browser
-environment. JSON also integrates with the server-side JavaScript used
-within CouchDB.
-
-JSON supports the same basic types as supported by JavaScript, these
-are:
-
--  Number (either integer or floating-point).
-
--  String; this should be enclosed by double-quotes and supports Unicode
-   characters and backslash escaping. For example:
-
-   .. code-block:: javascript
-
-       "A String"
-
--  Boolean - a ``true`` or ``false`` value. You can use these strings
-   directly. For example:
-
-   .. code-block:: javascript
-
-       { "value": true}
-
--  Array - a list of values enclosed in square brackets. For example:
-
-   .. code-block:: javascript
-
-       ["one", "two", "three"]
-
--  Object - a set of key/value pairs (i.e. an associative array, or
-   hash). The key must be a string, but the value can be any of the
-   supported JSON values. For example:
-
-   .. code-block:: javascript
-
-       {
-          "servings" : 4,
-          "subtitle" : "Easy to make in advance, and then cook when ready",
-          "cooktime" : 60,
-          "title" : "Chicken Coriander"
-       }
-           
-
-   In CouchDB, the JSON object is used to represent a variety of
-   structures, including the main CouchDB document.
-
-Parsing JSON into a JavaScript object is supported through the
-``JSON.parse()`` function in JavaScript, or through various libraries that
-will perform the parsing of the content into a JavaScript object for
-you. Libraries for parsing and generating JSON are available in many
-languages, including Perl, Python, Ruby, Erlang and others.
-
-.. warning::
-   Care should be taken to ensure that your JSON structures are
-   valid, invalid structures will cause CouchDB to return an HTTP status code
-   of 500 (server error).
-
-
-.. _json/numbers:
-
-Number Handling
----------------
-
-Developers and users new to computer handling of numbers often encounter
-suprises when expecting that a number stored in JSON format does not
-necessarily return as the same number as compared character by character.
-
-Any numbers defined in JSON that contain a decimal point or exponent
-will be passed through the Erlang VM's idea of the "double" data type.
-Any numbers that are used in views will pass through the view server's
-idea of a number (the common JavaScript case means even integers pass
-through a double due to JavaScript's definition of a number).
-
-Consider this document that we write to CouchDB:
-
-.. code-block:: javascript
-
-    {
-      "_id":"30b3b38cdbd9e3a587de9b8122000cff",
-      "number": 1.1
-    }
-
-Now let’s read that document back from CouchDB:
-
-.. code-block:: javascript
-
-    {
-      "_id":"30b3b38cdbd9e3a587de9b8122000cff",
-      "_rev":"1-f065cee7c3fd93aa50f6c97acde93030",
-      "number":1.1000000000000000888
-    }
-
-
-What happens is CouchDB is changing the textual representation of the
-result of decoding what it was given into some numerical format. In most
-cases this is an `IEEE 754`_ double precision floating point number which
-is exactly what almost all other languages use as well.
-
-.. _IEEE 754: https://en.wikipedia.org/wiki/IEEE_754-2008
-
-What Erlang does a bit differently than other languages is that it
-does not attempt to pretty print the resulting output to use the
-shortest number of characters. For instance, this is why we have this
-relationship:
-
-.. code-block:: erlang
-
-    ejson:encode(ejson:decode(<<"1.1">>)).
-    <<"1.1000000000000000888">>
-
-What can be confusing here is that internally those two formats
-decode into the same IEEE-754 representation. And more importantly, it
-will decode into a fairly close representation when passed through all
-major parsers that we know about.
-
-While we've only been discussing cases where the textual
-representation changes, another important case is when an input value
-contains more precision than can actually represented in a double.
-(You could argue that this case is actually "losing" data if you don't
-accept that numbers are stored in doubles).
-
-Here's a log for a couple of the more common JSON libraries that happen
-to be on the author's machine:
-
-Spidermonkey::
-
-    $ js -h 2>&1 | head -n 1
-    JavaScript-C 1.8.5 2011-03-31
-    $ js
-    js> JSON.stringify(JSON.parse("1.01234567890123456789012345678901234567890"))
-    "1.0123456789012346"
-    js> var f = JSON.stringify(JSON.parse("1.01234567890123456789012345678901234567890"))
-    js> JSON.stringify(JSON.parse(f))
-    "1.0123456789012346"
-
-Node::
-
-    $ node -v
-    v0.6.15
-    $ node
-    JSON.stringify(JSON.parse("1.01234567890123456789012345678901234567890"))
-    '1.0123456789012346'
-    var f = JSON.stringify(JSON.parse("1.01234567890123456789012345678901234567890"))
-    undefined
-    JSON.stringify(JSON.parse(f))
-    '1.0123456789012346'
-
-Python::
-
-    $ python
-    Python 2.7.2 (default, Jun 20 2012, 16:23:33)
-    [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
-    Type "help", "copyright", "credits" or "license" for more information.
-    import json
-    json.dumps(json.loads("1.01234567890123456789012345678901234567890"))
-    '1.0123456789012346'
-    f = json.dumps(json.loads("1.01234567890123456789012345678901234567890"))
-    json.dumps(json.loads(f))
-    '1.0123456789012346'
-
-Ruby::
-
-    $ irb --version
-    irb 0.9.5(05/04/13)
-    require 'JSON'
-    => true
-    JSON.dump(JSON.load("[1.01234567890123456789012345678901234567890]"))
-    => "[1.01234567890123]"
-    f = JSON.dump(JSON.load("[1.01234567890123456789012345678901234567890]"))
-    => "[1.01234567890123]"
-    JSON.dump(JSON.load(f))
-    => "[1.01234567890123]"
-
-
-.. note:: A small aside on Ruby, it requires a top level object or array, so I just
-         wrapped the value. Should be obvious it doesn't affect the result of
-         parsing the number though.
-
-
-Ejson (CouchDB's current parser) at CouchDB sha 168a663b::
-
-    $ ./utils/run -i
-    Erlang R14B04 (erts-5.8.5) [source] [64-bit] [smp:2:2] [rq:2]
-    [async-threads:4] [hipe] [kernel-poll:true]
-
-    Eshell V5.8.5  (abort with ^G)
-    1> ejson:encode(ejson:decode(<<"1.01234567890123456789012345678901234567890">>)).
-    <<"1.0123456789012346135">>
-    2> F = ejson:encode(ejson:decode(<<"1.01234567890123456789012345678901234567890">>)).
-    <<"1.0123456789012346135">>
-    3> ejson:encode(ejson:decode(F)).
-    <<"1.0123456789012346135">>
-
-
-As you can see they all pretty much behave the same except for Ruby
-actually does appear to be losing some precision over the other
-libraries.
-
-The astute observer will notice that ejson (the CouchDB JSON library)
-reported an extra three digits. While its tempting to think that this
-is due to some internal difference, its just a more specific case of
-the 1.1 input as described above.
-
-The important point to realize here is that a double can only hold a
-finite number of values. What we're doing here is generating a string
-that when passed through the "standard" floating point parsing
-algorithms (ie, ``strtod``) will result in the same bit pattern in memory
-as we started with. Or, slightly different, the bytes in a JSON
-serialized number are chosen such that they refer to a single specific
-value that a double can represent.
-
-The important point to understand is that we're mapping from one
-infinite set onto a finite set. An easy way to see this is by
-reflecting on this::
-
-    1.0 == 1.00 == 1.000 = 1.(infinite zeroes)
-
-Obviously a computer can't hold infinite bytes so we have to
-decimate our infinitely sized set to a finite set that can be
-represented concisely.
-
-The game that other JSON libraries are playing is merely:
-
-"How few characters do I have to use to select this specific value for a double"
-
-And that game has lots and lots of subtle details that are difficult
-to duplicate in C without a significant amount of effort (it took
-Python over a year to get it sorted with their fancy build systems
-that automatically run on a number of different architectures).
-
-Hopefully we've shown that CouchDB is not doing anything "funky" by
-changing input. Its behaving the same as any other common JSON library
-does, its just not pretty printing its output.
-
-On the other hand, if you actually are in a position where an IEEE-754
-double is not a satisfactory datatype for your numbers, then the
-answer as has been stated is to not pass your numbers through this
-representation. In JSON this is accomplished by encoding them as a
-string or by using integer types (although integer types can still
-bite you if you use a platform that has a different integer
-representation than normal, ie, JavaScript).
-
-Further information can be found easily, including the
-`Floating Point Guide`_, and  `David Goldberg's Reference`_.
-
-.. _Floating Point Guide: http://floating-point-gui.de/
-.. _David Goldberg's Reference: http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
-
-Also, if anyone is really interested in changing this behavior, we're
-all ears for contributions to `jiffy`_ (which is theoretically going to
-replace ejson when we get around to updating the build system). The
-places we've looked for inspiration are TCL and Python. If you know a
-decent implementation of this float printing algorithm give us a
-holler.
-
-.. _jiffy: https://github.com/davisp/jiffy
-
-.. _errors:
-
-HTTP Status Codes
-=================
-
-With the interface to CouchDB working through HTTP, error codes and
-statuses are reported using a combination of the HTTP status code
-number, and corresponding data in the body of the response data.
-
-A list of the error codes returned by CouchDB, and generic descriptions
-of the related errors are provided below. The meaning of different
-status codes for specific request types are provided in the
-corresponding API call reference.
-
--  ``200 - OK``
-
-   Request completed successfully.
-
--  ``201 - Created``
-
-   Document created successfully.
-
--  ``202 - Accepted``
-
-   Request has been accepted, but the corresponding operation may not
-   have completed. This is used for background operations, such as
-   database compaction.
-
--  ``304 - Not Modified``
-
-   The additional content requested has not been modified. This is used
-   with the ETag system to identify the version of information returned.
-
--  ``400 - Bad Request``
-
-   Bad request structure. The error can indicate an error with the
-   request URL, path or headers. Differences in the supplied MD5 hash
-   and content also trigger this error, as this may indicate message
-   corruption.
-
--  ``401 - Unauthorized``
-
-   The item requested was not available using the supplied
-   authorization, or authorization was not supplied.
-
--  ``403 - Forbidden``
-
-   The requested item or operation is forbidden.
-
--  ``404 - Not Found``
-
-   The requested content could not be found. The content will include
-   further information, as a JSON object, if available. The structure
-   will contain two keys, ``error`` and ``reason``. For example:
-
-   .. code-block:: javascript
-
-       {"error":"not_found","reason":"no_db_file"}
-
--  ``405 - Resource Not Allowed``
-
-   A request was made using an invalid HTTP request type for the URL
-   requested. For example, you have requested a ``PUT`` when a ``POST``
-   is required. Errors of this type can also triggered by invalid URL
-   strings.
-
--  ``406 - Not Acceptable``
-
-   The requested content type is not supported by the server.
-
--  ``409 - Conflict``
-
-   Request resulted in an update conflict.
-
--  ``412 - Precondition Failed``
-
-   The request headers from the client and the capabilities of the
-   server do not match.
-
--  ``415 - Bad Content Type``
-
-   The content types supported, and the content type of the information
-   being requested or submitted indicate that the content type is not
-   supported.
-
--  ``416 - Requested Range Not Satisfiable``
-
-   The range specified in the request header cannot be satisfied by the
-   server.
-
--  ``417 - Expectation Failed``
-
-   When sending documents in bulk, the bulk load operation failed.
-
--  ``500 - Internal Server Error``
-
-   The request was invalid, either because the supplied JSON was
-   invalid, or invalid information was supplied as part of the request.


Mime
View raw message