mirror of
https://github.com/google/brotli.git
synced 2024-11-24 20:40:13 +00:00
Merge pull request #66 from szabadka/master
Add the current version of the brotli specification.
This commit is contained in:
commit
f9bb85eb92
5514
docs/draft-alakuijala-brotli-02.nroff
Normal file
5514
docs/draft-alakuijala-brotli-02.nroff
Normal file
File diff suppressed because it is too large
Load Diff
6275
docs/draft-alakuijala-brotli-02.txt
Normal file
6275
docs/draft-alakuijala-brotli-02.txt
Normal file
File diff suppressed because it is too large
Load Diff
92
tools/rfc-format.py
Executable file
92
tools/rfc-format.py
Executable file
@ -0,0 +1,92 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
# Takes an .nroff source file and prints a text file in RFC format.
|
||||
#
|
||||
# Usage: rfc-format.py <source file>
|
||||
|
||||
import re
|
||||
import sys
|
||||
from subprocess import Popen, PIPE
|
||||
|
||||
|
||||
def Readfile(fn):
|
||||
f = open(fn, "r")
|
||||
return f.read()
|
||||
|
||||
|
||||
def FixNroffOutput(buf):
|
||||
p = re.compile(r'(.*)FORMFEED(\[Page\s+\d+\])$')
|
||||
strip_empty = False
|
||||
out = ""
|
||||
for line in buf.split("\n"):
|
||||
line = line.replace("\xe2\x80\x99", "'")
|
||||
line = line.replace("\xe2\x80\x90", "-")
|
||||
for i in range(len(line)):
|
||||
if ord(line[i]) > 128:
|
||||
print >>sys.stderr, "Invalid character %d\n" % ord(line[i])
|
||||
m = p.search(line)
|
||||
if strip_empty and len(line) == 0:
|
||||
continue
|
||||
if m:
|
||||
out += p.sub(r'\1 \2\n\f', line)
|
||||
out += "\n"
|
||||
strip_empty = True
|
||||
else:
|
||||
out += "%s\n" % line
|
||||
strip_empty = False
|
||||
return out.rstrip("\n")
|
||||
|
||||
|
||||
def Nroff(buf):
|
||||
p = Popen(["nroff", "-ms"], stdin=PIPE, stdout=PIPE)
|
||||
out, err = p.communicate(input=buf)
|
||||
return FixNroffOutput(out)
|
||||
|
||||
|
||||
def FormatTocLine(section, title, page):
|
||||
line = ""
|
||||
level = 1
|
||||
if section:
|
||||
level = section.count(".")
|
||||
for i in range(level):
|
||||
line += " "
|
||||
if section:
|
||||
line += "%s " % section
|
||||
line += "%s " % title
|
||||
pagenum = "%d" % page
|
||||
nspace = 72 - len(line) - len(pagenum)
|
||||
if nspace % 2:
|
||||
line += " "
|
||||
for i in range(nspace / 2):
|
||||
line += ". "
|
||||
line += "%d\n" % page
|
||||
return line
|
||||
|
||||
|
||||
def CreateToc(buf):
|
||||
p1 = re.compile(r'^((\d+\.)+)\s+(.*)$')
|
||||
p2 = re.compile(r'^(Appendix [A-Z].)\s+(.*)$')
|
||||
p3 = re.compile(r'\[Page (\d+)\]$')
|
||||
found = 0
|
||||
page = 1
|
||||
out = ""
|
||||
for line in buf.split("\n"):
|
||||
m1 = p1.search(line)
|
||||
m2 = p2.search(line)
|
||||
m3 = p3.search(line)
|
||||
if m1:
|
||||
out += FormatTocLine(m1.group(1), m1.group(3), page)
|
||||
elif m2:
|
||||
out += FormatTocLine(m2.group(1), m2.group(2), page)
|
||||
elif line.startswith("Authors"):
|
||||
out += FormatTocLine(None, line, page)
|
||||
elif m3:
|
||||
page = int(m3.group(1)) + 1
|
||||
return out
|
||||
|
||||
|
||||
src = Readfile(sys.argv[1])
|
||||
out = Nroff(src)
|
||||
toc = CreateToc(out)
|
||||
src = src.replace("INSERT_TOC_HERE", toc)
|
||||
print Nroff(src)
|
Loading…
Reference in New Issue
Block a user