Extract SVG images
Several affordances throughout the application are visualized through
<svg> elements. Prior to this commit, they were declared
directly in the template HTML.
Some of the application’s iconography was shared across several parts of
the interface. For instance, the commit history’s <summary> element in
mobile dimensions shared the same icon <svg> elements as the file
diff’s <summary> element.
To re-use the shared elements, this commit adds a dependency on the
middleman-inline_svg gem, which reads files
from the source/images directory and renders the contents of files
inline as HTML, similar to what was done before.
The main value that middleman-inline_svg provides is that it affords
an opportunity for the rendering context to insert HTML attributes
(like class and role) or an SVG <title>
element.
To that end, this commit also configures the extension
to specify role="img" for each SVG, since each collection
of elements represents a single entity.