internal/web: stop double-escaping of code in non-playground examples

CL 317655 introduced an issue causing non-playground code examples
to be double-escaped, causing HTML escape sequences and elements
to appear in the code, such as the examples in crypto/rsa,
as reported in golang/go#46839. This change treats the code as
template.HTML rather than string after running through (*Page).Node
(which formats the code as HTML) and doing some basic transformations,
preventing this double-escaping from occurring.

Fixes golang/go#46839

Change-Id: Id226147eb51219bd5e2db61e959519258e39a298
GitHub-Last-Rev: 81f8dc5e878cd283f7d5865e73d214135838549b
GitHub-Pull-Request: golang/website#73
Reviewed-by: Dmitri Shuralyov <>
Run-TryBot: Dmitri Shuralyov <>
TryBot-Result: Go Bot <>
Trust: Cherry Mui <>
2 files changed
tree: f498d8f8d521e013ca59c2a0351d6cf1e84354fd
  1. _content/
  2. blog/
  3. cmd/
  5. internal/
  6. tour/
  7. .gitattributes
  8. .prettierrc
  10. codereview.cfg
  11. content.go
  15. go.mod
  16. go.sum

Go website

Go Reference

This repo holds content and serving programs for the web site.

Content is in _content/. Server code is in cmd/ and internal/.

To run the server to preview local content changes, use:

go run ./cmd/golangorg

The supporting programs cmd/admingolangorg and cmd/googlegolangorg are the servers for and (They do not use the _content/ directory.)

Each command directory has its own explaining deployment.

JS/CSS Formatting

This repository uses prettier to format JS and CSS files.

The version of prettier used is 1.18.2.

It is encouraged that all JS and CSS code be run through this before submitting a change. However, it is not a strict requirement enforced by CI.

Report Issues / Send Patches

This repository uses Gerrit for code changes. To learn how to submit changes to this repository, see

The main issue tracker for the website repository is located at Prefix your issue with “x/website:” in the subject line, so it is easy to find.