@@ -63,11 +63,17 @@ func (r *Renderer) bibliographyItem(w io.Writer, node *mast.BibliographyItem) {
63
63
tag := ""
64
64
switch {
65
65
case bytes .HasPrefix (node .Anchor , []byte ("RFC" )):
66
- tag = makeXiInclude (BibRFC , fmt .Sprintf ("reference.RFC.%s.xml" , node .Anchor [3 :]))
66
+ tag = makeXiInclude (BibRFC , fmt .Sprintf ("reference.RFC.%s.xml" , prefixWithZero ( node .Anchor [3 :]) ))
67
67
68
68
case bytes .HasPrefix (node .Anchor , []byte ("W3C." )):
69
69
tag = makeXiInclude (BibW3C , fmt .Sprintf ("reference.W3C.%s.xml" , node .Anchor [4 :]))
70
70
71
+ case bytes .HasPrefix (node .Anchor , []byte ("BCP" )):
72
+ tag = makeXiInclude (BibBCP , fmt .Sprintf ("reference.BCP.%s.xml" , prefixWithZero (node .Anchor [3 :])))
73
+
74
+ case bytes .HasPrefix (node .Anchor , []byte ("STD" )):
75
+ tag = makeXiInclude (BibSTD , fmt .Sprintf ("reference.STD.%s.xml" , prefixWithZero (node .Anchor [3 :])))
76
+
71
77
case bytes .HasPrefix (node .Anchor , []byte ("I-D." )):
72
78
hash := bytes .Index (node .Anchor , []byte ("#" ))
73
79
draft := ""
@@ -96,8 +102,25 @@ func makeXiInclude(url, reference string) string {
96
102
return fmt .Sprintf ("<xi:include href=\" %s/%s\" />" , url , reference )
97
103
}
98
104
105
+ func prefixWithZero (num []byte ) []byte {
106
+ switch len (num ) {
107
+ case 0 :
108
+ return num
109
+ case 1 :
110
+ return append ([]byte ("000" ), num ... )
111
+ case 2 :
112
+ return append ([]byte ("00" ), num ... )
113
+ case 3 :
114
+ return append ([]byte ("00" ), num ... )
115
+ default :
116
+ return num
117
+ }
118
+ }
119
+
99
120
var (
100
121
BibRFC = "https://bib.ietf.org/public/rfc/bibxml"
101
122
BibID = "https://bib.ietf.org/public/rfc/bibxml3"
102
123
BibW3C = "https://bib.ietf.org/public/rfc/bibxml4"
124
+ BibBCP = "https://bib.ietf.org/public/rfc/bibxml9" // reference.BCP.0014.xml
125
+ BibSTD = "https://bib.ietf.org/public/rfc/bibxml9" // reference.STD.0094.xml
103
126
)
0 commit comments