Modify and enforce the file format/structure used
Convert the file format to be of the form ##_##_something.rst where the first ## is the top-level section number and the second ## is the second-level section number, e.g. 07_01_push_cs_api.rst means Section 7.1 - This is now enforced in gendoc.py along with the title line style that should be used (= for top-level, - for 2nd level) which will give helpful suggestions if you trip up. This feels much more intuitive now looking in /specification
This commit is contained in:
parent
06e46c1899
commit
1f6b12b3e8
19 changed files with 23 additions and 21 deletions
|
@ -21,7 +21,7 @@ title_style_matchers = {
|
|||
}
|
||||
TOP_LEVEL = "="
|
||||
SECOND_LEVEL = "-"
|
||||
FILE_FORMAT_MATCHER = re.compile("^[0-9]+_[0-9]{2}_.*\.rst$")
|
||||
FILE_FORMAT_MATCHER = re.compile("^[0-9]+_[0-9]{2}[a-z]*_.*\.rst$")
|
||||
|
||||
|
||||
def check_valid_section(filename, section):
|
||||
|
@ -55,14 +55,16 @@ def check_valid_section(filename, section):
|
|||
"style: expected '" + TOP_LEVEL + "' but got '" +
|
||||
title_line[0] + "'"
|
||||
)
|
||||
# anything marked as xx_x0_ is the start of a sub-section
|
||||
elif re.match("^[0-9]+_0[0-9]{1}_", filename):
|
||||
# anything marked as xx_xx_ is the start of a sub-section
|
||||
elif re.match("^[0-9]+_[0-9]{2}_", filename):
|
||||
if not title_style_matchers[SECOND_LEVEL].match(title_line):
|
||||
raise Exception(
|
||||
"The file " + filename + " is a 2nd-level section because it matches " +
|
||||
"the filename format ##_#0_something.rst but has the wrong title " +
|
||||
"the filename format ##_##_something.rst but has the wrong title " +
|
||||
"style: expected '" + SECOND_LEVEL + "' but got '" +
|
||||
title_line[0] + "'"
|
||||
title_line[0] + "' - If this is meant to be a 3rd/4th/5th-level section " +
|
||||
"then use the form '##_##b_something.rst' which will not apply this " +
|
||||
"check."
|
||||
)
|
||||
|
||||
def cat_spec_sections_to(out_file_name):
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
Typing Notifications
|
||||
====================
|
||||
--------------------
|
||||
|
||||
Client APIs
|
||||
-----------
|
||||
~~~~~~~~~~~
|
||||
|
||||
To set "I am typing for the next N msec"::
|
||||
|
||||
|
@ -21,7 +21,7 @@ To set "I am no longer typing"::
|
|||
Content: { "typing": false }
|
||||
|
||||
Client Events
|
||||
-------------
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
All room members will receive an event on the event stream::
|
||||
|
||||
|
@ -39,7 +39,7 @@ users who are not currently typing, as that list gets big quickly. The client
|
|||
should mark as not typing, any user ID who is not in that list.
|
||||
|
||||
Server APIs
|
||||
-----------
|
||||
~~~~~~~~~~~
|
||||
|
||||
Servers will emit EDUs in the following form::
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
Receipts
|
||||
========
|
||||
--------
|
||||
|
||||
Receipts are used to publish which events in a room the user or their devices
|
||||
have interacted with. For example, which events the user has read. For
|
||||
|
@ -7,7 +7,7 @@ efficiency this is done as "up to" markers, i.e. marking a particular event
|
|||
as, say, ``read`` indicates the user has read all events *up to* that event.
|
||||
|
||||
Client-Server API
|
||||
-----------------
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
Clients will receive receipts in the following format::
|
||||
|
||||
|
@ -58,7 +58,7 @@ other users. The server will automatically set the ``ts`` field.
|
|||
|
||||
|
||||
Server-Server API
|
||||
-----------------
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
Receipts are sent across federation as EDUs with type ``m.receipt``. The
|
||||
format of the EDUs are::
|
||||
|
@ -73,5 +73,5 @@ format of the EDUs are::
|
|||
...
|
||||
}
|
||||
|
||||
These are always sent as deltas to previously sent reciepts.
|
||||
These are always sent as deltas to previously sent receipts.
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
Room History Visibility
|
||||
=======================
|
||||
-----------------------
|
||||
|
||||
Whether a member of a room can see the events that happened in a room from
|
||||
before they joined the room is controlled by the ``history_visibility`` key
|
|
@ -1,8 +1,8 @@
|
|||
Signing Events
|
||||
==============
|
||||
--------------
|
||||
|
||||
Canonical JSON
|
||||
--------------
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
Matrix events are represented using JSON objects. If we want to sign JSON
|
||||
events we need to encode the JSON as a binary string. Unfortunately the same
|
||||
|
@ -38,7 +38,7 @@ using this representation.
|
|||
).encode("UTF-8")
|
||||
|
||||
Grammar
|
||||
~~~~~~~
|
||||
+++++++
|
||||
|
||||
Adapted from the grammar in http://tools.ietf.org/html/rfc7159 removing
|
||||
insignificant whitespace, fractions, exponents and redundant character escapes
|
||||
|
@ -69,14 +69,14 @@ insignificant whitespace, fractions, exponents and redundant character escapes
|
|||
/ %x75.30.30.31 (%x30-39 / %x61-66) ; u001X
|
||||
|
||||
Signing JSON
|
||||
------------
|
||||
~~~~~~~~~~~~
|
||||
|
||||
We can now sign a JSON object by encoding it as a sequence of bytes, computing
|
||||
the signature for that sequence and then adding the signature to the original
|
||||
JSON object.
|
||||
|
||||
Signing Details
|
||||
~~~~~~~~~~~~~~~
|
||||
+++++++++++++++
|
||||
|
||||
JSON is signed by encoding the JSON object without ``signatures`` or keys grouped
|
||||
as ``unsigned``, using the canonical encoding described above. The JSON bytes are then signed using the
|
||||
|
@ -133,7 +133,7 @@ and additional signatures.
|
|||
return json_object
|
||||
|
||||
Checking for a Signature
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
++++++++++++++++++++++++
|
||||
|
||||
To check if an entity has signed a JSON object a server does the following
|
||||
|
||||
|
@ -151,7 +151,7 @@ To check if an entity has signed a JSON object a server does the following
|
|||
the check fails. Otherwise the check succeeds.
|
||||
|
||||
Signing Events
|
||||
--------------
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
Signing events is a more complicated process since servers can choose to redact
|
||||
non-essential parts of an event. Before signing the event it is encoded as
|
Loading…
Add table
Add a link
Reference in a new issue