Merge pull request #276 from mdlayher/master
Add links to RFC sections, if available
diff --git a/gddo-server/template.go b/gddo-server/template.go
index 86e5271..d877518 100644
--- a/gddo-server/template.go
+++ b/gddo-server/template.go
@@ -270,7 +270,7 @@
var (
h3Pat = regexp.MustCompile(`<h3 id="([^"]+)">([^<]+)</h3>`)
- rfcPat = regexp.MustCompile(`RFC\s+(\d{3,4})`)
+ rfcPat = regexp.MustCompile(`RFC\s+(\d{3,4})((,|)\s+[Ss]ection\s+(\d+)((\.\d+|)|)|)`)
packagePat = regexp.MustCompile(`\s+package\s+([-a-z0-9]\S+)`)
)
@@ -309,6 +309,18 @@
p = replaceAll(p, rfcPat, func(out, src []byte, m []int) []byte {
out = append(out, `<a href="http://tools.ietf.org/html/rfc`...)
out = append(out, src[m[2]:m[3]]...)
+
+ // If available, add major section fragment
+ if m[6] != -1 {
+ out = append(out, `#section-`...)
+ out = append(out, src[m[8]:m[9]]...)
+
+ // If available, add minor section fragment
+ if m[13] != -1 {
+ out = append(out, src[m[12]:m[13]]...)
+ }
+ }
+
out = append(out, `">`...)
out = append(out, src[m[0]:m[1]]...)
out = append(out, `</a>`...)