Add a CHANGELOG. Modify table CSS.
Hook up templating system to read the CHANGELOG for version and changelog info. Modified nature.css to make it clearer on table headings/sub-headings. Use the full _matrix/client path on title links to make it clear it is for v1.
This commit is contained in:
parent
8a676a2b9d
commit
bb9537b824
7 changed files with 86 additions and 54 deletions
11
CHANGELOG.rst
Normal file
11
CHANGELOG.rst
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
.. This file is automatically processed by the templating system. To make it
|
||||||
|
.. happy, you MUST use '=' as the title underline and you MUST stick the version
|
||||||
|
.. in the title. The version MUST follow the numbering format
|
||||||
|
.. "v<num>.<num>.<num>" - You cannot use a-z. If the templating system fails to
|
||||||
|
.. find the right info, it will be treated as a test failure and so will show up
|
||||||
|
.. in Jenkins. Comments like this are ignored by both RST and the templating
|
||||||
|
.. system.
|
||||||
|
|
||||||
|
Specification changes in v0.1.0 (2015-06-01)
|
||||||
|
============================================
|
||||||
|
- First numbered release.
|
|
@ -274,3 +274,11 @@ table {
|
||||||
border: 0;
|
border: 0;
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
td[colspan]:not([colspan="1"]) {
|
||||||
|
background: #eeeeee;
|
||||||
|
}
|
||||||
|
|
||||||
|
thead {
|
||||||
|
background: #eeeeee;
|
||||||
|
}
|
||||||
|
|
|
@ -3,7 +3,17 @@ Matrix Specification
|
||||||
|
|
||||||
Version: {{spec_version}}
|
Version: {{spec_version}}
|
||||||
-----------------------------
|
-----------------------------
|
||||||
``{{git_version}}``
|
This specification has been generated from
|
||||||
|
https://github.com/matrix-org/matrix-doc using
|
||||||
|
https://github.com/matrix-org/matrix-doc/blob/master/scripts/gendoc.py as of
|
||||||
|
revision ``{{git_version}}``.
|
||||||
|
|
||||||
|
Changelog
|
||||||
|
~~~~~~~~~
|
||||||
|
{{spec_changelog}}
|
||||||
|
|
||||||
|
For a full changelog, see
|
||||||
|
https://github.com/matrix-org/matrix-doc/blob/master/CHANGELOG.rst
|
||||||
|
|
||||||
Table of Contents
|
Table of Contents
|
||||||
=================
|
=================
|
||||||
|
|
|
@ -1224,56 +1224,8 @@ Maintaining the presence list::
|
||||||
|
|
||||||
Profiles
|
Profiles
|
||||||
~~~~~~~~
|
~~~~~~~~
|
||||||
The client API for profile management consists of the following REST calls.
|
|
||||||
|
|
||||||
Fetching a user account displayname::
|
{{profile_http_api}}
|
||||||
|
|
||||||
GET $PREFIX/profile/<user_id>/displayname
|
|
||||||
|
|
||||||
Returned content: JSON object containing the following keys:
|
|
||||||
displayname: string of freeform text
|
|
||||||
|
|
||||||
This call may be used to fetch the user's own displayname or to query the name
|
|
||||||
of other users; either locally or on remote systems hosted on other home
|
|
||||||
servers.
|
|
||||||
|
|
||||||
Setting a new displayname::
|
|
||||||
|
|
||||||
PUT $PREFIX/profile/<user_id>/displayname
|
|
||||||
|
|
||||||
Content: JSON object containing the following keys:
|
|
||||||
displayname: string of freeform text
|
|
||||||
|
|
||||||
Fetching a user account avatar URL::
|
|
||||||
|
|
||||||
GET $PREFIX/profile/<user_id>/avatar_url
|
|
||||||
|
|
||||||
Returned content: JSON object containing the following keys:
|
|
||||||
avatar_url: string containing an http-scheme URL
|
|
||||||
|
|
||||||
As with displayname, this call may be used to fetch either the user's own, or
|
|
||||||
other users' avatar URL.
|
|
||||||
|
|
||||||
Setting a new avatar URL::
|
|
||||||
|
|
||||||
PUT $PREFIX/profile/<user_id>/avatar_url
|
|
||||||
|
|
||||||
Content: JSON object containing the following keys:
|
|
||||||
avatar_url: string containing an http-scheme URL
|
|
||||||
|
|
||||||
Fetching combined account profile information::
|
|
||||||
|
|
||||||
GET $PREFIX/profile/<user_id>
|
|
||||||
|
|
||||||
Returned content: JSON object containing the following keys:
|
|
||||||
displayname: string of freeform text
|
|
||||||
avatar_url: string containing an http-scheme URL
|
|
||||||
|
|
||||||
At the current time, this API simply returns the displayname and avatar URL
|
|
||||||
information, though it is intended to return more fields about the user's
|
|
||||||
profile once they are defined. Client implementations should take care not to
|
|
||||||
expect that these are the only two keys returned as future versions of this
|
|
||||||
specification may yield more keys here.
|
|
||||||
|
|
||||||
Security
|
Security
|
||||||
--------
|
--------
|
||||||
|
|
|
@ -13,7 +13,12 @@ class MatrixSections(Sections):
|
||||||
return self.units.get("git_version")
|
return self.units.get("git_version")
|
||||||
|
|
||||||
def render_spec_version(self):
|
def render_spec_version(self):
|
||||||
return "0.1.0"
|
spec_meta = self.units.get("spec_meta")
|
||||||
|
return spec_meta["version"]
|
||||||
|
|
||||||
|
def render_spec_changelog(self):
|
||||||
|
spec_meta = self.units.get("spec_meta")
|
||||||
|
return spec_meta["changelog"]
|
||||||
|
|
||||||
def _render_events(self, filterFn, sortFn, title_kind="~"):
|
def _render_events(self, filterFn, sortFn, title_kind="~"):
|
||||||
template = self.env.get_template("events.tmpl")
|
template = self.env.get_template("events.tmpl")
|
||||||
|
@ -52,7 +57,9 @@ class MatrixSections(Sections):
|
||||||
# dump rest
|
# dump rest
|
||||||
rest = [ e for e in endpoints if e not in sorted_endpoints ]
|
rest = [ e for e in endpoints if e not in sorted_endpoints ]
|
||||||
return sorted_endpoints + rest
|
return sorted_endpoints + rest
|
||||||
return self._render_http_api_group("profile", sortFn=sortFn)
|
return self._render_http_api_group(
|
||||||
|
"profile", sortFn=sortFn, title_kind="+"
|
||||||
|
)
|
||||||
|
|
||||||
def render_room_events(self):
|
def render_room_events(self):
|
||||||
def filterFn(eventType):
|
def filterFn(eventType):
|
||||||
|
|
|
@ -12,7 +12,7 @@ Request format:
|
||||||
Parameter Value Description
|
Parameter Value Description
|
||||||
================== ================= ===========================================
|
================== ================= ===========================================
|
||||||
{% for loc in endpoint.req_param_by_loc -%}
|
{% for loc in endpoint.req_param_by_loc -%}
|
||||||
**{{loc}} parameters**
|
*{{loc}} parameters*
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
{% for param in endpoint.req_param_by_loc[loc] -%}
|
{% for param in endpoint.req_param_by_loc[loc] -%}
|
||||||
{{param.key}}{{param.type|indent(19-param.key|length)}}{{param.desc|indent(18-param.type|length)|wrap(43)|indent_block(37)}}
|
{{param.key}}{{param.type|indent(19-param.key|length)}}{{param.desc|indent(18-param.type|length)|wrap(43)|indent_block(37)}}
|
||||||
|
|
|
@ -3,6 +3,7 @@ from batesian.units import Units
|
||||||
import inspect
|
import inspect
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
import subprocess
|
import subprocess
|
||||||
import urllib
|
import urllib
|
||||||
import yaml
|
import yaml
|
||||||
|
@ -108,7 +109,7 @@ class MatrixUnits(Units):
|
||||||
"title": single_api.get("summary", ""),
|
"title": single_api.get("summary", ""),
|
||||||
"desc": single_api.get("description", single_api.get("summary", "")),
|
"desc": single_api.get("description", single_api.get("summary", "")),
|
||||||
"method": method.upper(),
|
"method": method.upper(),
|
||||||
"path": path,
|
"path": api.get("basePath", "") + path,
|
||||||
"requires_auth": "security" in single_api,
|
"requires_auth": "security" in single_api,
|
||||||
"rate_limited": 429 in single_api.get("responses", {}),
|
"rate_limited": 429 in single_api.get("responses", {}),
|
||||||
"req_params": [],
|
"req_params": [],
|
||||||
|
@ -369,6 +370,49 @@ class MatrixUnits(Units):
|
||||||
schemata[filename] = schema
|
schemata[filename] = schema
|
||||||
return schemata
|
return schemata
|
||||||
|
|
||||||
|
def load_spec_meta(self):
|
||||||
|
path = "../CHANGELOG.rst"
|
||||||
|
title_part = None
|
||||||
|
version = None
|
||||||
|
changelog_lines = []
|
||||||
|
with open(path, "r") as f:
|
||||||
|
prev_line = None
|
||||||
|
for line in f.readlines():
|
||||||
|
if line.strip().startswith(".. "):
|
||||||
|
continue # comment
|
||||||
|
if prev_line is None:
|
||||||
|
prev_line = line
|
||||||
|
continue
|
||||||
|
if not title_part:
|
||||||
|
# find the title underline (at least 3 =)
|
||||||
|
if re.match("^[=]{3,}$", line.strip()):
|
||||||
|
title_part = prev_line
|
||||||
|
continue
|
||||||
|
prev_line = line
|
||||||
|
else: # have title, get body (stop on next title or EOF)
|
||||||
|
if re.match("^[=]{3,}$", line.strip()):
|
||||||
|
# we added the title in the previous iteration, pop it
|
||||||
|
# then bail out.
|
||||||
|
changelog_lines.pop()
|
||||||
|
break
|
||||||
|
changelog_lines.append(line)
|
||||||
|
|
||||||
|
# parse out version from title
|
||||||
|
for word in title_part.split():
|
||||||
|
if re.match("^v[0-9\.]+$", word):
|
||||||
|
version = word[1:] # strip the 'v'
|
||||||
|
|
||||||
|
self.log("Version: %s Title part: %s Changelog lines: %s" % (
|
||||||
|
version, title_part, len(changelog_lines)
|
||||||
|
))
|
||||||
|
if not version or len(changelog_lines) == 0:
|
||||||
|
raise Exception("Failed to parse CHANGELOG.rst")
|
||||||
|
|
||||||
|
return {
|
||||||
|
"version": version,
|
||||||
|
"changelog": "".join(changelog_lines)
|
||||||
|
}
|
||||||
|
|
||||||
def load_git_version(self):
|
def load_git_version(self):
|
||||||
null = open(os.devnull, 'w')
|
null = open(os.devnull, 'w')
|
||||||
cwd = os.path.dirname(os.path.abspath(__file__))
|
cwd = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue