summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun McCance <shaunm@redhat.com>2017-05-23 11:03:53 -0400
committerShaun McCance <shaunm@redhat.com>2017-05-23 11:03:53 -0400
commitd7cc35f2faa9420e51220866eebeb58dc2d0b7fc (patch)
tree1dac2295bd05f44faeb1def6e4db09da09c633b6
parent9571f9f04df74b60281068fded8b92b856f51244 (diff)
parent999918bf1dac553fb91c72920fea9682efad6f81 (diff)
downloadyelp-xsl-d7cc35f2faa9420e51220866eebeb58dc2d0b7fc.tar.gz
Merge branch 'wip/html5'
-rw-r--r--.gitignore3
-rw-r--r--Makefile.am2
-rw-r--r--configure.ac9
-rw-r--r--doc/yelp-xsl/Makefile.am2
-rw-r--r--icons/Makefile.am1
-rw-r--r--icons/hicolor/24x24/Makefile.am1
-rw-r--r--icons/hicolor/24x24/status/Makefile.am9
-rw-r--r--icons/hicolor/24x24/status/yelp-note-bug.pngbin1214 -> 0 bytes
-rw-r--r--icons/hicolor/24x24/status/yelp-note-important.pngbin1053 -> 0 bytes
-rw-r--r--icons/hicolor/24x24/status/yelp-note-tip.pngbin1193 -> 0 bytes
-rw-r--r--icons/hicolor/24x24/status/yelp-note-warning.pngbin1245 -> 0 bytes
-rw-r--r--icons/hicolor/24x24/status/yelp-note.pngbin838 -> 0 bytes
-rw-r--r--icons/hicolor/48x48/Makefile.am1
-rw-r--r--icons/hicolor/48x48/status/Makefile.am9
-rw-r--r--icons/hicolor/48x48/status/yelp-note-bug.pngbin2952 -> 0 bytes
-rw-r--r--icons/hicolor/48x48/status/yelp-note-important.pngbin2454 -> 0 bytes
-rw-r--r--icons/hicolor/48x48/status/yelp-note-tip.pngbin2491 -> 0 bytes
-rw-r--r--icons/hicolor/48x48/status/yelp-note-warning.pngbin2959 -> 0 bytes
-rw-r--r--icons/hicolor/48x48/status/yelp-note.pngbin1733 -> 0 bytes
-rw-r--r--icons/hicolor/Makefile.am1
-rw-r--r--icons/hicolor/scalable/Makefile.am1
-rw-r--r--icons/hicolor/scalable/status/Makefile.am9
-rw-r--r--icons/hicolor/scalable/status/yelp-note-bug.svg285
-rw-r--r--icons/hicolor/scalable/status/yelp-note-important.svg1223
-rw-r--r--icons/hicolor/scalable/status/yelp-note-tip.svg255
-rw-r--r--icons/hicolor/scalable/status/yelp-note-warning.svg290
-rw-r--r--icons/hicolor/scalable/status/yelp-note.svg1233
-rw-r--r--js/Makefile.am43
-rw-r--r--js/README.duck42
-rw-r--r--js/highlight.pack.js4
-rw-r--r--js/jquery.syntax.brush.apache.js41
-rw-r--r--js/jquery.syntax.brush.applescript.js57
-rw-r--r--js/jquery.syntax.brush.assembly.js37
-rw-r--r--js/jquery.syntax.brush.bash-script.js67
-rw-r--r--js/jquery.syntax.brush.bash.js33
-rw-r--r--js/jquery.syntax.brush.basic.js51
-rw-r--r--js/jquery.syntax.brush.clang.js89
-rw-r--r--js/jquery.syntax.brush.csharp.js47
-rw-r--r--js/jquery.syntax.brush.css.js80
-rw-r--r--js/jquery.syntax.brush.diff.js24
-rw-r--r--js/jquery.syntax.brush.go.js47
-rw-r--r--js/jquery.syntax.brush.haskell.js45
-rw-r--r--js/jquery.syntax.brush.html.js66
-rw-r--r--js/jquery.syntax.brush.io.js45
-rw-r--r--js/jquery.syntax.brush.java.js45
-rw-r--r--js/jquery.syntax.brush.javascript.js40
-rw-r--r--js/jquery.syntax.brush.kai.js29
-rw-r--r--js/jquery.syntax.brush.lisp.js34
-rw-r--r--js/jquery.syntax.brush.lua.js44
-rw-r--r--js/jquery.syntax.brush.ocaml.js73
-rw-r--r--js/jquery.syntax.brush.ooc.js46
-rw-r--r--js/jquery.syntax.brush.pascal.js51
-rw-r--r--js/jquery.syntax.brush.perl5.js52
-rw-r--r--js/jquery.syntax.brush.php-script.js48
-rw-r--r--js/jquery.syntax.brush.php.js15
-rw-r--r--js/jquery.syntax.brush.plain.js10
-rw-r--r--js/jquery.syntax.brush.protobuf.js43
-rw-r--r--js/jquery.syntax.brush.python.js44
-rw-r--r--js/jquery.syntax.brush.ruby.js77
-rw-r--r--js/jquery.syntax.brush.scala.js44
-rw-r--r--js/jquery.syntax.brush.smalltalk.js29
-rw-r--r--js/jquery.syntax.brush.sql.js31
-rw-r--r--js/jquery.syntax.brush.super-collider.js57
-rw-r--r--js/jquery.syntax.brush.xml.js50
-rw-r--r--js/jquery.syntax.brush.yaml.js29
-rw-r--r--js/jquery.syntax.core.js1177
-rw-r--r--js/jquery.syntax.js317
-rw-r--r--js/jquery.syntax.layout.editor.js291
-rw-r--r--js/jquery.syntax.layout.fixed.js70
-rw-r--r--js/jquery.syntax.layout.inline.js13
-rw-r--r--js/jquery.syntax.layout.list.js54
-rw-r--r--js/jquery.syntax.layout.plain.js15
-rw-r--r--js/jquery.syntax.layout.table.js58
-rw-r--r--js/jquery.syntax.layout.yelp.js4
-rw-r--r--js/syntax.html194
-rw-r--r--test/colors/Makefile5
-rw-r--r--test/colors/testcolors.xsl200
-rw-r--r--test/syntax/Makefile11
-rw-r--r--test/syntax/code/actionscript24
-rw-r--r--test/syntax/code/apache19
-rw-r--r--test/syntax/code/asciidoc65
-rw-r--r--test/syntax/code/bash30
-rw-r--r--test/syntax/code/clojure18
-rw-r--r--test/syntax/code/cmake19
-rw-r--r--test/syntax/code/cpp15
-rw-r--r--test/syntax/code/cs38
-rw-r--r--test/syntax/code/css25
-rw-r--r--test/syntax/code/d44
-rw-r--r--test/syntax/code/diff30
-rw-r--r--test/syntax/code/django16
-rw-r--r--test/syntax/code/dockerfile48
-rw-r--r--test/syntax/code/dos24
-rw-r--r--test/syntax/code/erb10
-rw-r--r--test/syntax/code/fsharp48
-rw-r--r--test/syntax/code/go34
-rw-r--r--test/syntax/code/haml14
-rw-r--r--test/syntax/code/haskell38
-rw-r--r--test/syntax/code/http6
-rw-r--r--test/syntax/code/ini12
-rw-r--r--test/syntax/code/java35
-rw-r--r--test/syntax/code/javascript37
-rw-r--r--test/syntax/code/json12
-rw-r--r--test/syntax/code/lisp22
-rw-r--r--test/syntax/code/lua32
-rw-r--r--test/syntax/code/makefile13
-rw-r--r--test/syntax/code/markdown22
-rw-r--r--test/syntax/code/matlab45
-rw-r--r--test/syntax/code/nginx47
-rw-r--r--test/syntax/code/objectivec43
-rw-r--r--test/syntax/code/perl41
-rw-r--r--test/syntax/code/php52
-rw-r--r--test/syntax/code/python12
-rw-r--r--test/syntax/code/r68
-rw-r--r--test/syntax/code/ruby28
-rw-r--r--test/syntax/code/rust55
-rw-r--r--test/syntax/code/scala44
-rw-r--r--test/syntax/code/scheme28
-rw-r--r--test/syntax/code/smalltalk39
-rw-r--r--test/syntax/code/sql19
-rw-r--r--test/syntax/code/tcl26
-rw-r--r--test/syntax/code/tex17
-rw-r--r--test/syntax/code/vala46
-rw-r--r--test/syntax/code/xml24
-rw-r--r--test/syntax/code/xquery20
-rw-r--r--test/syntax/code/yaml39
-rw-r--r--test/syntax/dita.dita636
-rw-r--r--test/syntax/docbook.docbook537
-rw-r--r--test/syntax/mallard.page725
-rw-r--r--xslt/common/Makefile.am2
-rw-r--r--xslt/common/color.xsl955
-rw-r--r--xslt/common/domains/yelp-xsl.xml.in15
-rw-r--r--xslt/common/html.xsl1894
-rw-r--r--xslt/common/icons.xsl354
-rw-r--r--xslt/common/icons/Makefile.am12
-rw-r--r--xslt/common/icons/yelp-note-advanced.svg15
-rw-r--r--xslt/common/icons/yelp-note-bug.svg13
-rw-r--r--xslt/common/icons/yelp-note-important.svg4
-rw-r--r--xslt/common/icons/yelp-note-note.svg7
-rw-r--r--xslt/common/icons/yelp-note-package.svg7
-rw-r--r--xslt/common/icons/yelp-note-tip.svg7
-rw-r--r--xslt/common/icons/yelp-note-warning.svg4
-rw-r--r--xslt/common/l10n-numbers.xsl5
-rw-r--r--xslt/dita/html/dita2html-block.xsl274
-rw-r--r--xslt/dita/html/dita2html-topic.xsl231
-rw-r--r--xslt/dita/html/dita2html.xsl6
-rw-r--r--xslt/docbook/common/db-selectors.mod21
-rw-r--r--xslt/docbook/common/db-title.xsl43
-rw-r--r--xslt/docbook/html/db2html-block.xsl307
-rw-r--r--xslt/docbook/html/db2html-classsynopsis.xsl2
-rw-r--r--xslt/docbook/html/db2html-css.xsl70
-rw-r--r--xslt/docbook/html/db2html-division.xsl207
-rw-r--r--xslt/docbook/html/db2html-index.xsl225
-rw-r--r--xslt/docbook/html/db2html-links.xsl21
-rw-r--r--xslt/docbook/html/db2html-list.xsl114
-rw-r--r--xslt/docbook/html/db2html-media.xsl39
-rw-r--r--xslt/docbook/html/db2html.xsl4
-rw-r--r--xslt/mallard/cache/mal-cache.xsl28
-rw-r--r--xslt/mallard/common/mal-if.xsl2
-rw-r--r--xslt/mallard/html/Makefile.am1
-rw-r--r--xslt/mallard/html/mal2html-block.xsl280
-rw-r--r--xslt/mallard/html/mal2html-facets.xsl172
-rw-r--r--xslt/mallard/html/mal2html-gloss.xsl38
-rw-r--r--xslt/mallard/html/mal2html-links.xsl53
-rw-r--r--xslt/mallard/html/mal2html-media.xsl34
-rw-r--r--xslt/mallard/html/mal2html-page.xsl822
-rw-r--r--xslt/mallard/html/mal2html-ui.xsl404
-rw-r--r--xslt/mallard/html/mal2xhtml.xsl1
167 files changed, 8021 insertions, 9465 deletions
diff --git a/.gitignore b/.gitignore
index 8066ecc1..66b71515 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,9 @@
ChangeLog
INSTALL
Makefile
+!/test/**/Makefile
+/test/colors/*.html
+/test/syntax/*.html
Makefile.in
aclocal.m4
autom4te.cache
diff --git a/Makefile.am b/Makefile.am
index 761a330b..4ad2f638 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = icons js xslt doc
+SUBDIRS = js xslt doc
DIST_SUBDIRS = $(SUBDIRS) po
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
diff --git a/configure.ac b/configure.ac
index 8f2f97f1..4beccf89 100644
--- a/configure.ac
+++ b/configure.ac
@@ -56,14 +56,6 @@ fi
AC_CONFIG_FILES([
Makefile
yelp-xsl.pc
-icons/Makefile
-icons/hicolor/Makefile
-icons/hicolor/24x24/Makefile
-icons/hicolor/24x24/status/Makefile
-icons/hicolor/48x48/Makefile
-icons/hicolor/48x48/status/Makefile
-icons/hicolor/scalable/Makefile
-icons/hicolor/scalable/status/Makefile
js/Makefile
doc/Makefile
doc/yelp-xsl/Makefile
@@ -71,6 +63,7 @@ po/Makefile.in
xslt/Makefile
xslt/common/Makefile
xslt/common/domains/Makefile
+xslt/common/icons/Makefile
xslt/docbook/Makefile
xslt/docbook/common/Makefile
xslt/docbook/html/Makefile
diff --git a/doc/yelp-xsl/Makefile.am b/doc/yelp-xsl/Makefile.am
index 9a3863ee..3dd0b55a 100644
--- a/doc/yelp-xsl/Makefile.am
+++ b/doc/yelp-xsl/Makefile.am
@@ -41,7 +41,7 @@ endif
.PHONY: xsldoc-clean
clean-local: xsldoc-clean
xsldoc-clean:
- rm -f $(xsldoc_pages) C/*.*.page C/index.cache
+ rm -f $(xsldoc_pages) C/*.*.page C/*-*.page C/index.cache
EXTRA_DIST = \
mal2cache \
diff --git a/icons/Makefile.am b/icons/Makefile.am
deleted file mode 100644
index 658356b2..00000000
--- a/icons/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = hicolor
diff --git a/icons/hicolor/24x24/Makefile.am b/icons/hicolor/24x24/Makefile.am
deleted file mode 100644
index d52da2b9..00000000
--- a/icons/hicolor/24x24/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = status
diff --git a/icons/hicolor/24x24/status/Makefile.am b/icons/hicolor/24x24/status/Makefile.am
deleted file mode 100644
index 5e6d5ec6..00000000
--- a/icons/hicolor/24x24/status/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-icondir = $(datadir)/yelp-xsl/icons/hicolor/24x24/status
-icon_DATA = \
- yelp-note.png \
- yelp-note-bug.png \
- yelp-note-important.png \
- yelp-note-tip.png \
- yelp-note-warning.png
-
-EXTRA_DIST = $(icon_DATA)
diff --git a/icons/hicolor/24x24/status/yelp-note-bug.png b/icons/hicolor/24x24/status/yelp-note-bug.png
deleted file mode 100644
index 8425294c..00000000
--- a/icons/hicolor/24x24/status/yelp-note-bug.png
+++ /dev/null
Binary files differ
diff --git a/icons/hicolor/24x24/status/yelp-note-important.png b/icons/hicolor/24x24/status/yelp-note-important.png
deleted file mode 100644
index 7575baf4..00000000
--- a/icons/hicolor/24x24/status/yelp-note-important.png
+++ /dev/null
Binary files differ
diff --git a/icons/hicolor/24x24/status/yelp-note-tip.png b/icons/hicolor/24x24/status/yelp-note-tip.png
deleted file mode 100644
index 72faadd8..00000000
--- a/icons/hicolor/24x24/status/yelp-note-tip.png
+++ /dev/null
Binary files differ
diff --git a/icons/hicolor/24x24/status/yelp-note-warning.png b/icons/hicolor/24x24/status/yelp-note-warning.png
deleted file mode 100644
index d4a82ec4..00000000
--- a/icons/hicolor/24x24/status/yelp-note-warning.png
+++ /dev/null
Binary files differ
diff --git a/icons/hicolor/24x24/status/yelp-note.png b/icons/hicolor/24x24/status/yelp-note.png
deleted file mode 100644
index 6c9a9fe1..00000000
--- a/icons/hicolor/24x24/status/yelp-note.png
+++ /dev/null
Binary files differ
diff --git a/icons/hicolor/48x48/Makefile.am b/icons/hicolor/48x48/Makefile.am
deleted file mode 100644
index d52da2b9..00000000
--- a/icons/hicolor/48x48/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = status
diff --git a/icons/hicolor/48x48/status/Makefile.am b/icons/hicolor/48x48/status/Makefile.am
deleted file mode 100644
index 9fa83274..00000000
--- a/icons/hicolor/48x48/status/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-icondir = $(datadir)/yelp-xsl/icons/hicolor/48x48/status
-icon_DATA = \
- yelp-note.png \
- yelp-note-bug.png \
- yelp-note-important.png \
- yelp-note-tip.png \
- yelp-note-warning.png
-
-EXTRA_DIST = $(icon_DATA)
diff --git a/icons/hicolor/48x48/status/yelp-note-bug.png b/icons/hicolor/48x48/status/yelp-note-bug.png
deleted file mode 100644
index aea64469..00000000
--- a/icons/hicolor/48x48/status/yelp-note-bug.png
+++ /dev/null
Binary files differ
diff --git a/icons/hicolor/48x48/status/yelp-note-important.png b/icons/hicolor/48x48/status/yelp-note-important.png
deleted file mode 100644
index cc85f533..00000000
--- a/icons/hicolor/48x48/status/yelp-note-important.png
+++ /dev/null
Binary files differ
diff --git a/icons/hicolor/48x48/status/yelp-note-tip.png b/icons/hicolor/48x48/status/yelp-note-tip.png
deleted file mode 100644
index a25faae6..00000000
--- a/icons/hicolor/48x48/status/yelp-note-tip.png
+++ /dev/null
Binary files differ
diff --git a/icons/hicolor/48x48/status/yelp-note-warning.png b/icons/hicolor/48x48/status/yelp-note-warning.png
deleted file mode 100644
index ecdc0f92..00000000
--- a/icons/hicolor/48x48/status/yelp-note-warning.png
+++ /dev/null
Binary files differ
diff --git a/icons/hicolor/48x48/status/yelp-note.png b/icons/hicolor/48x48/status/yelp-note.png
deleted file mode 100644
index 4ffa19c7..00000000
--- a/icons/hicolor/48x48/status/yelp-note.png
+++ /dev/null
Binary files differ
diff --git a/icons/hicolor/Makefile.am b/icons/hicolor/Makefile.am
deleted file mode 100644
index 4c09510d..00000000
--- a/icons/hicolor/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = 24x24 48x48 scalable
diff --git a/icons/hicolor/scalable/Makefile.am b/icons/hicolor/scalable/Makefile.am
deleted file mode 100644
index d52da2b9..00000000
--- a/icons/hicolor/scalable/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = status
diff --git a/icons/hicolor/scalable/status/Makefile.am b/icons/hicolor/scalable/status/Makefile.am
deleted file mode 100644
index 41062951..00000000
--- a/icons/hicolor/scalable/status/Makefile.am
+++ /dev/null
@@ -1,9 +0,0 @@
-icondir = $(datadir)/yelp-xsl/icons/hicolor/scalable/status
-icon_DATA = \
- yelp-note.svg \
- yelp-note-bug.svg \
- yelp-note-important.svg \
- yelp-note-tip.svg \
- yelp-note-warning.svg
-
-EXTRA_DIST = $(icon_DATA)
diff --git a/icons/hicolor/scalable/status/yelp-note-bug.svg b/icons/hicolor/scalable/status/yelp-note-bug.svg
deleted file mode 100644
index 744383ad..00000000
--- a/icons/hicolor/scalable/status/yelp-note-bug.svg
+++ /dev/null
@@ -1,285 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg2"
- inkscape:label="Pozadí"
- sodipodi:version="0.32"
- inkscape:version="0.45.1"
- version="1.0"
- sodipodi:docname="admon-bug.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="5.6"
- inkscape:cx="52.581793"
- inkscape:cy="20.866655"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- width="48px"
- height="48px"
- showgrid="true"
- inkscape:window-width="1024"
- inkscape:window-height="696"
- inkscape:window-x="5"
- inkscape:window-y="45" />
- <defs
- id="defs3">
- <linearGradient
- id="linearGradient6156"
- inkscape:collect="always">
- <stop
- offset="0"
- style="stop-color:#000000;stop-opacity:1;"
- id="stop6158" />
- <stop
- offset="1"
- style="stop-color:#000000;stop-opacity:0;"
- id="stop6160" />
- </linearGradient>
- <linearGradient
- id="linearGradient6089"
- inkscape:collect="always">
- <stop
- offset="0"
- style="stop-color:#75507b;stop-opacity:1"
- id="stop6091" />
- <stop
- offset="1"
- style="stop-color:#ad7fa8;stop-opacity:1"
- id="stop6093" />
- </linearGradient>
- <linearGradient
- id="linearGradient6081"
- inkscape:collect="always">
- <stop
- offset="0"
- style="stop-color:#f57900;stop-opacity:1;"
- id="stop6083" />
- <stop
- offset="1"
- style="stop-color:#fcaf3e;stop-opacity:1"
- id="stop6085" />
- </linearGradient>
- <linearGradient
- id="linearGradient6087"
- gradientUnits="userSpaceOnUse"
- inkscape:collect="always"
- x1="34.79541"
- y1="26.03462"
- xlink:href="#linearGradient6081"
- x2="8.9580269"
- y2="23.446428" />
- <linearGradient
- id="linearGradient6095"
- gradientUnits="userSpaceOnUse"
- inkscape:collect="always"
- x1="40"
- x2="7"
- xlink:href="#linearGradient6089"
- gradientTransform="matrix(1.0010063,0,0,0.9725804,-1.4705169e-2,6.1443617)"
- y1="23.5"
- y2="22.285715" />
- <radialGradient
- r="16.130873"
- id="radialGradient6162"
- fx="23.454479"
- fy="43.454315"
- gradientUnits="userSpaceOnUse"
- inkscape:collect="always"
- cy="43.454315"
- cx="23.454479"
- xlink:href="#linearGradient6156"
- gradientTransform="matrix(1,0,0,0.2074364,0,34.440308)" />
- </defs>
- <metadata
- id="metadata6">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Vrstva 1"
- id="layer1"
- inkscape:groupmode="layer">
- <path
- style="opacity:1;color:#000000;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path6101"
- sodipodi:cx="23.526785"
- sodipodi:cy="7.4196429"
- sodipodi:type="arc"
- d="M 30.267856 7.4196429 A 6.7410712 4.3303571 0 1 1 16.785714,7.4196429 A 6.7410712 4.3303571 0 1 1 30.267856 7.4196429 z"
- transform="matrix(1.0215429,0,0,1.4747729,-0.5336189,3.0577116)"
- sodipodi:rx="6.7410712"
- sodipodi:ry="4.3303571" />
- <path
- style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.96511722;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.21004567;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path6152"
- sodipodi:cx="23.526785"
- sodipodi:cy="7.4196429"
- sodipodi:type="arc"
- d="M 30.267856 7.4196429 A 6.7410712 4.3303571 0 1 1 16.785714,7.4196429 A 6.7410712 4.3303571 0 1 1 30.267856 7.4196429 z"
- transform="matrix(0.8891326,0,0,1.1531857,2.5815682,4.9437741)"
- sodipodi:rx="6.7410712"
- sodipodi:ry="4.3303571" />
- <path
- style="opacity:1;color:#000000;fill:url(#linearGradient6087);fill-opacity:1;fill-rule:evenodd;stroke:#ce5c00;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path6071"
- sodipodi:cx="23.258928"
- sodipodi:cy="23.446428"
- sodipodi:type="arc"
- d="M 36.339286 23.446428 A 13.080358 16.339285 0 1 1 10.178571,23.446428 A 13.080358 16.339285 0 1 1 36.339286 23.446428 z"
- transform="matrix(0.9883243,0,0,0.9797242,0.4322784,5.528967)"
- sodipodi:rx="13.080358"
- sodipodi:ry="16.339285" />
- <path
- sodipodi:ry="16.339285"
- sodipodi:rx="13.080358"
- transform="matrix(0.9883243,0,0,0.9491231,0.4322784,5.7464535)"
- d="M 36.339286 23.446428 A 13.080358 16.339285 0 1 1 10.178571,23.446428 A 13.080358 16.339285 0 1 1 36.339286 23.446428 z"
- sodipodi:type="arc"
- sodipodi:cy="23.446428"
- sodipodi:cx="23.258928"
- id="path6245"
- style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.03249746;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.21004567;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- style="opacity:1;color:#000000;fill:url(#linearGradient6095);fill-opacity:1;fill-rule:evenodd;stroke:#5c3566;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="M 23.508943,11.517887 C 14.677453,11.517887 7.5178867,19.418216 7.5178871,29.162171 C 7.5178871,37.764257 13.091758,44.919464 20.477306,46.482112 L 23.496766,15.443916 L 26.60721,46.482112 C 33.961231,44.89188 39.499997,37.739568 39.499999,29.162171 C 39.499999,19.418217 32.340433,11.517887 23.508943,11.517887 z "
- sodipodi:nodetypes="cscccsc"
- id="path5097" />
- <path
- style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.21004567;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path6097"
- sodipodi:nodetypes="csccccsc"
- d="M 23.554054,12.488633 C 15.233771,12.488633 8.4886327,19.949568 8.4886331,29.151594 C 8.4886331,37.275257 14.347294,43.668415 19.608099,45.404223 L 22.467876,14.934687 L 24.532441,14.931184 L 27.473453,45.248182 C 32.704556,43.746394 38.619473,37.251941 38.619475,29.151594 C 38.619475,19.949569 31.874336,12.488633 23.554054,12.488633 z " />
- <g
- id="g6139"
- transform="translate(-1,1)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#2e3436;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path6121"
- sodipodi:nodetypes="cc"
- d="M 27.5,8.5 L 31.994924,3.0783634" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#888a85;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 27.5,8.5 L 31.994924,3.0783634"
- sodipodi:nodetypes="cc"
- id="path6123" />
- <path
- style="color:#000000;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path6125"
- sodipodi:cx="31.630402"
- sodipodi:cy="2.6694045"
- sodipodi:type="arc"
- d="M 33.903245 2.6694045 A 2.2728431 2.2728431 0 1 1 29.357558,2.6694045 A 2.2728431 2.2728431 0 1 1 33.903245 2.6694045 z"
- transform="matrix(1.0829696,0,0,1.0713815,-2.2547639,0.1137115)"
- sodipodi:rx="2.2728431"
- sodipodi:ry="2.2728431" />
- </g>
- <g
- id="g6144"
- transform="matrix(-1,0,0,1,47.999999,1)">
- <path
- style="fill:none;fill-rule:evenodd;stroke:#2e3436;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 27.5,8.5 L 31.994924,3.0783634"
- sodipodi:nodetypes="cc"
- id="path6146" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#888a85;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- id="path6148"
- sodipodi:nodetypes="cc"
- d="M 27.5,8.5 L 31.994924,3.0783634" />
- <path
- style="color:#000000;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path6150"
- sodipodi:cx="31.630402"
- sodipodi:cy="2.6694045"
- sodipodi:type="arc"
- d="M 33.903245 2.6694045 A 2.2728431 2.2728431 0 1 1 29.357558,2.6694045 A 2.2728431 2.2728431 0 1 1 33.903245 2.6694045 z"
- transform="matrix(1.0829696,0,0,1.0713815,-2.2547639,0.1137115)"
- sodipodi:rx="2.2728431"
- sodipodi:ry="2.2728431" />
- </g>
- <path
- sodipodi:type="arc"
- style="opacity:1;color:#000000;fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:#edd400;stroke-width:1.63210618;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path6233"
- sodipodi:cx="17.614534"
- sodipodi:cy="22.746187"
- sodipodi:rx="2.3991122"
- sodipodi:ry="2.3991122"
- d="M 20.013647 22.746187 A 2.3991122 2.3991122 0 1 1 15.215422,22.746187 A 2.3991122 2.3991122 0 1 1 20.013647 22.746187 z"
- transform="matrix(0.6220521,0,0,0.6220524,6.0428418,6.8506799)" />
- <path
- transform="matrix(0.6220522,0,0,0.6220524,3.0428401,14.850679)"
- d="M 20.013647 22.746187 A 2.3991122 2.3991122 0 1 1 15.215422,22.746187 A 2.3991122 2.3991122 0 1 1 20.013647 22.746187 z"
- sodipodi:ry="2.3991122"
- sodipodi:rx="2.3991122"
- sodipodi:cy="22.746187"
- sodipodi:cx="17.614534"
- id="path6235"
- style="opacity:1;color:#000000;fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:#edd400;stroke-width:1.63210607;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="opacity:1;color:#000000;fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:#edd400;stroke-width:1.63210607;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path6237"
- sodipodi:cx="17.614534"
- sodipodi:cy="22.746187"
- sodipodi:rx="2.3991122"
- sodipodi:ry="2.3991122"
- d="M 20.013647 22.746187 A 2.3991122 2.3991122 0 1 1 15.215422,22.746187 A 2.3991122 2.3991122 0 1 1 20.013647 22.746187 z"
- transform="matrix(0.6220522,0,0,0.6220524,5.0428401,22.850678)" />
- <path
- transform="matrix(-0.6220521,0,0,0.6220523,40.957157,6.8506818)"
- d="M 20.013647 22.746187 A 2.3991122 2.3991122 0 1 1 15.215422,22.746187 A 2.3991122 2.3991122 0 1 1 20.013647 22.746187 z"
- sodipodi:ry="2.3991122"
- sodipodi:rx="2.3991122"
- sodipodi:cy="22.746187"
- sodipodi:cx="17.614534"
- id="path6239"
- style="opacity:1;color:#000000;fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:#edd400;stroke-width:1.63210642;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="opacity:1;color:#000000;fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:#edd400;stroke-width:1.63210607;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path6241"
- sodipodi:cx="17.614534"
- sodipodi:cy="22.746187"
- sodipodi:rx="2.3991122"
- sodipodi:ry="2.3991122"
- d="M 20.013647 22.746187 A 2.3991122 2.3991122 0 1 1 15.215422,22.746187 A 2.3991122 2.3991122 0 1 1 20.013647 22.746187 z"
- transform="matrix(-0.6220522,0,0,0.6220524,43.95716,14.850679)" />
- <path
- transform="matrix(-0.6220522,0,0,0.6220524,41.95716,22.850678)"
- d="M 20.013647 22.746187 A 2.3991122 2.3991122 0 1 1 15.215422,22.746187 A 2.3991122 2.3991122 0 1 1 20.013647 22.746187 z"
- sodipodi:ry="2.3991122"
- sodipodi:rx="2.3991122"
- sodipodi:cy="22.746187"
- sodipodi:cx="17.614534"
- id="path6243"
- style="opacity:1;color:#000000;fill:#fce94f;fill-opacity:1;fill-rule:evenodd;stroke:#edd400;stroke-width:1.63210607;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc" />
- </g>
-</svg>
diff --git a/icons/hicolor/scalable/status/yelp-note-important.svg b/icons/hicolor/scalable/status/yelp-note-important.svg
deleted file mode 100644
index 86a05e20..00000000
--- a/icons/hicolor/scalable/status/yelp-note-important.svg
+++ /dev/null
@@ -1,1223 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg2"
- inkscape:label="Pozadí"
- sodipodi:version="0.32"
- inkscape:version="0.47 r22583"
- version="1.0"
- sodipodi:docname="admon-important.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs3">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 24 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="48 : 24 : 1"
- inkscape:persp3d-origin="24 : 16 : 1"
- id="perspective189" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5551">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop5553" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop5555" />
- </linearGradient>
- <linearGradient
- id="linearGradient5618">
- <stop
- style="stop-color:#000000;stop-opacity:0.24774775"
- offset="0.0000000"
- id="stop5620" />
- <stop
- id="stop5622"
- offset="0.55172414"
- style="stop-color:#000000;stop-opacity:0.14432989;" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop5624" />
- </linearGradient>
- <linearGradient
- id="linearGradient5588"
- inkscape:collect="always">
- <stop
- id="stop5590"
- offset="0"
- style="stop-color:#f8c700;stop-opacity:1" />
- <stop
- id="stop5592"
- offset="1"
- style="stop-color:#fff38a;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5648">
- <stop
- style="stop-color:#fce94f;stop-opacity:1;"
- offset="0"
- id="stop5650" />
- <stop
- style="stop-color:#fce94f;stop-opacity:0;"
- offset="1"
- id="stop5652" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5500">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop5502" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop5504" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5490">
- <stop
- style="stop-color:#edd400;stop-opacity:1;"
- offset="0"
- id="stop5492" />
- <stop
- style="stop-color:#fce94f;stop-opacity:1"
- offset="1"
- id="stop5494" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5490"
- id="linearGradient5496"
- x1="30.749542"
- y1="23.521629"
- x2="4.8279467"
- y2="0.26282805"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5648"
- id="radialGradient5654"
- cx="25"
- cy="25"
- fx="25"
- fy="25"
- r="19"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5588"
- id="linearGradient5668"
- gradientUnits="userSpaceOnUse"
- x1="32.735748"
- y1="45.385857"
- x2="1.9991667"
- y2="0.34891111"
- gradientTransform="matrix(0.996842,0.3004032,-0.3028517,0.993998,16.112815,13.052627)" />
- <filter
- inkscape:collect="always"
- x="-0.11644833"
- width="1.2328967"
- y="-0.14971928"
- height="1.2994386"
- id="filter5524">
- <feGaussianBlur
- inkscape:collect="always"
- stdDeviation="0.43668122"
- id="feGaussianBlur5526" />
- </filter>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5490"
- id="linearGradient5550"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.996842,0.3004032,-0.3028517,0.993998,-33.887185,13.052627)"
- x1="21.451542"
- y1="39.021152"
- x2="5.298399"
- y2="5.9444652" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5500"
- id="linearGradient5554"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.8608021,0.2601042,-0.2615211,0.8606534,-32.779621,14.771143)"
- x1="-6.2796698"
- y1="-3.933933"
- x2="36.957352"
- y2="34.665455" />
- <linearGradient
- id="linearGradient20210">
- <stop
- id="stop20212"
- offset="0.0000000"
- style="stop-color:#000000;stop-opacity:0.51546389;" />
- <stop
- style="stop-color:#000000;stop-opacity:0.14432989;"
- offset="0.55172414"
- id="stop20218" />
- <stop
- id="stop20214"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient4694">
- <stop
- id="stop4696"
- offset="0"
- style="stop-color:#e9f1f8;stop-opacity:1;" />
- <stop
- id="stop4698"
- offset="1"
- style="stop-color:#376ba3;stop-opacity:0.8392157;" />
- </linearGradient>
- <linearGradient
- id="linearGradient4712">
- <stop
- id="stop4714"
- offset="0"
- style="stop-color:#5b8ccb;stop-opacity:1;" />
- <stop
- id="stop4716"
- offset="1"
- style="stop-color:#3465a4;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- id="linearGradient2990">
- <stop
- id="stop2992"
- offset="0"
- style="stop-color:#3465a4;stop-opacity:1;" />
- <stop
- id="stop2994"
- offset="1"
- style="stop-color:#3465a4;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5618"
- id="radialGradient5039"
- gradientUnits="userSpaceOnUse"
- gradientTransform="scale(1.764278,0.566804)"
- cx="14.772334"
- cy="74.209934"
- fx="14.772334"
- fy="74.209934"
- r="7.8289826" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5551"
- id="linearGradient5557"
- x1="10"
- y1="-17"
- x2="20"
- y2="38"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- y2="45.308311"
- x2="33.071468"
- y1="42.839046"
- x1="29.917675"
- gradientTransform="matrix(1.690806,0,0,0.8084496,-12.967868,-3.6294851)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient6079"
- xlink:href="#linearGradient5956"
- inkscape:collect="always" />
- <linearGradient
- y2="36.278893"
- x2="33.379868"
- y1="38.72929"
- x1="34.588547"
- gradientTransform="matrix(1.82033,0,0,1.1000502,-23.762373,-7.121986)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient6075"
- xlink:href="#linearGradient5927"
- inkscape:collect="always" />
- <linearGradient
- y2="38.349014"
- x2="34.447193"
- y1="36.932552"
- x1="32.768818"
- gradientTransform="matrix(1.2983701,0,0,1.2167941,0.6197243,-23.893635)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient6072"
- xlink:href="#linearGradient5956"
- inkscape:collect="always" />
- <linearGradient
- gradientTransform="translate(0,2)"
- gradientUnits="userSpaceOnUse"
- y2="44.11623"
- x2="7.8242025"
- y1="37.447662"
- x1="7.8242025"
- id="linearGradient6069"
- xlink:href="#linearGradient6063"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient2812">
- <stop
- style="stop-color:#3070ce;stop-opacity:1"
- offset="0"
- id="stop2814" />
- <stop
- style="stop-color:#1a3c6e;stop-opacity:1;"
- offset="1"
- id="stop2816" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2796">
- <stop
- style="stop-color:#204a87;stop-opacity:1;"
- offset="0"
- id="stop2798" />
- <stop
- style="stop-color:#1a3c6e;stop-opacity:1"
- offset="1"
- id="stop2800" />
- </linearGradient>
- <linearGradient
- id="linearGradient2788">
- <stop
- style="stop-color:#729fcf;stop-opacity:1;"
- offset="0"
- id="stop2790" />
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="1"
- id="stop2792" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3215">
- <stop
- style="stop-color:#2e3436;stop-opacity:1;"
- offset="0"
- id="stop3217" />
- <stop
- style="stop-color:#2e3436;stop-opacity:0;"
- offset="1"
- id="stop3219" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3215"
- id="radialGradient3221"
- cx="9.5"
- cy="16.5"
- fx="9.5"
- fy="16.5"
- r="8.5"
- gradientTransform="matrix(1,0,0,0.176471,0,13.58824)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2788"
- id="radialGradient2794"
- cx="19.825111"
- cy="17.498907"
- fx="19.825111"
- fy="17.498907"
- r="9.5"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.515341,1.822282e-2,-1.854671e-2,1.542275,-9.89215,-9.850491)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2796"
- id="linearGradient2802"
- x1="42.993927"
- y1="18.054306"
- x2="42.993927"
- y2="23.00688"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-21.33061,6.070707)" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2812"
- id="radialGradient2818"
- cx="18.389807"
- cy="17.172701"
- fx="18.389807"
- fy="17.172701"
- r="12.5"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.710234,0.703965,-0.828897,0.836278,-17.34172,-12.95082)" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2812"
- id="radialGradient3740"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.117808,0.165688,-0.160285,0.113967,37.8996,24.60705)"
- cx="48.178337"
- cy="16.093563"
- fx="48.178337"
- fy="16.093563"
- r="12.5" />
- <radialGradient
- r="117.14286"
- fy="486.64789"
- fx="605.71429"
- cy="486.64789"
- cx="605.71429"
- gradientTransform="matrix(-2.6816097,0,0,1.900281,374.53085,-830.19911)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient6578"
- xlink:href="#linearGradient5060"
- inkscape:collect="always" />
- <radialGradient
- r="117.14286"
- fy="486.64789"
- fx="605.71429"
- cy="486.64789"
- cx="605.71429"
- gradientTransform="matrix(2.6816098,0,0,1.900281,-1331.4975,-828.61811)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient6576"
- xlink:href="#linearGradient5060"
- inkscape:collect="always" />
- <linearGradient
- y2="609.50507"
- x2="302.85715"
- y1="366.64789"
- x1="302.85715"
- gradientTransform="matrix(3.1607053,0,0,1.892176,-1620.8528,-825.6305)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient6574"
- xlink:href="#linearGradient5048"
- inkscape:collect="always" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient6581">
- <stop
- style="stop-color:#a06402;stop-opacity:1;"
- offset="0"
- id="stop6583" />
- <stop
- style="stop-color:#a06402;stop-opacity:0;"
- offset="1"
- id="stop6585" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient6563">
- <stop
- style="stop-color:#8f5902;stop-opacity:1;"
- offset="0"
- id="stop6565" />
- <stop
- style="stop-color:#fee1b2;stop-opacity:1"
- offset="1"
- id="stop6567" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient6545">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop6547" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop6549" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient6043">
- <stop
- style="stop-color:#efcc94;stop-opacity:1;"
- offset="0"
- id="stop6045" />
- <stop
- style="stop-color:#e6af56;stop-opacity:1"
- offset="1"
- id="stop6047" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5885">
- <stop
- style="stop-color:#e2a340;stop-opacity:1"
- offset="0"
- id="stop5887" />
- <stop
- style="stop-color:#e9b96e;stop-opacity:1"
- offset="1"
- id="stop5889" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5885"
- id="linearGradient5891"
- x1="8.4284601"
- y1="14.263801"
- x2="8.4284601"
- y2="6.1047959"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.6666667,0,0,2.5555558,-0.8333331,-4.5555584)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6043"
- id="linearGradient6197"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.0250703,0,0,1.0137295,-0.6894338,-0.134108)"
- x1="37.589287"
- y1="7.8214283"
- x2="32.366882"
- y2="10.825614" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6043"
- id="linearGradient6205"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.0097437,0,0,1.0313296,-0.2679517,-0.3060228)"
- x1="37.589287"
- y1="7.8214283"
- x2="32.366882"
- y2="10.825614" />
- <linearGradient
- gradientTransform="matrix(1.024318,0,0,1.082453,4.513555,-3.527166)"
- y2="21.926168"
- x2="28.995457"
- y1="23.582701"
- x1="29.056473"
- gradientUnits="userSpaceOnUse"
- id="linearGradient3345"
- xlink:href="#linearGradient3284"
- inkscape:collect="always" />
- <linearGradient
- gradientTransform="translate(5,-2)"
- gradientUnits="userSpaceOnUse"
- y2="16.066395"
- x2="13.333899"
- y1="51.652996"
- x1="23.554199"
- id="linearGradient3338"
- xlink:href="#linearGradient3332"
- inkscape:collect="always" />
- <linearGradient
- gradientTransform="translate(5,-2)"
- gradientUnits="userSpaceOnUse"
- y2="18.522486"
- x2="32.577065"
- y1="18.522486"
- x1="29.432646"
- id="linearGradient3290"
- xlink:href="#linearGradient3284"
- inkscape:collect="always" />
- <linearGradient
- y2="3.8125"
- x2="12.5"
- y1="3.8125"
- x1="1.9375"
- gradientTransform="matrix(-1,0,0,1,15.96875,-6.25e-2)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient2829"
- xlink:href="#linearGradient2816"
- inkscape:collect="always" />
- <linearGradient
- gradientTransform="matrix(0.989516,0,0,1.041893,2.129694e-2,-0.123196)"
- gradientUnits="userSpaceOnUse"
- y2="6.734375"
- x2="9.5"
- y1="1.53125"
- x1="2.03125"
- id="linearGradient2809"
- xlink:href="#linearGradient2803"
- inkscape:collect="always" />
- <linearGradient
- gradientTransform="matrix(1.258598,0,0,1.188405,0.955201,-2.731869)"
- gradientUnits="userSpaceOnUse"
- y2="3.719852"
- x2="-0.10261282"
- y1="18.444227"
- x1="7.819931"
- id="linearGradient3363"
- xlink:href="#linearGradient3357"
- inkscape:collect="always" />
- <linearGradient
- gradientTransform="matrix(1.317285,0,0,1.499996,6.156045e-2,-7.000003)"
- gradientUnits="userSpaceOnUse"
- y2="16.674181"
- x2="9.5985594"
- y1="6.1446991"
- x1="1.8561553"
- id="linearGradient3331"
- xlink:href="#linearGradient3325"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient3357"
- inkscape:collect="always">
- <stop
- id="stop3359"
- offset="0"
- style="stop-color:white;stop-opacity:1;" />
- <stop
- id="stop3361"
- offset="1"
- style="stop-color:white;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient2803"
- inkscape:collect="always">
- <stop
- id="stop2805"
- offset="0"
- style="stop-color:black;stop-opacity:1;" />
- <stop
- id="stop2807"
- offset="1"
- style="stop-color:black;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient2816"
- inkscape:collect="always">
- <stop
- id="stop2818"
- offset="0"
- style="stop-color:white;stop-opacity:1" />
- <stop
- id="stop2820"
- offset="1"
- style="stop-color:white;stop-opacity:0" />
- </linearGradient>
- <linearGradient
- y2="11.50544"
- x2="4.5403199"
- y1="3.3254037"
- x1="4.5393105"
- gradientTransform="translate(9.375345e-2,-5.968448)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient4116"
- xlink:href="#linearGradient3927"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient3927"
- inkscape:collect="always">
- <stop
- id="stop3929"
- offset="0"
- style="stop-color:#eeeeec;stop-opacity:1;" />
- <stop
- id="stop3931"
- offset="1"
- style="stop-color:#eeeeec;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- y2="16.674181"
- x2="9.5985594"
- y1="6.1446991"
- x1="1.8561553"
- gradientTransform="matrix(2.576952,0,0,2.308818,9.549406,6.3676)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient2099"
- xlink:href="#linearGradient3325"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient3284">
- <stop
- id="stop3286"
- offset="0"
- style="stop-color:#afafaf;stop-opacity:1" />
- <stop
- id="stop3288"
- offset="1"
- style="stop-color:#f9f9f9;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- id="linearGradient3332"
- inkscape:collect="always">
- <stop
- id="stop3334"
- offset="0"
- style="stop-color:white;stop-opacity:1;" />
- <stop
- id="stop3336"
- offset="1"
- style="stop-color:white;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- y2="609.50507"
- x2="302.85715"
- y1="366.64789"
- x1="302.85715"
- gradientTransform="matrix(2.124652,0,0,1.892176,-1532.669,-825.6305)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient6526"
- xlink:href="#linearGradient5048"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient6528">
- <stop
- id="stop6530"
- offset="0"
- style="stop-color:black;stop-opacity:0;" />
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0.5"
- id="stop6532" />
- <stop
- id="stop6534"
- offset="1"
- style="stop-color:black;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- r="117.14286"
- fy="486.64789"
- fx="605.71429"
- cy="486.64789"
- cx="605.71429"
- gradientTransform="matrix(2.774389,0,0,1.900281,-1923.82,-828.6181)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient6536"
- xlink:href="#linearGradient5060"
- inkscape:collect="always" />
- <radialGradient
- r="117.14286"
- fy="486.64789"
- fx="605.71429"
- cy="486.64789"
- cx="605.71429"
- gradientTransform="matrix(-2.774389,0,0,1.900281,394.3031,-828.6181)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient6544"
- xlink:href="#linearGradient5060"
- inkscape:collect="always" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5048"
- id="linearGradient6537"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.0137241,0,0,1.892176,-1519.3577,-825.6305)"
- x1="302.85715"
- y1="366.64789"
- x2="302.85715"
- y2="609.50507" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5060"
- id="radialGradient6539"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.774389,0,0,1.900281,-1980.8146,-828.6181)"
- cx="605.71429"
- cy="486.64789"
- fx="605.71429"
- fy="486.64789"
- r="117.14286" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5060"
- id="radialGradient6541"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-2.774389,0,0,1.900281,394.3031,-828.6181)"
- cx="605.71429"
- cy="486.64789"
- fx="605.71429"
- fy="486.64789"
- r="117.14286" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6545"
- id="linearGradient6551"
- x1="20.464302"
- y1="3.5788469"
- x2="20.464302"
- y2="9.5751753"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6563"
- id="linearGradient6569"
- x1="19.5"
- y1="14.700505"
- x2="19.5"
- y2="3.9301996"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,1.4,0,-2)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6043"
- id="linearGradient6577"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.0097437,0,0,1.0313296,-0.2679517,-0.3060228)"
- x1="37.589287"
- y1="7.8214283"
- x2="32.366882"
- y2="10.825614" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6581"
- id="linearGradient6587"
- x1="19.111677"
- y1="19.679949"
- x2="19.111677"
- y2="4.9982824"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(1,5)" />
- <linearGradient
- gradientTransform="matrix(1.1875,0,0,0.9697624,0.3569929,-0.7491311)"
- gradientUnits="userSpaceOnUse"
- y2="37.62088"
- x2="21.605848"
- y1="46.703396"
- x1="21.605848"
- id="linearGradient5990"
- xlink:href="#linearGradient5984"
- inkscape:collect="always" />
- <linearGradient
- gradientTransform="matrix(1.1936569,0,0,1.2051891,0.1869065,-7.3596734)"
- gradientUnits="userSpaceOnUse"
- y2="41.648232"
- x2="12.24654"
- y1="12.425668"
- x1="12.24654"
- id="linearGradient5982"
- xlink:href="#linearGradient5976"
- inkscape:collect="always" />
- <linearGradient
- y2="38.349014"
- x2="34.447193"
- y1="36.932552"
- x1="32.768818"
- gradientTransform="matrix(1.146535,0,0,1.151009,-0.3444917,-9.9721252)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient5970"
- xlink:href="#linearGradient5956"
- inkscape:collect="always" />
- <linearGradient
- y2="35.29604"
- x2="32.313694"
- y1="36.927391"
- x1="34.192577"
- gradientTransform="matrix(1.0412762,0,0,1.0405768,3.0301186,-7.3166824)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient5968"
- xlink:href="#linearGradient5927"
- inkscape:collect="always" />
- <linearGradient
- gradientTransform="matrix(1.1666666,0,0,1.0007593,0.7499999,-5.0345455)"
- gradientUnits="userSpaceOnUse"
- y2="12.530458"
- x2="6.525744"
- y1="37.451565"
- x1="7.207921"
- id="linearGradient4956"
- xlink:href="#linearGradient5068"
- inkscape:collect="always" />
- <linearGradient
- gradientTransform="matrix(1.001194,0,0,1,-44.043627,0)"
- gradientUnits="userSpaceOnUse"
- y2="15.571803"
- x2="21.151594"
- y1="34.812107"
- x1="19.941111"
- id="linearGradient3325"
- xlink:href="#linearGradient3319"
- inkscape:collect="always" />
- <linearGradient
- y2="9.6290379"
- x2="9.9705553"
- y1="11.75"
- x1="11.805677"
- gradientUnits="userSpaceOnUse"
- id="linearGradient1885"
- xlink:href="#linearGradient7595"
- inkscape:collect="always" />
- <linearGradient
- gradientUnits="userSpaceOnUse"
- y2="9.6290379"
- x2="9.9705553"
- y1="11.75"
- x1="11.805677"
- id="linearGradient7601"
- xlink:href="#linearGradient7595"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient7595">
- <stop
- id="stop7597"
- offset="0"
- style="stop-color:#dcc400;stop-opacity:1;" />
- <stop
- id="stop7599"
- offset="1"
- style="stop-color:#edd400;stop-opacity:0" />
- </linearGradient>
- <linearGradient
- id="linearGradient3319"
- inkscape:collect="always">
- <stop
- id="stop3321"
- offset="0"
- style="stop-color:#fce94f;stop-opacity:1;" />
- <stop
- id="stop3323"
- offset="1"
- style="stop-color:#c4a000;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- y2="609.50507"
- x2="302.85715"
- y1="366.64789"
- x1="302.85715"
- gradientTransform="matrix(2.124652,0,0,1.892176,-1532.669,-825.6305)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient2772"
- xlink:href="#linearGradient5048"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient5048">
- <stop
- id="stop5050"
- offset="0"
- style="stop-color:black;stop-opacity:0;" />
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0.5"
- id="stop5056" />
- <stop
- id="stop5052"
- offset="1"
- style="stop-color:black;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- r="117.14286"
- fy="486.64789"
- fx="605.71429"
- cy="486.64789"
- cx="605.71429"
- gradientTransform="matrix(2.774389,0,0,1.900281,-1923.82,-828.6181)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient2774"
- xlink:href="#linearGradient5060"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient5060"
- inkscape:collect="always">
- <stop
- id="stop5062"
- offset="0"
- style="stop-color:black;stop-opacity:1;" />
- <stop
- id="stop5064"
- offset="1"
- style="stop-color:black;stop-opacity:0;" />
- </linearGradient>
- <radialGradient
- r="117.14286"
- fy="486.64789"
- fx="605.71429"
- cy="486.64789"
- cx="605.71429"
- gradientTransform="matrix(-2.774389,0,0,1.900281,109.3301,-828.6181)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient2776"
- xlink:href="#linearGradient5060"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient5927"
- inkscape:collect="always">
- <stop
- id="stop5929"
- offset="0"
- style="stop-color:#edd400;stop-opacity:1" />
- <stop
- id="stop5931"
- offset="1"
- style="stop-color:#fce94f;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- id="linearGradient5956"
- inkscape:collect="always">
- <stop
- id="stop5958"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop5960"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient5976"
- inkscape:collect="always">
- <stop
- id="stop5978"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:0.8018018" />
- <stop
- id="stop5980"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0.17567568" />
- </linearGradient>
- <linearGradient
- id="linearGradient5984"
- inkscape:collect="always">
- <stop
- id="stop5986"
- offset="0"
- style="stop-color:#e3cb00;stop-opacity:1;" />
- <stop
- id="stop5988"
- offset="1"
- style="stop-color:#e3cb00;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient6063"
- inkscape:collect="always">
- <stop
- id="stop6065"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop6067"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5068">
- <stop
- style="stop-color:#fded6e;stop-opacity:1"
- offset="0"
- id="stop5070" />
- <stop
- style="stop-color:#fce734;stop-opacity:1"
- offset="1"
- id="stop5072" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5068"
- id="linearGradient5840"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.1666666,0,0,1.0007593,0.7499999,-5.0345455)"
- x1="7.207921"
- y1="37.451565"
- x2="6.525744"
- y2="12.530458" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5956"
- id="linearGradient5843"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.690806,0,0,0.8084496,-62.745646,-4.6294851)"
- x1="29.917675"
- y1="42.839046"
- x2="33.071468"
- y2="45.308311" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5927"
- id="linearGradient5846"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.82033,0,0,1.1000502,-73.540151,-8.121986)"
- x1="34.588547"
- y1="38.72929"
- x2="33.379868"
- y2="36.278893" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5976"
- id="linearGradient5849"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.1936569,0,0,1.2051891,-49.590871,-8.3596734)"
- x1="12.24654"
- y1="12.425668"
- x2="12.24654"
- y2="41.648232" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5068"
- id="linearGradient5852"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.1666666,0,0,1.0007593,-49.027778,-6.0345455)"
- x1="7.207921"
- y1="37.451565"
- x2="6.525744"
- y2="12.530458" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6063"
- id="linearGradient5855"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-49.777778,1)"
- x1="7.8242025"
- y1="37.447662"
- x2="7.8242025"
- y2="44.11623" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5984"
- id="linearGradient5858"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.1875,0,0,0.9697624,-49.420785,-1.7491311)"
- x1="21.605848"
- y1="46.703396"
- x2="21.605848"
- y2="37.62088" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5068"
- id="linearGradient5861"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.1666666,0,0,1.0007593,-49.027778,-6.0345455)"
- x1="7.207921"
- y1="37.451565"
- x2="6.525744"
- y2="12.530458" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5588"
- id="linearGradient3003"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.996842,0.3004032,-0.3028517,0.993998,-30.427347,12.985169)"
- x1="32.735748"
- y1="45.385857"
- x2="1.9991667"
- y2="0.34891111" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5588"
- id="linearGradient3009"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.996842,0.3004032,-0.3028517,0.993998,-30.427347,12.985169)"
- x1="32.735748"
- y1="45.385857"
- x2="1.9991667"
- y2="0.34891111" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5588"
- id="linearGradient3013"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.48816392,0.14711058,-0.14830964,0.4867712,-31.82908,14.391907)"
- x1="32.735748"
- y1="45.385857"
- x2="1.9991667"
- y2="0.34891111" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="14.104167"
- inkscape:cx="-14.742603"
- inkscape:cy="22.663646"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- width="48px"
- height="48px"
- inkscape:showpageshadow="false"
- gridtolerance="1"
- inkscape:window-width="1043"
- inkscape:window-height="907"
- inkscape:window-x="162"
- inkscape:window-y="51"
- showgrid="true"
- objecttolerance="1"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2995"
- empspacing="4"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata6">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Vrstva 1"
- inkscape:groupmode="layer"
- id="layer1"
- style="opacity:1">
- <path
- style="color:#000000;fill:url(#linearGradient5668);fill-opacity:1;fill-rule:evenodd;stroke:#cca800;stroke-width:0.99999988px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="M 37.261419,44.177164 L 23.998645,36.181855 L 10.730586,44.207326 L 14.05294,29.164906 L 2.540162,19.067458 L 16.856477,16.350371 L 24.009036,3.4999999 L 31.152896,16.33639 L 45.467952,19.018652 L 33.948967,29.142284 L 37.261419,44.177164 z "
- id="path4909"
- sodipodi:nodetypes="ccccccccccc" />
- <path
- style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.9999997px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.64864861;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="M 35.556355,41.500001 L 24.001405,34.65529 L 12.569971,41.452918 L 15.590333,28.872867 L 5.2026147,19.827962 L 17.75024,17.403361 L 24.037855,6.1765972 L 30.317951,17.392093 L 42.77714,19.726139 L 32.471858,28.854634 L 35.556355,41.500001 z "
- id="path5498"
- sodipodi:nodetypes="ccccccccccc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#edd400;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter5524)"
- id="path5530"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#edd400;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter5524)"
- id="path5532"
- sodipodi:nodetypes="cc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#edd400;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter5524)"
- id="path5534"
- sodipodi:nodetypes="cc" />
- <path
- transform="matrix(0.9988673,4.758219e-2,-4.758219e-2,0.9988673,1.5741723,-1.6432934)"
- style="fill:none;fill-rule:evenodd;stroke:#edd400;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter5524)"
- id="path5536"
- sodipodi:nodetypes="cc" />
- <path
- transform="matrix(1.0990136,5.234983e-2,-5.2352773e-2,1.0989518,-0.6790076,-4.3590363)"
- style="fill:none;fill-rule:evenodd;stroke:#edd400;stroke-width:0.90890175px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter5524)"
- id="path5540"
- sodipodi:nodetypes="cc" />
- <rect
- style="opacity:0.25;fill:#3465a4;fill-opacity:1;stroke:none"
- id="rect2997"
- width="24.070911"
- height="24"
- x="-40.0709"
- y="8" />
- <path
- sodipodi:nodetypes="ccccccccccc"
- id="path2999"
- d="m -21.472388,29.633917 -6.494919,-3.915386 -6.497507,3.930157 1.626992,-7.36643 -5.637927,-4.944825 7.010848,-1.330587 3.502683,-6.2929601 L -24.463795,16 l 7.010232,1.313532 -5.640967,4.957648 1.622142,7.362737 z"
- style="color:#000000;fill:url(#linearGradient3013);fill-opacity:1;fill-rule:evenodd;stroke:#cca800;stroke-width:0.97781348;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- inkscape:export-filename="/home/shaunm/Projects/yelp-xsl/icons/hicolor/24x24/status/admon-important.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <path
- sodipodi:nodetypes="ccccccccccc"
- id="path3001"
- d="m -23,27.410134 -5.016139,-2.971368 -4.962519,2.950929 1.311175,-5.461147 -4.50943,-3.926499 5.44707,-1.052548 2.729528,-4.87367 2.726263,4.868779 5.408679,1.013236 -4.473642,3.962787 L -23,27.410134 z"
- style="color:#000000;fill:none;stroke:#ffffff;stroke-width:0.891;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.64864860999999996;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- inkscape:export-filename="/home/shaunm/Projects/yelp-xsl/icons/hicolor/24x24/status/admon-important.png" />
- </g>
-</svg>
diff --git a/icons/hicolor/scalable/status/yelp-note-tip.svg b/icons/hicolor/scalable/status/yelp-note-tip.svg
deleted file mode 100644
index ba711644..00000000
--- a/icons/hicolor/scalable/status/yelp-note-tip.svg
+++ /dev/null
@@ -1,255 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg2"
- inkscape:label="Pozadí"
- sodipodi:version="0.32"
- inkscape:version="0.47 r22583"
- version="1.0"
- sodipodi:docname="admon-tip.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/cornelius/Desktop/tip-optional.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs3">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 24 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="48 : 24 : 1"
- inkscape:persp3d-origin="24 : 16 : 1"
- id="perspective22" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient6094">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop6096" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop6098" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient6082">
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="0"
- id="stop6084" />
- <stop
- style="stop-color:#000000;stop-opacity:0;"
- offset="1"
- id="stop6086" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient6070">
- <stop
- style="stop-color:#3465a4;stop-opacity:1;"
- offset="0"
- id="stop6072" />
- <stop
- style="stop-color:#729fcf;stop-opacity:1"
- offset="1"
- id="stop6074" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6070"
- id="linearGradient6076"
- x1="34.960808"
- y1="59.572002"
- x2="15.47445"
- y2="13.379735"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6082"
- id="radialGradient6088"
- cx="24.358656"
- cy="23.195419"
- fx="24.358656"
- fy="23.195419"
- r="20.345331"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6094"
- id="linearGradient6100"
- x1="0.87464881"
- y1="-16.399689"
- x2="24.358656"
- y2="42.382477"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6070"
- id="linearGradient2851"
- gradientUnits="userSpaceOnUse"
- x1="34.960808"
- y1="59.572002"
- x2="15.47445"
- y2="13.379735" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6094"
- id="linearGradient2853"
- gradientUnits="userSpaceOnUse"
- x1="0.87464881"
- y1="-16.399689"
- x2="24.358656"
- y2="42.382477" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="21.949773"
- inkscape:cx="-21.259377"
- inkscape:cy="23.86661"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- width="48px"
- height="48px"
- borderlayer="false"
- inkscape:showpageshadow="false"
- showgrid="true"
- inkscape:window-width="1302"
- inkscape:window-height="975"
- inkscape:window-x="0"
- inkscape:window-y="47"
- objecttolerance="1"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2828"
- empspacing="4"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true"
- spacingx="0.5px"
- spacingy="0.5px" />
- </sodipodi:namedview>
- <metadata
- id="metadata6">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>Tip</dc:title>
- <dc:date>13.4.2007</dc:date>
- <dc:creator>
- <cc:Agent>
- <dc:title>Josef Vybíral</dc:title>
- </cc:Agent>
- </dc:creator>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Vrstva 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- sodipodi:type="arc"
- style="opacity:1;color:#000000;fill:url(#linearGradient6076);fill-opacity:1;fill-rule:evenodd;stroke:#3465a4;stroke-width:0.99245518;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path5072"
- sodipodi:cx="24.358656"
- sodipodi:cy="23.195419"
- sodipodi:rx="20.345331"
- sodipodi:ry="20.345331"
- d="M 44.703987 23.195419 A 20.345331 20.345331 0 1 1 4.0133247,23.195419 A 20.345331 20.345331 0 1 1 44.703987 23.195419 z"
- transform="matrix(1.0076022,0,0,1.0076022,-0.5438346,0.628245)" />
- <path
- transform="matrix(0.9584508,0,0,0.9586884,0.6534256,1.76282)"
- d="M 44.703987 23.195419 A 20.345331 20.345331 0 1 1 4.0133247,23.195419 A 20.345331 20.345331 0 1 1 44.703987 23.195419 z"
- sodipodi:ry="20.345331"
- sodipodi:rx="20.345331"
- sodipodi:cy="23.195419"
- sodipodi:cx="24.358656"
- id="path6090"
- style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6100);stroke-width:1.043221;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc" />
- <path
- transform="scale(1.0219734,0.9784991)"
- style="font-size:38.86474228px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#f7f7f6;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Nimbus Roman No9 L"
- d="M 26.757915,33.033339 L 26.213809,33.810634 C 25.203326,35.326357 24.309436,36.142518 23.726465,36.142518 C 23.415547,36.142518 23.143494,35.870465 23.143494,35.559547 C 23.143494,35.326359 23.376682,34.004957 23.493277,33.538581 L 27.029968,20.557757 C 24.931274,21.024133 22.210737,21.412781 19.17929,21.645969 L 19.17929,22.695317 C 20.850472,22.695317 21.47231,23.006236 21.47231,23.822395 C 21.47231,24.133313 21.355716,24.716285 21.200257,25.376985 L 18.946102,33.732904 C 18.635184,34.821116 18.44086,35.90933 18.44086,36.414571 C 18.44086,37.852565 19.529074,38.86305 21.122527,38.86305 C 23.454409,38.86305 24.89241,37.658239 27.612939,33.577445 L 26.757915,33.033339 M 25.902891,11.890919 C 24.542626,11.890919 23.337818,13.095727 23.337818,14.455992 C 23.337818,15.971715 24.464897,17.137659 25.902891,17.137659 C 27.379749,17.137659 28.584558,15.971716 28.584558,14.533722 C 28.584558,13.095728 27.340885,11.890919 25.902891,11.890919"
- id="text6102" />
- <rect
- style="opacity:0.25;fill:#3465a4;fill-opacity:1;stroke:none"
- id="rect2830"
- width="23.999994"
- height="24"
- x="-36"
- y="8" />
- <path
- transform="matrix(0.51608892,0,0,0.51608892,-36.571232,8.0291011)"
- d="m 44.703987,23.195419 a 20.345331,20.345331 0 1 1 -40.6906623,0 20.345331,20.345331 0 1 1 40.6906623,0 z"
- sodipodi:ry="20.345331"
- sodipodi:rx="20.345331"
- sodipodi:cy="23.195419"
- sodipodi:cx="24.358656"
- id="path2832"
- style="color:#000000;fill:url(#linearGradient2851);fill-opacity:1;fill-rule:evenodd;stroke:#3465a4;stroke-width:1.93765059;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc"
- inkscape:export-filename="/home/shaunm/Projects/yelp-xsl/icons/hicolor/24x24/status/admon-tip.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <path
- sodipodi:type="arc"
- style="color:#000000;fill:none;stroke:url(#linearGradient2853);stroke-width:2.14121103;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path2834"
- sodipodi:cx="24.358656"
- sodipodi:cy="23.195419"
- sodipodi:rx="20.345331"
- sodipodi:ry="20.345331"
- d="m 44.703987,23.195419 a 20.345331,20.345331 0 1 1 -40.6906623,0 20.345331,20.345331 0 1 1 40.6906623,0 z"
- transform="matrix(0.46696753,0,0,0.46708329,-35.374701,9.1687715)"
- inkscape:export-filename="/home/shaunm/Projects/yelp-xsl/icons/hicolor/24x24/status/admon-tip.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <path
- id="path2836"
- d="m -22.127423,23.557872 -0.278031,0.380291 c -0.516344,0.741567 -0.973109,1.140873 -1.271,1.140873 -0.158875,0 -0.29789,-0.133102 -0.29789,-0.285218 0,-0.114087 0.119156,-0.760583 0.178734,-0.988757 l 1.807202,-6.350862 C -23.060812,17.682373 -24.450971,17.872519 -26,17.986606 L -26,18.5 c 0.853952,0 1.171703,0.152116 1.171703,0.551422 0,0.152116 -0.05958,0.437335 -0.139016,0.760582 l -1.151843,4.088129 c -0.158875,0.532408 -0.258172,1.064816 -0.258172,1.312005 0,0.703538 0.556063,1.197917 1.370296,1.197917 1.191561,0 1.926361,-0.589453 3.316515,-2.58598 l -0.436906,-0.266203 m -0.436906,-10.343919 c -0.695077,0 -1.310718,0.589451 -1.310718,1.25496 0,0.741567 0.575922,1.312005 1.310718,1.312005 0.754655,0 1.370296,-0.570437 1.370296,-1.273975 0,-0.703538 -0.6355,-1.29299 -1.370296,-1.29299"
- style="font-size:38.86474228px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#f7f7f6;fill-opacity:1;stroke:none;font-family:Nimbus Roman No9 L"
- inkscape:export-filename="/home/shaunm/Projects/yelp-xsl/icons/hicolor/24x24/status/admon-tip.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- </g>
-</svg>
diff --git a/icons/hicolor/scalable/status/yelp-note-warning.svg b/icons/hicolor/scalable/status/yelp-note-warning.svg
deleted file mode 100644
index be35a6da..00000000
--- a/icons/hicolor/scalable/status/yelp-note-warning.svg
+++ /dev/null
@@ -1,290 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg2"
- inkscape:label="Pozadí"
- sodipodi:version="0.32"
- inkscape:version="0.47 r22583"
- version="1.0"
- sodipodi:docname="admon-warning.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/cornelius/Desktop/GFX/ikony/Yelp/caution.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <defs
- id="defs3">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 24 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="48 : 24 : 1"
- inkscape:persp3d-origin="24 : 16 : 1"
- id="perspective25" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4912">
- <stop
- style="stop-color:#fce94f;stop-opacity:1;"
- offset="0"
- id="stop4914" />
- <stop
- style="stop-color:#edd400;stop-opacity:0.88738739"
- offset="1"
- id="stop4916" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5883">
- <stop
- style="stop-color:#555753;stop-opacity:1;"
- offset="0"
- id="stop5885" />
- <stop
- style="stop-color:#363734;stop-opacity:1"
- offset="1"
- id="stop5887" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5883"
- id="linearGradient5889"
- x1="15.551637"
- y1="1.0942583"
- x2="38.628258"
- y2="46.000828"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- id="linearGradient6038"
- inkscape:collect="always">
- <stop
- id="stop6040"
- offset="0"
- style="stop-color:#ffffff;stop-opacity:1;" />
- <stop
- id="stop6042"
- offset="1"
- style="stop-color:#ffffff;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6038"
- id="linearGradient5929"
- gradientUnits="userSpaceOnUse"
- x1="21.497595"
- y1="-12.234324"
- x2="21.497595"
- y2="48.647552"
- gradientTransform="translate(-22.910691,0.653031)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4912"
- id="linearGradient4918"
- x1="24.691837"
- y1="0.20224562"
- x2="44.083809"
- y2="3.8283868"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4912"
- id="linearGradient2843"
- gradientUnits="userSpaceOnUse"
- x1="24.691837"
- y1="0.20224562"
- x2="44.083809"
- y2="3.8283868"
- gradientTransform="translate(-20.214677,21.590302)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5883"
- id="linearGradient2845"
- gradientUnits="userSpaceOnUse"
- x1="15.551637"
- y1="1.0942583"
- x2="38.628258"
- y2="46.000828"
- gradientTransform="translate(-29.560584,0.972714)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6038"
- id="linearGradient2847"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-52.471275,1.625745)"
- x1="21.497595"
- y1="-12.234324"
- x2="21.497595"
- y2="48.647552" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4912"
- id="linearGradient2855"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-20.214677,21.590302)"
- x1="24.691837"
- y1="0.20224562"
- x2="44.083809"
- y2="3.8283868" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5883"
- id="linearGradient2857"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-29.560584,0.972714)"
- x1="15.551637"
- y1="1.0942583"
- x2="38.628258"
- y2="46.000828" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6038"
- id="linearGradient2859"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-52.471275,1.625745)"
- x1="21.497595"
- y1="-12.234324"
- x2="21.497595"
- y2="48.647552" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="14.9375"
- inkscape:cx="-7.6586991"
- inkscape:cy="24"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- width="48px"
- height="48px"
- inkscape:showpageshadow="false"
- showgrid="true"
- inkscape:window-width="1346"
- inkscape:window-height="947"
- inkscape:window-x="0"
- inkscape:window-y="45"
- gridtolerance="1"
- objecttolerance="1"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid2831"
- empspacing="4"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata6">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>Caution</dc:title>
- <dc:date>13.4.2007</dc:date>
- <dc:creator>
- <cc:Agent>
- <dc:title>Josef Vybíral</dc:title>
- </cc:Agent>
- </dc:creator>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Vrstva 1"
- inkscape:groupmode="layer"
- id="layer1">
- <rect
- transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,0,0)"
- y="-13.435023"
- x="20.506105"
- height="26.870049"
- width="26.87005"
- id="rect5870"
- style="opacity:1;color:#000000;fill:url(#linearGradient4918);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- style="opacity:1;color:#000000;fill:url(#linearGradient5889);fill-opacity:1.0;fill-rule:evenodd;stroke:#2e3436;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="M 25.588427,3.0493981 C 24.590584,2.2339417 23.1364,2.3104777 22.22967,3.2261748 L 3.2261748,22.22967 C 2.2500021,23.206038 2.2500021,24.788836 3.2261748,25.765204 L 22.22967,44.768699 C 23.206038,45.744872 24.788836,45.744872 25.765204,44.768699 L 44.768699,25.765204 C 45.744872,24.788836 45.744872,23.206038 44.768699,22.22967 L 25.765204,3.2261748 C 25.709263,3.1643382 25.650264,3.1053389 25.588427,3.0493981 z M 23.997437,7.5294758 L 40.465398,23.997437 L 23.997437,40.465398 L 7.5294758,23.997437 L 23.997437,7.5294758 z "
- id="rect4899"
- sodipodi:nodetypes="ccccccccccccccc" />
- <path
- sodipodi:nodetypes="cccccccccc"
- id="text6064"
- d="M 23.51267,28.027286 C 23.013718,24.018192 22.015814,21.059026 22.015814,17.000003 C 22.015814,14.326658 26.030339,14.315981 26.030339,17.000003 C 26.030339,21.222707 25.066516,24.02353 24.560584,28.027286 L 23.51267,28.027286 M 23,32 L 23,30.00485 L 25.024132,30.00485 L 25.024132,32 L 23,32"
- style="font-size:20.33559227px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Arial" />
- <path
- id="path5937"
- d="M 25.637974,4.247587 C 24.640131,3.4321306 23.334589,3.3104777 22.427859,4.2261748 L 4.4739109,22.427859 C 3.4977382,23.404227 3.448191,24.640194 4.4243637,25.616562 L 22.378312,43.520963 C 23.35468,44.497136 24.5411,44.59623 25.517468,43.620057 L 43.520963,25.616562 C 44.497136,24.640194 44.695325,23.453774 43.719152,22.477406 C 37.659108,16.417359 31.697889,10.307501 25.637974,4.247587 z M 23.997437,6.2817397 L 41.812229,23.997437 L 23.997437,41.812229 L 6.2321924,23.997437 L 23.997437,6.2817397 z "
- style="opacity:0.29257642;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5929);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;marker-start:none;marker-mid:none;marker-end:none"
- sodipodi:nodetypes="cccccccccccccc" />
- <rect
- style="opacity:0.25;fill:#3465a4;fill-opacity:1;stroke:none"
- id="rect2833"
- width="24"
- height="24"
- x="-36"
- y="8" />
- <g
- id="g2849"
- transform="matrix(0.49992293,0,0,0.49992293,-21.26468,7.502235)"
- inkscape:export-filename="/home/shaunm/Projects/yelp-xsl/icons/hicolor/24x24/status/admon-warning.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <rect
- transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)"
- y="8.1552782"
- x="0.29142922"
- height="26.870049"
- width="26.87005"
- id="rect2835"
- style="color:#000000;fill:url(#linearGradient2855);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- style="color:#000000;fill:url(#linearGradient2857);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="M -3.972157,4.0221121 C -4.97,3.2066557 -6.424184,3.2831917 -7.330914,4.1988888 L -26.334409,23.202384 c -0.976173,0.976368 -0.976173,2.559166 0,3.535534 l 19.003495,19.003495 c 0.976368,0.976173 2.559166,0.976173 3.535534,0 L 15.208115,26.737918 c 0.976173,-0.976368 0.976173,-2.559166 0,-3.535534 L -3.79538,4.1988888 C -3.851321,4.1370522 -3.91032,4.0780529 -3.972157,4.0221121 z M -5.563147,8.5021898 10.904814,24.970151 -5.563147,41.438112 -22.031108,24.970151 -5.563147,8.5021898 z"
- id="path2837"
- sodipodi:nodetypes="ccccccccccccccc" />
- <path
- sodipodi:nodetypes="cccccccccc"
- id="path2839"
- d="M -6.047914,29 C -6.546866,24.990906 -7.54477,22.03174 -7.54477,17.972717 c 0,-2.673345 4.014525,-2.684022 4.014525,0 C -3.530245,22.195421 -4.494068,24.996244 -5,29 l -1.047914,0 m -0.51267,3.972714 0,-1.99515 2.024132,0 0,1.99515 -2.024132,0"
- style="font-size:20.33559227px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#2e3436;fill-opacity:1;stroke:none;font-family:Arial" />
- <path
- id="path2841"
- d="M -3.92261,5.220301 C -4.920453,4.4048446 -6.225995,4.2831917 -7.132725,5.1988888 L -25.086673,23.400573 c -0.976173,0.976368 -1.02572,2.212335 -0.04955,3.188703 l 17.953948,17.904401 c 0.976368,0.976173 2.162788,1.075267 3.139156,0.09909 L 13.960379,26.589276 C 14.936552,25.612908 15.134741,24.426488 14.158568,23.45012 8.098524,17.390073 2.137305,11.280215 -3.92261,5.220301 z M -5.563147,7.2544537 12.251645,24.970151 -5.563147,42.784943 -23.328392,24.970151 -5.563147,7.2544537 z"
- style="opacity:0.29257645;color:#000000;fill:none;stroke:url(#linearGradient2859);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:nodetypes="cccccccccccccc" />
- </g>
- </g>
-</svg>
diff --git a/icons/hicolor/scalable/status/yelp-note.svg b/icons/hicolor/scalable/status/yelp-note.svg
deleted file mode 100644
index 4e98d332..00000000
--- a/icons/hicolor/scalable/status/yelp-note.svg
+++ /dev/null
@@ -1,1233 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="48"
- height="48"
- id="svg4118"
- sodipodi:version="0.32"
- inkscape:version="0.47 r22583"
- sodipodi:docname="admon-note.svg"
- inkscape:export-filename="/home/cornelius/GFX/ikony/yelp/note2.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- version="1.0"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs4120">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 24 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="48 : 24 : 1"
- inkscape:persp3d-origin="24 : 16 : 1"
- id="perspective150" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient6074">
- <stop
- style="stop-color:#c4a000;stop-opacity:1;"
- offset="0"
- id="stop6076" />
- <stop
- style="stop-color:#c4a000;stop-opacity:0;"
- offset="1"
- id="stop6078" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient6048">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop6050" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop6052" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient6025">
- <stop
- style="stop-color:#ef2929;stop-opacity:1"
- offset="0"
- id="stop6027" />
- <stop
- style="stop-color:#cc0000;stop-opacity:1"
- offset="1"
- id="stop6029" />
- </linearGradient>
- <linearGradient
- id="linearGradient5068"
- inkscape:collect="always">
- <stop
- id="stop5070"
- offset="0"
- style="stop-color:#fded6e;stop-opacity:1" />
- <stop
- id="stop5072"
- offset="1"
- style="stop-color:#fce734;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5976">
- <stop
- style="stop-color:#ffffff;stop-opacity:0.8018018"
- offset="0"
- id="stop5978" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0.17567568"
- offset="1"
- id="stop5980" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5956">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop5958" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop5960" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5927">
- <stop
- style="stop-color:#edd400;stop-opacity:1"
- offset="0"
- id="stop5929" />
- <stop
- style="stop-color:#fce94f;stop-opacity:1"
- offset="1"
- id="stop5931" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5060"
- id="radialGradient2776"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-2.774389,0,0,1.900281,109.3301,-828.6181)"
- cx="605.71429"
- cy="486.64789"
- fx="605.71429"
- fy="486.64789"
- r="117.14286" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5060">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop5062" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop5064" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5060"
- id="radialGradient2774"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.774389,0,0,1.900281,-1923.82,-828.6181)"
- cx="605.71429"
- cy="486.64789"
- fx="605.71429"
- fy="486.64789"
- r="117.14286" />
- <linearGradient
- id="linearGradient5048">
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="0"
- id="stop5050" />
- <stop
- id="stop5056"
- offset="0.5"
- style="stop-color:black;stop-opacity:1;" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop5052" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5048"
- id="linearGradient2772"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.124652,0,0,1.892176,-1532.669,-825.6305)"
- x1="302.85715"
- y1="366.64789"
- x2="302.85715"
- y2="609.50507" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3319">
- <stop
- style="stop-color:#fce94f;stop-opacity:1;"
- offset="0"
- id="stop3321" />
- <stop
- style="stop-color:#c4a000;stop-opacity:1"
- offset="1"
- id="stop3323" />
- </linearGradient>
- <linearGradient
- id="linearGradient7595">
- <stop
- style="stop-color:#dcc400;stop-opacity:1;"
- offset="0"
- id="stop7597" />
- <stop
- style="stop-color:#edd400;stop-opacity:0"
- offset="1"
- id="stop7599" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7595"
- id="linearGradient7601"
- x1="11.805677"
- y1="11.75"
- x2="9.9705553"
- y2="9.6290379"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7595"
- id="linearGradient1885"
- gradientUnits="userSpaceOnUse"
- x1="11.805677"
- y1="11.75"
- x2="9.9705553"
- y2="9.6290379" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3319"
- id="linearGradient3325"
- x1="19.941111"
- y1="34.812107"
- x2="21.151594"
- y2="15.571803"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.001194,0,0,1,-44.043627,0)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5927"
- id="linearGradient5968"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.0412762,0,0,1.0405768,3.0301186,-7.3166824)"
- x1="34.192577"
- y1="36.927391"
- x2="32.313694"
- y2="35.29604" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5956"
- id="linearGradient5970"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.146535,0,0,1.151009,-0.3444917,-9.9721252)"
- x1="32.768818"
- y1="36.932552"
- x2="34.447193"
- y2="38.349014" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5976"
- id="linearGradient5982"
- x1="12.24654"
- y1="12.425668"
- x2="12.24654"
- y2="41.648232"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.1936569,0,0,1.2051891,0.1869065,-3.3596734)" />
- <linearGradient
- gradientTransform="translate(1,5)"
- gradientUnits="userSpaceOnUse"
- y2="4.9982824"
- x2="19.111677"
- y1="19.679949"
- x1="19.111677"
- id="linearGradient6587"
- xlink:href="#linearGradient6581"
- inkscape:collect="always" />
- <linearGradient
- y2="10.825614"
- x2="32.366882"
- y1="7.8214283"
- x1="37.589287"
- gradientTransform="matrix(1.0097437,0,0,1.0313296,-0.2679517,-0.3060228)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient6577"
- xlink:href="#linearGradient6043"
- inkscape:collect="always" />
- <linearGradient
- gradientTransform="matrix(1,0,0,1.4,0,-2)"
- gradientUnits="userSpaceOnUse"
- y2="3.9301996"
- x2="19.5"
- y1="14.700505"
- x1="19.5"
- id="linearGradient6569"
- xlink:href="#linearGradient6563"
- inkscape:collect="always" />
- <linearGradient
- gradientUnits="userSpaceOnUse"
- y2="9.5751753"
- x2="20.464302"
- y1="3.5788469"
- x1="20.464302"
- id="linearGradient6551"
- xlink:href="#linearGradient6545"
- inkscape:collect="always" />
- <radialGradient
- r="117.14286"
- fy="486.64789"
- fx="605.71429"
- cy="486.64789"
- cx="605.71429"
- gradientTransform="matrix(-2.774389,0,0,1.900281,394.3031,-828.6181)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient6541"
- xlink:href="#linearGradient5060"
- inkscape:collect="always" />
- <radialGradient
- r="117.14286"
- fy="486.64789"
- fx="605.71429"
- cy="486.64789"
- cx="605.71429"
- gradientTransform="matrix(2.774389,0,0,1.900281,-1980.8146,-828.6181)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient6539"
- xlink:href="#linearGradient5060"
- inkscape:collect="always" />
- <linearGradient
- y2="609.50507"
- x2="302.85715"
- y1="366.64789"
- x1="302.85715"
- gradientTransform="matrix(2.0137241,0,0,1.892176,-1519.3577,-825.6305)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient6537"
- xlink:href="#linearGradient5048"
- inkscape:collect="always" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5060"
- id="radialGradient6544"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-2.774389,0,0,1.900281,394.3031,-828.6181)"
- cx="605.71429"
- cy="486.64789"
- fx="605.71429"
- fy="486.64789"
- r="117.14286" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5060"
- id="radialGradient6536"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.774389,0,0,1.900281,-1923.82,-828.6181)"
- cx="605.71429"
- cy="486.64789"
- fx="605.71429"
- fy="486.64789"
- r="117.14286" />
- <linearGradient
- id="linearGradient6528">
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="0"
- id="stop6530" />
- <stop
- id="stop6532"
- offset="0.5"
- style="stop-color:black;stop-opacity:1;" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop6534" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5048"
- id="linearGradient6526"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.124652,0,0,1.892176,-1532.669,-825.6305)"
- x1="302.85715"
- y1="366.64789"
- x2="302.85715"
- y2="609.50507" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3332">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop3334" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop3336" />
- </linearGradient>
- <linearGradient
- id="linearGradient3284">
- <stop
- style="stop-color:#afafaf;stop-opacity:1"
- offset="0"
- id="stop3286" />
- <stop
- style="stop-color:#f9f9f9;stop-opacity:1"
- offset="1"
- id="stop3288" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3325"
- id="linearGradient2099"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.576952,0,0,2.308818,9.549406,6.3676)"
- x1="1.8561553"
- y1="6.1446991"
- x2="9.5985594"
- y2="16.674181" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3927">
- <stop
- style="stop-color:#eeeeec;stop-opacity:1;"
- offset="0"
- id="stop3929" />
- <stop
- style="stop-color:#eeeeec;stop-opacity:0;"
- offset="1"
- id="stop3931" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3927"
- id="linearGradient4116"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(9.375345e-2,-5.968448)"
- x1="4.5393105"
- y1="3.3254037"
- x2="4.5403199"
- y2="11.50544" />
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2816">
- <stop
- style="stop-color:white;stop-opacity:1"
- offset="0"
- id="stop2818" />
- <stop
- style="stop-color:white;stop-opacity:0"
- offset="1"
- id="stop2820" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient2803">
- <stop
- style="stop-color:black;stop-opacity:1;"
- offset="0"
- id="stop2805" />
- <stop
- style="stop-color:black;stop-opacity:0;"
- offset="1"
- id="stop2807" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3357">
- <stop
- style="stop-color:white;stop-opacity:1;"
- offset="0"
- id="stop3359" />
- <stop
- style="stop-color:white;stop-opacity:0;"
- offset="1"
- id="stop3361" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3325"
- id="linearGradient3331"
- x1="1.8561553"
- y1="6.1446991"
- x2="9.5985594"
- y2="16.674181"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.317285,0,0,1.499996,6.156045e-2,-7.000003)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3357"
- id="linearGradient3363"
- x1="7.819931"
- y1="18.444227"
- x2="-0.10261282"
- y2="3.719852"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.258598,0,0,1.188405,0.955201,-2.731869)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2803"
- id="linearGradient2809"
- x1="2.03125"
- y1="1.53125"
- x2="9.5"
- y2="6.734375"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.989516,0,0,1.041893,2.129694e-2,-0.123196)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient2816"
- id="linearGradient2829"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-1,0,0,1,15.96875,-6.25e-2)"
- x1="1.9375"
- y1="3.8125"
- x2="12.5"
- y2="3.8125" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3284"
- id="linearGradient3290"
- x1="29.432646"
- y1="18.522486"
- x2="32.577065"
- y2="18.522486"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(5,-2)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3332"
- id="linearGradient3338"
- x1="23.554199"
- y1="51.652996"
- x2="13.333899"
- y2="16.066395"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(5,-2)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3284"
- id="linearGradient3345"
- gradientUnits="userSpaceOnUse"
- x1="29.056473"
- y1="23.582701"
- x2="28.995457"
- y2="21.926168"
- gradientTransform="matrix(1.024318,0,0,1.082453,4.513555,-3.527166)" />
- <linearGradient
- y2="10.825614"
- x2="32.366882"
- y1="7.8214283"
- x1="37.589287"
- gradientTransform="matrix(1.0097437,0,0,1.0313296,-0.2679517,-0.3060228)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient6205"
- xlink:href="#linearGradient6043"
- inkscape:collect="always" />
- <linearGradient
- y2="10.825614"
- x2="32.366882"
- y1="7.8214283"
- x1="37.589287"
- gradientTransform="matrix(1.0250703,0,0,1.0137295,-0.6894338,-0.134108)"
- gradientUnits="userSpaceOnUse"
- id="linearGradient6197"
- xlink:href="#linearGradient6043"
- inkscape:collect="always" />
- <linearGradient
- gradientTransform="matrix(2.6666667,0,0,2.5555558,-0.8333331,-4.5555584)"
- gradientUnits="userSpaceOnUse"
- y2="6.1047959"
- x2="8.4284601"
- y1="14.263801"
- x1="8.4284601"
- id="linearGradient5891"
- xlink:href="#linearGradient5885"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient5885"
- inkscape:collect="always">
- <stop
- id="stop5887"
- offset="0"
- style="stop-color:#e2a340;stop-opacity:1" />
- <stop
- id="stop5889"
- offset="1"
- style="stop-color:#e9b96e;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- id="linearGradient6043"
- inkscape:collect="always">
- <stop
- id="stop6045"
- offset="0"
- style="stop-color:#efcc94;stop-opacity:1;" />
- <stop
- id="stop6047"
- offset="1"
- style="stop-color:#e6af56;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- id="linearGradient6545"
- inkscape:collect="always">
- <stop
- id="stop6547"
- offset="0"
- style="stop-color:#000000;stop-opacity:1;" />
- <stop
- id="stop6549"
- offset="1"
- style="stop-color:#000000;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient6563"
- inkscape:collect="always">
- <stop
- id="stop6565"
- offset="0"
- style="stop-color:#8f5902;stop-opacity:1;" />
- <stop
- id="stop6567"
- offset="1"
- style="stop-color:#fee1b2;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- id="linearGradient6581"
- inkscape:collect="always">
- <stop
- id="stop6583"
- offset="0"
- style="stop-color:#a06402;stop-opacity:1;" />
- <stop
- id="stop6585"
- offset="1"
- style="stop-color:#a06402;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5048"
- id="linearGradient6574"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.864389,0,0,1.892176,-1585.295,-825.6305)"
- x1="302.85715"
- y1="366.64789"
- x2="302.85715"
- y2="609.50507" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5060"
- id="radialGradient6576"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.2985225,0,0,1.900281,-1243.7047,-828.61811)"
- cx="605.71429"
- cy="486.64789"
- fx="605.71429"
- fy="486.64789"
- r="117.14286" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5060"
- id="radialGradient6578"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-2.2985227,0,0,1.900281,143.65945,-830.19911)"
- cx="605.71429"
- cy="486.64789"
- fx="605.71429"
- fy="486.64789"
- r="117.14286" />
- <radialGradient
- r="12.5"
- fy="16.093563"
- fx="48.178337"
- cy="16.093563"
- cx="48.178337"
- gradientTransform="matrix(0.117808,0.165688,-0.160285,0.113967,37.8996,24.60705)"
- gradientUnits="userSpaceOnUse"
- id="radialGradient3740"
- xlink:href="#linearGradient2812"
- inkscape:collect="always" />
- <radialGradient
- gradientTransform="matrix(0.710234,0.703965,-0.828897,0.836278,-17.34172,-12.95082)"
- gradientUnits="userSpaceOnUse"
- r="12.5"
- fy="17.172701"
- fx="18.389807"
- cy="17.172701"
- cx="18.389807"
- id="radialGradient2818"
- xlink:href="#linearGradient2812"
- inkscape:collect="always" />
- <linearGradient
- gradientTransform="translate(-21.33061,6.070707)"
- gradientUnits="userSpaceOnUse"
- y2="23.00688"
- x2="42.993927"
- y1="18.054306"
- x1="42.993927"
- id="linearGradient2802"
- xlink:href="#linearGradient2796"
- inkscape:collect="always" />
- <radialGradient
- gradientTransform="matrix(1.515341,1.822282e-2,-1.854671e-2,1.542275,-9.89215,-9.850491)"
- gradientUnits="userSpaceOnUse"
- r="9.5"
- fy="17.498907"
- fx="19.825111"
- cy="17.498907"
- cx="19.825111"
- id="radialGradient2794"
- xlink:href="#linearGradient2788"
- inkscape:collect="always" />
- <radialGradient
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.176471,0,13.58824)"
- r="8.5"
- fy="16.5"
- fx="9.5"
- cy="16.5"
- cx="9.5"
- id="radialGradient3221"
- xlink:href="#linearGradient3215"
- inkscape:collect="always" />
- <linearGradient
- id="linearGradient3215"
- inkscape:collect="always">
- <stop
- id="stop3217"
- offset="0"
- style="stop-color:#2e3436;stop-opacity:1;" />
- <stop
- id="stop3219"
- offset="1"
- style="stop-color:#2e3436;stop-opacity:0;" />
- </linearGradient>
- <linearGradient
- id="linearGradient2788">
- <stop
- id="stop2790"
- offset="0"
- style="stop-color:#729fcf;stop-opacity:1;" />
- <stop
- id="stop2792"
- offset="1"
- style="stop-color:white;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- id="linearGradient2796"
- inkscape:collect="always">
- <stop
- id="stop2798"
- offset="0"
- style="stop-color:#204a87;stop-opacity:1;" />
- <stop
- id="stop2800"
- offset="1"
- style="stop-color:#1a3c6e;stop-opacity:1" />
- </linearGradient>
- <linearGradient
- id="linearGradient2812">
- <stop
- id="stop2814"
- offset="0"
- style="stop-color:#3070ce;stop-opacity:1" />
- <stop
- id="stop2816"
- offset="1"
- style="stop-color:#1a3c6e;stop-opacity:1;" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5956"
- id="linearGradient6072"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.2983701,0,0,1.2167941,0.6197243,-23.893635)"
- x1="32.768818"
- y1="36.932552"
- x2="34.447193"
- y2="38.349014" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5068"
- id="linearGradient5050"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.1666666,0,0,1.0007593,0.7499999,-1.0345451)"
- x1="8.3546944"
- y1="34.109348"
- x2="8.245904"
- y2="16.159151" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6048"
- id="linearGradient6054"
- x1="4.1781459"
- y1="-3.3374889"
- x2="10.5"
- y2="17.336283"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.9090909,0,0,0.875,0.4545455,0.6250001)" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6025"
- id="radialGradient6060"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.9358152,1.153619,-0.8528402,1.0513312,5.7441162,-10.83752)"
- cx="9.4521093"
- cy="6.3353066"
- fx="9.4521093"
- fy="6.3353066"
- r="4.025767" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6074"
- id="radialGradient6080"
- cx="18.177475"
- cy="18.132177"
- fx="18.177475"
- fy="18.132177"
- r="2.3650992"
- gradientTransform="matrix(1,0,0,0.9714286,0,0.5180622)"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5068"
- id="linearGradient2988"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.1666666,0,0,1.0007593,-50.60446,-4.5256941)"
- x1="8.3546944"
- y1="34.109348"
- x2="8.245904"
- y2="16.159151" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5976"
- id="linearGradient2990"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.1936569,0,0,1.2051891,-51.167554,-6.8508224)"
- x1="12.24654"
- y1="12.425668"
- x2="12.24654"
- y2="41.648232" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6074"
- id="radialGradient2992"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.9714286,0,0.5180622)"
- cx="18.177475"
- cy="18.132177"
- fx="18.177475"
- fy="18.132177"
- r="2.3650992" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6025"
- id="radialGradient2994"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.9358152,1.153619,-0.8528402,1.0513312,5.7441162,-10.83752)"
- cx="9.4521093"
- cy="6.3353066"
- fx="9.4521093"
- fy="6.3353066"
- r="4.025767" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6048"
- id="linearGradient2996"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.9090909,0,0,0.875,-50.899915,-2.8661489)"
- x1="4.1781459"
- y1="-3.3374889"
- x2="10.5"
- y2="17.336283" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5068"
- id="linearGradient3015"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.1666666,0,0,1.0007593,-50.60446,-4.5256941)"
- x1="8.3546944"
- y1="34.109348"
- x2="8.245904"
- y2="16.159151" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5976"
- id="linearGradient3017"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.1936569,0,0,1.2051891,-51.167554,-6.8508224)"
- x1="12.24654"
- y1="12.425668"
- x2="12.24654"
- y2="41.648232" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6074"
- id="radialGradient3019"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.9714286,0,0.5180622)"
- cx="18.177475"
- cy="18.132177"
- fx="18.177475"
- fy="18.132177"
- r="2.3650992" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6025"
- id="radialGradient3021"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.9358152,1.153619,-0.8528402,1.0513312,5.7441162,-10.83752)"
- cx="9.4521093"
- cy="6.3353066"
- fx="9.4521093"
- fy="6.3353066"
- r="4.025767" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6048"
- id="linearGradient3023"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.9090909,0,0,0.875,-50.899915,-2.8661489)"
- x1="4.1781459"
- y1="-3.3374889"
- x2="10.5"
- y2="17.336283" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6048"
- id="linearGradient3030"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.50121388,0,0,0.48241836,-40.921567,7.1877445)"
- x1="4.1781459"
- y1="-3.3374889"
- x2="10.5"
- y2="17.336283" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5976"
- id="linearGradient3041"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.60450796,0,0,0.61034826,-40.038846,6.6689718)"
- x1="12.24654"
- y1="12.425668"
- x2="12.24654"
- y2="41.648232" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5068"
- id="linearGradient3044"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.63555816,0,0,0.54517781,-40.716045,6.7906041)"
- x1="8.3546944"
- y1="34.109348"
- x2="8.245904"
- y2="16.159151" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="29.597069"
- inkscape:cx="-21.270689"
- inkscape:cy="27.722119"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- inkscape:showpageshadow="false"
- showguides="true"
- inkscape:window-width="1222"
- inkscape:window-height="949"
- inkscape:window-x="0"
- inkscape:window-y="45"
- inkscape:object-bbox="false"
- inkscape:object-paths="false"
- inkscape:grid-points="false"
- width="48px"
- height="48px"
- inkscape:guide-bbox="true"
- objecttolerance="1"
- gridtolerance="1"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid5651"
- empspacing="4"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata4123">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title>Note</dc:title>
- <dc:date>13.4.2007</dc:date>
- <dc:creator>
- <cc:Agent>
- <dc:title>Josef Vybíral</dc:title>
- </cc:Agent>
- </dc:creator>
- <cc:license
- rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
- </cc:Work>
- <cc:License
- rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/Notice" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/ShareAlike" />
- <cc:requires
- rdf:resource="http://web.resource.org/cc/SourceCode" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer">
- <path
- style="color:#000000;fill:url(#linearGradient5050);fill-opacity:1;fill-rule:evenodd;stroke:#c8a300;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="M 8.8556166,9.4999999 L 42.311051,9.4999999 C 42.877394,9.4999999 43.333332,9.8911008 43.333332,10.376907 L 43.399823,35.084801 C 43.399823,38.042762 43.516091,40.664088 42.368703,42.54959 L 6.5842398,42.500002 C 5.9835709,42.500002 5.4999999,42.085199 5.4999999,41.569949 C 6.406071,40.827485 6.6512452,37.690186 6.8211504,35.174703 L 7.6422043,10.376907 C 7.6422043,9.8911008 8.2892716,9.4999999 8.8556166,9.4999999 z "
- id="rect4933"
- sodipodi:nodetypes="cccccccccc" />
- <path
- sodipodi:nodetypes="ccccccccc"
- id="path4940"
- d="M 9.6318909,10.500326 L 41.702377,10.500326 C 42.246706,10.500326 42.348154,10.472843 42.348154,10.92269 L 42.435027,34.187298 C 42.156544,36.675997 42.608732,39.895365 41.426771,41.480586 L 6.90044,41.480586 C 8.0145858,40.112468 7.4330002,39.16916 7.6547773,38.151925 L 8.6320653,10.92269 C 8.6320653,10.472843 9.0875615,10.500326 9.6318909,10.500326 z "
- style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5982);stroke-width:0.99999988;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- sodipodi:type="arc"
- style="opacity:1;color:#000000;fill:url(#radialGradient6080);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:3.5999999;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.24200912;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path6064"
- sodipodi:cx="18.177475"
- sodipodi:cy="18.132177"
- sodipodi:rx="2.3650992"
- sodipodi:ry="2.2975249"
- d="M 20.542574 18.132177 A 2.3650992 2.2975249 0 1 1 15.812376,18.132177 A 2.3650992 2.2975249 0 1 1 20.542574 18.132177 z"
- transform="matrix(1.0570381,0,0,1.0881274,-2.7818579,0.1753266)" />
- <g
- id="g6017"
- transform="matrix(0.9664336,0.2569166,-0.2569166,0.9664336,5.9122451,-3.3000199)"
- style="stroke:#ead200;stroke-width:1;stroke-opacity:1">
- <path
- id="path6011"
- d="M 16.567262,20.023409 C 16.567262,20.023409 16.567262,17.906205 19.441966,16.354001"
- style="fill:none;fill-rule:evenodd;stroke:#ead200;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- id="path6013"
- d="M 15.12991,20.728398 C 15.12991,20.728398 12.873598,20.239014 11.5,20.869506"
- style="fill:none;fill-rule:evenodd;stroke:#ead200;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- id="path6015"
- d="M 15.12991,20.023409 C 15.12991,20.023409 16.567262,21.5 18.004614,21.5"
- style="fill:none;fill-rule:evenodd;stroke:#ead200;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- </g>
- <path
- style="fill:#729fcf;fill-rule:evenodd;stroke:#3465a4;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.5999999;stroke-dasharray:none;stroke-opacity:1"
- d="M 8.5403469,12.702723 L 16.580693,20.486881 L 12.851485,9.5 L 8.5403469,12.702723 z "
- id="path6062"
- sodipodi:nodetypes="cccc" />
- <path
- style="fill:#ffffff;fill-opacity:0.543379;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 15.337871,18.662129 L 11.52698,12.270297 L 14,13 L 15.337871,18.662129 z "
- id="path6082"
- sodipodi:nodetypes="cccc" />
- <path
- sodipodi:type="arc"
- style="opacity:1;color:#000000;fill:url(#radialGradient6060);fill-opacity:1;fill-rule:evenodd;stroke:#a40000;stroke-width:0.66167891px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path6021"
- sodipodi:cx="10.368741"
- sodipodi:cy="7.6718087"
- sodipodi:rx="3.5836663"
- sodipodi:ry="4.3959641"
- d="M 13.952407 7.6718087 A 3.5836663 4.3959641 0 1 1 6.7850747,7.6718087 A 3.5836663 4.3959641 0 1 1 13.952407 7.6718087 z"
- transform="matrix(1.6742631,0,0,1.3642114,-6.8600003,-7.3492e-3)" />
- <path
- style="opacity:1;color:#000000;fill:url(#linearGradient6054);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="M 10.416667,5 C 7.4266666,5 5.0955642,6.8153668 5.0955644,9.6396858 C 5.8167985,11.482394 7.8011002,11.968189 9.5833337,12 C 12.573334,12 15,10.581811 15,7.7574922 C 15,7.6229057 14.984777,7.4919952 14.973959,7.3600158 C 14.012561,5.9325587 12.3392,5.0000001 10.416667,5 z "
- id="path6033"
- sodipodi:nodetypes="cccscc" />
- <path
- transform="matrix(1.3952192,0,0,1.1374069,-3.9666666,1.7740319)"
- d="M 13.952407 7.6718087 A 3.5836663 4.3959641 0 1 1 6.7850747,7.6718087 A 3.5836663 4.3959641 0 1 1 13.952407 7.6718087 z"
- sodipodi:ry="4.3959641"
- sodipodi:rx="3.5836663"
- sodipodi:cy="7.6718087"
- sodipodi:cx="10.368741"
- id="path6056"
- style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.79381776px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.35159817;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#edd400;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 12.626931,23.491149 L 38.225773,23.491149"
- id="path6091" />
- <path
- id="path6093"
- d="M 12.626931,27.491149 L 38.225773,27.491149"
- style="fill:none;fill-rule:evenodd;stroke:#edd400;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- style="fill:none;fill-rule:evenodd;stroke:#edd400;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 12.5,31.491149 L 31.35446,31.491149"
- id="path6095" />
- <rect
- style="opacity:0.25;fill:#3465a4;fill-opacity:1;stroke:none"
- id="rect2956"
- width="24"
- height="24"
- x="-40"
- y="8" />
- <path
- sodipodi:nodetypes="cccccccccc"
- id="path2958"
- d="m -36.300394,12.529447 18.225322,0 c 0.308524,0 0.556901,0.213057 0.556901,0.477708 l 0.03622,13.459975 c 0,1.61139 0.06334,3.039395 -0.561717,4.066549 l -19.494093,-0.02702 c -0.327223,0 -0.590655,-0.225969 -0.590655,-0.506659 0.493595,-0.404468 0.627156,-2.113555 0.719716,-3.483901 l 0.44728,-13.50895 c 0,-0.264651 0.3525,-0.477708 0.661024,-0.477708 z"
- style="color:#000000;fill:url(#linearGradient3044);fill-opacity:1;fill-rule:evenodd;stroke:#c8a300;stroke-width:0.99576366;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- inkscape:export-filename="/home/shaunm/Projects/yelp-xsl/icons/hicolor/24x24/status/admon-note.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <path
- style="color:#000000;fill:none;stroke:url(#linearGradient3041);stroke-width:0.9185583;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="m -35.25559,13.688141 16.241572,0 c 0.275668,0 0.327044,-0.01392 0.327044,0.2139 l 0.044,11.78198 c -0.141034,1.26036 0.08797,2.890756 -0.510615,3.693565 l -17.485294,0 c 0.564241,-0.692862 0.269706,-1.170583 0.382021,-1.685746 l 0.494932,-13.789799 c 0,-0.227818 0.230679,-0.2139 0.506345,-0.2139 z"
- id="path2960"
- sodipodi:nodetypes="ccccccccc"
- inkscape:export-filename="/home/shaunm/Projects/yelp-xsl/icons/hicolor/24x24/status/admon-note.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <path
- transform="matrix(0.58278239,0,0,0.59992301,-42.705911,6.9398237)"
- d="m 20.542574,18.132177 a 2.3650992,2.2975249 0 1 1 -4.730198,0 2.3650992,2.2975249 0 1 1 4.730198,0 z"
- sodipodi:ry="2.2975249"
- sodipodi:rx="2.3650992"
- sodipodi:cy="18.132177"
- sodipodi:cx="18.177475"
- id="path2962"
- style="color:#000000;fill:url(#radialGradient3019);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc"
- inkscape:export-filename="/home/shaunm/Projects/yelp-xsl/icons/hicolor/24x24/status/admon-note.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <g
- style="stroke:#ead200;stroke-width:1;stroke-opacity:1"
- transform="matrix(0.53282893,0.14164718,-0.14164718,0.53282893,-37.912545,5.0237426)"
- id="g2964"
- inkscape:export-filename="/home/shaunm/Projects/yelp-xsl/icons/hicolor/24x24/status/admon-note.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <path
- style="fill:none;stroke:#ead200;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 16.567262,20.023409 c 0,0 0,-2.117204 2.874704,-3.669408"
- id="path2966" />
- <path
- style="fill:none;stroke:#ead200;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 15.12991,20.728398 c 0,0 -2.256312,-0.489384 -3.62991,0.141108"
- id="path2968" />
- <path
- style="fill:none;stroke:#ead200;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 15.12991,20.023409 c 0,0 1.437352,1.476591 2.874704,1.476591"
- id="path2970" />
- </g>
- <path
- sodipodi:nodetypes="cccc"
- id="path2972"
- d="m -36.46358,13.846619 4.432927,4.291681 -2.056044,-6.057455 -2.376883,1.765774 z"
- style="fill:#729fcf;fill-rule:evenodd;stroke:#3465a4;stroke-width:0.55133528;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.5999999;stroke-opacity:1;stroke-dasharray:none"
- inkscape:export-filename="/home/shaunm/Projects/yelp-xsl/icons/hicolor/24x24/status/admon-note.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <path
- sodipodi:nodetypes="cccc"
- id="path2974"
- d="m -32.715865,17.13225 -2.101078,-3.524043 1.363463,0.402311 0.737615,3.121732 z"
- style="fill:#ffffff;fill-opacity:0.543379;fill-rule:evenodd;stroke:none"
- inkscape:export-filename="/home/shaunm/Projects/yelp-xsl/icons/hicolor/24x24/status/admon-note.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <path
- transform="matrix(0.9230803,0,0,0.75213786,-44.954334,6.8391081)"
- d="m 13.952407,7.6718087 a 3.5836663,4.3959641 0 1 1 -7.1673323,0 3.5836663,4.3959641 0 1 1 7.1673323,0 z"
- sodipodi:ry="4.3959641"
- sodipodi:rx="3.5836663"
- sodipodi:cy="7.6718087"
- sodipodi:cx="10.368741"
- id="path2976"
- style="color:#000000;fill:url(#radialGradient3021);fill-opacity:1;fill-rule:evenodd;stroke:#a40000;stroke-width:0.66167891px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc"
- inkscape:export-filename="/home/shaunm/Projects/yelp-xsl/icons/hicolor/24x24/status/admon-note.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <path
- sodipodi:nodetypes="cccscc"
- id="path2978"
- d="m -35.429098,9.5998363 c -1.648493,0 -2.933712,1.0008757 -2.933712,2.5580227 0.397642,1.01595 1.491658,1.283786 2.474266,1.301324 1.648492,0 2.986399,-0.781897 2.986399,-2.339044 0,-0.0742 -0.0084,-0.146378 -0.01436,-0.219143 -0.530052,-0.787007 -1.452635,-1.3011597 -2.512596,-1.3011597 z"
- style="color:#000000;fill:url(#linearGradient3030);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- inkscape:export-filename="/home/shaunm/Projects/yelp-xsl/icons/hicolor/24x24/status/admon-note.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <path
- sodipodi:type="arc"
- style="color:#000000;fill:none;stroke:#ffffff;stroke-width:0.79381776px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.35159816;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path2980"
- sodipodi:cx="10.368741"
- sodipodi:cy="7.6718087"
- sodipodi:rx="3.5836663"
- sodipodi:ry="4.3959641"
- d="m 13.952407,7.6718087 a 3.5836663,4.3959641 0 1 1 -7.1673323,0 3.5836663,4.3959641 0 1 1 7.1673323,0 z"
- transform="matrix(0.76923355,0,0,0.62709254,-43.359137,7.8212463)"
- inkscape:export-filename="/home/shaunm/Projects/yelp-xsl/icons/hicolor/24x24/status/admon-note.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <path
- id="path2982"
- d="m -34,19.524362 14.113545,0"
- style="fill:none;stroke:#edd400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- inkscape:export-filename="/home/shaunm/Projects/yelp-xsl/icons/hicolor/24x24/status/admon-note.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <path
- style="fill:none;stroke:#edd400;stroke-width:0.99552888;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="m -33.946845,22.506807 14.050442,0"
- id="path2984"
- inkscape:export-filename="/home/shaunm/Projects/yelp-xsl/icons/hicolor/24x24/status/admon-note.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <path
- id="path2986"
- d="m -34,25.421678 10.395129,0"
- style="fill:none;stroke:#edd400;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- inkscape:export-filename="/home/shaunm/Projects/yelp-xsl/icons/hicolor/24x24/status/admon-note.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- </g>
-</svg>
diff --git a/js/Makefile.am b/js/Makefile.am
index 6fbd4a0d..bc3eef2e 100644
--- a/js/Makefile.am
+++ b/js/Makefile.am
@@ -1,44 +1,7 @@
jsdir = $(datadir)/yelp-xsl/js
-js_DATA = \
- jquery.js \
- jquery.syntax.brush.apache.js \
- jquery.syntax.brush.applescript.js \
- jquery.syntax.brush.assembly.js \
- jquery.syntax.brush.bash-script.js \
- jquery.syntax.brush.bash.js \
- jquery.syntax.brush.basic.js \
- jquery.syntax.brush.clang.js \
- jquery.syntax.brush.csharp.js \
- jquery.syntax.brush.css.js \
- jquery.syntax.brush.diff.js \
- jquery.syntax.brush.go.js \
- jquery.syntax.brush.haskell.js \
- jquery.syntax.brush.html.js \
- jquery.syntax.brush.io.js \
- jquery.syntax.brush.java.js \
- jquery.syntax.brush.javascript.js \
- jquery.syntax.brush.kai.js \
- jquery.syntax.brush.lisp.js \
- jquery.syntax.brush.lua.js \
- jquery.syntax.brush.ocaml.js \
- jquery.syntax.brush.ooc.js \
- jquery.syntax.brush.pascal.js \
- jquery.syntax.brush.perl5.js \
- jquery.syntax.brush.php-script.js \
- jquery.syntax.brush.php.js \
- jquery.syntax.brush.plain.js \
- jquery.syntax.brush.protobuf.js \
- jquery.syntax.brush.python.js \
- jquery.syntax.brush.ruby.js \
- jquery.syntax.brush.scala.js \
- jquery.syntax.brush.smalltalk.js \
- jquery.syntax.brush.sql.js \
- jquery.syntax.brush.super-collider.js \
- jquery.syntax.brush.xml.js \
- jquery.syntax.brush.yaml.js \
- jquery.syntax.core.js \
- jquery.syntax.layout.yelp.js \
- jquery.syntax.js
+js_DATA = \
+ jquery.js \
+ highlight.pack.js
EXTRA_DIST = $(js_DATA)
diff --git a/js/README.duck b/js/README.duck
new file mode 100644
index 00000000..fdcb9f5b
--- /dev/null
+++ b/js/README.duck
@@ -0,0 +1,42 @@
+= How to build highlight.pack.js
+
+yelp-xsl includes a pre-built copy of highlight.pack.js that includes many
+common languages. The default languages are those for which we have test
+files. If you want to add to the default languages in yelp-xsl, add a test
+code snippet under test/syntax/code, then XInclude it into the test files
+for Mallard, DocBook, and DITA under test/syntax. A good place to get test
+files is the live demo on highlightjs.org.
+
+[steps]
+. Build highlight.pack.js with the default yelp-xsl languages:
+* git clone https://github.com/isagalaev/highlight.js.git
+* cd highlight.js
+* node tools/build.js $(find /path/to/yelp-xsl/test/syntax/code/* -exec basename {} \;)
+
+You might want to add a language for your local site, keeping all of the
+default languages as well.
+
+[steps]
+. Build highlight.pack.js with language foo plus the default languages:
+* git clone https://github.com/isagalaev/highlight.js.git
+* cd highlight.js
+* node tools/build.js foo $(find /path/to/yelp-xsl/test/syntax/code/* -exec basename {} \;)
+
+Or you might want to trim highlight.pack.js down to just the languages
+you know you use.
+
+[steps]
+. Build hightlight.pack.js with just languages foo and bar:
+* git clone https://github.com/isagalaev/highlight.js.git
+* cd highlight.js
+* node tools/build.js foo bar
+
+[note]
+ As of 2016-01-03, highlight.pack.js uses the new anonymous function syntax,
+ which may not be supported by the version of node.js on your system. If you
+ get an error, look for anonymous functions using the => syntax, and replace
+ them like so:
+
+ [code]
+ // return del(directories).then(() => done(null, blobs));
+ return del(directories).then(function() { done(null, blobs) });
diff --git a/js/highlight.pack.js b/js/highlight.pack.js
new file mode 100644
index 00000000..45ed8116
--- /dev/null
+++ b/js/highlight.pack.js
@@ -0,0 +1,4 @@
+/*! highlight.js v8.9.1 | BSD3 License | git.io/hljslicense */
+!function(e){if("undefined"!=typeof exports)e(exports);else if("undefined"!=typeof window)window.hljs=e({}),"function"==typeof define&&define.amd&&define("hljs",[],function(){return window.hljs});else{if("undefined"==typeof self)throw new Error("No global object found to bind hljs variable to.");self.hljs=e({})}}(function(e){function t(e){return e.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;")}function r(e){return e.nodeName.toLowerCase()}function a(e,t){var r=e&&e.exec(t);return r&&0==r.index}function n(e){return/^(no-?highlight|plain|text)$/i.test(e)}function i(e){var t,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",r=/\blang(?:uage)?-([\w-]+)\b/i.exec(i))return v(r[1])?r[1]:"no-highlight";for(i=i.split(/\s+/),t=0,a=i.length;a>t;t++)if(v(i[t])||n(i[t]))return i[t]}function s(e,t){var r,a={};for(r in e)a[r]=e[r];if(t)for(r in t)a[r]=t[r];return a}function c(e){var t=[];return function a(e,n){for(var i=e.firstChild;i;i=i.nextSibling)3==i.nodeType?n+=i.nodeValue.length:1==i.nodeType&&(t.push({event:"start",offset:n,node:i}),n=a(i,n),r(i).match(/br|hr|img|input/)||t.push({event:"stop",offset:n,node:i}));return n}(e,0),t}function o(e,a,n){function i(){return e.length&&a.length?e[0].offset!=a[0].offset?e[0].offset<a[0].offset?e:a:"start"==a[0].event?e:a:e.length?e:a}function s(e){function a(e){return" "+e.nodeName+'="'+t(e.value)+'"'}d+="<"+r(e)+Array.prototype.map.call(e.attributes,a).join("")+">"}function c(e){d+="</"+r(e)+">"}function o(e){("start"==e.event?s:c)(e.node)}for(var l=0,d="",u=[];e.length||a.length;){var b=i();if(d+=t(n.substr(l,b[0].offset-l)),l=b[0].offset,b==e){u.reverse().forEach(c);do o(b.splice(0,1)[0]),b=i();while(b==e&&b.length&&b[0].offset==l);u.reverse().forEach(s)}else"start"==b[0].event?u.push(b[0].node):u.pop(),o(b.splice(0,1)[0])}return d+t(n.substr(l))}function l(e){function t(e){return e&&e.source||e}function r(r,a){return new RegExp(t(r),"m"+(e.cI?"i":"")+(a?"g":""))}function a(n,i){if(!n.compiled){if(n.compiled=!0,n.k=n.k||n.bK,n.k){var c={},o=function(t,r){e.cI&&(r=r.toLowerCase()),r.split(" ").forEach(function(e){var r=e.split("|");c[r[0]]=[t,r[1]?Number(r[1]):1]})};"string"==typeof n.k?o("keyword",n.k):Object.keys(n.k).forEach(function(e){o(e,n.k[e])}),n.k=c}n.lR=r(n.l||/\b\w+\b/,!0),i&&(n.bK&&(n.b="\\b("+n.bK.split(" ").join("|")+")\\b"),n.b||(n.b=/\B|\b/),n.bR=r(n.b),n.e||n.eW||(n.e=/\B|\b/),n.e&&(n.eR=r(n.e)),n.tE=t(n.e)||"",n.eW&&i.tE&&(n.tE+=(n.e?"|":"")+i.tE)),n.i&&(n.iR=r(n.i)),void 0===n.r&&(n.r=1),n.c||(n.c=[]);var l=[];n.c.forEach(function(e){e.v?e.v.forEach(function(t){l.push(s(e,t))}):l.push("self"==e?n:e)}),n.c=l,n.c.forEach(function(e){a(e,n)}),n.starts&&a(n.starts,i);var d=n.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([n.tE,n.i]).map(t).filter(Boolean);n.t=d.length?r(d.join("|"),!0):{exec:function(){return null}}}}a(e)}function d(e,r,n,i){function s(e,t){for(var r=0;r<t.c.length;r++)if(a(t.c[r].bR,e))return t.c[r]}function c(e,t){if(a(e.eR,t)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?c(e.parent,t):void 0}function o(e,t){return!n&&a(t.iR,e)}function b(e,t){var r=y.cI?t[0].toLowerCase():t[0];return e.k.hasOwnProperty(r)&&e.k[r]}function p(e,t,r,a){var n=a?"":w.classPrefix,i='<span class="'+n,s=r?"":"</span>";return i+=e+'">',i+t+s}function m(){if(!x.k)return t(z);var e="",r=0;x.lR.lastIndex=0;for(var a=x.lR.exec(z);a;){e+=t(z.substr(r,a.index-r));var n=b(x,a);n?(A+=n[1],e+=p(n[0],t(a[0]))):e+=t(a[0]),r=x.lR.lastIndex,a=x.lR.exec(z)}return e+t(z.substr(r))}function f(){var e="string"==typeof x.sL;if(e&&!N[x.sL])return t(z);var r=e?d(x.sL,z,!0,C[x.sL]):u(z,x.sL.length?x.sL:void 0);return x.r>0&&(A+=r.r),e&&(C[x.sL]=r.top),p(r.language,r.value,!1,!0)}function g(){return void 0!==x.sL?f():m()}function h(e,r){var a=e.cN?p(e.cN,"",!0):"";e.rB?(M+=a,z=""):e.eB?(M+=t(r)+a,z=""):(M+=a,z=r),x=Object.create(e,{parent:{value:x}})}function _(e,r){if(z+=e,void 0===r)return M+=g(),0;var a=s(r,x);if(a)return M+=g(),h(a,r),a.rB?0:r.length;var n=c(x,r);if(n){var i=x;i.rE||i.eE||(z+=r),M+=g();do x.cN&&(M+="</span>"),A+=x.r,x=x.parent;while(x!=n.parent);return i.eE&&(M+=t(r)),z="",n.starts&&h(n.starts,""),i.rE?0:r.length}if(o(r,x))throw new Error('Illegal lexeme "'+r+'" for mode "'+(x.cN||"<unnamed>")+'"');return z+=r,r.length||1}var y=v(e);if(!y)throw new Error('Unknown language: "'+e+'"');l(y);var k,x=i||y,C={},M="";for(k=x;k!=y;k=k.parent)k.cN&&(M=p(k.cN,"",!0)+M);var z="",A=0;try{for(var E,$,L=0;;){if(x.t.lastIndex=L,E=x.t.exec(r),!E)break;$=_(r.substr(L,E.index-L),E[0]),L=E.index+$}for(_(r.substr(L)),k=x;k.parent;k=k.parent)k.cN&&(M+="</span>");return{r:A,value:M,language:e,top:x}}catch(q){if(-1!=q.message.indexOf("Illegal"))return{r:0,value:t(r)};throw q}}function u(e,r){r=r||w.languages||Object.keys(N);var a={r:0,value:t(e)},n=a;return r.forEach(function(t){if(v(t)){var r=d(t,e,!1);r.language=t,r.r>n.r&&(n=r),r.r>a.r&&(n=a,a=r)}}),n.language&&(a.second_best=n),a}function b(e){return w.tabReplace&&(e=e.replace(/^((<[^>]+>|\t)+)/gm,function(e,t){return t.replace(/\t/g,w.tabReplace)})),w.useBR&&(e=e.replace(/\n/g,"<br>")),e}function p(e,t,r){var a=t?k[t]:r,n=[e.trim()];return e.match(/\bhljs\b/)||n.push("hljs"),-1===e.indexOf(a)&&n.push(a),n.join(" ").trim()}function m(e){var t=i(e);if(!n(t)){var r;w.useBR?(r=document.createElementNS("http://www.w3.org/1999/xhtml","div"),r.innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n")):r=e;var a=r.textContent,s=t?d(t,a,!0):u(a),l=c(r);if(l.length){var m=document.createElementNS("http://www.w3.org/1999/xhtml","div");m.innerHTML=s.value,s.value=o(l,c(m),a)}s.value=b(s.value),e.innerHTML=s.value,e.className=p(e.className,t,s.language),e.result={language:s.language,re:s.r},s.second_best&&(e.second_best={language:s.second_best.language,re:s.second_best.r})}}function f(e){w=s(w,e)}function g(){if(!g.called){g.called=!0;var e=document.querySelectorAll("pre code");Array.prototype.forEach.call(e,m)}}function h(){addEventListener("DOMContentLoaded",g,!1),addEventListener("load",g,!1)}function _(t,r){var a=N[t]=r(e);a.aliases&&a.aliases.forEach(function(e){k[e]=t})}function y(){return Object.keys(N)}function v(e){return e=(e||"").toLowerCase(),N[e]||N[k[e]]}var w={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},N={},k={};return e.highlight=d,e.highlightAuto=u,e.fixMarkup=b,e.highlightBlock=m,e.configure=f,e.initHighlighting=g,e.initHighlightingOnLoad=h,e.registerLanguage=_,e.listLanguages=y,e.getLanguage=v,e.inherit=s,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|like)\b/},e.C=function(t,r,a){var n=e.inherit({cN:"comment",b:t,e:r,c:[]},a||{});return n.c.push(e.PWM),n.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),n},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.registerLanguage("actionscript",function(e){var t="[a-zA-Z_$][a-zA-Z0-9_$]*",r="([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)",a={cN:"rest_arg",b:"[.]{3}",e:t,r:10};return{aliases:["as"],k:{keyword:"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with",literal:"true false null undefined"},c:[e.ASM,e.QSM,e.CLCM,e.CBCM,e.CNM,{cN:"class",bK:"package",e:"{",c:[e.TM]},{cN:"class",bK:"class interface",e:"{",eE:!0,c:[{bK:"extends implements"},e.TM]},{cN:"meta",bK:"import include",e:";"},{cN:"function",bK:"function",e:"[{;]",eE:!0,i:"\\S",c:[e.TM,{cN:"params",b:"\\(",e:"\\)",c:[e.ASM,e.QSM,e.CLCM,e.CBCM,a]},{b:":\\s*"+r}]}],i:/#/}}),e.registerLanguage("apache",function(e){var t={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"section",b:"</?",e:">"},{cN:"attribute",b:/\w+/,r:0,k:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"meta",b:"\\s\\[",e:"\\]$"},{cN:"variable",b:"[\\$%]\\{",e:"\\}",c:["self",t]},t,e.QSM]}}],i:/\S/}}),e.registerLanguage("xml",function(e){var t="[A-Za-z0-9\\._:-]+",r={b:/<\?(php)?(?!\w)/,e:/\?>/,sL:"php"},a={eW:!0,i:/</,r:0,c:[r,{cN:"attr",b:t,r:0},{b:"=",r:0,c:[{cN:"string",c:[r],v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s\/>]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xsl","plist"],cI:!0,c:[{cN:"meta",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},e.C("<!--","-->",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{name:"style"},c:[a],starts:{e:"</style>",rE:!0,sL:"css"}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{name:"script"},c:[a],starts:{e:"</script>",rE:!0,sL:["actionscript","javascript","handlebars"]}},r,{cN:"meta",b:/<\?\w+/,e:/\?>/,r:10},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"name",b:/[^ \/><\n\t]+/,r:0},a]}]}}),e.registerLanguage("asciidoc",function(e){return{aliases:["adoc"],c:[e.C("^/{4,}\\n","\\n/{4,}$",{r:10}),e.C("^//","$",{r:0}),{cN:"title",b:"^\\.\\w.*$"},{b:"^[=\\*]{4,}\\n",e:"\\n^[=\\*]{4,}$",r:10},{cN:"section",r:10,v:[{b:"^(={1,5}) .+?( \\1)?$"},{b:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{cN:"meta",b:"^:.+?:",e:"\\s",eE:!0,r:10},{cN:"meta",b:"^\\[.+?\\]$",r:0},{cN:"quote",b:"^_{4,}\\n",e:"\\n_{4,}$",r:10},{cN:"code",b:"^[\\-\\.]{4,}\\n",e:"\\n[\\-\\.]{4,}$",r:10},{b:"^\\+{4,}\\n",e:"\\n\\+{4,}$",c:[{b:"<",e:">",sL:"xml",r:0}],r:10},{cN:"bullet",b:"^(\\*+|\\-+|\\.+|[^\\n]+?::)\\s+"},{cN:"symbol",b:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",r:10},{cN:"strong",b:"\\B\\*(?![\\*\\s])",e:"(\\n{2}|\\*)",c:[{b:"\\\\*\\w",r:0}]},{cN:"emphasis",b:"\\B'(?!['\\s])",e:"(\\n{2}|')",c:[{b:"\\\\'\\w",r:0}],r:0},{cN:"emphasis",b:"_(?![_\\s])",e:"(\\n{2}|_)",r:0},{cN:"string",v:[{b:"``.+?''"},{b:"`.+?'"}]},{cN:"code",b:"(`.+?`|\\+.+?\\+)",r:0},{cN:"code",b:"^[ \\t]",e:"$",r:0},{b:"^'{3,}[ \\t]*$",r:10},{b:"(link:)?(http|https|ftp|file|irc|image:?):\\S+\\[.*?\\]",rB:!0,c:[{b:"(link|image:?):",r:0},{cN:"link",b:"\\w",e:"[^\\[]+",r:0},{cN:"string",b:"\\[",e:"\\]",eB:!0,eE:!0,r:0}],r:10}]}}),e.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},r={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/-?[a-z\.]+/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,e.NM,r,a,t]}}),e.registerLanguage("clojure",function(e){var t={built_in:"def defonce cond apply if-not if-let if not not= = < > <= >= == + / * - rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit defmacro defn defn- macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize"},r="a-zA-Z_\\-!.?+*=<>&#'",a="["+r+"]["+r+"0-9/;:]*",n="[-+]?\\d+(\\.\\d+)?",i={b:a,r:0},s={cN:"number",b:n,r:0},c=e.inherit(e.QSM,{i:null}),o=e.C(";","$",{r:0}),l={cN:"literal",b:/\b(true|false|nil)\b/},d={b:"[\\[\\{]",e:"[\\]\\}]"},u={cN:"comment",b:"\\^"+a},b=e.C("\\^\\{","\\}"),p={cN:"symbol",b:"[:]"+a},m={b:"\\(",e:"\\)"},f={eW:!0,r:0},g={k:t,l:a,cN:"name",b:a,starts:f},h=[m,c,u,b,o,p,d,s,l,i];return m.c=[e.C("comment",""),g,f],f.c=h,d.c=h,{aliases:["clj"],i:/\S/,c:[m,c,u,b,o,p,d,s,l]}}),e.registerLanguage("cmake",function(e){return{aliases:["cmake.in"],cI:!0,k:{keyword:"add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_subdirectory add_test aux_source_directory break build_command cmake_minimum_required cmake_policy configure_file create_test_sourcelist define_property else elseif enable_language enable_testing endforeach endfunction endif endmacro endwhile execute_process export find_file find_library find_package find_path find_program fltk_wrap_ui foreach function get_cmake_property get_directory_property get_filename_component get_property get_source_file_property get_target_property get_test_property if include include_directories include_external_msproject include_regular_expression install link_directories load_cache load_command macro mark_as_advanced message option output_required_files project qt_wrap_cpp qt_wrap_ui remove_definitions return separate_arguments set set_directory_properties set_property set_source_files_properties set_target_properties set_tests_properties site_name source_group string target_link_libraries try_compile try_run unset variable_watch while build_name exec_program export_library_dependencies install_files install_programs install_targets link_libraries make_directory remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or equal less greater strless strgreater strequal matches"},c:[{cN:"variable",b:"\\${",e:"}"},e.HCM,e.QSM,e.NM]}}),e.registerLanguage("cpp",function(e){var t={cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"},r={cN:"string",v:[e.inherit(e.QSM,{b:'((u8?|U)|L)?"'}),{b:'(u8?|U)?R"',e:'"',c:[e.BE]},{b:"'\\\\?.",e:"'",i:"."}]},a={cN:"number",v:[{b:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},{b:e.CNR}],r:0},n={cN:"meta",b:"#",e:"$",k:"if else elif endif define undef warning error line pragma ifdef ifndef",c:[{b:/\\\n/,r:0},{bK:"include",e:"$",c:[r,{cN:"string",b:"<",e:">",i:"\\n"}]},r,a,e.CLCM,e.CBCM]},i=e.IR+"\\s*\\(",s={keyword:"int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong",built_in:"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf",literal:"true false nullptr NULL"};return{aliases:["c","cc","h","c++","h++","hpp"],k:s,i:"</",c:[t,e.CLCM,e.CBCM,a,r,n,{b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:s,c:["self",t]},{b:e.IR+"::",k:s},{bK:"new throw return else",r:0},{cN:"function",b:"("+e.IR+"[\\*&\\s]+)+"+i,rB:!0,e:/[{;=]/,eE:!0,k:s,i:/[^\w\s\*&]/,c:[{b:i,rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:s,r:0,c:[e.CLCM,e.CBCM,r,a]},e.CLCM,e.CBCM,n]}]}}),e.registerLanguage("cs",function(e){var t="abstract as base bool break byte case catch char checked const continue decimal dynamic default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long null when object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while async protected public private internal ascending descending from get group into join let orderby partial select set value var where yield",r=e.IR+"(<"+e.IR+">)?";return{aliases:["csharp"],k:t,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"doctag",v:[{b:"///",r:0},{b:"<!--|-->"},{b:"</?",e:">"}]}]}),e.CLCM,e.CBCM,{cN:"meta",b:"#",e:"$",k:"if else elif endif define undef warning error line region endregion pragma checksum"},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},e.ASM,e.QSM,e.CNM,{bK:"class interface",e:/[{;=]/,i:/[^\s:]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[e.inherit(e.TM,{b:"[a-zA-Z](\\.?\\w)*"}),e.CLCM,e.CBCM]},{bK:"new return throw await",r:0},{cN:"function",b:"("+r+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:t,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]}]}}),e.registerLanguage("css",function(e){var t="[a-zA-Z-][a-zA-Z0-9_-]*",r={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"']+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",c:[{cN:"keyword",b:/\S+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:t,r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,r]}]}}),e.registerLanguage("d",function(e){var t={keyword:"abstract alias align asm assert auto body break byte case cast catch class const continue debug default delete deprecated do else enum export extern final finally for foreach foreach_reverse|10 goto if immutable import in inout int interface invariant is lazy macro mixin module new nothrow out override package pragma private protected public pure ref return scope shared static struct super switch synchronized template this throw try typedef typeid typeof union unittest version void volatile while with __FILE__ __LINE__ __gshared|10 __thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__",built_in:"bool cdouble cent cfloat char creal dchar delegate double dstring float function idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar wstring",literal:"false null true"},r="(0|[1-9][\\d_]*)",a="(0|[1-9][\\d_]*|\\d[\\d_]*|[\\d_]+?\\d)",n="0[bB][01_]+",i="([\\da-fA-F][\\da-fA-F_]*|_[\\da-fA-F][\\da-fA-F_]*)",s="0[xX]"+i,c="([eE][+-]?"+a+")",o="("+a+"(\\.\\d*|"+c+")|\\d+\\."+a+a+"|\\."+r+c+"?)",l="(0[xX]("+i+"\\."+i+"|\\.?"+i+")[pP][+-]?"+a+")",d="("+r+"|"+n+"|"+s+")",u="("+l+"|"+o+")",b="\\\\(['\"\\?\\\\abfnrtv]|u[\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\dA-Fa-f]{2}|U[\\dA-Fa-f]{8})|&[a-zA-Z\\d]{2,};",p={cN:"number",b:"\\b"+d+"(L|u|U|Lu|LU|uL|UL)?",r:0},m={cN:"number",b:"\\b("+u+"([fF]|L|i|[fF]i|Li)?|"+d+"(i|[fF]i|Li))",r:0},f={cN:"string",b:"'("+b+"|.)",e:"'",i:"."},g={b:b,r:0},h={cN:"string",b:'"',c:[g],e:'"[cwd]?'},_={cN:"string",b:'[rq]"',e:'"[cwd]?',r:5},y={cN:"string",b:"`",e:"`[cwd]?"},v={cN:"string",b:'x"[\\da-fA-F\\s\\n\\r]*"[cwd]?',r:10},w={cN:"string",b:'q"\\{',e:'\\}"'},N={cN:"meta",b:"^#!",e:"$",r:5},k={cN:"meta",b:"#(line)",e:"$",r:5},x={cN:"keyword",b:"@[a-zA-Z_][a-zA-Z_\\d]*"},C=e.C("\\/\\+","\\+\\/",{c:["self"],r:10});return{l:e.UIR,k:t,c:[e.CLCM,e.CBCM,C,v,h,_,y,w,m,p,f,N,k,x]}}),e.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"meta",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"comment",v:[{b:/Index: /,e:/$/},{b:/=====/,e:/=====$/},{b:/^\-\-\-/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+\+\+/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"addition",b:"^\\!",e:"$"}]}}),e.registerLanguage("django",function(e){var t={b:/\|[A-Za-z]+:?/,k:"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone",c:[e.QSM,e.ASM]};return{aliases:["jinja"],cI:!0,sL:"xml",c:[e.C(/\{%\s*comment\s*%}/,/\{%\s*endcomment\s*%}/),e.C(/\{#/,/#}/),{cN:"template-tag",b:/\{%/,e:/%}/,c:[{cN:"name",b:/\w+/,k:"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim",starts:{eW:!0,k:"in by as",c:[t],r:0}}]},{cN:"template-variable",b:/\{\{/,e:/}}/,c:[t]}]}}),e.registerLanguage("dockerfile",function(e){return{aliases:["docker"],cI:!0,k:"from maintainer cmd expose add copy entrypoint volume user workdir onbuild run env label",c:[e.HCM,{k:"run cmd entrypoint volume add copy workdir onbuild label",b:/^ *(onbuild +)?(run|cmd|entrypoint|volume|add|copy|workdir|label) +/,starts:{e:/[^\\]\n/,sL:"bash"}},{k:"from maintainer expose env user onbuild",b:/^ *(onbuild +)?(from|maintainer|expose|env|user|onbuild) +/,e:/[^\\]\n/,c:[e.ASM,e.QSM,e.NM,e.HCM]}]}}),e.registerLanguage("dos",function(e){var t=e.C(/@?rem\b/,/$/,{r:10}),r={cN:"symbol",b:"^\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\s+label)",r:0};return{aliases:["bat","cmd"],cI:!0,i:/\/\*/,k:{keyword:"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq",built_in:"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shiftsort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del"},c:[{cN:"variable",b:/%%[^ ]|%[^ ]+?%|![^ ]+?!/},{cN:"function",b:r.b,e:"goto:eof",c:[e.inherit(e.TM,{b:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),t]},{cN:"number",b:"\\b\\d+",r:0},t]}}),e.registerLanguage("ruby",function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r="and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",a={cN:"doctag",b:"@[A-Za-z]+"},n={b:"#<",e:">"},i=[e.C("#","$",{c:[a]}),e.C("^\\=begin","^\\=end",{c:[a],r:10}),e.C("^__END__","\\n$")],s={cN:"subst",b:"#\\{",e:"}",k:r},c={cN:"string",c:[e.BE,s],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/}]},o={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:r},l=[c,n,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(i)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:t}),o].concat(i)},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":",c:[c,{b:t}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"("+e.RSR+")\\s*",c:[n,{cN:"regexp",c:[e.BE,s],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(i),r:0}].concat(i);s.c=l,o.c=l;var d="[>?]>",u="[\\w#]+\\(\\w+\\):\\d+:\\d+>",b="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",p=[{b:/^\s*=>/,starts:{e:"$",c:l}},{cN:"meta",b:"^("+d+"|"+u+"|"+b+")",starts:{e:"$",c:l}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,i:/\/\*/,c:i.concat(p).concat(l)}}),e.registerLanguage("erb",function(e){return{sL:"xml",c:[e.C("<%#","%>"),{b:"<%[%=-]?",e:"[%-]?%>",sL:"ruby",eB:!0,eE:!0}]}}),e.registerLanguage("fsharp",function(e){var t={b:"<",e:">",c:[e.inherit(e.TM,{b:/'[a-zA-Z0-9_]+/})]};return{aliases:["fs"],k:"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield",i:/\/\*/,c:[{cN:"keyword",b:/\b(yield|return|let|do)!/},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},{cN:"string",b:'"""',e:'"""'},e.C("\\(\\*","\\*\\)"),{cN:"class",bK:"type",e:"\\(|=|$",eE:!0,c:[e.UTM,t]},{cN:"meta",b:"\\[<",e:">\\]",r:10},{cN:"symbol",b:"\\B('[A-Za-z])\\b",c:[e.BE]},e.CLCM,e.inherit(e.QSM,{i:null}),e.CNM]}}),e.registerLanguage("go",function(e){var t={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{aliases:["golang"],k:t,i:"</",c:[e.CLCM,e.CBCM,e.QSM,{cN:"string",b:"'",e:"[^\\\\]'"},{cN:"string",b:"`",e:"`"},{cN:"number",b:e.CNR+"[dflsi]?",r:0},e.CNM]}}),e.registerLanguage("haml",function(e){return{cI:!0,c:[{cN:"meta",b:"^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$",r:10},e.C("^\\s*(!=#|=#|-#|/).*$",!1,{r:0}),{b:"^\\s*(-|=|!=)(?!#)",starts:{e:"\\n",sL:"ruby"}},{cN:"tag",b:"^\\s*%",c:[{cN:"selector-tag",b:"\\w+"},{cN:"selector-id",b:"#[\\w-]+"},{cN:"selector-class",b:"\\.[\\w-]+"},{b:"{\\s*",e:"\\s*}",c:[{b:":\\w+\\s*=>",e:",\\s+",rB:!0,eW:!0,c:[{cN:"attr",b:":\\w+"},e.ASM,e.QSM,{b:"\\w+",r:0}]}]},{b:"\\(\\s*",e:"\\s*\\)",eE:!0,c:[{b:"\\w+\\s*=",e:"\\s+",rB:!0,eW:!0,c:[{cN:"attr",b:"\\w+",r:0},e.ASM,e.QSM,{b:"\\w+",r:0}]}]}]},{b:"^\\s*[=~]\\s*"},{b:"#{",starts:{e:"}",sL:"ruby"}}]}}),e.registerLanguage("haskell",function(e){var t={v:[e.C("--","$"),e.C("{-","-}",{c:["self"]})]},r={cN:"meta",b:"{-#",e:"#-}"},a={cN:"meta",b:"^#",e:"$"},n={cN:"type",b:"\\b[A-Z][\\w']*",r:0},i={b:"\\(",e:"\\)",i:'"',c:[r,a,{cN:"type",b:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e.inherit(e.TM,{b:"[_a-z][\\w']*"}),t]},s={b:"{",e:"}",c:i.c};return{aliases:["hs"],k:"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",c:[{bK:"module",e:"where",k:"module where",c:[i,t],i:"\\W\\.|;"},{b:"\\bimport\\b",e:"$",k:"import qualified as hiding",c:[i,t],i:"\\W\\.|;"},{cN:"class",b:"^(\\s*)?(class|instance)\\b",e:"where",k:"class family instance where",c:[n,i,t]},{cN:"class",b:"\\b(data|(new)?type)\\b",e:"$",k:"data family type newtype deriving",
+c:[r,n,i,s,t]},{bK:"default",e:"$",c:[n,i,t]},{bK:"infix infixl infixr",e:"$",c:[e.CNM,t]},{b:"\\bforeign\\b",e:"$",k:"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",c:[n,e.QSM,t]},{cN:"meta",b:"#!\\/usr\\/bin\\/env runhaskell",e:"$"},r,a,e.QSM,e.CNM,n,e.inherit(e.TM,{b:"^[_a-z][\\w']*"}),t,{b:"->|<-"}]}}),e.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",r:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}}),e.registerLanguage("ini",function(e){var t={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",r:10},{b:'"""',e:'"""',r:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"section",b:/^\s*\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_-]+\s*=\s*/,e:"$",rB:!0,c:[{cN:"attr",b:/[a-z0-9\[\]_-]+/},{b:/=/,eW:!0,r:0,c:[{cN:"literal",b:/\bon|off|true|false|yes|no\b/},{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},t,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM]}]}]}}),e.registerLanguage("java",function(e){var t=e.UIR+"(<"+e.UIR+">)?",r="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private",a="\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",n={cN:"number",b:a,r:0};return{aliases:["jsp"],k:r,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{b:/\w+@/,r:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"("+t+"\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:r,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:r,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},n,{cN:"meta",b:"@[A-Za-z]+"}]}}),e.registerLanguage("javascript",function(e){return{aliases:["js"],k:{keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},e.ASM,e.QSM,{cN:"string",b:"`",e:"`",c:[e.BE,{cN:"subst",b:"\\$\\{",e:"\\}"}]},e.CLCM,e.CBCM,{cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{b:/</,e:/>\s*[);\]]/,r:0,sL:"xml"}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:[e.CLCM,e.CBCM]}],i:/\[|%/},{b:/\$[(.]/},{b:"\\."+e.IR,r:0},{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor",e:/\{/,eE:!0}],i:/#/}}),e.registerLanguage("json",function(e){var t={literal:"true false null"},r=[e.QSM,e.CNM],a={e:",",eW:!0,eE:!0,c:r,k:t},n={b:"{",e:"}",c:[{cN:"attr",b:'\\s*"',e:'"\\s*:\\s*',eB:!0,eE:!0,c:[e.BE],i:"\\n",starts:a}],i:"\\S"},i={b:"\\[",e:"\\]",c:[e.inherit(a)],i:"\\S"};return r.splice(r.length,0,n,i),{c:r,k:t,i:"\\S"}}),e.registerLanguage("lisp",function(e){var t="[a-zA-Z_\\-\\+\\*\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\/\\<\\=\\>\\&\\#!]*",r="\\|[^]*?\\|",a="(\\-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|\\-)?\\d+)?",n={cN:"meta",b:"^#!",e:"$"},i={cN:"literal",b:"\\b(t{1}|nil)\\b"},s={cN:"number",v:[{b:a,r:0},{b:"#(b|B)[0-1]+(/[0-1]+)?"},{b:"#(o|O)[0-7]+(/[0-7]+)?"},{b:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{b:"#(c|C)\\("+a+" +"+a,e:"\\)"}]},c=e.inherit(e.QSM,{i:null}),o=e.C(";","$",{r:0}),l={b:"\\*",e:"\\*"},d={cN:"symbol",b:"[:&]"+t},u={b:t,r:0},b={b:r},p={b:"\\(",e:"\\)",c:["self",i,c,s,u]},m={c:[s,c,l,d,p,u],v:[{b:"['`]\\(",e:"\\)"},{b:"\\(quote ",e:"\\)",k:{name:"quote"}},{b:"'"+r}]},f={v:[{b:"'"+t},{b:"#'"+t+"(::"+t+")*"}]},g={b:"\\(\\s*",e:"\\)"},h={eW:!0,r:0};return g.c=[{cN:"name",v:[{b:t},{b:r}]},h],h.c=[m,f,g,i,s,c,o,l,d,b,u],{i:/\S/,c:[s,n,i,c,o,m,f,g,u]}}),e.registerLanguage("lua",function(e){var t="\\[=*\\[",r="\\]=*\\]",a={b:t,e:r,c:["self"]},n=[e.C("--(?!"+t+")","$"),e.C("--"+t,r,{c:[a],r:10})];return{l:e.UIR,k:{keyword:"and break do else elseif end false for if in local nil not or repeat return then true until while",built_in:"_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug io math os package string table"},c:n.concat([{cN:"function",bK:"function",e:"\\)",c:[e.inherit(e.TM,{b:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{cN:"params",b:"\\(",eW:!0,c:n}].concat(n)},e.CNM,e.ASM,e.QSM,{cN:"string",b:t,e:r,c:[a],r:5}])}}),e.registerLanguage("makefile",function(e){var t={cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]};return{aliases:["mk","mak"],c:[e.HCM,{b:/^\w+\s*\W*=/,rB:!0,r:0,starts:{e:/\s*\W*=/,eE:!0,starts:{e:/$/,r:0,c:[t]}}},{cN:"section",b:/^[\w]+:\s*$/},{cN:"meta",b:/^\.PHONY:/,e:/$/,k:".PHONY",l:/[\.\w]+/},{b:/^\t+/,e:/$/,r:0,c:[e.QSM,t]}]}}),e.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"`.+?`"},{b:"^( {4}| )",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:"^\\[.+\\]:",rB:!0,c:[{cN:"symbol",b:"\\[",e:"\\]:",eB:!0,eE:!0,starts:{cN:"link",e:"$"}}]}]}}),e.registerLanguage("matlab",function(e){var t=[e.CNM,{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]}],r={r:0,c:[{b:/'['\.]*/}]};return{k:{keyword:"break case catch classdef continue else elseif end enumerated events for function global if methods otherwise parfor persistent properties return spmd switch try while",built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson"},i:'(//|"|#|/\\*|\\s+/\\w+)',c:[{cN:"function",bK:"function",e:"$",c:[e.UTM,{cN:"params",v:[{b:"\\(",e:"\\)"},{b:"\\[",e:"\\]"}]}]},{b:/[a-zA-Z_][a-zA-Z_0-9]*'['\.]*/,rB:!0,r:0,c:[{b:/[a-zA-Z_][a-zA-Z_0-9]*/,r:0},r.c[0]]},{b:"\\[",e:"\\]",c:t,r:0,starts:r},{b:"\\{",e:/}/,c:t,r:0,starts:r},{b:/\)/,r:0,starts:r},e.C("^\\s*\\%\\{\\s*$","^\\s*\\%\\}\\s*$"),e.C("\\%","$")].concat(t)}}),e.registerLanguage("nginx",function(e){var t={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},r={eW:!0,l:"[a-z/_]+",k:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,t],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[t]},{cN:"regexp",c:[e.BE,t],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},t]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s+{",rB:!0,e:"{",c:[{cN:"section",b:e.UIR}],r:0},{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"attribute",b:e.UIR,starts:r}],r:0}],i:"[^\\s\\}]"}}),e.registerLanguage("objectivec",function(e){var t={cN:"built_in",b:"(AV|CA|CF|CG|CI|MK|MP|NS|UI)\\w+"},r={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},a=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:r,l:a,i:"</",c:[t,e.CLCM,e.CBCM,e.CNM,e.QSM,{cN:"string",v:[{b:'@"',e:'"',i:"\\n",c:[e.BE]},{b:"'",e:"[^\\\\]'",i:"[^\\\\][^']"}]},{cN:"meta",b:"#",e:"$",c:[{cN:"string",v:[{b:'"',e:'"'},{b:"<",e:">"}]}]},{cN:"class",b:"("+n.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:n,l:a,c:[e.UTM]},{b:"\\."+e.UIR,r:0}]}}),e.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},a={b:"->{",e:"}"},n={v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=[e.BE,r,n],s=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),a,{cN:"string",c:i,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"function",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",eE:!0,r:5,c:[e.TM]},{b:"-\\w\\b",r:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=s,a.c=s,{aliases:["pl"],k:t,c:s}}),e.registerLanguage("php",function(e){var t={b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},r={cN:"meta",b:/<\?(php)?|\?>/},a={cN:"string",c:[e.BE,r],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},n={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.CLCM,e.HCM,e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"},r]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},r,t,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",t,e.CBCM,a,n]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},a,n]}}),e.registerLanguage("python",function(e){var t={cN:"meta",b:/^(>>>|\.\.\.) /},r={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[t],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[t],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},e.ASM,e.QSM]},a={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},n={cN:"params",b:/\(/,e:/\)/,c:["self",t,a,r]};return{aliases:["py","gyp"],k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)/,c:[t,a,r,e.HCM,{v:[{cN:"function",bK:"def",r:10},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,n]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}}),e.registerLanguage("r",function(e){var t="([a-zA-Z]|\\.[a-zA-Z.])[a-zA-Z0-9._]*";return{c:[e.HCM,{b:t,l:t,k:{keyword:"function if in break next repeat else for return switch while try tryCatch stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...",literal:"NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10"},r:0},{cN:"number",b:"0[xX][0-9a-fA-F]+[Li]?\\b",r:0},{cN:"number",b:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",r:0},{cN:"number",b:"\\d+\\.(?!\\d)(?:i\\b)?",r:0},{cN:"number",b:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",r:0},{cN:"number",b:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",r:0},{b:"`",e:"`",r:0},{cN:"string",c:[e.BE],v:[{b:'"',e:'"'},{b:"'",e:"'"}]}]}}),e.registerLanguage("rust",function(e){var t="([uif](8|16|32|64|size))?",r=e.inherit(e.CBCM);return r.c.push("self"),{aliases:["rs"],k:{keyword:"alignof as be box break const continue crate do else enum extern false fn for if impl in let loop match mod mut offsetof once priv proc pub pure ref return self Self sizeof static struct super trait true type typeof unsafe unsized use virtual while where yield int i8 i16 i32 i64 uint u8 u32 u64 float f32 f64 str char bool",built_in:"Copy Send Sized Sync Drop Fn FnMut FnOnce drop Box ToOwned Clone PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator Option Some None Result Ok Err SliceConcatExt String ToString Vec assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln!"},l:e.IR+"!?",i:"</",c:[e.CLCM,r,e.inherit(e.QSM,{i:null}),{cN:"string",v:[{b:/r(#*)".*?"\1(?!#)/},{b:/'\\?(x\w{2}|u\w{4}|U\w{8}|.)'/}]},{cN:"symbol",b:/'[a-zA-Z_][a-zA-Z0-9_]*/},{cN:"number",v:[{b:"\\b0b([01_]+)"+t},{b:"\\b0o([0-7_]+)"+t},{b:"\\b0x([A-Fa-f0-9_]+)"+t},{b:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+t}],r:0},{cN:"function",bK:"fn",e:"(\\(|<)",eE:!0,c:[e.UTM]},{cN:"meta",b:"#\\!?\\[",e:"\\]"},{cN:"class",bK:"type",e:"(=|<)",c:[e.UTM],i:"\\S"},{cN:"class",bK:"trait enum",e:"{",c:[e.inherit(e.UTM,{endsParent:!0})],i:"[\\w\\d]"},{b:e.IR+"::"},{b:"->"}]}}),e.registerLanguage("scala",function(e){var t={cN:"meta",b:"@[A-Za-z]+"},r={cN:"subst",v:[{b:"\\$[A-Za-z0-9_]+"},{b:"\\${",e:"}"}]},a={cN:"string",v:[{b:'"',e:'"',i:"\\n",c:[e.BE]},{b:'"""',e:'"""',r:10},{b:'[a-z]+"',e:'"',i:"\\n",c:[e.BE,r]},{cN:"string",b:'[a-z]+"""',e:'"""',c:[r],r:10}]},n={cN:"symbol",b:"'\\w[\\w\\d_]*(?!')"},i={cN:"type",b:"\\b[A-Z][A-Za-z0-9_]*",r:0},s={cN:"title",b:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,r:0},c={cN:"class",bK:"class object trait type",e:/[:={\[\n;]/,eE:!0,c:[{bK:"extends with",r:10},{cN:"params",b:/\(/,e:/\)/,r:0},s]},o={cN:"function",bK:"def",e:/[:={\[(\n;]/,c:[s]};return{k:{literal:"true false null",keyword:"type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit"},c:[e.CLCM,e.CBCM,a,n,i,o,c,e.CNM,t]}}),e.registerLanguage("scheme",function(e){var t="[^\\(\\)\\[\\]\\{\\}\",'`;#|\\\\\\s]+",r="(\\-|\\+)?\\d+([./]\\d+)?",a=r+"[+\\-]"+r+"i",n={built_in:"case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... / ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci<? string-ci=? string-ci>=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string<? string=? string>=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"},i={cN:"meta",b:"^#!",e:"$"},s={cN:"literal",b:"(#t|#f|#\\\\"+t+"|#\\\\.)"},c={cN:"number",v:[{b:r,r:0},{b:a,r:0},{b:"#b[0-1]+(/[0-1]+)?"},{b:"#o[0-7]+(/[0-7]+)?"},{b:"#x[0-9a-f]+(/[0-9a-f]+)?"}]},o=e.QSM,l=[e.C(";","$",{r:0}),e.C("#\\|","\\|#")],d={b:t,r:0},u={cN:"symbol",b:"'"+t},b={eW:!0,r:0},p={v:[{b:"\\(",e:"\\)"},{b:"\\[",e:"\\]"}],c:[{cN:"name",b:t,l:t,k:n},b]};return b.c=[s,c,o,d,u,p].concat(l),{i:/\S/,c:[i,c,o,u,p].concat(l)}}),e.registerLanguage("smalltalk",function(e){var t="[a-z][a-zA-Z0-9_]*",r={cN:"string",b:"\\$.{1}"},a={cN:"symbol",b:"#"+e.UIR};return{aliases:["st"],k:"self super nil true false thisContext",c:[e.C('"','"'),e.ASM,{cN:"type",b:"\\b[A-Z][A-Za-z0-9_]*",r:0},{b:t+":",r:0},e.CNM,a,r,{b:"\\|[ ]*"+t+"([ ]+"+t+")*[ ]*\\|",rB:!0,e:/\|/,i:/\S/,c:[{b:"(\\|[ ]*)?"+t}]},{b:"\\#\\(",e:"\\)",c:[e.ASM,r,e.CNM,a]}]}}),e.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>{}*]/,c:[{bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke",e:/;/,eW:!0,k:{keyword:"abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound buffer_cache buffer_pool build bulk by byte byteordermark bytes c cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle d data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration e each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain export export_set extended extent external external_1 external_2 externally extract f failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function g general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour http i id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists k keep keep_duplicates key keys kill l language large last last_day last_insert_id last_value lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim m main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex n name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding p package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select self sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime t table tables tablespace tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",
+literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text varchar varying void"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}}),e.registerLanguage("tcl",function(e){return{aliases:["tk"],k:"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while",c:[e.C(";[ \\t]*#","$"),e.C("^[ \\t]*#","$"),{bK:"proc",e:"[\\{]",eE:!0,c:[{cN:"title",b:"[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",e:"[ \\t\\n\\r]",eW:!0,eE:!0}]},{eE:!0,v:[{b:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\(([a-zA-Z0-9_])*\\)",e:"[^a-zA-Z0-9_\\}\\$]"},{b:"\\$(\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*",e:"(\\))?[^a-zA-Z0-9_\\}\\$]"}]},{cN:"string",c:[e.BE],v:[e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},{cN:"number",v:[e.BNM,e.CNM]}]}}),e.registerLanguage("tex",function(e){var t={cN:"tag",b:/\\/,r:0,c:[{cN:"name",v:[{b:/[a-zA-Zа-яА-я]+[*]?/},{b:/[^a-zA-Zа-яА-я0-9]/}],starts:{eW:!0,r:0,c:[{cN:"string",v:[{b:/\[/,e:/\]/},{b:/\{/,e:/\}/}]},{b:/\s*=\s*/,eW:!0,r:0,c:[{cN:"number",b:/-?\d*\.?\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?/}]}]}}]};return{c:[t,{cN:"formula",c:[t],r:0,v:[{b:/\$\$/,e:/\$\$/},{b:/\$/,e:/\$/}]},e.C("%","$",{r:0})]}}),e.registerLanguage("vala",function(e){return{k:{keyword:"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var",built_in:"DBus GLib CCode Gee Object",literal:"false true null"},c:[{cN:"class",bK:"class interface delegate namespace",e:"{",eE:!0,i:"[^,:\\n\\s\\.]",c:[e.UTM]},e.CLCM,e.CBCM,{cN:"string",b:'"""',e:'"""',r:5},e.ASM,e.QSM,e.CNM,{cN:"meta",b:"^#",e:"$",r:2}]}}),e.registerLanguage("xquery",function(e){var t="for let if while then else return where group by xquery encoding versionmodule namespace boundary-space preserve strip default collation base-uri orderingcopy-namespaces order declare import schema namespace function option in allowing emptyat tumbling window sliding window start when only end when previous next stable ascendingdescending empty greatest least some every satisfies switch case typeswitch try catch andor to union intersect instance of treat as castable cast map array delete insert intoreplace value rename copy modify update",r="false true xs:string xs:integer element item xs:date xs:datetime xs:float xs:double xs:decimal QName xs:anyURI xs:long xs:int xs:short xs:byte attribute",a={b:/\$[a-zA-Z0-9\-]+/,r:5},n={cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},i={cN:"string",v:[{b:/"/,e:/"/,c:[{b:/""/,r:0}]},{b:/'/,e:/'/,c:[{b:/''/,r:0}]}]},s={cN:"meta",b:"%\\w+"},c={cN:"comment",b:"\\(:",e:":\\)",r:10,c:[{cN:"doctag",b:"@\\w+"}]},o={b:"{",e:"}"},l=[a,i,n,c,s,o];return o.c=l,{aliases:["xpath","xq"],cI:!1,l:/[a-zA-Z\$][a-zA-Z0-9_:\-]*/,i:/(proc)|(abstract)|(extends)|(until)|(#)/,k:{keyword:t,literal:r},c:l}}),e.registerLanguage("yaml",function(e){var t={literal:"{ } true false yes no Yes No True False null"},r="^[ \\-]*",a="[a-zA-Z_][\\w\\-]*",n={cN:"attr",v:[{b:r+a+":"},{b:r+'"'+a+'":'},{b:r+"'"+a+"':"}]},i={cN:"template-variable",v:[{b:"{{",e:"}}"},{b:"%{",e:"}"}]},s={cN:"string",r:0,v:[{b:/'/,e:/'/},{b:/"/,e:/"/}],c:[e.BE,i]};return{cI:!0,aliases:["yml","YAML","yaml"],c:[n,{cN:"meta",b:"^---s*$",r:10},{cN:"string",b:"[\\|>] *$",rE:!0,c:s.c,e:n.v[0].b},{b:"<%[%=-]?",e:"[%-]?%>",sL:"ruby",eB:!0,eE:!0,r:0},{cN:"type",b:"!!"+e.UIR},{cN:"meta",b:"&"+e.UIR+"$"},{cN:"meta",b:"\\*"+e.UIR+"$"},{cN:"bullet",b:"^ *-",r:0},s,e.HCM,e.CNM],k:t}}),e}); \ No newline at end of file
diff --git a/js/jquery.syntax.brush.apache.js b/js/jquery.syntax.brush.apache.js
deleted file mode 100644
index 43bef262..00000000
--- a/js/jquery.syntax.brush.apache.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// brush: "apache" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('apache', function(brush) {
- brush.push({
- pattern: /(<(\w+).*?>)/gi,
- matches: Syntax.extractMatches(
- {
- klass: 'tag',
- allow: ['attribute', 'tag-name', 'string']
- },
- {
- klass: 'tag-name',
- process: Syntax.lib.webLinkProcess("site:http://httpd.apache.org/docs/trunk/ directive", true)
- })
- });
-
- brush.push({
- pattern: /(<\/(\w+).*?>)/gi,
- matches: Syntax.extractMatches({klass: 'tag', allow: ['tag-name']}, {klass: 'tag-name'})
- });
-
- brush.push({
- pattern: /^\s+([A-Z][\w]+)/gm,
- matches: Syntax.extractMatches({
- klass: 'function',
- allow: ['attribute'],
- process: Syntax.lib.webLinkProcess("site:http://httpd.apache.org/docs/trunk/ directive", true)
- })
- });
-
- brush.push(Syntax.lib.perlStyleComment);
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
-
- brush.push(Syntax.lib.webLink);
-});
-
diff --git a/js/jquery.syntax.brush.applescript.js b/js/jquery.syntax.brush.applescript.js
deleted file mode 100644
index 198d0763..00000000
--- a/js/jquery.syntax.brush.applescript.js
+++ /dev/null
@@ -1,57 +0,0 @@
-// brush: "applescript" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('applescript', function(brush) {
- var keywords = ["after", "before", "beginning", "continue", "copy", "each", "end", "every", "from", "get", "global", "in", "local", "named", "of", "return", "set", "some", "that", "the", "then", "times", "to", "where", "whose", "with", "without"]
-
- brush.push(keywords, {klass: 'keyword'});
-
- var ordinals = ["first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "ninth", "tenth", "last", "front", "back", "middle"];
-
- brush.push(ordinals, {klass: 'keyword'});
-
- var specials = ["activate", "add", "alias", "AppleScript", "ask", "attachment", "boolean", "class", "constant", "delete", "duplicate", "empty", "exists", "false", "id", "integer", "list", "make", "message", "modal", "modified", "new", "no", "paragraph", "pi", "properties", "quit", "real", "record", "remove", "rest", "result", "reveal", "reverse", "run", "running", "save", "string", "true", "word", "yes"];
-
- brush.push(specials, {klass: 'keyword'});
-
- var comments = [
- /(\-\-|#).*$/gm,
- /\(\*(?:[\s\S]*?\(\*[\s\S]*?\*\))*[\s\S]*?\*\)/gm,
- Syntax.lib.perlStyleComment.pattern
- ];
-
- brush.push(Syntax.lib.webLink);
- brush.push(comments, {klass: 'comment', allow: ['href']});
-
- brush.push(Syntax.lib.doubleQuotedString);
-
- var constants = [
- /\b\d+(st|nd|rd|th)\b/g,
- /(-)?(\d)+(\.(\d)?)?(E\+(\d)+)?/g
- ];
-
- brush.push(constants, {klass: 'constant'});
-
- brush.push({
- pattern: /&|¬|=|≠|>|<|≥|>=|≤|<=|\*|\+|-|\/|÷|\^/g,
- klass: 'operator'
- });
-
- brush.push({
- pattern: /\b(?:and|as|div|mod|not|or|return(?!\s&)(ing)?|equals|(is(n't| not)? )?equal( to)?|does(n't| not) equal|(is(n't| not)? )?(greater|less) than( or equal( to)?)?|(comes|does(n't| not) come) (after|before)|is(n't| not)?( in)? (back|front) of|is(n't| not)? behind|is(n't| not)?( (in|contained by))?|does(n't| not) contain|contain(s)?|(start|begin|end)(s)? with|((but|end) )?(consider|ignor)ing|prop(erty)?|(a )?ref(erence)?( to)?|repeat (until|while|with)|((end|exit) )?repeat|((else|end) )?if|else|(end )?(script|tell|try)|(on )?error|(put )?into|(of )?(it|me)|its|my|with (timeout( of)?|transaction)|end (timeout|transaction))\b/g,
- klass: 'keyword'
- })
-
- brush.push({
- pattern: /\b(?:about|above|against|around|at|below|beneath|beside|between|by|(apart|aside) from|(instead|out) of|into|on(to)?|over|since|thr(ough|u)|under)\b/g,
- klass: 'keyword'
- })
-
- brush.push({
- pattern: /\b(?:adding folder items to|after receiving|choose( ((remote )?application|color|folder|from list|URL))?|clipboard info|set the clipboard to|(the )?clipboard|entire contents|display(ing| (alert|dialog|mode))?|document( (edited|file|nib name))?|file( (name|type))?|(info )?for|giving up after|(name )?extension|quoted form|return(ed)?|second(?! item)(s)?|list (disks|folder)|text item(s| delimiters)?|(Unicode )?text|(disk )?item(s)?|((current|list) )?view|((container|key) )?window|with (data|icon( (caution|note|stop))?|parameter(s)?|prompt|properties|seed|title)|case|diacriticals|hyphens|numeric strings|punctuation|white space|folder creation|application(s( folder)?| (processes|scripts position|support))?|((desktop )?(pictures )?|(documents|downloads|favorites|home|keychain|library|movies|music|public|scripts|sites|system|users|utilities|workflows) )folder|desktop|Folder Action scripts|font(s| panel)?|help|internet plugins|modem scripts|(system )?preferences|printer descriptions|scripting (additions|components)|shared (documents|libraries)|startup (disk|items)|temporary items|trash|on server|in AppleTalk zone|((as|long|short) )?user name|user (ID|locale)|(with )?password|in (bundle( with identifier)?|directory)|(close|open for) access|read|write( permission)?|(g|s)et eof|using( delimiters)?|starting at|default (answer|button|color|country code|entr(y|ies)|identifiers|items|name|location|script editor)|hidden( answer)?|open(ed| (location|untitled))?|error (handling|reporting)|(do( shell)?|load|run|store) script|administrator privileges|altering line endings|get volume settings|(alert|boot|input|mount|output|set) volume|output muted|(fax|random )?number|round(ing)?|up|down|toward zero|to nearest|as taught in school|system (attribute|info)|((AppleScript( Studio)?|system) )?version|(home )?directory|(IPv4|primary Ethernet) address|CPU (type|speed)|physical memory|time (stamp|to GMT)|replacing|ASCII (character|number)|localized string|from table|offset|summarize|beep|delay|say|(empty|multiple) selections allowed|(of|preferred) type|invisibles|showing( package contents)?|editable URL|(File|FTP|News|Media|Web) [Ss]ervers|Telnet hosts|Directory services|Remote applications|waiting until completion|saving( (in|to))?|path (for|to( (((current|frontmost) )?application|resource))?)|POSIX (file|path)|(background|RGB) color|(OK|cancel) button name|cancel button|button(s)?|cubic ((centi)?met(re|er)s|yards|feet|inches)|square ((kilo)?met(re|er)s|miles|yards|feet)|(centi|kilo)?met(re|er)s|miles|yards|feet|inches|lit(re|er)s|gallons|quarts|(kilo)?grams|ounces|pounds|degrees (Celsius|Fahrenheit|Kelvin)|print( (dialog|settings))?|clos(e(able)?|ing)|(de)?miniaturized|miniaturizable|zoom(ed|able)|attribute run|action (method|property|title)|phone|email|((start|end)ing|home) page|((birth|creation|current|custom|modification) )?date|((((phonetic )?(first|last|middle))|computer|host|maiden|related) |nick)?name|aim|icq|jabber|msn|yahoo|address(es)?|save addressbook|should enable action|city|country( code)?|formatte(r|d address)|(palette )?label|state|street|zip|AIM [Hh]andle(s)?|my card|select(ion| all)?|unsaved|(alpha )?value|entr(y|ies)|group|(ICQ|Jabber|MSN) handle|person|people|company|department|icon image|job title|note|organization|suffix|vcard|url|copies|collating|pages (across|down)|request print time|target( printer)?|((GUI Scripting|Script menu) )?enabled|show Computer scripts|(de)?activated|awake from nib|became (key|main)|call method|of (class|object)|center|clicked toolbar item|closed|for document|exposed|(can )?hide|idle|keyboard (down|up)|event( (number|type))?|launch(ed)?|load (image|movie|nib|sound)|owner|log|mouse (down|dragged|entered|exited|moved|up)|move|column|localization|resource|script|register|drag (info|types)|resigned (active|key|main)|resiz(e(d)?|able)|right mouse (down|dragged|up)|scroll wheel|(at )?index|should (close|open( untitled)?|quit( after last window closed)?|zoom)|((proposed|screen) )?bounds|show(n)?|behind|in front of|size (mode|to fit)|update(d| toolbar item)?|was (hidden|miniaturized)|will (become active|close|finish launching|hide|miniaturize|move|open|quit|(resign )?active|((maximum|minimum|proposed) )?size|show|zoom)|bundle|data source|movie|pasteboard|sound|tool(bar| tip)|(color|open|save) panel|coordinate system|frontmost|main( (bundle|menu|window))?|((services|(excluded from )?windows) )?menu|((executable|frameworks|resource|scripts|shared (frameworks|support)) )?path|(selected item )?identifier|data|content(s| view)?|character(s)?|click count|(command|control|option|shift) key down|context|delta (x|y|z)|key( code)?|location|pressure|unmodified characters|types|(first )?responder|playing|(allowed|selectable) identifiers|allows customization|(auto saves )?configuration|visible|image( name)?|menu form representation|tag|user(-| )defaults|associated file name|(auto|needs) display|current field editor|floating|has (resize indicator|shadow)|hides when deactivated|level|minimized (image|title)|opaque|position|release when closed|sheet|title(d)?)\b/g,
- klass: 'keyword'
- })
-});
diff --git a/js/jquery.syntax.brush.assembly.js b/js/jquery.syntax.brush.assembly.js
deleted file mode 100644
index 91b48556..00000000
--- a/js/jquery.syntax.brush.assembly.js
+++ /dev/null
@@ -1,37 +0,0 @@
-// brush: "assembly" aliases: ["asm"]
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('assembly', function(brush) {
- brush.push(Syntax.lib.cStyleComment);
- brush.push(Syntax.lib.cppStyleComment);
-
- brush.push({pattern: /\.[a-zA-Z_][a-zA-Z0-9_]*/gm, klass: 'directive'});
-
- brush.push({pattern: /^[a-zA-Z_][a-zA-Z0-9_]*:/gm, klass: 'label'});
-
- brush.push({
- pattern: /^\s*([a-zA-Z]+)/gm,
- matches: Syntax.extractMatches({klass: 'function'})
- });
-
- brush.push({pattern: /(-[0-9]+)|(\b[0-9]+)|(\$[0-9]+)/g, klass: 'constant'});
- brush.push({pattern: /(\-|\b|\$)(0x[0-9a-f]+|[0-9]+|[a-z0-9_]+)/gi, klass: 'constant'});
-
- brush.push({pattern: /%\w+/g, klass: 'register'});
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- // Numbers
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-
- // Comments
- brush.push(Syntax.lib.perlStyleComment);
- brush.push(Syntax.lib.webLink);
-});
diff --git a/js/jquery.syntax.brush.bash-script.js b/js/jquery.syntax.brush.bash-script.js
deleted file mode 100644
index 1296edf5..00000000
--- a/js/jquery.syntax.brush.bash-script.js
+++ /dev/null
@@ -1,67 +0,0 @@
-// brush: "bash-script" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('bash-script', function(brush) {
- var operators = ["&&", "|", ";", "{", "}"];
- brush.push(operators, {klass: 'operator'});
-
- brush.push({
- pattern: /(?:^|\||;|&&)\s*((?:"([^"]|\\")+"|'([^']|\\')+'|\\\n|.|[ \t])+?)(?=$|\||;|&&)/gmi,
- matches: Syntax.extractMatches({brush: 'bash-statement'})
- });
-});
-
-Syntax.register('bash-statement', function(brush) {
- var keywords = ["break", "case", "continue", "do", "done", "elif", "else", "eq", "fi", "for", "function", "ge", "gt", "if", "in", "le", "lt", "ne", "return", "then", "until", "while"];
- brush.push(keywords, {klass: 'keyword'});
-
- var operators = [">", "<", "=", "`", "--", "{", "}", "(", ")", "[", "]"];
- brush.push(operators, {klass: 'operator'});
-
- brush.push({
- pattern: /\(\((.*?)\)\)/gmi,
- klass: 'expression',
- allow: ['variable', 'string', 'operator', 'constant']
- });
-
- brush.push({
- pattern: /`([\s\S]+?)`/gmi,
- matches: Syntax.extractMatches({brush: 'bash-script', debug: true})
- });
-
- brush.push(Syntax.lib.perlStyleComment);
-
- // Probably need to write a real parser here rather than using regular expressions, it is too fragile
- // and misses lots of edge cases (e.g. nested brackets, delimiters).
- brush.push({
- pattern: /^\s*((?:\S+?=\$?(?:\[[^\]]+\]|\(\(.*?\)\)|"(?:[^"]|\\")+"|'(?:[^']|\\')+'|\S+)\s*)*)((?:\S+)?)/gmi,
- matches: Syntax.extractMatches(
- {klass: 'env', allow: ['variable', 'string', 'operator', 'constant', 'expression']},
- {klass: 'function', allow: ['variable', 'string']}
- )
- });
-
- brush.push({
- pattern: /(\S+?)=/gmi,
- matches: Syntax.extractMatches({klass: 'variable'}),
- only: ['env']
- });
-
- brush.push({
- pattern: /\$\w+/g,
- klass: 'variable'
- });
-
- brush.push({pattern: /\s\-+\w+/g, klass: 'option'})
-
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
-
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-
- brush.push(Syntax.lib.webLink);
-});
diff --git a/js/jquery.syntax.brush.bash.js b/js/jquery.syntax.brush.bash.js
deleted file mode 100644
index d08464e6..00000000
--- a/js/jquery.syntax.brush.bash.js
+++ /dev/null
@@ -1,33 +0,0 @@
-// brush: "bash" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.brushes.dependency('bash', 'bash-script');
-
-Syntax.register('bash', function(brush) {
- brush.push({
- pattern: /^([\w@:~ ]*?[\$|\#])\s+(.*?)$/gm,
- matches: Syntax.extractMatches({klass: 'prompt'}, {brush: 'bash-script'})
- });
-
- brush.push({
- pattern: /^\-\- .*$/gm,
- klass: 'comment',
- allow: ['href']
- });
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- // Numbers
- brush.push(Syntax.lib.webLink);
-
- brush.push({
- klass: 'stderr',
- allow: ['string', 'comment', 'constant', 'href']
- });
-});
diff --git a/js/jquery.syntax.brush.basic.js b/js/jquery.syntax.brush.basic.js
deleted file mode 100644
index 1cc1d74b..00000000
--- a/js/jquery.syntax.brush.basic.js
+++ /dev/null
@@ -1,51 +0,0 @@
-// brush: "basic" aliases: ['vb']
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.lib.vbStyleComment = {pattern: /' .*$/gm, klass: 'comment', allow: ['href']};
-
-Syntax.register('basic', function(brush) {
- var keywords = ["AddHandler", "AddressOf", "Alias", "And", "AndAlso", "Ansi", "As", "Assembly", "Auto", "ByRef", "ByVal", "Call", "Case", "Catch", "Declare", "Default", "Delegate", "Dim", "DirectCast", "Do", "Each", "Else", "ElseIf", "End", "Enum", "Erase", "Error", "Event", "Exit", "Finally", "For", "Function", "Get", "GetType", "GoSub", "GoTo", "Handles", "If", "Implements", "Imports", "In", "Inherits", "Interface", "Is", "Let", "Lib", "Like", "Loop", "Mod", "Module", "MustOverride", "Namespace", "New", "Next", "Not", "On", "Option", "Optional", "Or", "OrElse", "Overloads", "Overridable", "Overrides", "ParamArray", "Preserve", "Property", "RaiseEvent", "ReadOnly", "ReDim", "REM", "RemoveHandler", "Resume", "Return", "Select", "Set", "Static", "Step", "Stop", "Structure", "Sub", "SyncLock", "Then", "Throw", "To", "Try", "TypeOf", "Unicode", "Until", "When", "While", "With", "WithEvents", "WriteOnly", "Xor", "ExternalSource", "Region", "Print", "Class"];
-
- var operators = ["-", "&", "&=", "*", "*=", "/", "/=", "\\", "\=", "^", "^=", "+", "+=", "=", "-="];
-
- var types = ["CBool", "CByte", "CChar", "CDate", "CDec", "CDbl", "Char", "CInt", "CLng", "CObj", "Const", "CShort", "CSng", "CStr", "CType", "Date", "Decimal", "Variant", "String", "Short", "Long", "Single", "Double", "Object", "Integer", "Boolean", "Byte", "Char"];
-
- var operators = ["+", "-", "*", "/", "+=", "-=", "*=", "/=", "=", ":=", "==", "!=", "!", "%", "?", ">", "<", ">=", "<=", "&&", "||", "&", "|", "^", ".", "~", "..", ">>", "<<", ">>>", "<<<", ">>=", "<<=", ">>>=", "<<<=", "%=", "^=", "@"];
-
- var values = ["Me", "MyClass", "MyBase", "super", "True", "False", "Nothing", /[A-Z][A-Z0-9_]+/g];
-
- var access = ["Public", "Protected", "Private", "Shared", "Friend", "Shadows", "MustInherit", "NotInheritable", "NotOverridable"];
-
- brush.push(types, {klass: 'type'});
- brush.push(keywords, {klass: 'keyword', options: 'gi'});
- brush.push(operators, {klass: 'operator'});
- brush.push(access, {klass: 'access'});
- brush.push(values, {klass: 'constant'});
-
- brush.push(Syntax.lib.decimalNumber);
-
- // ClassNames (CamelCase)
- brush.push(Syntax.lib.camelCaseType);
-
- brush.push(Syntax.lib.vbStyleComment);
-
- brush.push(Syntax.lib.webLink);
-
- // Strings
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- brush.postprocess = function (options, html, container) {
- var queryURI = "http://social.msdn.microsoft.com/Search/en-us?query=";
-
- jQuery('.function', html).each(function() {
- var text = jQuery(this).text();
- jQuery(this).replaceWith(jQuery('<a>').attr('href', queryURI + encodeURIComponent(text)).text(text));
- });
-
- return html;
- };
-});
diff --git a/js/jquery.syntax.brush.clang.js b/js/jquery.syntax.brush.clang.js
deleted file mode 100644
index ed30d05b..00000000
--- a/js/jquery.syntax.brush.clang.js
+++ /dev/null
@@ -1,89 +0,0 @@
-// brush: "clang" aliases: ["cpp", "c++", "c", "objective-c"]
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('clang', function(brush) {
- var keywords = ["@interface", "@implementation", "@protocol", "@end", "@try", "@throw", "@catch", "@finally", "@class", "@selector", "@encode", "@synchronized", "@property", "@synthesize", "@dynamic", "struct", "break", "continue", "else", "for", "switch", "case", "default", "enum", "goto", "register", "sizeof", "typedef", "volatile", "do", "extern", "if", "return", "static", "union", "while", "asm", "dynamic_cast", "namespace", "reinterpret_cast", "try", "explicit", "static_cast", "typeid", "catch", "operator", "template", "class", "const_cast", "inline", "throw", "virtual", "IBOutlet"];
-
- var access = ["@private", "@protected", "@public", "@required", "@optional", "private", "protected", "public", "friend", "using"];
-
- var typeModifiers = ["mutable", "auto", "const", "register", "typename", "abstract"];
- var types = ["double", "float", "int", "short", "char", "long", "signed", "unsigned", "bool", "void", "id"];
-
- var operators = ["+", "*", "/", "-", "&", "|", "~", "!", "%", "<", "=", ">", "[", "]", "new", "delete", "in"];
-
- var values = ["this", "true", "false", "NULL", "YES", "NO", "nil"];
-
- brush.push(values, {klass: 'constant'});
- brush.push(typeModifiers, {klass: 'keyword'})
- brush.push(types, {klass: 'type'});
- brush.push(keywords, {klass: 'keyword'});
- brush.push(operators, {klass: 'operator'});
- brush.push(access, {klass: 'access'});
-
- // Objective-C properties
- brush.push({
- pattern: /@property\((.*)\)[^;]+;/gmi,
- klass: 'objective-c-property',
- allow: '*'
- });
-
- var propertyAttributes = ["getter", "setter", "readwrite", "readonly", "assign", "retain", "copy", "nonatomic"];
-
- brush.push(propertyAttributes, {
- klass: 'keyword',
- only: ['objective-c-property']
- });
-
- // Objective-C strings
-
- brush.push({
- pattern: /@(?=")/g,
- klass: 'string'
- });
-
- // Objective-C classes, C++ classes, C types, etc.
- brush.push(Syntax.lib.camelCaseType);
- brush.push(Syntax.lib.cStyleType);
- brush.push({
- pattern: /(?:class|struct|enum|namespace)\s+([^{;\s]+)/gmi,
- matches: Syntax.extractMatches({klass: 'type'})
- });
-
- brush.push({
- pattern: /#.*$/gmi,
- klass: 'preprocessor',
- allow: ['string']
- });
-
- brush.push(Syntax.lib.cStyleComment);
- brush.push(Syntax.lib.cppStyleComment);
- brush.push(Syntax.lib.webLink);
-
- // Objective-C style functions
- brush.push({pattern: /\w+:(?=.*(\]|;|\{))(?!:)/g, klass: 'function'});
-
- brush.push({
- pattern: /[^:\[]\s+(\w+)(?=\])/g,
- matches: Syntax.extractMatches({klass: 'function'})
- });
-
- brush.push({
- pattern: /-\s*(\([^\)]+?\))?\s*(\w+)\s*\{/g,
- matches: Syntax.extractMatches({index: 2, klass: 'function'})
- });
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- // Numbers
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-
- brush.push(Syntax.lib.cStyleFunction);
-});
-
diff --git a/js/jquery.syntax.brush.csharp.js b/js/jquery.syntax.brush.csharp.js
deleted file mode 100644
index bb4d9aa8..00000000
--- a/js/jquery.syntax.brush.csharp.js
+++ /dev/null
@@ -1,47 +0,0 @@
-// brush: "csharp" aliases: ["c-sharp", "c#"]
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('csharp', function(brush) {
- var keywords = ["abstract", "add", "alias", "ascending", "base", "break", "case", "catch", "class", "const", "continue", "default", "delegate", "descending", "do", "dynamic", "else", "enum", "event", "explicit", "extern", "finally", "for", "foreach", "from", "get", "global", "goto", "group", "if", "implicit", "in", "interface", "into", "join", "let", "lock", "namespace", "new", "operator", "orderby", "out", "override", "params", "partial", "readonly", "ref", "remove", "return", "sealed", "select", "set", "stackalloc", "static", "struct", "switch", "throw", "try", "unsafe", "using", "value", "var", "virtual", "volatile", "where", "while", "yield"];
-
- var access = ["public", "private", "internal", "protected"];
-
- var types = ["object", "bool", "byte", "fixed", "float", "uint", "char", "ulong", "ushort", "decimal", "int", "sbyte", "short", "void", "long", "string", "double"];
-
- var operators = ["+", "-", "*", "/", "%", "&", "|", "^", "!", "~", "&&", "||", "++", "--", "<<", ">>", "==", "!=", "<", ">", "<=", ">=", "=", "?", "new", "as", "is", "sizeof", "typeof", "checked", "unchecked"];
-
- var values = ["this", "true", "false", "null"];
-
- brush.push(values, {klass: 'constant'});
- brush.push(types, {klass: 'type'});
- brush.push(keywords, {klass: 'keyword'});
- brush.push(operators, {klass: 'operator'});
- brush.push(access, {klass: 'access'});
-
- // Functions
- brush.push(Syntax.lib.cStyleFunction);
- brush.push({
- pattern: /(?:\.)([a-z_][a-z0-9_]+)/gi,
- matches: Syntax.extractMatches({klass: 'function'})
- });
-
- // Camel Case Types
- brush.push(Syntax.lib.camelCaseType);
-
- // Comments
- brush.push(Syntax.lib.cStyleComment);
- brush.push(Syntax.lib.cppStyleComment);
- brush.push(Syntax.lib.webLink);
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-});
-
diff --git a/js/jquery.syntax.brush.css.js b/js/jquery.syntax.brush.css.js
deleted file mode 100644
index 3a0fc5b5..00000000
--- a/js/jquery.syntax.brush.css.js
+++ /dev/null
@@ -1,80 +0,0 @@
-// brush: "css" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('css', function(brush) {
- var colorNames = ["AliceBlue", "AntiqueWhite", "Aqua", "Aquamarine", "Azure", "Beige", "Bisque", "Black", "BlanchedAlmond", "Blue", "BlueViolet", "Brown", "BurlyWood", "CadetBlue", "Chartreuse", "Chocolate", "Coral", "CornflowerBlue", "Cornsilk", "Crimson", "Cyan", "DarkBlue", "DarkCyan", "DarkGoldenRod", "DarkGray", "DarkGreen", "DarkKhaki", "DarkMagenta", "DarkOliveGreen", "Darkorange", "DarkOrchid", "DarkRed", "DarkSalmon", "DarkSeaGreen", "DarkSlateBlue", "DarkSlateGray", "DarkTurquoise", "DarkViolet", "DeepPink", "DeepSkyBlue", "DimGray", "DodgerBlue", "FireBrick", "FloralWhite", "ForestGreen", "Fuchsia", "Gainsboro", "GhostWhite", "Gold", "GoldenRod", "Gray", "Green", "GreenYellow", "HoneyDew", "HotPink", "IndianRed", "Indigo", "Ivory", "Khaki", "Lavender", "LavenderBlush", "LawnGreen", "LemonChiffon", "LightBlue", "LightCoral", "LightCyan", "LightGoldenRodYellow", "LightGrey", "LightGreen", "LightPink", "LightSalmon", "LightSeaGreen", "LightSkyBlue", "LightSlateGray", "LightSteelBlue", "LightYellow", "Lime", "LimeGreen", "Linen", "Magenta", "Maroon", "MediumAquaMarine", "MediumBlue", "MediumOrchid", "MediumPurple", "MediumSeaGreen", "MediumSlateBlue", "MediumSpringGreen", "MediumTurquoise", "MediumVioletRed", "MidnightBlue", "MintCream", "MistyRose", "Moccasin", "NavajoWhite", "Navy", "OldLace", "Olive", "OliveDrab", "Orange", "OrangeRed", "Orchid", "PaleGoldenRod", "PaleGreen", "PaleTurquoise", "PaleVioletRed", "PapayaWhip", "PeachPuff", "Peru", "Pink", "Plum", "PowderBlue", "Purple", "Red", "RosyBrown", "RoyalBlue", "SaddleBrown", "Salmon", "SandyBrown", "SeaGreen", "SeaShell", "Sienna", "Silver", "SkyBlue", "SlateBlue", "SlateGray", "Snow", "SpringGreen", "SteelBlue", "Tan", "Teal", "Thistle", "Tomato", "Turquoise", "Violet", "Wheat", "White", "WhiteSmoke", "Yellow", "YellowGreen"];
-
- var colorPatterns = ["#[0-9a-f]{3,6}", "rgba?\\(.+?\\)", "hsla?\\(.+?\\)"];
-
- var colorMatcher = [].concat(
- jQuery.map(colorNames, function(pattern) {
- return "(" + Syntax.Brush.convertStringToTokenPattern(pattern, true) + ")";
- }),
- jQuery.map(colorPatterns, function(pattern) {
- return "(" + Syntax.Brush.convertStringToTokenPattern(pattern, false) + ")";
- })
- );
-
- brush.push({
- pattern: /\(.*?\)/g,
- allow: '*',
- disallow: ['property']
- });
-
- brush.push({
- pattern: /\s*([\:\.\[\]\"\'\=\s\w#\.\-,]+)\s+\{/gm,
- matches: Syntax.extractMatches({klass: 'selector', allow: ['string']})
- });
-
- brush.push({
- pattern: new RegExp(colorMatcher.join("|"), "gi"),
- klass: 'color',
- process: function (element, match) {
- var text = Syntax.innerText(element);
- var colourBox = document.createElement('span');
- colourBox.className = 'colour-box';
-
- var sampleColour = document.createElement('span');
- sampleColour.className = 'sample';
- sampleColour.style.backgroundColor = text;
- sampleColour.appendChild(document.createTextNode('&nbsp;&nbsp;'))
- colourBox.appendChild(sampleColour);
-
- element.appendChild(colourBox);
- return element;
- }
- });
-
- brush.push(Syntax.lib.cStyleComment);
- brush.push(Syntax.lib.webLink);
-
- brush.push({
- pattern: /\{(.|\n)*?\}/g,
- klass: 'properties',
- allow: '*'
- });
-
- brush.push({
- pattern: /\:(.*?(?=\})|(.|\n)*?(?=(\}|\;)))/g,
- matches: Syntax.extractMatches({klass: 'value', allow: ['color'], only: ['properties']})
- });
-
- brush.push({
- pattern: /([\-\w]+):/g,
- matches: Syntax.extractMatches({
- klass: 'property',
- process: Syntax.lib.webLinkProcess("http://cssdocs.org/")
- })
- });
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- brush.push(Syntax.lib.cStyleFunction);
-});
-
diff --git a/js/jquery.syntax.brush.diff.js b/js/jquery.syntax.brush.diff.js
deleted file mode 100644
index e55b83e4..00000000
--- a/js/jquery.syntax.brush.diff.js
+++ /dev/null
@@ -1,24 +0,0 @@
-// brush: "diff" aliases: ["patch"]
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('diff', function(brush) {
- brush.push({pattern: /^\+\+\+.*$/gm, klass: 'add'});
- brush.push({pattern: /^\-\-\-.*$/gm, klass: 'del'});
-
- brush.push({pattern: /^@@.*@@/gm, klass: 'offset'});
-
- brush.push({pattern: /^\+[^\+]{1}.*$/gm, klass: 'insert'});
- brush.push({pattern: /^\-[^\-]{1}.*$/gm, klass: 'remove'});
-
- brush.postprocess = function (options, html, container) {
- $('.insert', html).closest('.source').addClass('insert-line');
- $('.remove', html).closest('.source').addClass('remove-line');
- $('.offset', html).closest('.source').addClass('offset-line');
-
- return html;
- };
-});
-
diff --git a/js/jquery.syntax.brush.go.js b/js/jquery.syntax.brush.go.js
deleted file mode 100644
index a3764876..00000000
--- a/js/jquery.syntax.brush.go.js
+++ /dev/null
@@ -1,47 +0,0 @@
-// brush: "go" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('go', function(brush) {
- var keywords = ["break", "default", "func", "interface", "select", "case", "defer", "go", "map", "struct", "chan", "else", "goto", "package", "switch", "const", "fallthrough", "if", "range", "type", "continue", "for", "import", "return", "var"];
-
- var types = [
- /u?int\d*/g,
- /float\d+/g,
- /complex\d+/g,
- "byte",
- "uintptr",
- "string",
- ];
-
- var operators = ["+", "&", "+=", "&=", "&&", "==", "!=", "-", "|", "-=", "|=", "||", "<", "<=", "*", "^", "*=", "^=", "<-", ">", ">=", "/", "<<", "/=", "<<=", "++", "=", ":=", ",", ";", "%", ">>", "%=", ">>=", "--", "!", "...", ".", ":", "&^", "&^="];
-
- var values = ["true", "false", "iota", "nil"];
-
- var functions = ["append", "cap", "close", "complex", "copy", "imag", "len", "make", "new", "panic", "print", "println", "real", "recover"];
-
- brush.push(values, {klass: 'constant'});
- brush.push(types, {klass: 'type'});
- brush.push(keywords, {klass: 'keyword'});
- brush.push(operators, {klass: 'operator'});
- brush.push(functions, {klass: 'function'});
-
- brush.push(Syntax.lib.cStyleFunction);
-
- brush.push(Syntax.lib.camelCaseType);
-
- brush.push(Syntax.lib.cStyleComment);
- brush.push(Syntax.lib.cppStyleComment);
- brush.push(Syntax.lib.webLink);
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- // Numbers
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-});
diff --git a/js/jquery.syntax.brush.haskell.js b/js/jquery.syntax.brush.haskell.js
deleted file mode 100644
index 77deeba6..00000000
--- a/js/jquery.syntax.brush.haskell.js
+++ /dev/null
@@ -1,45 +0,0 @@
-// brush: "haskell" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('haskell', function(brush) {
- var keywords = ["as", "case", "of", "class", "data", "data family", "data instance", "default", "deriving", "deriving instance", "do", "forall", "foreign", "hiding", "if", "then", "else", "import", "infix", "infixl", "infixr", "instance", "let", "in", "mdo", "module", "newtype", "proc", "qualified", "rec", "type", "type family", "type instance", "where"];
-
- var operators = ["`", "|", "\\", "-", "-<", "-<<", "->", "*", "?", "??", "#", "<-", "@", "!", "::", "_", "~", ">", ";", "{", "}"];
-
- var values = ["True", "False"];
-
- brush.push(values, {klass: 'constant'});
- brush.push(keywords, {klass: 'keyword'});
- brush.push(operators, {klass: 'operator'});
-
- // Camelcase Types
- brush.push(Syntax.lib.camelCaseType);
-
- // Comments
- brush.push({
- pattern: /\-\-.*$/gm,
- klass: 'comment',
- allow: ['href']
- });
-
- brush.push({
- pattern: /\{\-[\s\S]*?\-\}/gm,
- klass: 'comment',
- allow: ['href']
- });
-
- brush.push(Syntax.lib.webLink);
-
- // Numbers
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-});
-
diff --git a/js/jquery.syntax.brush.html.js b/js/jquery.syntax.brush.html.js
deleted file mode 100644
index 4beb7fce..00000000
--- a/js/jquery.syntax.brush.html.js
+++ /dev/null
@@ -1,66 +0,0 @@
-// brush: "html" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.brushes.dependency('html', 'xml');
-Syntax.brushes.dependency('html', 'javascript');
-Syntax.brushes.dependency('html', 'css');
-Syntax.brushes.dependency('html', 'php-script');
-Syntax.brushes.dependency('html', 'ruby');
-
-Syntax.register('html', function(brush) {
- brush.push({
- pattern: /<script.*?type\=.?text\/javascript.*?>((.|\n)*?)<\/script>/gmi,
- matches: Syntax.extractMatches({brush: 'javascript'})
- });
-
- brush.push({
- pattern: /<style.*?type=.?text\/css.*?>((.|\n)*?)<\/style>/gmi,
- matches: Syntax.extractMatches({brush: 'css'})
- });
-
- brush.push({
- pattern: /((<\?php)([\s\S]*?)(\?>))/gm,
- matches: Syntax.extractMatches(
- {klass: 'php-tag', allow: ['keyword', 'php-script']},
- {klass: 'keyword'},
- {brush: 'php-script'},
- {klass: 'keyword'}
- )
- });
-
- brush.push({
- pattern: /((<\?rb?)([\s\S]*?)(\?>))/gm,
- matches: Syntax.extractMatches(
- {klass: 'ruby-tag', allow: ['keyword', 'ruby']},
- {klass: 'keyword'},
- {brush: 'ruby'},
- {klass: 'keyword'}
- )
- });
-
- brush.push({
- pattern: /<%=?(.*?)(%>)/g,
- klass: 'instruction',
- allow: ['string']
- });
-
- brush.push({
- pattern: /<\!(DOCTYPE(.*?))>/g,
- matches: Syntax.extractMatches({klass: 'doctype'})
- });
-
- // Is this rule still relevant?
- brush.push({
- pattern: /(%[0-9a-f]{2})/gi,
- klass: 'percent-escape',
- only: ['html']
- });
-
- // The position of this statement is important - it determines at what point the rules of the parent are processed.
- // In this case, the rules for xml are processed after the rules for html.
- brush.derives('xml');
-});
-
diff --git a/js/jquery.syntax.brush.io.js b/js/jquery.syntax.brush.io.js
deleted file mode 100644
index 312b7501..00000000
--- a/js/jquery.syntax.brush.io.js
+++ /dev/null
@@ -1,45 +0,0 @@
-// brush: "io" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('io', function(brush) {
- brush.push(Syntax.lib.cStyleFunction);
-
- var keywords = ["return"];
-
- var operators = ["::=", ":=", "or", "and", "@", "+", "*", "/", "-", "&", "|", "~", "!", "%", "<", "=", ">", "[", "]", "new", "delete"];
-
- brush.push(keywords, {klass: 'keywords'});
- brush.push(operators, {klass: 'operator'});
-
- // Extract space delimited method invocations
- brush.push({
- pattern: /\b([ \t]+([a-z]+))/gi,
- matches: Syntax.extractMatches({index: 2, klass: 'function'})
- });
-
- brush.push({
- pattern: /\)([ \t]+([a-z]+))/gi,
- matches: Syntax.extractMatches({index: 2, klass: 'function'})
- });
-
- // Objective-C classes
- brush.push(Syntax.lib.camelCaseType);
-
- brush.push(Syntax.lib.perlStyleComment);
- brush.push(Syntax.lib.cStyleComment);
- brush.push(Syntax.lib.cppStyleComment);
- brush.push(Syntax.lib.webLink);
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- // Numbers
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-});
-
diff --git a/js/jquery.syntax.brush.java.js b/js/jquery.syntax.brush.java.js
deleted file mode 100644
index ad0591e9..00000000
--- a/js/jquery.syntax.brush.java.js
+++ /dev/null
@@ -1,45 +0,0 @@
-// brush: "java" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('java', function(brush) {
- var keywords = ["abstract", "continue", "for", "switch", "assert", "default", "goto", "synchronized", "do", "if", "break", "implements", "throw", "else", "import", "throws", "case", "enum", "return", "transient", "catch", "extends", "try", "final", "interface", "static", "class", "finally", "strictfp", "volatile", "const", "native", "super", "while"];
-
- var access = ["private", "protected", "public", "package"];
-
- var types = ["void", "byte", "short", "int", "long", "float", "double", "boolean", "char"];
-
- var operators = ["++", "--", "++", "--", "+", "-", "~", "!", "*", "/", "%", "+", "-", "<<", ">>", ">>>", "<", ">", "<=", ">=", "==", "!=", "&", "^", "|", "&&", "||", "?", "=", "+=", "-=", "*=", "/=", "%=", "&=", "^=", "|=", "<<=", ">>=", ">>>=", "instanceof", "new", "delete"];
-
- var constants = ["this", "true", "false", "null"];
-
- brush.push(constants, {klass: 'constant'});
- brush.push(types, {klass: 'type'});
- brush.push(keywords, {klass: 'keyword'});
- brush.push(operators, {klass: 'operator'});
- brush.push(access, {klass: 'access'});
-
- // Camel Case Types
- brush.push(Syntax.lib.camelCaseType);
-
- // Comments
- brush.push(Syntax.lib.cStyleComment);
- brush.push(Syntax.lib.cppStyleComment);
- brush.push(Syntax.lib.webLink);
-
- // Numbers
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- brush.push(Syntax.lib.cStyleFunction);
-
- brush.processes['function'] = Syntax.lib.webLinkProcess('java "Developer Documentation"', true);
-});
-
diff --git a/js/jquery.syntax.brush.javascript.js b/js/jquery.syntax.brush.javascript.js
deleted file mode 100644
index d0ad5415..00000000
--- a/js/jquery.syntax.brush.javascript.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// brush: "javascript" aliases: ["js", "actionscript"]
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('javascript', function(brush) {
- var keywords = ["function", "break", "case", "catch", "continue", "default", "delete", "do", "else", "for", "if", "in", "instanceof", "new", "return", "super", "switch", "throw", "true", "try", "typeof", "var", "while", "with", "prototype"];
-
- var operators = ["+", "*", "/", "-", "&", "|", "~", "!", "%", "<", "=", ">"];
- var values = ["this", "true", "false", "null"];
-
- brush.push(values, {klass: 'constant'});
- brush.push(keywords, {klass: 'keyword'});
- brush.push(operators, {klass: 'operator'});
-
- // Regular expressions
- brush.push(Syntax.lib.perlStyleRegularExpression);
-
- // Camel Case Types
- brush.push(Syntax.lib.camelCaseType);
-
- // Comments
- brush.push(Syntax.lib.cStyleComment);
- brush.push(Syntax.lib.cppStyleComment);
- brush.push(Syntax.lib.webLink);
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- // Numbers
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-
- // Functions
- brush.push(Syntax.lib.cStyleFunction);
-});
-
diff --git a/js/jquery.syntax.brush.kai.js b/js/jquery.syntax.brush.kai.js
deleted file mode 100644
index e3c7b00c..00000000
--- a/js/jquery.syntax.brush.kai.js
+++ /dev/null
@@ -1,29 +0,0 @@
-// brush: "kai" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('kai', function(brush) {
- brush.push(['(', ')', '[', ']', '{', '}'], {klass: 'operator'});
-
- brush.push(Syntax.lib.perlStyleComment);
-
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.webLink);
-
- brush.push({
- pattern: /\(([^\s\(\)]+)/gi,
- matches: Syntax.extractMatches({klass: 'function'})
- });
-
- brush.push({
- pattern: /`[a-z]*/gi,
- klass: 'constant'
- })
-
- // Strings
- brush.push(Syntax.lib.multiLineDoubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-});
-
diff --git a/js/jquery.syntax.brush.lisp.js b/js/jquery.syntax.brush.lisp.js
deleted file mode 100644
index d2cdc5fc..00000000
--- a/js/jquery.syntax.brush.lisp.js
+++ /dev/null
@@ -1,34 +0,0 @@
-// brush: "lisp" aliases: ['scheme', 'clojure']
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.lib.lispStyleComment = {pattern: /(;+) .*$/gm, klass: 'comment', allow: ['href']};
-
-// This syntax is intentionally very sparse. This is because it is a general syntax for Lisp like languages.
-// It might be a good idea to make specific dialects (e.g. common lisp, scheme, clojure, etc)
-Syntax.register('lisp', function(brush) {
- brush.push(['(', ')'], {klass: 'operator'});
-
- brush.push(Syntax.lib.lispStyleComment);
-
- brush.push(Syntax.lib.hexNumber);
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.webLink);
-
- brush.push({
- pattern: /\(\s*([^\s\(\)]+)/gmi,
- matches: Syntax.extractMatches({klass: 'function'})
- });
-
- brush.push({
- pattern: /#[a-z]+/gi,
- klass: 'constant'
- })
-
- // Strings
- brush.push(Syntax.lib.multiLineDoubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-});
-
diff --git a/js/jquery.syntax.brush.lua.js b/js/jquery.syntax.brush.lua.js
deleted file mode 100644
index f7821c39..00000000
--- a/js/jquery.syntax.brush.lua.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// brush: "lua" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('lua', function(brush) {
- var keywords = ["and", "break", "do", "else", "elseif", "end", "false", "for", "function", "if", "in", "local", "nil", "not", "or", "repeat", "return", "then", "true", "until", "while"];
-
- var operators = ["+", "-", "*", "/", "%", "^", "#", "..", "=", "==", "~=", "<", ">", "<=", ">=", "?", ":"];
-
- var values = ["self", "true", "false", "nil"];
-
- brush.push(values, {klass: 'constant'});
- brush.push(keywords, {klass: 'keyword'});
- brush.push(operators, {klass: 'operator'});
-
- // Camelcase Types
- brush.push(Syntax.lib.camelCaseType);
- brush.push(Syntax.lib.cStyleFunction);
-
- brush.push({
- pattern: /\-\-.*$/gm,
- klass: 'comment',
- allow: ['href']
- });
-
- brush.push({
- pattern: /\-\-\[\[(\n|.)*?\]\]\-\-/gm,
- klass: 'comment',
- allow: ['href']
- });
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- brush.push(Syntax.lib.hexNumber);
- brush.push(Syntax.lib.decimalNumber);
-
- brush.push(Syntax.lib.webLink);
-});
-
diff --git a/js/jquery.syntax.brush.ocaml.js b/js/jquery.syntax.brush.ocaml.js
deleted file mode 100644
index c0b7e205..00000000
--- a/js/jquery.syntax.brush.ocaml.js
+++ /dev/null
@@ -1,73 +0,0 @@
-// brush: "ocaml" aliases: ["ml", "sml", "fsharp"]
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-// This brush is based loosely on the following documentation:
-// http://msdn.microsoft.com/en-us/library/dd233230.aspx
-
-Syntax.register('ocaml', function(brush) {
- var keywords = ["abstract", "and", "as", "assert", "begin", "class", "default", "delegate", "do", "done", "downcast", "downto", "elif", "else", "end", "exception", "extern", "finally", "for", "fun", "function", "if", "in", "inherit", "inline", "interface", "internal", "lazy", "let", "match", "member", "module", "mutable", "namespace", "new", "null", "of", "open", "or", "override", "rec", "return", "static", "struct", "then", "to", "try", "type", "upcast", "use", "val", "when", "while", "with", "yield", "asr", "land", "lor", "lsl", "lsr", "lxor", "mod", "sig", "atomic", "break", "checked", "component", "const", "constraint", "constructor", "continue", "eager", "event", "external", "fixed", "functor", "global", "include", "method", "mixin", "object", "parallel", "process", "protected", "pure", "sealed", "trait", "virtual", "volatile", "val"];
-
- var types = ["bool", "byte", "sbyte", /\bu?int\d*\b/g, "nativeint", "unativeint", "char", "string", "decimal", "unit", "void", "float32", "single", "float64", "double", "list", "array", "exn", "format", "fun", "option", "ref"];
-
- var operators = ["!", "<>", "%", "&", "*", "+", "-", "->", "/", "::", ":=", ":>", ":?", ":?>", "<", "=", ">", "?", "@", "^", "_", "`", "|", "~", "'", "[<", ">]", "<|", "|>", "[|", "|]", "(|", "|)", "(*", "*)", "in"];
-
- var values = ["true", "false"];
-
- var access = ["private", "public"];
-
- brush.push(access, {klass: 'access'});
- brush.push(values, {klass: 'constant'});
- brush.push(types, {klass: 'type'});
- brush.push(keywords, {klass: 'keyword'});
- brush.push(operators, {klass: 'operator'});
-
- // http://caml.inria.fr/pub/docs/manual-ocaml/manual011.html#module-path
- // open [module-path], new [type]
- brush.push({
- pattern: /(?:open|new)\s+((?:\.?[a-z][a-z0-9]*)+)/gi,
- matches: Syntax.extractMatches({klass: 'type'})
- });
-
- // Functions
- brush.push({
- pattern: /(?:\.)([a-z_][a-z0-9_]+)/gi,
- matches: Syntax.extractMatches({klass: 'function'})
- });
-
- // Avoid highlighting keyword arguments as camel-case types.
- brush.push({
- pattern: /(?:\(|,)\s*(\w+\s*=)/g,
- matches: Syntax.extractMatches({
- klass: 'keyword-argument'
- })
- });
-
- // We need to modify cStyleFunction because "(*" is a comment token.
- brush.push({
- pattern: /([a-z_][a-z0-9_]*)\s*\((?!\*)/gi,
- matches: Syntax.extractMatches({klass: 'function'})
- });
-
- // Types
- brush.push(Syntax.lib.camelCaseType);
-
- // Web Links
- brush.push(Syntax.lib.webLink);
-
- // Comments
- brush.push({
- pattern: /\(\*[\s\S]*?\*\)/g,
- klass: 'comment'
- });
-
- // Strings
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- // Numbers
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-});
diff --git a/js/jquery.syntax.brush.ooc.js b/js/jquery.syntax.brush.ooc.js
deleted file mode 100644
index 133040c0..00000000
--- a/js/jquery.syntax.brush.ooc.js
+++ /dev/null
@@ -1,46 +0,0 @@
-// brush: "ooc" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('ooc', function(brush) {
- var keywords = ["class", "interface", "implement", "abstract", "extends", "from", "const", "final", "static", "import", "use", "extern", "inline", "proto", "break", "continue", "fallthrough", "operator", "if", "else", "for", "while", "do", "switch", "case", "as", "in", "version", "return", "include", "cover", "func"];
-
- var types = ["Int", "Int8", "Int16", "Int32", "Int64", "Int80", "Int128", "UInt", "UInt8", "UInt16", "UInt32", "UInt64", "UInt80", "UInt128", "Octet", "Short", "UShort", "Long", "ULong", "LLong", "ULLong", "Float", "Double", "LDouble", "Float32", "Float64", "Float128", "Char", "UChar", "WChar", "String", "Void", "Pointer", "Bool", "SizeT", "This"];
-
- var operators = ["+", "-", "*", "/", "+=", "-=", "*=", "/=", "=", ":=", "==", "!=", "!", "%", "?", ">", "<", ">=", "<=", "&&", "||", "&", "|", "^", ".", "~", "..", ">>", "<<", ">>>", "<<<", ">>=", "<<=", ">>>=", "<<<=", "%=", "^=", "@"];
-
- var values = ["this", "super", "true", "false", "null", /[A-Z][A-Z0-9_]+/g];
-
- brush.push(values, {klass: 'constant'});
- brush.push(types, {klass: 'type'});
- brush.push(keywords, {klass: 'keyword'});
- brush.push(operators, {klass: 'operator'});
-
- // Hex, Octal and Binary numbers :)
- brush.push({
- pattern: /0[xcb][0-9a-fA-F]+/g,
- klass: 'constant'
- });
-
- brush.push(Syntax.lib.decimalNumber);
-
- // ClassNames (CamelCase)
- brush.push(Syntax.lib.camelCaseType);
- brush.push(Syntax.lib.cStyleType);
- brush.push(Syntax.lib.cStyleFunction);
-
- brush.push(Syntax.lib.cStyleComment);
- brush.push(Syntax.lib.cppStyleComment);
-
- brush.push(Syntax.lib.webLink);
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- brush.processes['function'] = Syntax.lib.webLinkProcess("http://docs.ooc-lang.org/search.html?q=");
-});
-
diff --git a/js/jquery.syntax.brush.pascal.js b/js/jquery.syntax.brush.pascal.js
deleted file mode 100644
index 606d1f15..00000000
--- a/js/jquery.syntax.brush.pascal.js
+++ /dev/null
@@ -1,51 +0,0 @@
-// brush: "pascal" aliases: ["delphi"]
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-//
-// Constructed using information from http://pascal.comsci.us/etymology/
-//
-
-Syntax.register('pascal', function(brush) {
- var keywords = ["absolute", "abstract", "all", "and_then", "as", "asm", "asmname", "attribute", "begin", "bindable", "c", "c_language", "case", "class", "const", "constructor", "destructor", "dispose", "do", "downto", "else", "end", "except", "exit", "export", "exports", "external", "far", "file", "finalization", "finally", "for", "forward", "function", "goto", "if", "implementation", "import", "inherited", "initialization", "inline", "interface", "interrupt", "is", "keywords", "label", "library", "module", "name", "near", "new", "object", "of", "on", "only", "operator", "or_else", "otherwise", "packed", "pascal", "pow", "private", "procedure", "program", "property", "protected", "public", "published", "qualified", "raise", "record", "repeat", "resident", "restricted", "segment", "set", "then", "threadvar", "to", "try", "type", "unit", "until", "uses", "value", "var", "view", "virtual", "while", "with"];
-
- var operators = ["+", "-", "*", "/", "div", "mod", "and", "or", "xor", "shl", "shr", "not", "=", ">=", ">", "<>", "<=", "<", "in", ":="];
-
- var values = ["true", "false", "nil"];
-
- // Keywords are case insensitive
- brush.push(values, {klass: 'constant', options: 'gi'});
- brush.push(keywords, {klass: 'keyword', options: 'gi'});
- brush.push(operators, {klass: 'operator', options: 'gi'});
-
- brush.push(Syntax.lib.camelCaseType);
-
- // Pascal style comments
- brush.push({
- pattern: /\{[\s\S]*?\}/gm,
- klass: 'comment',
- allow: ['href']
- });
-
- brush.push({
- pattern: /\(\*[\s\S]*?\*\)/gm,
- klass: 'comment',
- allow: ['href']
- });
-
- brush.push(Syntax.lib.webLink);
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- // Numbers
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-
- // Functions
- brush.push(Syntax.lib.cStyleFunction);
-});
-
diff --git a/js/jquery.syntax.brush.perl5.js b/js/jquery.syntax.brush.perl5.js
deleted file mode 100644
index 4ec9c4d9..00000000
--- a/js/jquery.syntax.brush.perl5.js
+++ /dev/null
@@ -1,52 +0,0 @@
-// brush: "perl5" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('perl5', function(brush) {
- var builtins = ["abs", "accept", "alarm", "atan2", "bind", "binmode", "chdir", "chmod", "chomp", "chop", "chown", "chr", "chroot", "close", "closedir", "connect", "cos", "crypt", "defined", "delete", "each", "endgrent", "endhostent", "endnetent", "endprotoent", "endpwent", "endservent", "eof", "exec", "exists", "exp", "fcntl", "fileno", "flock", "fork", "format", "formline", "getc", "getgrent", "getgrgid", "getgrnam", "gethostbyaddr", "gethostbyname", "gethostent", "getlogin", "getnetbyaddr", "getnetbyname", "getnetent", "getpeername", "getpgrp", "getppid", "getpriority", "getprotobyname", "getprotobynumber", "getprotoent", "getpwent", "getpwnam", "getpwuid", "getservbyname", "getservbyport", "getservent", "getsockname", "getsockopt", "glob", "gmtime", "grep", "hex", "index", "int", "ioctl", "join", "keys", "kill", "lc", "lcfirst", "length", "link", "listen", "localtime", "lock", "log", "lstat", "map", "mkdir", "msgctl", "msgget", "msgrcv", "msgsnd", "oct", "open", "opendir", "ord", "pack", "pipe", "pop", "pos", "print", "printf", "prototype", "push", "quotemeta", "rand", "read", "readdir", "readline", "readlink", "readpipe", "recv", "rename", "reset", "reverse", "rewinddir", "rindex", "rmdir", "scalar", "seek", "seekdir", "select", "semctl", "semget", "semop", "send", "setgrent", "sethostent", "setnetent", "setpgrp", "setpriority", "setprotoent", "setpwent", "setservent", "setsockopt", "shift", "shmctl", "shmget", "shmread", "shmwrite", "shutdown", "sin", "sleep", "socket", "socketpair", "sort", "splice", "split", "sprintf", "sqrt", "srand", "stat", "study", "substr", "symlink", "syscall", "sysopen", "sysread", "sysseek", "system", "syswrite", "tell", "telldir", "time", "times", "tr", "truncate", "uc", "ucfirst", "umask", "undef", "unlink", "unpack", "unshift", "utime", "values", "vec", "wait", "waitpid", "warn", "write"];
-
- var keywords = ["bless", "caller", "continue", "die", "do", "dump", "else", "elsif", "eval", "exit", "for", "foreach", "goto", "if", "import", "last", "local", "my", "next", "no", "our", "package", "redo", "ref", "require", "return", "sub", "tie", "tied", "unless", "untie", "until", "use", "wantarray", "while"];
-
- var operators = ["->", "++", "--", "**", "!", "~", "\\", "+", "-", "=~", "!~", "*", "/", "%", "x", "+", "-", ".", "<<", ">>", "<", ">", "<=", ">=", "lt", "gt", "le", "ge", "==", "!=", "<=>", "eq", "ne", "cmp", "~~", "&", "|", "^", "&&", "||", "//", "..", "...", "?:", "=", ",", "=>", "not", "and", "or", "xor"];
-
- var values = ["this", "true", "false"];
-
- brush.push(values, {klass: 'constant'});
- brush.push(keywords, {klass: 'keyword'});
- brush.push(operators, {klass: 'operator'});
- brush.push(builtins, {klass: 'function'});
-
- // Regular expressions
- brush.push(Syntax.lib.perlStyleRegularExpression);
-
- // Comments
- brush.push(Syntax.lib.perlStyleComment);
- brush.push(Syntax.lib.webLink);
-
- // Variables
- brush.push({
- pattern: /(\$|@|%)\w+/gi,
- klass: 'variable'
- });
-
- // Enddoc
- brush.push({
- pattern: /__END__[\s\S]*/gm,
- klass: 'comment'
- });
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- // Numbers
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-
- // Functions
- brush.push(Syntax.lib.cStyleFunction);
-});
-
diff --git a/js/jquery.syntax.brush.php-script.js b/js/jquery.syntax.brush.php-script.js
deleted file mode 100644
index c053fa02..00000000
--- a/js/jquery.syntax.brush.php-script.js
+++ /dev/null
@@ -1,48 +0,0 @@
-// brush: "php-script" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('php-script', function(brush) {
- var keywords = ["abstract", "and", "as", "break", "case", "cfunction", "class", "const", "continue", "declare", "default", "die", "do", "echo", "else", "elseif", "enddeclare", "endfor", "endforeach", "endif", "endswitch", "endwhile", "extends", "extends", "for", "foreach", "function", "global", "if", "implements", "include", "include_once", "interface", "old_function", "or", "require", "require_once", "return", "static", "switch", "throw", "use", "var", "while", "xor"];
-
- var access = ["private", "protected", "public"];
-
- var operators = ["+", "*", "/", "-", "&", "|", "~", "!", "%", "<", "=", ">", "[", "]", "new"];
-
- var values = ["this", "true", "false"];
-
- brush.push(values, {klass: 'constant'});
- brush.push(keywords, {klass: 'keyword'});
- brush.push(operators, {klass: 'operator'});
- brush.push(access, {klass: 'access'});
-
- // Variables
- brush.push({
- pattern: /\$[a-z_][a-z0-9]*/gi,
- klass: 'variable'
- });
-
- // ClassNames (CamelCase)
- brush.push(Syntax.lib.camelCaseType);
- brush.push(Syntax.lib.cStyleFunction);
-
- // Comments
- brush.push(Syntax.lib.cStyleComment);
- brush.push(Syntax.lib.cppStyleComment);
- brush.push(Syntax.lib.perlStyleComment);
- brush.push(Syntax.lib.webLink);
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- // Numbers
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-
- brush.processes['function'] = Syntax.lib.webLinkProcess("http://www.php.net/manual-lookup.php?pattern=");
-});
-
diff --git a/js/jquery.syntax.brush.php.js b/js/jquery.syntax.brush.php.js
deleted file mode 100644
index cc813a46..00000000
--- a/js/jquery.syntax.brush.php.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// brush: "php" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.brushes.dependency('php', 'php-script');
-
-Syntax.register('php', function(brush) {
- brush.push({
- pattern: /(<\?(php)?)((.|\n)*?)(\?>)/gm,
- matches: Syntax.extractMatches({klass: 'keyword'}, null, {brush: 'php-script'}, null, {klass: 'keyword'})
- })
-});
-
diff --git a/js/jquery.syntax.brush.plain.js b/js/jquery.syntax.brush.plain.js
deleted file mode 100644
index 30f4bb8e..00000000
--- a/js/jquery.syntax.brush.plain.js
+++ /dev/null
@@ -1,10 +0,0 @@
-// brush: "plain" aliases: ["text"]
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('plain', function(brush) {
- brush.push(Syntax.lib.webLink);
-});
-
diff --git a/js/jquery.syntax.brush.protobuf.js b/js/jquery.syntax.brush.protobuf.js
deleted file mode 100644
index 1ebd8f34..00000000
--- a/js/jquery.syntax.brush.protobuf.js
+++ /dev/null
@@ -1,43 +0,0 @@
-// brush: "protobuf" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('protobuf', function(brush) {
- var keywords = ["enum", "extend", "extensions", "group", "import", "max", "message", "option", "package", "returns", "rpc", "service", "syntax", "to", "default"];
- brush.push(keywords, {klass: 'keyword'})
-
- var values = ["true", "false"];
- brush.push(values, {klass: 'constant'});
-
- var types = ["bool", "bytes", "double", "fixed32", "fixed64", "float", "int32", "int64", "sfixed32", "sfixed64", "sint32", "sint64", "string", "uint32", "uint64"];
- brush.push(types, {klass: 'type'});
-
- var access = ["optional", "required", "repeated"]
- brush.push(access, {klass: 'access'});
-
- brush.push(Syntax.lib.camelCaseType);
-
- // Highlight names of fields
- brush.push({
- pattern: /\s+(\w+)\s*=\s*\d+/g,
- matches: Syntax.extractMatches({
- klass: 'variable'
- })
- });
-
- // Comments
- brush.push(Syntax.lib.cStyleComment);
- brush.push(Syntax.lib.webLink);
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- // Numbers
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-});
-
diff --git a/js/jquery.syntax.brush.python.js b/js/jquery.syntax.brush.python.js
deleted file mode 100644
index 40f6a909..00000000
--- a/js/jquery.syntax.brush.python.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// brush: "python" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('python', function(brush) {
- var keywords = ["and", "as", "assert", "break", "class", "continue", "def", "del", "elif", "else", "except", "exec", "finally", "for", "from", "global", "if", "import", "in", "is", "lambda", "not", "or", "pass", "print", "raise", "return", "try", "while", "with", "yield"];
-
- var operators = ["!=", "%", "%=", "&", "&=", "(", ")", "*", "**", "**=", "*=", "+", "+=", ",", "-", "-=", ".", "/", "//", "//=", "/=", ":", ";", "<", "<<", "<<=", "<=", "<>", "=", "==", ">", ">=", ">>", ">>=", "@", "[", "]", "^", "^=", "`", "`", "{", "|", "|=", "}", "~"];
-
- // Extracted from http://docs.python.org/library/functions.html
- var builtinFunctions = ["abs", "all", "any", "basestring", "bin", "bool", "callable", "chr", "classmethod", "cmp", "compile", "complex", "delattr", "dict", "dir", "divmod", "enumerate", "eval", "execfile", "file", "filter", "float", "format", "frozenset", "getattr", "globals", "hasattr", "hash", "help", "hex", "id", "input", "int", "isinstance", "issubclass", "iter", "len", "list", "locals", "long", "map", "max", "min", "next", "object", "oct", "open", "ord", "pow", "print", "property", "range", "raw_input", "reduce", "reload", "repr", "reversed", "round", "set", "setattr", "slice", "sorted", "staticmethod", "str", "sum", "super", "tuple", "type", "type", "unichr", "unicode", "vars", "xrange", "zip", "__import__", "apply", "buffer", "coerce", "intern"];
-
- var values = ["self", "True", "False", "None"];
-
- brush.push({pattern: /^\s*@\w+/gm, klass: 'decorator'});
- brush.push(values, {klass: 'constant'});
- brush.push(keywords, {klass: 'keyword'});
- brush.push(operators, {klass: 'operator'});
- brush.push(builtinFunctions, {klass: 'builtin'});
-
- // ClassNames (CamelCase)
- brush.push(Syntax.lib.camelCaseType);
- brush.push(Syntax.lib.cStyleFunction);
-
- brush.push(Syntax.lib.perlStyleComment);
- brush.push({pattern: /(['\"]{3})([^\1])*?\1/gm, klass: 'comment'});
- brush.push(Syntax.lib.webLink);
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- // Numbers
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-
- brush.processes['function'] = Syntax.lib.webLinkProcess("http://docs.python.org/search.html?q=");
- brush.processes['type'] = Syntax.lib.webLinkProcess("http://docs.python.org/search.html?q=");
- brush.processes['builtin'] = Syntax.lib.webLinkProcess("http://docs.python.org/search.html?q=");
-});
-
diff --git a/js/jquery.syntax.brush.ruby.js b/js/jquery.syntax.brush.ruby.js
deleted file mode 100644
index 5d37ed1c..00000000
--- a/js/jquery.syntax.brush.ruby.js
+++ /dev/null
@@ -1,77 +0,0 @@
-// brush: "ruby" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.lib.rubyStyleFunction = {pattern: /(?:def\s+|\.)([a-z_][a-z0-9_]+)/gi, matches: Syntax.extractMatches({klass: 'function'})};
-
-// We need to emulate negative lookbehind
-Syntax.lib.rubyStyleSymbol = {pattern: /([:]?):\w+/g, klass: 'constant', matches: function (match, expr) {
- if (match[1] != '') return [];
-
- return [new Syntax.Match(match.index, match[0].length, expr, match[0])];
-}};
-
-Syntax.register('ruby', function(brush) {
- var keywords = ["alias", "and", "begin", "break", "case", "class", "def", "define_method", "defined?", "do", "else", "elsif", "end", "ensure", "false", "for", "if", "in", "module", "next", "not", "or", "raise", "redo", "rescue", "retry", "return", "then", "throw", "undef", "unless", "until", "when", "while", "yield", "block_given?"];
-
- var operators = ["+", "*", "/", "-", "&", "|", "~", "!", "%", "<", "=", ">"];
- var values = ["self", "super", "true", "false", "nil"];
-
- var access = ["private", "protected", "public"];
-
- brush.push(access, {klass: 'access'});
- brush.push(values, {klass: 'constant'});
-
- // Percent operator statements
- brush.push({
- pattern: /(\%[\S])(\{[\s\S]*?\})/g,
- matches: Syntax.extractMatches({klass: 'function'}, {klass: 'constant'})
- });
-
- brush.push({
- pattern: /`[^`]+`/g,
- klass: 'string'
- });
-
- brush.push({
- pattern: /\#\{([^\}]*)\}/g,
- matches: Syntax.extractMatches({
- brush: 'ruby',
- only: ['string']
- }),
- });
-
- // Regular expressions
- brush.push(Syntax.lib.perlStyleRegularExpression);
-
- brush.push({pattern: /(@+|\$)[\w]+/g, klass: 'variable'});
-
- brush.push(Syntax.lib.camelCaseType);
- brush.push(keywords, {klass: 'keyword'});
- brush.push(operators, {klass: 'operator'});
-
- brush.push(Syntax.lib.rubyStyleSymbol);
-
- // Comments
- brush.push(Syntax.lib.perlStyleComment);
- brush.push(Syntax.lib.webLink);
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- // Numbers
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-
- // Functions
- brush.push(Syntax.lib.rubyStyleFunction);
- brush.push(Syntax.lib.cStyleFunction);
-
- // brush.processes['function'] = Syntax.lib.webLinkProcess("ruby", true);
- // brush.processes['type'] = Syntax.lib.webLinkProcess("ruby", true);
-});
-
diff --git a/js/jquery.syntax.brush.scala.js b/js/jquery.syntax.brush.scala.js
deleted file mode 100644
index 544a26b1..00000000
--- a/js/jquery.syntax.brush.scala.js
+++ /dev/null
@@ -1,44 +0,0 @@
-// brush: "scala" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.brushes.dependency('scala', 'xml');
-
-Syntax.register('scala', function(brush) {
- var keywords = ["abstract", "do", "finally", "import", "object", "return", "trait", "var", "case", "catch", "class", "else", "extends", "for", "forSome", "if", "lazy", "match", "new", "override", "package", "private", "sealed", "super", "try", "type", "while", "with", "yield", "def", "final", "implicit", "protected", "throw", "val"];
- brush.push(keywords, {klass: 'keyword'});
-
- var operators = ["_", ":", "=", "=>", "<-", "<:", "<%", ">:", "#", "@"];
- brush.push(operators, {klass: 'operator'});
-
- var constants = ["this", "null", "true", "false"];
- brush.push(constants, {klass: 'constant'});
-
- // Strings
- brush.push({
- pattern: /"""[\s\S]*?"""/g,
- klass: 'string'
- });
-
- brush.push(Syntax.lib.doubleQuotedString);
-
- // Functions
- brush.push({
- pattern: /(?:def\s+|\.)([a-z_][a-z0-9_]+)/gi,
- matches: Syntax.extractMatches({klass: 'function'})
- });
-
- brush.push(Syntax.lib.camelCaseType);
-
- // Types
- brush.push(Syntax.lib.cStyleFunction);
-
- // Comments
- brush.push(Syntax.lib.cStyleComment);
- brush.push(Syntax.lib.cppStyleComment);
-
- brush.derives('xml');
-});
-
diff --git a/js/jquery.syntax.brush.smalltalk.js b/js/jquery.syntax.brush.smalltalk.js
deleted file mode 100644
index a91200a5..00000000
--- a/js/jquery.syntax.brush.smalltalk.js
+++ /dev/null
@@ -1,29 +0,0 @@
-// brush: "smalltalk" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('smalltalk', function(brush) {
- var operators = ["[", "]", "|", ":=", "."];
-
- var values = ["self", "super", "true", "false", "nil"];
-
- brush.push(values, {klass: 'constant'});
- brush.push(operators, {klass: 'operator'});
-
- // Objective-C style functions
- brush.push({pattern: /\w+:/g, klass: 'function'});
-
- // Camelcase Types
- brush.push(Syntax.lib.camelCaseType);
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- // Numbers
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-});
diff --git a/js/jquery.syntax.brush.sql.js b/js/jquery.syntax.brush.sql.js
deleted file mode 100644
index 8f00aa01..00000000
--- a/js/jquery.syntax.brush.sql.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// brush: "sql" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.lib.sqlStyleComment = {pattern: /-- .*$/gm, klass: 'comment', allow: ['href']};
-
-Syntax.register('sql', function(brush) {
- var keywords = ["A", "ABORT", "ABS", "ABSOLUTE", "ACCESS", "ACTION", "ADA", "ADD", "ADMIN", "AFTER", "AGGREGATE", "ALIAS", "ALL", "ALLOCATE", "ALSO", "ALTER", "ALWAYS", "ANALYSE", "ANALYZE", "AND", "ANY", "ARE", "ARRAY", "AS", "ASC", "ASENSITIVE", "ASSERTION", "ASSIGNMENT", "ASYMMETRIC", "AT", "ATOMIC", "ATTRIBUTE", "ATTRIBUTES", "AUDIT", "AUTHORIZATION", "AUTO_INCREMENT", "AVG", "AVG_ROW_LENGTH", "BACKUP", "BACKWARD", "BEFORE", "BEGIN", "BERNOULLI", "BETWEEN", "BIGINT", "BINARY", "BIT", "BIT_LENGTH", "BITVAR", "BLOB", "BOOL", "BOOLEAN", "BOTH", "BREADTH", "BREAK", "BROWSE", "BULK", "BY", "C", "CACHE", "CALL", "CALLED", "CARDINALITY", "CASCADE", "CASCADED", "CASE", "CAST", "CATALOG", "CATALOG_NAME", "CEIL", "CEILING", "CHAIN", "CHANGE", "CHAR", "CHAR_LENGTH", "CHARACTER", "CHARACTER_LENGTH", "CHARACTER_SET_CATALOG", "CHARACTER_SET_NAME", "CHARACTER_SET_SCHEMA", "CHARACTERISTICS", "CHARACTERS", "CHECK", "CHECKED", "CHECKPOINT", "CHECKSUM", "CLASS", "CLASS_ORIGIN", "CLOB", "CLOSE", "CLUSTER", "CLUSTERED", "COALESCE", "COBOL", "COLLATE", "COLLATION", "COLLATION_CATALOG", "COLLATION_NAME", "COLLATION_SCHEMA", "COLLECT", "COLUMN", "COLUMN_NAME", "COLUMNS", "COMMAND_FUNCTION", "COMMAND_FUNCTION_CODE", "COMMENT", "COMMIT", "COMMITTED", "COMPLETION", "COMPRESS", "COMPUTE", "CONDITION", "CONDITION_NUMBER", "CONNECT", "CONNECTION", "CONNECTION_NAME", "CONSTRAINT", "CONSTRAINT_CATALOG", "CONSTRAINT_NAME", "CONSTRAINT_SCHEMA", "CONSTRAINTS", "CONSTRUCTOR", "CONTAINS", "CONTAINSTABLE", "CONTINUE", "CONVERSION", "CONVERT", "COPY", "CORR", "CORRESPONDING", "COUNT", "COVAR_POP", "COVAR_SAMP", "CREATE", "CREATEDB", "CREATEROLE", "CREATEUSER", "CROSS", "CSV", "CUBE", "CUME_DIST", "CURRENT", "CURRENT_DATE", "CURRENT_DEFAULT_TRANSFORM_GROUP", "CURRENT_PATH", "CURRENT_ROLE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_TRANSFORM_GROUP_FOR_TYPE", "CURRENT_USER", "CURSOR", "CURSOR_NAME", "CYCLE", "DATA", "DATABASE", "DATABASES", "DATE", "DATETIME", "DATETIME_INTERVAL_CODE", "DATETIME_INTERVAL_PRECISION", "DAY", "DAY_HOUR", "DAY_MICROSECOND", "DAY_MINUTE", "DAY_SECOND", "DAYOFMONTH", "DAYOFWEEK", "DAYOFYEAR", "DBCC", "DEALLOCATE", "DEC", "DECIMAL", "DECLARE", "DEFAULT", "DEFAULTS", "DEFERRABLE", "DEFERRED", "DEFINED", "DEFINER", "DEGREE", "DELAY_KEY_WRITE", "DELAYED", "DELETE", "DELIMITER", "DELIMITERS", "DENSE_RANK", "DENY", "DEPTH", "DEREF", "DERIVED", "DESC", "DESCRIBE", "DESCRIPTOR", "DESTROY", "DESTRUCTOR", "DETERMINISTIC", "DIAGNOSTICS", "DICTIONARY", "DISABLE", "DISCONNECT", "DISK", "DISPATCH", "DISTINCT", "DISTINCTROW", "DISTRIBUTED", "DIV", "DO", "DOMAIN", "DOUBLE", "DROP", "DUAL", "DUMMY", "DUMP", "DYNAMIC", "DYNAMIC_FUNCTION", "DYNAMIC_FUNCTION_CODE", "EACH", "ELEMENT", "ELSE", "ELSEIF", "ENABLE", "ENCLOSED", "ENCODING", "ENCRYPTED", "END", "END-EXEC", "ENUM", "EQUALS", "ERRLVL", "ESCAPE", "ESCAPED", "EVERY", "EXCEPT", "EXCEPTION", "EXCLUDE", "EXCLUDING", "EXCLUSIVE", "EXEC", "EXECUTE", "EXISTING", "EXISTS", "EXIT", "EXP", "EXPLAIN", "EXTERNAL", "EXTRACT", "FALSE", "FETCH", "FIELDS", "FILE", "FILLFACTOR", "FILTER", "FINAL", "FIRST", "FLOAT", "FLOAT4", "FLOAT8", "FLOOR", "FLUSH", "FOLLOWING", "FOR", "FORCE", "FOREIGN", "FORTRAN", "FORWARD", "FOUND", "FREE", "FREETEXT", "FREETEXTTABLE", "FREEZE", "FROM", "FULL", "FULLTEXT", "FUNCTION", "FUSION", "G", "GENERAL", "GENERATED", "GET", "GLOBAL", "GO", "GOTO", "GRANT", "GRANTED", "GRANTS", "GREATEST", "GROUP", "GROUPING", "HANDLER", "HAVING", "HEADER", "HEAP", "HIERARCHY", "HIGH_PRIORITY", "HOLD", "HOLDLOCK", "HOST", "HOSTS", "HOUR", "HOUR_MICROSECOND", "HOUR_MINUTE", "HOUR_SECOND", "IDENTIFIED", "IDENTITY", "IDENTITY_INSERT", "IDENTITYCOL", "IF", "IGNORE", "ILIKE", "IMMEDIATE", "IMMUTABLE", "IMPLEMENTATION", "IMPLICIT", "IN", "INCLUDE", "INCLUDING", "INCREMENT", "INDEX", "INDICATOR", "INFILE", "INFIX", "INHERIT", "INHERITS", "INITIAL", "INITIALIZE", "INITIALLY", "INNER", "INOUT", "INPUT", "INSENSITIVE", "INSERT", "INSERT_ID", "INSTANCE", "INSTANTIABLE", "INSTEAD", "INT", "INT1", "INT2", "INT3", "INT4", "INT8", "INTEGER", "INTERSECT", "INTERSECTION", "INTERVAL", "INTO", "INVOKER", "IS", "ISAM", "ISNULL", "ISOLATION", "ITERATE", "JOIN", "K", "KEY", "KEY_MEMBER", "KEY_TYPE", "KEYS", "KILL", "LANCOMPILER", "LANGUAGE", "LARGE", "LAST", "LAST_INSERT_ID", "LATERAL", "LEADING", "LEAST", "LEAVE", "LEFT", "LENGTH", "LESS", "LEVEL", "LIKE", "LIMIT", "LINENO", "LINES", "LISTEN", "LN", "LOAD", "LOCAL", "LOCALTIME", "LOCALTIMESTAMP", "LOCATION", "LOCATOR", "LOCK", "LOGIN", "LOGS", "LONG", "LONGBLOB", "LONGTEXT", "LOOP", "LOW_PRIORITY", "LOWER", "M", "MAP", "MATCH", "MATCHED", "MAX", "MAX_ROWS", "MAXEXTENTS", "MAXVALUE", "MEDIUMBLOB", "MEDIUMINT", "MEDIUMTEXT", "MEMBER", "MERGE", "MESSAGE_LENGTH", "MESSAGE_OCTET_LENGTH", "MESSAGE_TEXT", "METHOD", "MIDDLEINT", "MIN", "MIN_ROWS", "MINUS", "MINUTE", "MINUTE_MICROSECOND", "MINUTE_SECOND", "MINVALUE", "MLSLABEL", "MOD", "MODE", "MODIFIES", "MODIFY", "MODULE", "MONTH", "MONTHNAME", "MORE", "MOVE", "MULTISET", "MUMPS", "MYISAM", "NAMES", "NATIONAL", "NATURAL", "NCHAR", "NCLOB", "NESTING", "NEW", "NEXT", "NO", "NO_WRITE_TO_BINLOG", "NOAUDIT", "NOCHECK", "NOCOMPRESS", "NOCREATEDB", "NOCREATEROLE", "NOCREATEUSER", "NOINHERIT", "NOLOGIN", "NONCLUSTERED", "NONE", "NORMALIZE", "NORMALIZED", "NOSUPERUSER", "NOT", "NOTHING", "NOTIFY", "NOTNULL", "NOWAIT", "NULL", "NULLABLE", "NULLIF", "NULLS", "NUMBER", "NUMERIC", "OBJECT", "OCTET_LENGTH", "OCTETS", "OF", "OFF", "OFFLINE", "OFFSET", "OFFSETS", "OIDS", "OLD", "ON", "ONLINE", "ONLY", "OPEN", "OPENDATASOURCE", "OPENQUERY", "OPENROWSET", "OPENXML", "OPERATION", "OPERATOR", "OPTIMIZE", "OPTION", "OPTIONALLY", "OPTIONS", "OR", "ORDER", "ORDERING", "ORDINALITY", "OTHERS", "OUT", "OUTER", "OUTFILE", "OUTPUT", "OVER", "OVERLAPS", "OVERLAY", "OVERRIDING", "OWNER", "PACK_KEYS", "PAD", "PARAMETER", "PARAMETER_MODE", "PARAMETER_NAME", "PARAMETER_ORDINAL_POSITION", "PARAMETER_SPECIFIC_CATALOG", "PARAMETER_SPECIFIC_NAME", "PARAMETER_SPECIFIC_SCHEMA", "PARAMETERS", "PARTIAL", "PARTITION", "PASCAL", "PASSWORD", "PATH", "PCTFREE", "PERCENT", "PERCENT_RANK", "PERCENTILE_CONT", "PERCENTILE_DISC", "PLACING", "PLAN", "PLI", "POSITION", "POSTFIX", "POWER", "PRECEDING", "PRECISION", "PREFIX", "PREORDER", "PREPARE", "PREPARED", "PRESERVE", "PRIMARY", "PRINT", "PRIOR", "PRIVILEGES", "PROC", "PROCEDURAL", "PROCEDURE", "PROCESS", "PROCESSLIST", "PUBLIC", "PURGE", "QUOTE", "RAID0", "RAISERROR", "RANGE", "RANK", "RAW", "READ", "READS", "READTEXT", "REAL", "RECHECK", "RECONFIGURE", "RECURSIVE", "REF", "REFERENCES", "REFERENCING", "REGEXP", "REGR_AVGX", "REGR_AVGY", "REGR_COUNT", "REGR_INTERCEPT", "REGR_R2", "REGR_SLOPE", "REGR_SXX", "REGR_SXY", "REGR_SYY", "REINDEX", "RELATIVE", "RELEASE", "RELOAD", "RENAME", "REPEAT", "REPEATABLE", "REPLACE", "REPLICATION", "REQUIRE", "RESET", "RESIGNAL", "RESOURCE", "RESTART", "RESTORE", "RESTRICT", "RESULT", "RETURN", "RETURNED_CARDINALITY", "RETURNED_LENGTH", "RETURNED_OCTET_LENGTH", "RETURNED_SQLSTATE", "RETURNS", "REVOKE", "RIGHT", "RLIKE", "ROLE", "ROLLBACK", "ROLLUP", "ROUTINE", "ROUTINE_CATALOG", "ROUTINE_NAME", "ROUTINE_SCHEMA", "ROW", "ROW_COUNT", "ROW_NUMBER", "ROWCOUNT", "ROWGUIDCOL", "ROWID", "ROWNUM", "ROWS", "RULE", "SAVE", "SAVEPOINT", "SCALE", "SCHEMA", "SCHEMA_NAME", "SCHEMAS", "SCOPE", "SCOPE_CATALOG", "SCOPE_NAME", "SCOPE_SCHEMA", "SCROLL", "SEARCH", "SECOND", "SECOND_MICROSECOND", "SECTION", "SECURITY", "SELECT", "SELF", "SENSITIVE", "SEPARATOR", "SEQUENCE", "SERIALIZABLE", "SERVER_NAME", "SESSION", "SESSION_USER", "SET", "SETOF", "SETS", "SETUSER", "SHARE", "SHOW", "SHUTDOWN", "SIGNAL", "SIMILAR", "SIMPLE", "SIZE", "SMALLINT", "SOME", "SONAME", "SOURCE", "SPACE", "SPATIAL", "SPECIFIC", "SPECIFIC_NAME", "SPECIFICTYPE", "SQL", "SQL_BIG_RESULT", "SQL_BIG_SELECTS", "SQL_BIG_TABLES", "SQL_CALC_FOUND_ROWS", "SQL_LOG_OFF", "SQL_LOG_UPDATE", "SQL_LOW_PRIORITY_UPDATES", "SQL_SELECT_LIMIT", "SQL_SMALL_RESULT", "SQL_WARNINGS", "SQLCA", "SQLCODE", "SQLERROR", "SQLEXCEPTION", "SQLSTATE", "SQLWARNING", "SQRT", "SSL", "STABLE", "START", "STARTING", "STATE", "STATEMENT", "STATIC", "STATISTICS", "STATUS", "STDDEV_POP", "STDDEV_SAMP", "STDIN", "STDOUT", "STORAGE", "STRAIGHT_JOIN", "STRICT", "STRING", "STRUCTURE", "STYLE", "SUBCLASS_ORIGIN", "SUBLIST", "SUBMULTISET", "SUBSTRING", "SUCCESSFUL", "SUM", "SUPERUSER", "SYMMETRIC", "SYNONYM", "SYSDATE", "SYSID", "SYSTEM", "SYSTEM_USER", "TABLE", "TABLE_NAME", "TABLES", "TABLESAMPLE", "TABLESPACE", "TEMP", "TEMPLATE", "TEMPORARY", "TERMINATE", "TERMINATED", "TEXT", "TEXTSIZE", "THAN", "THEN", "TIES", "TIME", "TIMESTAMP", "TIMEZONE_HOUR", "TIMEZONE_MINUTE", "TINYBLOB", "TINYINT", "TINYTEXT", "TO", "TOAST", "TOP", "TOP_LEVEL_COUNT", "TRAILING", "TRAN", "TRANSACTION", "TRANSACTION_ACTIVE", "TRANSACTIONS_COMMITTED", "TRANSACTIONS_ROLLED_BACK", "TRANSFORM", "TRANSFORMS", "TRANSLATE", "TRANSLATION", "TREAT", "TRIGGER", "TRIGGER_CATALOG", "TRIGGER_NAME", "TRIGGER_SCHEMA", "TRIM", "TRUE", "TRUNCATE", "TRUSTED", "TSEQUAL", "TYPE", "UESCAPE", "UID", "UNBOUNDED", "UNCOMMITTED", "UNDER", "UNDO", "UNENCRYPTED", "UNION", "UNIQUE", "UNKNOWN", "UNLISTEN", "UNLOCK", "UNNAMED", "UNNEST", "UNSIGNED", "UNTIL", "UPDATE", "UPDATETEXT", "UPPER", "USAGE", "USE", "USER", "USER_DEFINED_TYPE_CATALOG", "USER_DEFINED_TYPE_CODE", "USER_DEFINED_TYPE_NAME", "USER_DEFINED_TYPE_SCHEMA", "USING", "UTC_DATE", "UTC_TIME", "UTC_TIMESTAMP", "VACUUM", "VALID", "VALIDATE", "VALIDATOR", "VALUE", "VALUES", "VAR_POP", "VAR_SAMP", "VARBINARY", "VARCHAR", "VARCHAR2", "VARCHARACTER", "VARIABLE", "VARIABLES", "VARYING", "VERBOSE", "VIEW", "VOLATILE", "WAITFOR", "WHEN", "WHENEVER", "WHERE", "WHILE", "WIDTH_BUCKET", "WINDOW", "WITH", "WITHIN", "WITHOUT", "WORK", "WRITE", "WRITETEXT", "X509", "XOR", "YEAR", "YEAR_MONTH", "ZEROFILL", "ZONE"];
-
- var operators = ["=", "!=", "<", ">", "<=", ">=", "+", "-", "*", "/", "%"];
-
- brush.push(operators, {klass: 'operator'});
-
- brush.push(Syntax.lib.sqlStyleComment);
-
- brush.push(keywords, {klass: 'keyword', options: 'gi'});
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- // Numbers
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-
- brush.push(Syntax.lib.webLink);
-});
-
diff --git a/js/jquery.syntax.brush.super-collider.js b/js/jquery.syntax.brush.super-collider.js
deleted file mode 100644
index 4064ce18..00000000
--- a/js/jquery.syntax.brush.super-collider.js
+++ /dev/null
@@ -1,57 +0,0 @@
-// brush: "super-collider" aliases: ["sc"]
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('super-collider', function(brush) {
- var keywords = ["const", "arg", "classvar", "var"];
- brush.push(keywords, {klass: 'keyword'});
-
- var operators = ["`", "+", "@", ":", "*", "/", "-", "&", "|", "~", "!", "%", "<", "=", ">"];
- brush.push(operators, {klass: 'operator'});
-
- var values = ["thisFunctionDef", "thisFunction", "thisMethod", "thisProcess", "thisThread", "this", "super", "true", "false", "nil", "inf"];
- brush.push(values, {klass: 'constant'});
-
- brush.push(Syntax.lib.camelCaseType);
-
- // Single Characters
- brush.push({
- pattern: /\$(\\)?./g,
- klass: "constant"
- });
-
- // Symbols
- brush.push({
- pattern: /\\[a-z_][a-z0-9_]*/gi,
- klass: "symbol"
- });
-
- brush.push({
- pattern: /'[^']+'/g,
- klass: "symbol"
- });
-
- // Comments
- brush.push(Syntax.lib.cStyleComment);
- brush.push(Syntax.lib.cppStyleComment);
- brush.push(Syntax.lib.webLink);
-
- // Strings
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
- brush.push(Syntax.lib.stringEscape);
-
- // Numbers
- brush.push(Syntax.lib.decimalNumber);
- brush.push(Syntax.lib.hexNumber);
-
- // Functions
- brush.push({
- pattern: /(?:\.)([a-z_][a-z0-9_]*)/gi,
- matches: Syntax.extractMatches({klass: 'function'})
- });
-
- brush.push(Syntax.lib.cStyleFunction);
-});
diff --git a/js/jquery.syntax.brush.xml.js b/js/jquery.syntax.brush.xml.js
deleted file mode 100644
index 03bbbf2e..00000000
--- a/js/jquery.syntax.brush.xml.js
+++ /dev/null
@@ -1,50 +0,0 @@
-// brush: "xml" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.lib.xmlEntity = {pattern: /&\w+;/g, klass: 'entity'};
-Syntax.lib.xmlPercentEscape = {pattern: /(%[0-9a-f]{2})/gi, klass: 'percent-escape', only: ['string']};
-
-Syntax.register('xml-tag', function(brush) {
- brush.push({
- pattern: /<\/?((?:[^:\s>]+:)?)([^\s>]+)(\s[^>]*)?\/?>/g,
- matches: Syntax.extractMatches({klass: 'namespace'}, {klass: 'tag-name'})
- });
-
- brush.push({
- pattern: /([^=\s]+)=(".*?"|'.*?'|[^\s>]+)/g,
- matches: Syntax.extractMatches({klass: 'attribute', only: ['tag']}, {klass: 'string', only: ['tag']})
- });
-
- brush.push(Syntax.lib.xmlEntity);
- brush.push(Syntax.lib.xmlPercentEscape);
-
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
-});
-
-Syntax.register('xml', function(brush) {
- brush.push({
- pattern: /(<!(\[CDATA\[)([\s\S]*?)(\]\])>)/gm,
- matches: Syntax.extractMatches(
- {klass: 'cdata', allow: ['cdata-content', 'cdata-tag']},
- {klass: 'cdata-tag'},
- {klass: 'cdata-content'},
- {klass: 'cdata-tag'}
- )
- });
-
- brush.push(Syntax.lib.xmlComment);
-
- brush.push({
- pattern: /<[^>\-\s]([^>'"!\/;\?@\[\]^`\{\}\|]|"[^"]*"|'[^']')*[\/?]?>/g,
- brush: 'xml-tag'
- });
-
- brush.push(Syntax.lib.xmlEntity);
- brush.push(Syntax.lib.xmlPercentEscape);
-
- brush.push(Syntax.lib.webLink);
-});
diff --git a/js/jquery.syntax.brush.yaml.js b/js/jquery.syntax.brush.yaml.js
deleted file mode 100644
index 9920770e..00000000
--- a/js/jquery.syntax.brush.yaml.js
+++ /dev/null
@@ -1,29 +0,0 @@
-// brush: "yaml" aliases: []
-
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.register('yaml', function(brush) {
- brush.push({
- pattern: /^\s*#.*$/gm,
- klass: 'comment',
- allow: ['href']
- });
-
- brush.push(Syntax.lib.singleQuotedString);
- brush.push(Syntax.lib.doubleQuotedString);
-
- brush.push({
- pattern: /(&|\*)[a-z0-9]+/gi,
- klass: 'constant'
- });
-
- brush.push({
- pattern: /(.*?):/gi,
- matches: Syntax.extractMatches({klass: 'keyword'})
- });
-
- brush.push(Syntax.lib.webLink);
-});
-
diff --git a/js/jquery.syntax.core.js b/js/jquery.syntax.core.js
deleted file mode 100644
index ecc71f83..00000000
--- a/js/jquery.syntax.core.js
+++ /dev/null
@@ -1,1177 +0,0 @@
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-if (!RegExp.prototype.indexOf) {
- RegExp.indexOf = function (match, index) {
- return match[0].indexOf(match[index]) + match.index;
- };
-}
-
-if (!RegExp.prototype.escape) {
- RegExp.escape = function (pattern) {
- return pattern.replace(/[\-\[\]{}()*+?.\\\^$|,#\s]/g, "\\$&");
- };
-}
-
-if (!String.prototype.repeat) {
- String.prototype.repeat = function(l) {
- return new Array(l+1).join(this);
- };
-}
-
-// Return the inner text of an element - must preserve whitespace.
-// Avoid returning \r characters.
-Syntax.innerText = function(element) {
- var text;
-
- if (!element) {
- return "";
- }
-
- if (element.nodeName == 'BR') {
- return '\n';
- } else if (element.textContent) {
- // W3C: FF, Safari, Chrome, etc.
- text = element.textContent;
- } else if (document.body.innerText) {
- // IE, other older browsers.
- text = element.innerText;
- }
-
- return text.replace(/\r\n?/g, '\n');
-}
-
-// Convert to stack based implementation
-Syntax.extractElementMatches = function (elems, offset, tabWidth) {
- var matches = [], current = [elems];
- offset = offset || 0;
- tabWidth = tabWidth || 4;
-
- (function (elems) {
- for (var i = 0; elems[i]; i++) {
- var text = null, elem = elems[i];
-
- if (elem.nodeType === 3 || elem.nodeType === 4) {
- offset += elem.nodeValue.length;
-
- } else if (elem.nodeType === 1) {
- var text = Syntax.innerText(elem);
-
- matches.push(new Syntax.Match(offset, text.length, {
- klass: elem.className,
- force: true,
- element: elem,
- allow: '*'
- }, text));
- }
-
- // Traverse everything, except comment nodes
- if (elem.nodeType !== 8 && elem.children) {
- arguments.callee(elem.childNodes, offset);
- }
- }
- })(elems);
-
- // Remove the top level element, since this will be recreated based on the supplied configuration.
- // Maybe there is a better way to achieve this?
- matches.shift();
-
- return matches;
-}
-
-// Basic layout doesn't do anything e.g. identity layout.
-Syntax.layouts.preformatted = function (options, html, container) {
- return html;
-};
-
-Syntax.modeLineOptions = {
- 'tab-width': function(name, value, options) { options.tabWidth = parseInt(value, 10); }
-};
-
-// Should be obvious right?
-Syntax.convertTabsToSpaces = function (text, tabSize) {
- var space = [], pattern = /\r|\n|\t/g, tabOffset = 0, offsets = [], totalOffset = 0;
- tabSize = tabSize || 4
-
- for (var i = ""; i.length <= tabSize; i = i + " ") {
- space.push(i);
- }
-
- text = text.replace(pattern, function(match) {
- var offset = arguments[arguments.length - 2];
- if (match === "\r" || match === "\n") {
- tabOffset = -(offset + 1);
- return match;
- } else {
- var width = tabSize - ((tabOffset + offset) % tabSize);
- tabOffset += width - 1;
-
- // Any match after this offset has been shifted right by totalOffset
- totalOffset += width - 1
- offsets.push([offset, width, totalOffset]);
-
- return space[width];
- }
- });
-
- return {text: text, offsets: offsets};
-};
-
-// This function converts from a compressed set of offsets of the form:
-// [
-// [offset, width, totalOffset],
-// ...
-// ]
-// This means that at a $offset, a tab (single character) was expanded to $width
-// single space characters.
-// This function produces a lookup table of offsets, where a given character offset
-// is mapped to how far the character has been offset.
-Syntax.convertToLinearOffsets = function (offsets, length) {
- var current = 0, changes = [];
-
- // Anything with offset after offset[current][0] but smaller than offset[current+1][0]
- // has been shifted right by offset[current][2]
- for (var i = 0; i < length; i++) {
- if (offsets[current] && i > offsets[current][0]) {
- // Is there a next offset?
- if (offsets[current+1]) {
- // Is the index less than the start of the next offset?
- if (i <= offsets[current+1][0]) {
- changes.push(offsets[current][2]);
- } else {
- // If so, move to the next offset.
- current += 1;
- i -= 1;
- }
- } else {
- // If there is no next offset we assume this one to the end.
- changes.push(offsets[current][2]);
- }
- } else {
- changes.push(changes[changes.length-1] || 0);
- }
- }
-
- return changes;
-}
-
-// Used for tab expansion process, by shifting matches when tab charaters were converted to
-// spaces.
-Syntax.updateMatchesWithOffsets = function (matches, linearOffsets, text) {
- (function (matches) {
- for (var i = 0; i < matches.length; i++) {
- var match = matches[i];
-
- // Calculate the new start and end points
- var offset = match.offset + linearOffsets[match.offset];
- var end = match.offset + match.length;
- end += linearOffsets[end];
-
- // Start, Length, Text
- match.adjust(linearOffsets[match.offset], end - offset, text);
-
- if (match.children.length > 0)
- arguments.callee(match.children);
- }
- })(matches);
-
- return matches;
-};
-
-// A helper function which automatically matches expressions with capture groups from the regular expression match.
-// Each argument position corresponds to the same index regular expression group.
-// Or, override by providing rule.index
-Syntax.extractMatches = function() {
- var rules = arguments;
-
- return function(match, expr) {
- var matches = [];
-
- for (var i = 0; i < rules.length; i += 1) {
- var rule = rules[i], index = i+1;
-
- if (rule == null) {
- continue;
- }
-
- if (typeof(rule.index) != 'undefined') {
- index = rule.index;
- }
-
- if (rule.debug) {
- Syntax.log("extractMatches", rule, index, match[index], match);
- }
-
- if (match[index].length > 0) {
- if (rule.brush) {
- matches.push(Syntax.Brush.buildTree(rule, match[index], RegExp.indexOf(match, index)));
- } else {
- var expression = jQuery.extend({owner: expr.owner}, rule);
-
- matches.push(new Syntax.Match(RegExp.indexOf(match, index), match[index].length, expression, match[index]));
- }
- }
- }
-
- return matches;
- };
-};
-
-// Used to create processing functions that automatically link to remote documentation.
-Syntax.lib.webLinkProcess = function (queryURI, lucky) {
- if (lucky) {
- queryURI = "http://www.google.com/search?btnI=I&q=" + encodeURIComponent(queryURI + " ");
- }
-
- return function (element, match, options) {
- // Per-code block linkification control.
- if (options.linkify === false)
- return element;
-
- var a = document.createElement('a');
- a.href = queryURI + encodeURIComponent(Syntax.innerText(element));
- a.className = element.className;
-
- // Move children from <element> to <a>
- while (element.childNodes.length > 0)
- a.appendChild(element.childNodes[0]);
-
- return a;
- };
-};
-
-// Global brush registration function.
-Syntax.register = function (name, callback) {
- var brush = Syntax.brushes[name] = new Syntax.Brush();
- brush.klass = name;
-
- callback(brush);
-};
-
-// Library of helper patterns
-Syntax.lib.cStyleComment = {pattern: /\/\*[\s\S]*?\*\//gm, klass: 'comment', allow: ['href']};
-Syntax.lib.cppStyleComment = {pattern: /\/\/.*$/gm, klass: 'comment', allow: ['href']};
-Syntax.lib.perlStyleComment = {pattern: /#.*$/gm, klass: 'comment', allow: ['href']};
-
-Syntax.lib.perlStyleRegularExpression = {pattern: /\B\/([^\/]|\\\/)*?\/[a-z]*(?=\s*($|[^\w\s'"\(]))/gm, klass: 'constant', incremental: true};
-
-Syntax.lib.cStyleFunction = {pattern: /([a-z_][a-z0-9_]*)\s*\(/gi, matches: Syntax.extractMatches({klass: 'function'})};
-Syntax.lib.camelCaseType = {pattern: /\b_*[A-Z][\w]*\b/g, klass: 'type'};
-Syntax.lib.cStyleType = {pattern: /\b[_a-z][_\w]*_t\b/gi, klass: 'type'};
-
-Syntax.lib.xmlComment = {pattern: /(&lt;|<)!--[\s\S]*?--(&gt;|>)/gm, klass: 'comment'};
-Syntax.lib.webLink = {pattern: /\w+:\/\/[\w\-.\/?%&=@:;#]*/g, klass: 'href'};
-
-Syntax.lib.hexNumber = {pattern: /\b0x[0-9a-fA-F]+/g, klass: 'constant'};
-Syntax.lib.decimalNumber = {pattern: /\b[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/g, klass: 'constant'};
-
-Syntax.lib.doubleQuotedString = {pattern: /"([^\\"\n]|\\.)*"/g, klass: 'string'};
-Syntax.lib.singleQuotedString = {pattern: /'([^\\'\n]|\\.)*'/g, klass: 'string'};
-Syntax.lib.multiLineDoubleQuotedString = {pattern: /"([^\\"]|\\.)*"/g, klass: 'string'};
-Syntax.lib.multiLineSingleQuotedString = {pattern: /'([^\\']|\\.)*'/g, klass: 'string'};
-Syntax.lib.stringEscape = {pattern: /\\./g, klass: 'escape', only: ['string']};
-
-// Main match constructor. Make sure value is the correct size.
-Syntax.Match = function (offset, length, expression, value) {
- this.offset = offset;
- this.endOffset = offset + length;
- this.length = length;
- this.expression = expression;
- this.value = value;
- this.children = [];
- this.parent = null;
-
- // When a node is bisected, this points to the next part.
- this.next = null;
-};
-
-// Shifts an entire tree forward or backwards.
-Syntax.Match.prototype.shift = function (offset, text) {
- this.adjust(offset, null, text);
-
- for (var i = 0; i < this.children.length; i++) {
- this.children[i].shift(offset, text)
- }
-};
-
-// C the current match to have different offset and length.
-Syntax.Match.prototype.adjust = function (offset, length, text) {
- this.offset += offset;
- this.endOffset += offset;
-
- if (length) {
- this.length = length;
- this.endOffset = this.offset + length;
- }
-
- if (text) {
- this.value = text.substr(this.offset, this.length);
- }
-};
-
-// Sort helper for sorting matches in forward order (e.g. same as the text that they were extracted from)
-Syntax.Match.sort = function (a,b) {
- return (a.offset - b.offset) || (b.length - a.length);
-};
-
-// Is the given match contained in the range of the parent match?
-Syntax.Match.prototype.contains = function (match) {
- return (match.offset >= this.offset) && (match.endOffset <= this.endOffset);
-};
-
-// Reduce a givent tree node into an html node.
-Syntax.Match.defaultReduceCallback = function (node, container) {
- // We avoid using jQuery in this function since it is incredibly performance sensitive.
- // Using jQuery jQuery.fn.append() can reduce performance by as much as 1/3rd.
- if (typeof(node) === 'string') {
- node = document.createTextNode(node);
- }
-
- container.appendChild(node);
-};
-
-// Convert a tree of matches into some flat form (typically HTML nodes).
-Syntax.Match.prototype.reduce = function (append, process) {
- var start = this.offset;
- var container = document.createElement('span');
-
- append = append || Syntax.Match.defaultReduceCallback;
-
- if (this.expression && this.expression.klass) {
- if (container.className.length > 0)
- container.className += ' ';
-
- container.className += this.expression.klass;
- }
-
- for (var i = 0; i < this.children.length; i += 1) {
- var child = this.children[i], end = child.offset;
-
- if (child.offset < this.offset) {
- Syntax.log("Syntax Warning: Offset of child", child, "is before offset of parent", this);
- }
-
- var text = this.value.substr(start - this.offset, end - start);
-
- append(text, container);
- append(child.reduce(append, process), container);
-
- start = child.endOffset;
- }
-
- if (start === this.offset) {
- append(this.value, container);
- } else if (start < this.endOffset) {
- append(this.value.substr(start - this.offset, this.endOffset - start), container);
- } else if (start > this.endOffset) {
- Syntax.log("Syntax Warning: Start position " + start + " exceeds end of value " + this.endOffset);
- }
-
- if (process) {
- container = process(container, this);
- }
-
- return container;
-};
-
-// Main nesting check - can a match contain the given match?
-Syntax.Match.prototype.canContain = function (match) {
- // This is a special conditional for explicitly added ranges by the user.
- // Since user added it, we honour it no matter what.
- if (match.expression.force) {
- return true;
- }
-
- // Can't add anything into complete trees.
- if (this.complete) {
- return false;
- }
-
- // match.expression.only will be checked on insertion using this.canHaveChild(match)
- if (match.expression.only) {
- return true;
- }
-
- // If allow is undefined, default behaviour is no children.
- if (typeof(this.expression.allow) === 'undefined') {
- return false;
- }
-
- // false if {disallow: [..., klass, ...]}
- if (jQuery.isArray(this.expression.disallow) && jQuery.inArray(match.expression.klass, this.expression.disallow) !== -1) {
- return false;
- }
-
- // true if {allow: '*'}
- if (this.expression.allow === '*') {
- return true;
- }
-
- // true if {allow: [..., klass, ...]}
- if (jQuery.isArray(this.expression.allow) && jQuery.inArray(match.expression.klass, this.expression.allow) !== -1) {
- return true;
- }
-
- return false;
-};
-
-// Return true if the given match can be spliced in as a child.
-// Checked automatically when calling _splice.
-Syntax.Match.prototype.canHaveChild = function(match) {
- var only = match.expression.only;
-
- // This condition is fairly slow
- if (only) {
- var cur = this;
-
- while (cur !== null) {
- if (jQuery.inArray(cur.expression.klass, only) !== -1) {
- return true;
- }
-
- cur = cur.parent;
-
- // We don't traverse into other trees.
- if (cur && cur.complete) {
- break;
- }
- }
-
- return false;
- }
-
- return true;
-};
-
-// Add a child into the list of children for a given match, if it is acceptable to do so.
-// Updates the owner of the match.
-// Returns null if splice failed.
-Syntax.Match.prototype._splice = function(i, match) {
- if (this.canHaveChild(match)) {
- this.children.splice(i, 0, match);
- match.parent = this;
-
- // For matches added using tags.
- if (!match.expression.owner) {
- match.expression.owner = this.expression.owner;
- }
-
- return this;
- } else {
- return null;
- }
-};
-
-// This function implements a full insertion procedure, and will break up the match to fit.
-// This operation is potentially very expensive, but is used to insert custom ranges into
-// the tree, if they are specified by the user. A custom <span> may cover multiple leafs in
-// the tree, thus some parts of the tree may need to be split. This behavior is controlled
-// by whole - if true, the tree is split, if false, the match is split.
-// You should avoid using this function except in very specific cases.
-Syntax.Match.prototype.insert = function(match, whole) {
- if (!this.contains(match))
- return null;
-
- if (whole) {
- var top = this, i = 0;
- while (i < top.children.length) {
- if (top.children[i].contains(match)) {
- top = top.children[i];
- i = 0;
- } else {
- i += 1;
- }
- }
-
- return top._insertWhole(match);
- } else {
- return this._insert(match);
- }
-}
-
-Syntax.Match.prototype._insertWhole = function(match) {
- var parts = this.bisectAtOffsets([match.offset, match.endOffset])
- this.children = [];
-
- if (parts[0]) {
- this.children = this.children.concat(parts[0].children);
- }
-
- if (parts[1]) {
- match.children = [];
-
- // Update the match's expression based on the current position in the tree:
- if (this.expression && this.expression.owner) {
- match.expression = this.expression.owner.getRuleForKlass(match.expression.klass) || match.expression;
- }
-
- // This probably isn't ideal, it would be better to convert all children and children-of-children
- // into a linear array and reinsert - it would be slightly more accurate in many cases.
- for (var i = 0; i < parts[1].children.length; i += 1) {
- var child = parts[1].children[i];
-
- if (match.canContain(child)) {
- match.children.push(child);
- }
- }
-
- this.children.push(match);
- }
-
- if (parts[2]) {
- this.children = this.children.concat(parts[2].children);
- }
-
- return this;
-}
-
-// This is not a general tree insertion function. It is optimised to run in almost constant
-// time, but data must be inserted in sorted order, otherwise you will have problems.
-// This function also ensures that matches won't be broken up unless absolutely necessary.
-Syntax.Match.prototype.insertAtEnd = function(match) {
- if (!this.contains(match)) {
- Syntax.log("Syntax Error: Child is not contained in parent node!");
- return null;
- }
-
- if (!this.canContain(match)) {
- return null;
- }
-
- if (this.children.length > 0) {
- var i = this.children.length-1;
- var child = this.children[i];
-
- if (match.offset < child.offset) {
- // Displacement: Before or LHS Overlap
- // This means that the match has actually occurred before the last child.
- // This is a bit of an unusual situation because the matches SHOULD be in
- // sorted order.
- // However, we are sure that the match is contained in this node. This situation
- // sometimes occurs when sorting existing branches with matches that are supposed
- // to be within that branch. When we insert the match into the branch, there are
- // matches that technically should have been inserted afterwards.
- // Normal usage should avoid this case, and this is best for performance.
- if (match.force) {
- return this._insert(match);
- } else {
- return null;
- }
- } else if (match.offset < child.endOffset) {
- if (match.endOffset <= child.endOffset) {
- // Displacement: Contains
- //console.log("displacement => contains");
- var result = child.insertAtEnd(match);
- return result;
- } else {
- // Displacement: RHS Overlap
- if (match.force) {
- return this._insert(match);
- } else {
- return null;
- }
- }
- } else {
- // Displacement: After
- return this._splice(i+1, match);
- }
-
- // Could not find a suitable placement: this is probably an error.
- return null;
- } else {
- // Displacement: Contains [but currently no children]
- return this._splice(0, match);
- }
-};
-
-// This insertion function is relatively complex because it is required to split the match over
-// several children. This function is used infrequently and is mostly for completeness. However,
-// it might be possible to remove it to reduce code.
-Syntax.Match.prototype._insert = function(match) {
- if (this.children.length == 0)
- return this._splice(0, match);
-
- for (var i = 0; i < this.children.length; i += 1) {
- var child = this.children[i];
-
- // If the match ends before this child, it must be before it.
- if (match.endOffset <= child.offset)
- return this._splice(i, match);
-
- // If the match starts after this child, we continue.
- if (match.offset >= child.endOffset)
- continue;
-
- // There are four possibilities...
- // ... with the possibility of overlapping children on the RHS.
- // {------child------} {---possibly some other child---}
- // |----------complete overlap---------|
- // |--lhs overlap--|
- // |--contains--|
- // |--rhs overlap--|
-
- // First, the easiest case:
- if (child.contains(match)) {
- return child._insert(match);
- }
-
- // console.log("Bisect at offsets", match, child.offset, child.endOffset);
- var parts = match.bisectAtOffsets([child.offset, child.endOffset]);
- // console.log("parts =", parts);
- // We now have at most three parts
- // {------child------} {---possibly some other child---}
- // |--[0]--|-------[1]-------|--[2]--|
-
- // console.log("parts", parts);
-
- if (parts[0]) {
- this._splice(i, parts[0])
- }
-
- if (parts[1]) {
- child.insert(parts[1])
- }
-
- // Continue insertion at this level with remainder.
- if (parts[2]) {
- match = parts[2]
- } else {
- return this;
- }
- }
-
- // If we got this far, the match wasn't [completely] inserted into the list of existing children, so it must be on the end.
- this._splice(this.children.length, match);
-}
-
-// This algorithm recursively bisects the tree at a given offset, but it does this efficiently by folding multiple bisections
-// at a time.
-// Splits: / / /
-// Tree: |-------------------------Top-------------------------|
-// |------------A--------------------| |------C-------|
-// |-------B----------|
-// Step (1):
-// Split Top into 4 parts:
-// |------/----------------/-------------------/---------|
-// For each part, check if there are any children that cover this part.
-// If there is a child, recursively call bisect with all splits.
-// Step (1-1):
-// Split A into parts:
-// |------/-----A----------/---------|
-// For each part, check if there are any children that cover this part.
-// If there is a child, recursively call bisect with all splits.
-// Step (1-1-1):
-// Split B into parts:
-// |-------B---/------|
-// No children covered by split. Return array of two parts, B1, B2.
-// Step (1-2):
-// Enumerate the results of splitting the child and merge piece-wise into own parts
-// |------/-----A----------/---------|
-// |------B1---|--B2--|
-// Finished merging children, return array of three parts, A1, A2, A3
-// Step (2):
-// Enumerate the results of splitting the child and merge piece-wise into own parts.
-// |------/----------------/-------------------/---------|
-// |--A1--|-------A2-------|----A3---|
-// |------B1---|--B2--|
-// Continue by splitting next child, C.
-// Once all children have been split and merged, return all parts, T1, T2, T3, T4.
-// The new tree:
-// |--T1--|-------T2-------|--------T3---------|---T4---|
-// |--A1--|-------A2-------|----A3---| |--C1--|---C2--|
-// |------B1---|--B2--|
-//
-// The new structure is as follows:
-// T1 <- A1
-// T2 <- A2 <- B1
-// T3 <- A3 <- B2
-// \- C1
-// T4 <- C2
-//
-Syntax.Match.prototype.bisectAtOffsets = function(splits) {
- var parts = [], start = this.offset, prev = null, children = jQuery.merge([], this.children);
-
- // Copy the array so we can modify it.
- splits = splits.slice(0);
-
- // We need to split including the last part.
- splits.push(this.endOffset);
-
- splits.sort(function (a,b) {
- return a-b;
- });
-
- // We build a set of top level matches by looking at each split point and
- // creating a new match from the end of the previous match to the split point.
- for (var i = 0; i < splits.length; i += 1) {
- var offset = splits[i];
-
- // The split offset is past the end of the match, so there are no more possible
- // splits.
- if (offset > this.endOffset) {
- break;
- }
-
- // We keep track of null parts if the offset is less than the start
- // so that things align up as expected with the requested splits.
- if (
- offset < this.offset // If the split point is less than the start of the match.
- || (offset - start) == 0 // If the match would have effectively zero length.
- ) {
- parts.push(null); // Preserve alignment with splits.
- start = offset;
- continue;
- }
-
- // Even if the previous split was out to the left, we align up the start
- // to be at the start of the match we are bisecting.
- if (start < this.offset)
- start = this.offset;
-
- var match = new Syntax.Match(start, offset - start, this.expression);
- match.value = this.value.substr(start - this.offset, match.length);
-
- if (prev) {
- prev.next = match;
- }
-
- prev = match;
-
- start = match.endOffset;
- parts.push(match);
- }
-
- // We only need to split to produce the number of parts we have.
- splits.length = parts.length;
-
- for (var i = 0; i < parts.length; i += 1) {
- if (parts[i] == null)
- continue;
-
- var offset = splits[0];
-
- while (children.length > 0) {
- if (children[0].endOffset <= parts[i].endOffset) {
- parts[i].children.push(children.shift());
- } else {
- break;
- }
- }
-
- if (children.length) {
- // We may have an intersection
- if (children[0].offset < parts[i].endOffset) {
- var children_parts = children.shift().bisectAtOffsets(splits), j = 0;
-
- // children_parts are the bisected children which need to be merged with parts
- // in a linear fashion
- for (; j < children_parts.length; j += 1) {
- if (children_parts[j] == null) continue; // Preserve alignment with splits.
-
- parts[i+j].children.push(children_parts[j]);
- }
-
- // Skip any parts which have been populated already
- // (i is incremented at the start of the loop, splits shifted at the end)
- i += (children_parts.length-2);
- splits.splice(0, children_parts.length-2);
- }
- }
-
- splits.shift();
- }
-
- if (children.length) {
- Syntax.log("Syntax Error: Children nodes not consumed", children.length, " remaining!");
- }
-
- return parts;
-};
-
-// Split a match at points in the tree that match a specific regular expression pattern.
-// Uses the fast tree bisection algorithm, performance should be bounded O(S log N) where N is
-// the total number of matches and S is the number of splits (?).
-Syntax.Match.prototype.split = function(pattern) {
- var splits = [], match;
-
- while ((match = pattern.exec(this.value)) !== null) {
- splits.push(pattern.lastIndex);
- }
-
- var matches = this.bisectAtOffsets(splits);
-
- // Remove any null placeholders.
- return jQuery.grep(matches, function(n,i){
- return n;
- });
-};
-
-Syntax.Brush = function () {
- // The primary class of this brush. Must be unique.
- this.klass = null;
-
- // A sequential list of rules for extracting matches.
- this.rules = [];
-
- // A list of all parents that this brush derives from.
- this.parents = [];
-
- // A list of processes that may be run after extracting matches.
- this.processes = {};
-};
-
-// Add a parent to the brush. This brush should be loaded as a dependency.
-Syntax.Brush.prototype.derives = function (name) {
- this.parents.push(name);
- this.rules.push({
- apply: function(text, expr) {
- return Syntax.brushes[name].getMatches(text);
- }
- });
-}
-
-// Return an array of all classes that the brush consists of.
-// A derivied brush is its own klass + the klass of any and all parents.
-Syntax.Brush.prototype.allKlasses = function () {
- var klasses = [this.klass];
-
- for (var i = 0; i < this.parents.length; i += 1) {
- klasses = klasses.concat(Syntax.brushes[this.parents[i]].allKlasses());
- }
-
- return klasses;
-}
-
-Syntax.Brush.convertStringToTokenPattern = function (pattern, escape) {
- var prefix = "\\b", postfix = "\\b";
-
- if (!pattern.match(/^\w/)) {
- if (!pattern.match(/\w$/)) {
- prefix = postfix = "";
- } else {
- prefix = "\\B";
- }
- } else {
- if (!pattern.match(/\w$/)) {
- postfix = "\\B";
- }
- }
-
- if (escape)
- pattern = RegExp.escape(pattern)
-
- return prefix + pattern + postfix;
-}
-
-Syntax.Brush.MatchPattern = function (text, rule) {
- if (!rule.pattern)
- return [];
-
- // Duplicate the pattern so that the function is reentrant.
- var matches = [], pattern = new RegExp;
- pattern.compile(rule.pattern);
-
- while((match = pattern.exec(text)) !== null) {
- if (rule.matches) {
- matches = matches.concat(rule.matches(match, rule));
- } else if (rule.brush) {
- matches.push(Syntax.Brush.buildTree(rule, match[0], match.index));
- } else {
- matches.push(new Syntax.Match(match.index, match[0].length, rule, match[0]));
- }
-
- if (rule.incremental) {
- // Don't start scanning from the end of the match..
- pattern.lastIndex = match.index + 1;
- }
- }
-
- return matches;
-}
-
-Syntax.Brush.prototype.push = function () {
- if (jQuery.isArray(arguments[0])) {
- var patterns = arguments[0], rule = arguments[1];
-
- var all = "(";
-
- for (var i = 0; i < patterns.length; i += 1) {
- if (i > 0) all += "|";
-
- var p = patterns[i];
-
- if (p instanceof RegExp) {
- all += p.source;
- } else {
- all += Syntax.Brush.convertStringToTokenPattern(p, true);
- }
- }
-
- all += ")";
-
- this.push(jQuery.extend({
- pattern: new RegExp(all, rule.options || 'g')
- }, rule));
- } else {
- var rule = arguments[0];
-
- if (typeof(rule.pattern) === 'string') {
- rule.string = rule.pattern;
- rule.pattern = new RegExp(Syntax.Brush.convertStringToTokenPattern(rule.string, true), rule.options || 'g')
- }
-
- if (typeof(XRegExp) !== 'undefined') {
- rule.pattern = new XRegExp(rule.pattern);
- }
-
- // Default pattern extraction algorithm
- rule.apply = rule.apply || Syntax.Brush.MatchPattern;
-
- if (rule.pattern && rule.pattern.global || typeof(rule.pattern) == 'undefined') {
- this.rules.push(jQuery.extend({owner: this}, rule));
- } else {
- Syntax.log("Syntax Error: Malformed rule: ", rule);
- }
- }
-};
-
-Syntax.Brush.prototype.getMatchesForRule = function (text, rule) {
- var matches = [], match = null;
-
- // Short circuit (user defined) function:
- if (typeof(rule.apply) != 'undefined') {
- matches = rule.apply(text, rule);
- }
-
- if (rule.debug) {
- Syntax.log("Syntax matches:", rule, text, matches);
- }
-
- return matches;
-};
-
-Syntax.Brush.prototype.getRuleForKlass = function (klass) {
- for (var i = 0; i < this.rules.length; i += 1) {
- if (this.rules[i].klass == klass) {
- return this.rules[i];
- }
- }
-
- return null;
-}
-
-// Get all matches from a given block of text.
-Syntax.Brush.prototype.getMatches = function(text) {
- var matches = [];
-
- for (var i = 0; i < this.rules.length; i += 1) {
- matches = matches.concat(this.getMatchesForRule(text, this.rules[i]));
- }
-
- return matches;
-};
-
-// A helper function for building a tree from a specific rule.
-// Typically used where sub-trees are required, e.g. CSS brush in HTML brush.
-Syntax.Brush.buildTree = function(rule, text, offset, additionalMatches) {
- var match = Syntax.brushes[rule.brush].buildTree(text, offset, additionalMatches);
-
- jQuery.extend(match.expression, rule);
-
- return match;
-}
-
-// This function builds a tree from a given block of text.
-// This is done by applying all rules to the text to get a complete list of matches,
-// sorting them in order, and inserting them into a syntax tree data structure.
-// Additional matches are forcefully inserted into the tree.
-// Provide an offset if the text is offset in a larger block of text. Matches
-// will be shifted along appropriately.
-Syntax.Brush.prototype.buildTree = function(text, offset, additionalMatches) {
- offset = offset || 0;
-
- // Fixes code that uses \r\n for line endings. /$/ matches both \r\n, which is a problem..
- text = text.replace(/\r/g, '');
-
- var matches = this.getMatches(text);
-
- // Shift matches if offset is provided.
- if (offset && offset > 0) {
- for (var i = 0; i < matches.length; i += 1) {
- matches[i].shift(offset);
- }
- }
-
- var top = new Syntax.Match(offset, text.length, {klass: this.allKlasses().join(" "), allow: '*', owner: this}, text);
-
- // This sort is absolutely key to the functioning of the tree insertion algorithm.
- matches.sort(Syntax.Match.sort);
-
- for (var i = 0; i < matches.length; i += 1) {
- top.insertAtEnd(matches[i]);
- }
-
- if (additionalMatches) {
- for (var i = 0; i < additionalMatches.length; i += 1) {
- top.insert(additionalMatches[i], true);
- }
- }
-
- top.complete = true;
-
- return top;
-};
-
-// This function builds a syntax tree from the given text and matches (optional).
-// The syntax tree is then flattened into html using a variety of functions.
-//
-// By default, you can't control reduction process through this function, but
-// it is possible to control the element conversion process by replace
-// .reduce(null, ...) with .reduce(reduceCallback, ...)
-// See Syntax.Match.defaultReduceCallback for more details about interface.
-//
-// Matches is optional, and provides a set of pre-existing matches to add
-// to the tree.
-// Options are passed to element level processing functions.
-Syntax.Brush.prototype.process = function(text, matches, options) {
- var top = this.buildTree(text, 0, matches);
-
- var lines = top.split(/\n/g);
-
- var html = document.createElement('pre');
- html.className = 'syntax';
-
- for (var i = 0; i < lines.length; i += 1) {
- var line = lines[i].reduce(null, function (container, match) {
- if (match.expression) {
- if (match.expression.process) {
- container = match.expression.process(container, match, options);
- }
-
- if (match.expression.owner) {
- var process = match.expression.owner.processes[match.expression.klass];
- if (process) {
- container = process(container, match, options);
- }
- }
- }
- return container;
- });
-
- html.appendChild(line);
- }
-
- return html;
-};
-
-// Highlights a given block of text with a given set of options.
-// options.brush should specify the brush to use, either by direct reference
-// or name.
-// Callback will be called with (highlighted_html, brush_used, original_text, options)
-Syntax.highlightText = function(text, options, callback) {
- var brushName = (options.brush || 'plain').toLowerCase();
-
- brushName = Syntax.aliases[brushName] || brushName;
-
- Syntax.brushes.get(brushName, function(brush) {
- if (options.tabWidth) {
- // Calculate the tab expansion and offsets
- replacement = Syntax.convertTabsToSpaces(text, options.tabWidth);
-
- // Update any existing matches
- if (options.matches && options.matches.length) {
- var linearOffsets = Syntax.convertToLinearOffsets(replacement.offsets, text.length);
- options.matches = Syntax.updateMatchesWithOffsets(options.matches, linearOffsets, replacement.text);
- }
-
- text = replacement.text;
- }
-
- var html = brush.process(text, options.matches, options);
-
- if (options.linkify !== false) {
- jQuery('span.href', html).each(function(){
- jQuery(this).replaceWith(jQuery('<a>').attr('href', this.innerHTML).text(this.innerHTML));
- });
- }
-
- callback(html, brush, text, options);
- });
-}
-
-// Highlight a given set of elements with a set of options.
-// Callback will be called once per element with (options, highlighted_html, original_container)
-Syntax.highlight = function (elements, options, callback) {
- if (typeof(options) === 'function') {
- callback = options;
- options = {};
- }
-
- options.layout = options.layout || 'preformatted';
- options.matches = [];
-
- if (typeof(options.tabWidth) === 'undefined') {
- options.tabWidth = 4;
- }
-
- elements.each(function () {
- var container = jQuery(this);
-
- // We can augment the plain text to extract existing annotations (e.g. <span class="foo">...</span>).
- options.matches = options.matches.concat(Syntax.extractElementMatches(container));
-
- var text = Syntax.innerText(this);
-
- var match = text.match(/-\*- mode: (.+?);(.*?)-\*-/i);
- var endOfSecondLine = text.indexOf("\n", text.indexOf("\n") + 1);
-
- if (match && match.index < endOfSecondLine) {
- options.brush = options.brush || match[1];
- var modeline = match[2];
-
- var mode = /([a-z\-]+)\:(.*?)\;/gi;
-
- while((match = mode.exec(modeline)) !== null) {
- var setter = Syntax.modeLineOptions[match[1]];
-
- if (setter) {
- setter(match[1], match[2], options);
- }
- }
- }
-
- Syntax.highlightText(text, options, function(html, brush/*, text, options*/) {
- Syntax.layouts.get(options.layout, function(layout) {
- html = layout(options, $(html), $(container));
-
- // If there is a theme specified, ensure it is added to the top level class.
- if (options.theme) {
- // Load dependencies
- var themes = Syntax.themes[options.theme];
- for (var i = 0; i < themes.length; i += 1) {
- html.addClass("syntax-theme-" + themes[i]);
- }
-
- // Add the base theme
- html.addClass("syntax-theme-" + options.theme);
- }
-
- if (brush.postprocess) {
- html = brush.postprocess(options, html, container);
- }
-
- if (callback) {
- html = callback(options, html, container);
- }
-
- if (html && options.replace === true) {
- container.replaceWith(html);
- }
- });
- });
- });
-};
-
-// Register the file as being loaded
-Syntax.loader.core = true;
diff --git a/js/jquery.syntax.js b/js/jquery.syntax.js
deleted file mode 100644
index 1325ea00..00000000
--- a/js/jquery.syntax.js
+++ /dev/null
@@ -1,317 +0,0 @@
-/*
- This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
- For more information, please see http://www.oriontransfer.co.nz/software/jquery-syntax
-
- Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-*/
-
-/*global Function: true, ResourceLoader: true, Syntax: true, alert: false, jQuery: true */
-
-// ECMAScript 5! Why wasn't this done before!?
-if (!Function.prototype.bind) {
- Function.prototype.bind = function (target) {
- var args = Array.prototype.slice.call(arguments, 1), fn = this;
-
- return function () {
- return fn.apply(target, args);
- };
- };
-}
-
-function ResourceLoader (loader) {
- this.dependencies = {};
- this.loading = {};
- this.loader = loader;
-}
-
-ResourceLoader.prototype._finish = function (name) {
- var deps = this.dependencies[name];
-
- if (deps) {
- // I'm not sure if this makes me want to cry... or laugh... or kill!?
- var chain = this._loaded.bind(this, name);
-
- for (var i = 0; i < deps.length; i += 1) {
- chain = this.get.bind(this, deps[i], chain);
- }
-
- chain();
- } else {
- this._loaded(name);
- }
-};
-
-ResourceLoader.prototype._loaded = function (name) {
- // When the script has been succesfully loaded, we expect the script
- // to register with this loader (i.e. this[name]).
- var resource = this[name], loading = this.loading[name];
-
- // Clear the loading list
- this.loading[name] = null;
-
- if (!resource) {
- alert("ResourceLoader: Could not load resource named " + name);
- } else {
- for (var i = 0; i < loading.length; i += 1) {
- loading[i](resource);
- }
- }
-};
-
-// This function must ensure that current cannot be completely loaded until next
-// is completely loaded.
-ResourceLoader.prototype.dependency = function (current, next) {
- // If the resource has completely loaded, then we don't need to queue it
- // as a dependency
- if (this[next] && !this.loading[name]) {
- return;
- }
-
- if (this.dependencies[current]) {
- this.dependencies[current].push(next);
- } else {
- this.dependencies[current] = [next];
- }
-};
-
-// This function must be reentrant for the same name and different callbacks.
-ResourceLoader.prototype.get = function (name, callback) {
- if (this.loading[name]) {
- this.loading[name].push(callback)
- } else if (this[name]) {
- callback(this[name]);
- } else {
- this.loading[name] = [callback];
- this.loader(name, this._finish.bind(this, name));
- }
-};
-
-var Syntax = {
- root: null,
- aliases: {},
- styles: {},
- themes: {},
- lib: {},
- defaultOptions: {
- cacheScripts: true,
- cacheStyleSheets: true,
- theme: "base"
- },
-
- brushes: new ResourceLoader(function (name, callback) {
- name = Syntax.aliases[name] || name;
-
- Syntax.getResource('jquery.syntax.brush', name, callback);
- }),
-
- layouts: new ResourceLoader(function (name, callback) {
- Syntax.getResource('jquery.syntax.layout', name, callback);
- }),
-
- loader: new ResourceLoader(function (name, callback) {
- Syntax.getResource('jquery.syntax', name, callback);
- }),
-
- getStyles: function (path) {
- var link = jQuery('<link>');
- jQuery("head").append(link);
-
- if (!Syntax.defaultOptions.cacheStyleSheets) {
- path = path + "?" + Math.random()
- }
-
- link.attr({
- rel: "stylesheet",
- type: "text/css",
- href: path
- });
- },
-
- getScript: function (path, callback) {
- var script = document.createElement('script');
-
- // Internet Exploder
- script.onreadystatechange = function() {
- if (this.onload && (this.readyState == 'loaded' || this.readyState == 'complete')) {
- this.onload();
-
- // Ensure the function is only called once.
- this.onload = null;
- }
- };
-
- // Every other modern browser
- script.onload = callback;
- script.type = "text/javascript";
-
- if (!Syntax.defaultOptions.cacheScripts)
- path = path + '?' + Math.random()
-
- script.src = path;
-
- document.getElementsByTagName('head')[0].appendChild(script);
- },
-
- getResource: function (prefix, name, callback) {
- var basename = prefix + "." + name;
- var styles = this.styles[basename];
-
- if (styles) {
- for (var i = 0; i < styles.length; i += 1) {
- this.getStyles(this.root + styles[i]);
- }
- }
-
- Syntax.getScript(this.root + basename + '.js', callback);
- },
-
- alias: function (name, aliases) {
- Syntax.aliases[name] = name;
-
- for (var i = 0; i < aliases.length; i += 1) {
- Syntax.aliases[aliases[i]] = name;
- }
- },
-
- brushAliases: function (brush) {
- var aliases = [];
-
- for (var name in Syntax.aliases) {
- if (Syntax.aliases[name] === brush) {
- aliases.push(name);
- }
- }
-
- return aliases;
- },
-
- brushNames: function () {
- var names = [];
-
- for (var name in Syntax.aliases) {
- if (name === Syntax.aliases[name]) {
- names.push(name);
- }
- }
-
- return names;
- },
-
- extractBrushName: function (className) {
- // brush names are by default lower case - normalize so we can detect it.
- className = className.toLowerCase();
-
- var match = className.match(/brush-([\S]+)/);
-
- if (match) {
- return match[1];
- } else {
- var classes = className.split(/ /);
-
- if (jQuery.inArray("syntax", classes) !== -1) {
- for (var i = 0; i < classes.length; i += 1) {
- var name = Syntax.aliases[classes[i]];
-
- if (name) {
- return name;
- }
- }
- }
- }
-
- return null;
- },
-
- detectRoot: function () {
- if (Syntax.root == null) {
- // Initialize root based on current script path.
- var scripts = jQuery('script').filter(function(){
- return this.src.match(/jquery\.syntax/);
- });
-
- var first = scripts.get(0);
-
- if (first) {
- // Calculate the basename for the given script src.
- var root = first.src.match(/.*\//);
-
- if (root) {
- Syntax.root = root[0];
- }
- }
- }
- },
-
- log: function() {
- if (typeof(console) != "undefined" && console.log) {
- console.log.apply(console, arguments);
- } else if (window.console && window.console.log) {
- window.console.log.apply(window.console, arguments);
- }
- }
-};
-
-jQuery.fn.syntax = function (options, callback) {
- Syntax.detectRoot();
-
- var elements = this;
-
- Syntax.loader.get('core', function () {
- Syntax.highlight(elements, options, callback);
- });
-};
-
-jQuery.syntax = function (options, callback) {
- options = options || {};
- var context = options.context;
-
- if (options.root) {
- Syntax.root = options.root;
- } else {
- Syntax.detectRoot();
- }
-
- options = jQuery.extend(Syntax.defaultOptions, options)
-
- options.blockSelector = options.blockSelector || 'pre.syntax:not(.highlighted)';
- options.inlineSelector = options.inlineSelector || 'code.syntax:not(.highlighted)';
-
- options.blockLayout = options.blockLayout || 'list';
- options.inlineLayout = options.inlineLayout || 'inline';
-
- // Allow the user to specify callbacks without replacement.
- if (typeof options.replace == "undefined")
- options.replace = true;
-
- jQuery(options.blockSelector, context).each(function () {
- jQuery(this).syntax(jQuery.extend({}, options, {
- brush: Syntax.extractBrushName(this.className),
- layout: options.blockLayout
- }), callback);
- });
-
- jQuery(options.inlineSelector, context).each(function () {
- jQuery(this).syntax(jQuery.extend({}, options, {
- brush: Syntax.extractBrushName(this.className),
- layout: options.inlineLayout
- }), callback);
- });
-};
diff --git a/js/jquery.syntax.layout.editor.js b/js/jquery.syntax.layout.editor.js
deleted file mode 100644
index 0a8c009a..00000000
--- a/js/jquery.syntax.layout.editor.js
+++ /dev/null
@@ -1,291 +0,0 @@
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.Editor = function(container, text) {
- this.container = container;
- this.current = this.getLines();
-}
-
-// This function generates an array of accumulated line offsets e.g.
-// If line 8 is actually in child element 6, indices[8] = -2
-Syntax.Editor.prototype.getLines = function() {
- var children = this.container.childNodes, lines = [], offsets = [];
-
- // Sometimes, e.g. when deleting text, children elements are not complete lines.
- // We need to accumulate incomplete lines (1), and then append them to the
- // start of the next complete line (2)
- var text = "", startChild = 0;
- for (var i = 0; i < children.length; i += 1) {
- var childLines = Syntax.innerText([children[i]]).split('\n');
-
- if (childLines.length > 1) {
- childLines[0] = text + childLines[0]; // (2)
- text = childLines.pop();
- } else {
- text += childLines[0]; // (1)
- continue;
- }
-
- for (var j = 0; j < childLines.length; j += 1) {
- offsets.push(startChild - lines.length);
- lines.push(childLines[j]);
- }
-
- startChild = i + 1;
- }
-
- // Final line, any remaining text
- if (text != "") {
- offsets.push(startChild - lines.length);
- lines.push(text);
- } else {
- startChild -= 1;
- }
-
- offsets.push(startChild);
-
- Syntax.log("getLines", offsets, lines, children);
-
- return {lines: lines, offsets: offsets};
-}
-
-// This function updates the editor's internal state with regards to lines changed.
-// This can be lines added, removed or modified partially. This function returns
-// a list of lines which are different between the previous set of lines and the
-// updated set of lines.
-// This algorithm is not a general diff algorithm because we expect three cases only:
-// 1: A single line was modified (most common case)
-// 2: Some lines were removed (selection -> delete)
-// 3: Some lines were added (paste)
-Syntax.Editor.prototype.updateChangedLines = function() {
- var result = {};
-
- var updated = this.getLines();
-
- // Find the sequence of lines at the start preceeding the change:
- var i = 0, j = 0;
- while (i < this.current.lines.length && j < updated.lines.length) {
- if (this.current.lines[i] == updated.lines[j]) {
- i += 1;
- j += 1;
- } else {
- break;
- }
- }
-
- // The length of the initial segment which hasn't changed:
- result.start = j;
-
- // Find the sequence of lines at the end proceeding the change:
- i = this.current.lines.length, j = updated.lines.length;
- while (i > result.start && j > result.start) {
- if (this.current.lines[i-1] == updated.lines[j-1]) {
- i -= 1;
- j -= 1;
- } else {
- break;
- }
- }
-
- // The index of the remaining portion which hasn't changed:
- result.end = j;
- // The index to the original set of lines which were the same:
- result.originalEnd = i;
-
- // Did we add or remove some lines?
- result.difference = updated.lines.length - this.current.lines.length;
-
- // This should be augmented to improve the above.
- while (result.start > 0) {
- if (updated.offsets[result.start] == updated.offsets[result.start-1])
- break;
-
- result.start -= 1;
- }
-
- if (result.difference > 0) {
- while (result.end < (updated.lines.length-1)) {
- if (updated.offsets[result.end-1] == updated.offsets[result.end])
- break;
-
- result.end += 1;
- result.originalEnd += 1;
- }
- }
-
- // Update the internal state for the next update.
- this.current = updated;
- this.changed = result;
-
- return result;
-}
-
-Syntax.Editor.prototype.textForLines = function(start, end) {
- return this.current.lines.slice(start, end).join('\n') + '\n';
-}
-
-Syntax.Editor.prototype.updateLines = function(changed, newLines) {
- // We have two cases to handle, either we are replacing lines
- // (1a) Replacing old lines with one more more new lines (update)
- // (1b) Replacing old lines with zero new lines (removal)
- // Or we are inserting lines
- // (2a) We are inserting lines at the start of the element
- // (2b) We are inserting lines after an existing element.
-
- if (changed.start != changed.end) {
- // When text is deleted, at most two elements can remain:
- // (1) Whatever was partially remaining on the first line.
- // (2) Whatever was partially remaining on the last line.
- // All other lines have already been removed by the container.
- // changed.difference tells us how many elements have already been removed.
-
- // Cases (1a) and (1b)
- var start = changed.start, end = changed.end;
-
- start += this.current.offsets[start];
- end += this.current.offsets[end];
-
- var oldLines = Array.prototype.slice.call(this.container.childNodes, start, end);
-
- $(oldLines).replaceWith(newLines);
- } else {
- if (changed.start == 0)
- $(this.container).prepend(newLines);
- else {
- var start = changed.start;
-
- start += this.current.offsets[start];
-
- $(this.container.childNodes[start]).after(newLines);
- }
- }
-}
-
-// http://jsfiddle.net/TjXEG/1/
-Syntax.Editor.getCharacterOffset = function(element) {
- var caretOffset = 0;
- if (typeof window.getSelection != "undefined") {
- var range = window.getSelection().getRangeAt(0);
- var preCaretRange = range.cloneRange();
- preCaretRange.selectNodeContents(element);
- preCaretRange.setEnd(range.endContainer, range.endOffset);
- caretOffset = preCaretRange.toString().length;
- } else if (typeof document.selection != "undefined" && document.selection.type != "Control") {
- var textRange = document.selection.createRange();
- var preCaretTextRange = document.body.createTextRange();
- preCaretTextRange.moveToElementText(element);
- preCaretTextRange.setEndPoint("EndToEnd", textRange);
- caretOffset = preCaretTextRange.text.length;
- }
- return caretOffset;
-};
-
-Syntax.Editor.getNodesForCharacterOffsets = function(offsets, node) {
- var treeWalker = document.createTreeWalker(
- node,
- NodeFilter.SHOW_TEXT,
- function(node) {
- return NodeFilter.FILTER_ACCEPT;
- },
- false
- );
-
- var nodes = [], charCount = 0, i = 0;
- while (i < offsets.length && treeWalker.nextNode()) {
- var end = charCount + treeWalker.currentNode.length;
-
- while (i < offsets.length && offsets[i] < end) {
- nodes.push([treeWalker.currentNode, charCount, end]);
-
- i += 1;
- }
-
- charCount = end;
- }
-
- return nodes;
-};
-
-Syntax.Editor.prototype.getClientState = function() {
- var state = {};
-
- var selection = window.getSelection();
-
- if (selection.rangeCount > 0)
- state.range = selection.getRangeAt(0);
-
- if (state.range) {
- state.startOffset = Syntax.Editor.getCharacterOffset(this.container);
- }
-
- return state;
-};
-
-Syntax.Editor.prototype.setClientState = function(state) {
- if (state.startOffset) {
- var nodes = Syntax.Editor.getNodesForCharacterOffsets([state.startOffset], this.container);
-
- var range = document.createRange();
- range.setStart(nodes[0][0], state.startOffset - nodes[0][1]);
- range.setEnd(nodes[0][0], state.startOffset - nodes[0][1]);
-
- var selection = window.getSelection();
- selection.removeAllRanges();
- selection.addRange(range);
- }
-};
-
-Syntax.layouts.editor = function(options, code/*, container*/) {
- var container = jQuery('<div class="editor syntax highlighted" contentEditable="true">');
-
- container.append(code.children());
-
- var editor = new Syntax.Editor(container.get(0));
-
- var updateContainer = function(lineHint) {
- // Need to save cursor position/selection
- var clientState = editor.getClientState();
- var changed = editor.updateChangedLines();
-
- // Sometimes there are problems where multiple spans exist on the same line.
- if (changed.difference < 0 && changed.start > 0)
- changed.start -= 1;
-
- var text = editor.textForLines(changed.start, changed.end);
-
- if (changed.start == changed.end) {
- editor.updateLines(changed, []);
- } else {
- // Lines have been added, update the highlighting.
- Syntax.highlightText(text, options, function(html) {
- editor.updateLines(changed, html.children().get());
-
- // Restore cusor position/selection if possible
- editor.setClientState(clientState);
- });
- }
- };
-
- // 'blur keyup paste mouseup'
- container.bind('keyup', function(){
- updateContainer();
- });
-
- container.bind('paste', function(event){
- updateContainer();
- });
-
- container.bind('keydown', function(event){
- if (event.keyCode == 9) {
- event.preventDefault();
- document.execCommand('insertHTML', false, " ");
- }
- else if (event.keyCode == 13) {
- event.preventDefault();
- document.execCommand('insertHTML', false, "\n");
- }
- });
-
- return jQuery('<div class="syntax-container">').append(container);
-};
diff --git a/js/jquery.syntax.layout.fixed.js b/js/jquery.syntax.layout.fixed.js
deleted file mode 100644
index f51c0bc1..00000000
--- a/js/jquery.syntax.layout.fixed.js
+++ /dev/null
@@ -1,70 +0,0 @@
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-// This layout doesn't work correctly in IE6, but is fine in all other tested browsers.
-Syntax.layouts.fixed = function(options, code, container) {
- var fixed = jQuery('<div class="fixed syntax highlighted">'), line = 1, space = /^\s*$/;
- var toolbar = jQuery('<div class="toolbar">');
-
- var rawCode = container.clone();
- rawCode.addClass("raw syntax highlighted");
-
- var codeTable = document.createElement('table');
-
- var codeTableBody = document.createElement('tbody');
- codeTable.appendChild(codeTableBody);
-
- var numbersColumn = jQuery('<div class="numbers-column">');
- var codeColumn = jQuery('<div class="code-column">');
-
- // Source code
- code.children().each(function() {
- var lineNumber = document.createElement('div');
- lineNumber.className = "line ln" + line
- lineNumber.innerHTML = line;
- numbersColumn.append(lineNumber);
-
- var lineCode = document.createElement('td');
- lineCode.className = "source " + this.className;
-
- if (line % 2) {
- lineCode.className += " alt";
- }
-
- if (lineCode == 1) {
- lineNumber.className += " first"
- }
-
- // Thanks to Michael for suggesting the obvious :)
- lineCode.appendChild(this);
-
- var tr = document.createElement('tr');
- tr.appendChild(lineCode);
- codeTableBody.appendChild(tr);
-
- line = line + 1;
- });
-
- codeColumn.append(codeTable);
-
- fixed.append(numbersColumn);
- fixed.append(codeColumn);
-
- a = jQuery('<a href="#">View Raw Code</a>');
- a.click(function (event) {
- event.preventDefault();
-
- if (jQuery(fixed).is(':visible')) {
- rawCode.height(jQuery(fixed).height());
- jQuery(fixed).replaceWith(rawCode);
- } else {
- jQuery(rawCode).replaceWith(fixed);
- }
- });
-
- toolbar.append(a);
- toolbar.append('<a href="http://www.oriontransfer.co.nz/software/jquery-syntax" target="oriontransfer">?</a>');
-
- return jQuery('<div class="syntax-container">').append(toolbar).append(fixed);
-};
diff --git a/js/jquery.syntax.layout.inline.js b/js/jquery.syntax.layout.inline.js
deleted file mode 100644
index 4a943501..00000000
--- a/js/jquery.syntax.layout.inline.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.layouts.inline = function(options, code, container) {
- var inline = jQuery('<code class="syntax highlighted"></code>');
- inline.append(code.children());
-
- var container = jQuery('<span class="syntax-container">');
- container.append(inline);
-
- return container;
-};
diff --git a/js/jquery.syntax.layout.list.js b/js/jquery.syntax.layout.list.js
deleted file mode 100644
index 0dcf6d86..00000000
--- a/js/jquery.syntax.layout.list.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.layouts.list = function(options, code, container) {
- var listTag = options.listTag || 'ol';
-
- var list = jQuery('<' + listTag + ' class="syntax highlighted">'), line = 1, space = /^\s*$/;
- var toolbar = jQuery('<div class="toolbar">');
-
- var rawCode = container.clone();
- rawCode.addClass("raw syntax highlighted");
-
- // Source code
- code.children().each(function() {
- var li = document.createElement('li');
- li.className = "line ln" + line
-
- if (line % 2) {
- li.className += " alt";
- }
-
- if (line == 1) {
- li.className += " first"
- }
-
- var div = document.createElement('div');
- div.className = "source " + this.className;
-
- div.appendChild(this);
-
- li.appendChild(div);
- list[0].appendChild(li);
-
- line = line + 1;
- });
-
- a = jQuery('<a href="#">View Raw Code</a>');
- a.click(function (event) {
- event.preventDefault();
-
- if (jQuery(list).is(':visible')) {
- rawCode.height(jQuery(list).height());
- jQuery(list).replaceWith(rawCode);
- } else {
- jQuery(rawCode).replaceWith(list);
- }
- });
-
- toolbar.append(a);
- toolbar.append('<a href="http://www.oriontransfer.co.nz/software/jquery-syntax" target="oriontransfer">?</a>');
-
- return jQuery('<div class="syntax-container">').append(toolbar).append(list);
-};
diff --git a/js/jquery.syntax.layout.plain.js b/js/jquery.syntax.layout.plain.js
deleted file mode 100644
index 877590d6..00000000
--- a/js/jquery.syntax.layout.plain.js
+++ /dev/null
@@ -1,15 +0,0 @@
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-// This layout doesn't work correctly in IE6, but is fine in all other tested browsers.
-Syntax.layouts.plain = function(options, code, container) {
- var toolbar = jQuery('<div class="toolbar">');
-
- var scrollContainer = jQuery('<div class="syntax plain highlighted">');
- code.removeClass('syntax');
-
- scrollContainer.append(code);
-
- return jQuery('<div class="syntax-container">').append(toolbar).append(scrollContainer);
-};
diff --git a/js/jquery.syntax.layout.table.js b/js/jquery.syntax.layout.table.js
deleted file mode 100644
index fbd656f1..00000000
--- a/js/jquery.syntax.layout.table.js
+++ /dev/null
@@ -1,58 +0,0 @@
-// This file is part of the "jQuery.Syntax" project, and is distributed under the MIT License.
-// Copyright (c) 2011 Samuel G. D. Williams. <http://www.oriontransfer.co.nz>
-// See <jquery.syntax.js> for licensing details.
-
-Syntax.layouts.table = function(options, code, container) {
- var table = jQuery('<table class="syntax highlighted"></table>'), tr = null, td = null, a = null, line = 1;
- var tbody = document.createElement('tbody');
- var toolbar = jQuery('<div class="toolbar"></div>');
-
- var rawCode = container.clone();
- rawCode.addClass("raw syntax highlighted");
-
- // Source code
- code.children().each(function() {
- tr = document.createElement('tr');
- tr.className = "line ln" + line;
-
- if (line % 2) {
- tr.className += " alt";
- }
-
- td = document.createElement('td');
- td.className = "number";
-
- number = document.createElement('span');
- number.innerHTML = line;
- td.appendChild(number);
- tr.appendChild(td);
-
- td = document.createElement('td');
- td.className = "source";
-
- td.appendChild(this);
- tr.appendChild(td);
-
- tbody.appendChild(tr);
- line = line + 1;
- });
-
- table.append(tbody);
-
- a = jQuery('<a href="#">View Raw Code</a>');
- a.click(function (event) {
- event.preventDefault();
-
- if (jQuery(table).is(':visible')) {
- rawCode.height(jQuery(table).height());
- jQuery(table).replaceWith(rawCode);
- } else {
- jQuery(rawCode).replaceWith(table);
- }
- });
-
- toolbar.append(a);
- toolbar.append('<a href="http://www.oriontransfer.co.nz/software/jquery-syntax" target="oriontransfer">?</a>');
-
- return jQuery('<div class="syntax-container">').append(toolbar).append(table);
-};
diff --git a/js/jquery.syntax.layout.yelp.js b/js/jquery.syntax.layout.yelp.js
deleted file mode 100644
index 1e28d67c..00000000
--- a/js/jquery.syntax.layout.yelp.js
+++ /dev/null
@@ -1,4 +0,0 @@
-Syntax.layouts.yelp = function(options, code, container) {
- code.addClass('contents');
- return code;
-};
diff --git a/js/syntax.html b/js/syntax.html
deleted file mode 100644
index 32b3a743..00000000
--- a/js/syntax.html
+++ /dev/null
@@ -1,194 +0,0 @@
-<html>
-<head>
-<style type="text/css">
-table { border-collapse: collapse; }
-td {
- vertical-align: top;
- border: solid 1px #888a85;
- padding: 2px 4px 2px 4px;
-}
-p { max-width: 48em; }
-</style>
-<head>
-<body>
-
-<p>Yelp uses <a href="http://www.oriontransfer.co.nz/software/jquery-syntax/index.en">jQuery.Syntax</a>
-(currently version 3.0) for syntax highlighting. jquery.Syntax has its own naming
-conventions for syntaxes. Mallard uses MIME types. DocBook has a free-form language
-attribute. This page shows the mapping. We try to use MIME types found in the XDG
-mime types package. For DocBook, we try to be compatible with language names used
-by docbook-style-xsl.</p>
-
-<table>
-
-<tr>
-<th>Syntax</th>
-<th>Mallard</th>
-<th>DocBook</th>
-</tr>
-
-<tr>
-<td>apache</td>
-<td></td>
-<td></td>
-</tr>
-
-<tr>
-<td>applescript</td>
-<td></td>
-<td></td>
-</tr>
-
-<tr>
-<td>asm</td>
-<td></td>
-<td></td>
-</tr>
-
-<tr>
-<td>bash</td>
-<td></td>
-<td></td>
-</tr>
-
-<tr>
-<td>bash-script</td>
-<td>application/x-shellscript</td>
-<td>bash</td>
-</tr>
-
-<tr>
-<td>basic</td>
-<td></td>
-<td></td>
-</tr>
-
-<tr>
-<td>clang</td>
-<td>text/x-csrc<br>text/x-chdr<br>text/x-c++hdr<br>text/x-c++src<br>text/x-objcsrc</td>
-<td>c<br>cpp<br>objc</td>
-</tr>
-
-<tr>
-<td>csharp</td>
-<td>text/x-csharp</td>
-<td>csharp</td>
-</tr>
-
-<tr>
-<td>css</td>
-<td>text/css</td>
-<td>css</td>
-</tr>
-
-<tr>
-<td>diff</td>
-<td>text/x-patch</td>
-<td>diff</td>
-</tr>
-
-<tr>
-<td>haskell</td>
-<td></td>
-<td></td>
-</tr>
-
-<tr>
-<td>html</td>
-<td>text/html<br>application/xml<br>*/*+xml</td>
-<td>html<br>xml</td>
-</tr>
-
-<tr>
-<td>java</td>
-<td>text/x-java</td>
-<td>java</td>
-</tr>
-
-<tr>
-<td>javascript</td>
-<td>application/javascript</td>
-<td>javascript</td>
-</tr>
-
-<tr>
-<td>lisp</td>
-<td>text/x-scheme<br>text/x-emacs-lisp</td>
-<td>lisp</td>
-</tr>
-
-<tr>
-<td>lua</td>
-<td>text/x-lua</td>
-<td>lua</td>
-</tr>
-
-<tr>
-<td>ooc</td>
-<td></td>
-<td></td>
-</tr>
-
-<tr>
-<td>pascal</td>
-<td>text/x-pascal</td>
-<td>pascal</td>
-</tr>
-
-<tr>
-<td>perl5</td>
-<td>application/x-perl</td>
-<td>perl</td>
-</tr>
-
-<tr>
-<td>php</td>
-<td></td>
-<td></td>
-</tr>
-
-<tr>
-<td>php-script</td>
-<td>application/x-php</td>
-<td>php</td>
-</tr>
-
-<tr>
-<td>plain</td>
-<td></td>
-<td></td>
-</tr>
-
-<tr>
-<td>python</td>
-<td>text/x-python</td>
-<td>python</td>
-</tr>
-
-<tr>
-<td>ruby</td>
-<td>application/x-ruby</td>
-<td>ruby</td>
-</tr>
-
-<tr>
-<td>smalltalk</td>
-<td></td>
-<td></td>
-</tr>
-
-<tr>
-<td>sql</td>
-<td>text/x-sql</td>
-<td>sql</td>
-</tr>
-
-<tr>
-<td>yaml</td>
-<td>application/x-yaml</td>
-<td>yaml</td>
-</tr>
-
-</table>
-</body>
-</html>
diff --git a/test/colors/Makefile b/test/colors/Makefile
new file mode 100644
index 00000000..e07230cc
--- /dev/null
+++ b/test/colors/Makefile
@@ -0,0 +1,5 @@
+all: testcolors.html
+
+testcolors.html: testcolors.xsl ../../xslt/common/color.xsl
+ xsltproc -o testcolors.html testcolors.xsl testcolors.xsl
+
diff --git a/test/colors/testcolors.xsl b/test/colors/testcolors.xsl
new file mode 100644
index 00000000..cb5f4e63
--- /dev/null
+++ b/test/colors/testcolors.xsl
@@ -0,0 +1,200 @@
+<?xml version='1.0' encoding='UTF-8'?><!-- -*- indent-tabs-mode: nil -*- -->
+<!--
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU Lesser General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option) any
+later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this program; see the file COPYING.LGPL. If not, see <http://www.gnu.org/licenses/>.
+-->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:math="http://exslt.org/math"
+ exclude-result-prefixes="math"
+ version="1.0">
+
+<xsl:include href="../../xslt/common/color.xsl"/>
+
+<xsl:template match="/">
+ <html>
+ <head>
+ <style type="text/css">
+body {
+ margin: 0;
+ display: flex;
+ flex-flow: row wrap;
+ font-size: 14px;
+ font-family: sans-serif;
+ background: <xsl:value-of select="$color.bg"/>;
+ color: <xsl:value-of select="$color.fg"/>;
+}
+h1 {
+ margin: 10px;
+ flex: 100% 1 0;
+ font-size: 30px;
+}
+h2 { margin: 0; font-size: 20px; }
+section {
+ margin: 10px;
+ flex: 300px 1 0;
+}
+div.box { margin: 20px 0; padding: 10px; border: solid 1px black; }
+p { margin: 10px 0 0 0; }
+p:first-child { margin-top: 0; }
+ </style>
+ </head>
+ <body>
+ <h1>Color Test</h1>
+ <xsl:call-template name="section">
+ <xsl:with-param name="title" select="'Red'"/>
+ <xsl:with-param name="base" select="$color.red"/>
+ <xsl:with-param name="fg" select="$color.fg.red"/>
+ <xsl:with-param name="bg" select="$color.bg.red"/>
+ </xsl:call-template>
+ <xsl:call-template name="section">
+ <xsl:with-param name="title" select="'Orange'"/>
+ <xsl:with-param name="base" select="$color.orange"/>
+ <xsl:with-param name="fg" select="$color.fg.orange"/>
+ <xsl:with-param name="bg" select="$color.bg.orange"/>
+ </xsl:call-template>
+ <xsl:call-template name="section">
+ <xsl:with-param name="title" select="'Yellow'"/>
+ <xsl:with-param name="base" select="$color.yellow"/>
+ <xsl:with-param name="fg" select="$color.fg.yellow"/>
+ <xsl:with-param name="bg" select="$color.bg.yellow"/>
+ </xsl:call-template>
+ <xsl:call-template name="section">
+ <xsl:with-param name="title" select="'Green'"/>
+ <xsl:with-param name="base" select="$color.green"/>
+ <xsl:with-param name="fg" select="$color.fg.green"/>
+ <xsl:with-param name="bg" select="$color.bg.green"/>
+ </xsl:call-template>
+ <xsl:call-template name="section">
+ <xsl:with-param name="title" select="'Blue'"/>
+ <xsl:with-param name="base" select="$color.blue"/>
+ <xsl:with-param name="fg" select="$color.fg.blue"/>
+ <xsl:with-param name="bg" select="$color.bg.blue"/>
+ </xsl:call-template>
+ <xsl:call-template name="section">
+ <xsl:with-param name="title" select="'Purple'"/>
+ <xsl:with-param name="base" select="$color.purple"/>
+ <xsl:with-param name="fg" select="$color.fg.purple"/>
+ <xsl:with-param name="bg" select="$color.bg.purple"/>
+ </xsl:call-template>
+ <xsl:call-template name="section">
+ <xsl:with-param name="title" select="'Gray'"/>
+ <xsl:with-param name="base" select="$color.gray"/>
+ <xsl:with-param name="fg" select="$color.fg.gray"/>
+ <xsl:with-param name="bg" select="$color.bg.gray"/>
+ </xsl:call-template>
+ <xsl:call-template name="section">
+ <xsl:with-param name="title" select="'Dark'"/>
+ <xsl:with-param name="base" select="$color.gray"/>
+ <xsl:with-param name="fg" select="$color.fg.dark"/>
+ <xsl:with-param name="bg" select="$color.bg.dark"/>
+ </xsl:call-template>
+ <xsl:call-template name="section">
+ <xsl:with-param name="title" select="'White'"/>
+ <xsl:with-param name="base" select="$color.gray"/>
+ <xsl:with-param name="fg" select="$color.fg"/>
+ <xsl:with-param name="bg" select="$color.bg"/>
+ </xsl:call-template>
+ <section/>
+ <section/>
+ </body>
+ </html>
+</xsl:template>
+
+<xsl:template name="section">
+ <xsl:param name="title"/>
+ <xsl:param name="base"/>
+ <xsl:param name="fg"/>
+ <xsl:param name="bg"/>
+ <section>
+ <h2><xsl:value-of select="$title"/></h2>
+ <div class="box" style="color: {$fg}; border-color: {$base};">
+ <p>This text is <xsl:value-of select="$fg"/></p>
+ <p>The border is <xsl:value-of select="$base"/></p>
+ </div>
+ <div class="box" style="background-color: {$bg}; border-color: {$base};">
+ <p>This background is <xsl:value-of select="$bg"/></p>
+ </div>
+ <div class="box" style="background-color: {$bg}; border-color: {$base};">
+ <xsl:call-template name="row">
+ <xsl:with-param name="bg" select="$bg"/>
+ <xsl:with-param name="fg" select="$color.fg.red"/>
+ <xsl:with-param name="label" select="'red'"/>
+ </xsl:call-template>
+ <xsl:call-template name="row">
+ <xsl:with-param name="bg" select="$bg"/>
+ <xsl:with-param name="fg" select="$color.fg.orange"/>
+ <xsl:with-param name="label" select="'orange'"/>
+ </xsl:call-template>
+ <xsl:call-template name="row">
+ <xsl:with-param name="bg" select="$bg"/>
+ <xsl:with-param name="fg" select="$color.fg.yellow"/>
+ <xsl:with-param name="label" select="'yellow'"/>
+ </xsl:call-template>
+ <xsl:call-template name="row">
+ <xsl:with-param name="bg" select="$bg"/>
+ <xsl:with-param name="fg" select="$color.fg.green"/>
+ <xsl:with-param name="label" select="'green'"/>
+ </xsl:call-template>
+ <xsl:call-template name="row">
+ <xsl:with-param name="bg" select="$bg"/>
+ <xsl:with-param name="fg" select="$color.fg.blue"/>
+ <xsl:with-param name="label" select="'blue'"/>
+ </xsl:call-template>
+ <xsl:call-template name="row">
+ <xsl:with-param name="bg" select="$bg"/>
+ <xsl:with-param name="fg" select="$color.fg.purple"/>
+ <xsl:with-param name="label" select="'purple'"/>
+ </xsl:call-template>
+ <xsl:call-template name="row">
+ <xsl:with-param name="bg" select="$bg"/>
+ <xsl:with-param name="fg" select="$color.fg.gray"/>
+ <xsl:with-param name="label" select="'gray'"/>
+ </xsl:call-template>
+ <xsl:call-template name="row">
+ <xsl:with-param name="bg" select="$bg"/>
+ <xsl:with-param name="fg" select="$color.fg.dark"/>
+ <xsl:with-param name="label" select="'dark'"/>
+ </xsl:call-template>
+ <xsl:call-template name="row">
+ <xsl:with-param name="bg" select="$bg"/>
+ <xsl:with-param name="fg" select="$color.fg"/>
+ <xsl:with-param name="label" select="'text'"/>
+ </xsl:call-template>
+ </div>
+ </section>
+</xsl:template>
+
+<xsl:template name="row">
+ <xsl:param name="bg"/>
+ <xsl:param name="fg"/>
+ <xsl:param name="label"/>
+ <xsl:variable name="ratio">
+ <xsl:call-template name="color.contrast">
+ <xsl:with-param name="bg" select="$bg"/>
+ <xsl:with-param name="fg" select="$fg"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <p style="color: {$fg}">
+ <xsl:value-of select="$fg"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$label"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="format-number($ratio, '##0.00')"/>
+ <xsl:if test="$ratio &lt; 4.5">
+ <b> &lt; 4.5</b>
+ </xsl:if>
+ </p>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/test/syntax/Makefile b/test/syntax/Makefile
new file mode 100644
index 00000000..975a897d
--- /dev/null
+++ b/test/syntax/Makefile
@@ -0,0 +1,11 @@
+highlight.pack.js:
+ cp ../../js/highlight.pack.js .
+
+mallard: highlight.pack.js
+ xsltproc --xinclude ../../xslt/mallard/html/mal2html.xsl mallard.page
+
+docbook: highlight.pack.js
+ xsltproc --xinclude --param db.chunk.max_depth 0 ../../xslt/docbook/html/db2html.xsl docbook.docbook
+
+dita: highlight.pack.js
+ xsltproc --xinclude ../../xslt/dita/html/dita2html.xsl dita.dita
diff --git a/test/syntax/code/actionscript b/test/syntax/code/actionscript
new file mode 100644
index 00000000..9c35adf9
--- /dev/null
+++ b/test/syntax/code/actionscript
@@ -0,0 +1,24 @@
+package org.example.dummy {
+ import org.dummy.*;
+
+ /*define package inline interface*/
+ public interface IFooBarzable {
+ public function foo(... pairs):Array;
+ }
+
+ public class FooBar implements IFooBarzable {
+ static private var cnt:uint = 0;
+ private var bar:String;
+
+ //constructor
+ public function TestBar(bar:String):void {
+ bar = bar;
+ ++cnt;
+ }
+
+ public function foo(... pairs):Array {
+ pairs.push(bar);
+ return pairs;
+ }
+ }
+}
diff --git a/test/syntax/code/apache b/test/syntax/code/apache
new file mode 100644
index 00000000..3bf2af4f
--- /dev/null
+++ b/test/syntax/code/apache
@@ -0,0 +1,19 @@
+# rewrite`s rules for wordpress pretty url
+LoadModule rewrite_module modules/mod_rewrite.so
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteCond %{REQUEST_FILENAME} !-d
+RewriteRule . index.php [NC,L]
+
+ExpiresActive On
+ExpiresByType application/x-javascript "access plus 1 days"
+
+Order Deny,Allow
+Allow from All
+
+<Location /maps/>
+ RewriteMap map txt:map.txt
+ RewriteMap lower int:tolower
+ RewriteCond %{REQUEST_URI} ^/([^/.]+)\.html$ [NC]
+ RewriteCond ${map:${lower:%1}|NOT_FOUND} !NOT_FOUND
+ RewriteRule .? /index.php?q=${map:${lower:%1}} [NC,L]
+</Location>
diff --git a/test/syntax/code/asciidoc b/test/syntax/code/asciidoc
new file mode 100644
index 00000000..bfeb895e
--- /dev/null
+++ b/test/syntax/code/asciidoc
@@ -0,0 +1,65 @@
+Hello, World!
+============
+Author Name, <author@domain.foo>
+
+you can write text http://example.com[with links], optionally
+using an explicit link:http://example.com[link prefix].
+
+* single quotes around a phrase place 'emphasis'
+** alternatively, you can put underlines around a phrase to add _emphasis_
+* astericks around a phrase make the text *bold*
+* pluses around a phrase make it +monospaced+
+* `smart' quotes using a leading backtick and trailing single quote
+** use two of each for double ``smart'' quotes
+
+- escape characters are supported
+- you can escape a quote inside emphasized text like 'here\'s johnny!'
+
+term:: definition
+ another term:: another definition
+
+// this is just a comment
+
+Let's make a break.
+
+'''
+
+////
+we'll be right with you
+
+after this brief interruption.
+////
+
+== We're back!
+
+Want to see a image::images/tiger.png[Tiger]?
+
+.Nested highlighting
+++++
+<this_is inline="xml"></this_is>
+++++
+
+____
+asciidoc is so powerful.
+____
+
+another quote:
+
+[quote, Sir Arthur Conan Doyle, The Adventures of Sherlock Holmes]
+____
+When you have eliminated all which is impossible, then whatever remains, however improbable, must be the truth.
+____
+
+Getting Literal
+---------------
+
+ want to get literal? prefix a line with a space.
+
+....
+I'll join that party, too.
+....
+
+. one thing (yeah!)
+. two thing `i can write code`, and `more` wipee!
+
+NOTE: AsciiDoc is quite cool, you should try it.
diff --git a/test/syntax/code/bash b/test/syntax/code/bash
new file mode 100644
index 00000000..b2654812
--- /dev/null
+++ b/test/syntax/code/bash
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+###### BEGIN CONFIG
+ACCEPTED_HOSTS="/root/.hag_accepted.conf"
+BE_VERBOSE=false
+###### END CONFIG
+
+if [ "$UID" -ne 0 ]
+then
+ echo "Superuser rights is required"
+ echo 'Printing the # sign'
+ exit 2
+fi
+
+if test $# -eq 0
+then
+elif test [ $1 == 'start' ]
+else
+fi
+
+genApacheConf(){
+ if [[ "$2" = "www" ]]
+ then
+ full_domain=$1
+ else
+ full_domain=$2.$1
+ fi
+ host_root="${APACHE_HOME_DIR}$1/$2/$(title)"
+ echo -e "# Host $1/$2 :"
+}
diff --git a/test/syntax/code/clojure b/test/syntax/code/clojure
new file mode 100644
index 00000000..ebce2352
--- /dev/null
+++ b/test/syntax/code/clojure
@@ -0,0 +1,18 @@
+; Comment
+
+(def
+ ^{:macro true
+ :added "1.0"}
+ let (fn* let [&form &env & decl] (cons 'let* decl)))
+
+(def ^:dynamic chunk-size 17)
+
+(defn next-chunk [rdr]
+ (let [buf (char-array chunk-size)
+ s (.read rdr buf)]
+ (when (pos? s)
+ (java.nio.CharBuffer/wrap buf 0 s))))
+
+(defn chunk-seq [rdr]
+ (when-let [chunk (next-chunk rdr)]
+ (cons chunk (lazy-seq (chunk-seq rdr)))))
diff --git a/test/syntax/code/cmake b/test/syntax/code/cmake
new file mode 100644
index 00000000..2bbea38c
--- /dev/null
+++ b/test/syntax/code/cmake
@@ -0,0 +1,19 @@
+cmake_minimum_required(VERSION 2.8.8)
+project(cmake_example)
+
+# Show message on Linux platform
+if (${CMAKE_SYSTEM_NAME} MATCHES Linux)
+ message("Good choice, bro!")
+endif()
+
+# Tell CMake to run moc when necessary:
+set(CMAKE_AUTOMOC ON)
+# As moc files are generated in the binary dir,
+# tell CMake to always look for includes there:
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+# Widgets finds its own dependencies.
+find_package(Qt5Widgets REQUIRED)
+
+add_executable(myproject main.cpp mainwindow.cpp)
+qt5_use_modules(myproject Widgets)
diff --git a/test/syntax/code/cpp b/test/syntax/code/cpp
new file mode 100644
index 00000000..37497ac5
--- /dev/null
+++ b/test/syntax/code/cpp
@@ -0,0 +1,15 @@
+#include <iostream>
+#define IABS(x) ((x) < 0 ? -(x) : (x))
+
+int main(int argc, char *argv[]) {
+
+ /* An annoying "Hello World" example */
+ for (auto i = 0; i < 0xFFFF; i++)
+ cout << "Hello, World!" << endl;
+
+ char c = '\n';
+ unordered_map <string, vector<string> > m;
+ m["key"] = "\\\\"; // this is an error
+
+ return -2e3 + 12l;
+}
diff --git a/test/syntax/code/cs b/test/syntax/code/cs
new file mode 100644
index 00000000..f58190a1
--- /dev/null
+++ b/test/syntax/code/cs
@@ -0,0 +1,38 @@
+using System;
+
+#pragma warning disable 414, 3021
+
+public class Program
+{
+ /// <summary>The entry point to the program.</summary>
+ public static int Main(string[] args)
+ {
+ Console.WriteLine("Hello, World!");
+ string s = @"This
+""string""
+spans
+multiple
+lines!";
+
+ dynamic x = new ExpandoObject();
+ x.MyProperty = 2;
+
+ return 0;
+ }
+}
+
+async Task<int> AccessTheWebAsync()
+{
+ // ...
+ string urlContents = await getStringTask;
+ return urlContents.Length;
+}
+
+internal static void ExceptionFilters()
+{
+ try
+ {
+ throw new Exception();
+ }
+ catch (Exception e) when (e.Message == "My error") { }
+}
diff --git a/test/syntax/code/css b/test/syntax/code/css
new file mode 100644
index 00000000..e7a102b0
--- /dev/null
+++ b/test/syntax/code/css
@@ -0,0 +1,25 @@
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+ body:first-of-type pre::after {
+ content: 'highlight: ' attr(class);
+ }
+ body {
+ background: linear-gradient(45deg, blue, red);
+ }
+}
+
+@import url('print.css');
+@page:right {
+ margin: 1cm 2cm 1.3cm 4cm;
+}
+
+@font-face {
+ font-family: Chunkfive; src: url('Chunkfive.otf');
+}
+
+div.text,
+#content,
+li[lang=ru] {
+ font: Tahoma, Chunkfive, sans-serif;
+ background: url('hatch.png') /* wtf? */; color: #F0F0F0 !important;
+ width: 100%;
+}
diff --git a/test/syntax/code/d b/test/syntax/code/d
new file mode 100644
index 00000000..92cc8d84
--- /dev/null
+++ b/test/syntax/code/d
@@ -0,0 +1,44 @@
+#!/usr/bin/rdmd
+// Computes average line length for standard input.
+import std.stdio;
+
+/+
+ this is a /+ nesting +/ comment
++/
+
+enum COMPILED_ON = __TIMESTAMP__; // special token
+
+enum character = '©';
+enum copy_valid = '&copy;';
+enum backslash_escaped = '\\';
+
+// string literals
+enum str = `hello "world"!`;
+enum multiline = r"lorem
+ipsum
+dolor"; // wysiwyg string, no escapes here allowed
+enum multiline2 = "sit
+amet
+\"adipiscing\"
+elit.";
+enum hex = x"66 6f 6f"; // same as "foo"
+
+#line 5
+
+// float literals
+enum f = [3.14f, .1, 1., 1e100, 0xc0de.01p+100];
+
+static if (something == true) {
+ import std.algorithm;
+}
+
+void main() pure nothrow @safe {
+ ulong lines = 0;
+ double sumLength = 0;
+ foreach (line; stdin.byLine()) {
+ ++lines;
+ sumLength += line.length;
+ }
+ writeln("Average line length: ",
+ lines ? sumLength / lines : 0);
+}
diff --git a/test/syntax/code/diff b/test/syntax/code/diff
new file mode 100644
index 00000000..4f4c04fe
--- /dev/null
+++ b/test/syntax/code/diff
@@ -0,0 +1,30 @@
+Index: languages/ini.js
+===================================================================
+--- languages/ini.js (revision 199)
++++ languages/ini.js (revision 200)
+@@ -1,8 +1,7 @@
+ hljs.LANGUAGES.ini =
+ {
+ case_insensitive: true,
+- defaultMode:
+- {
++ defaultMode: {
+ contains: ['comment', 'title', 'setting'],
+ illegal: '[^\\s]'
+ },
+
+*** /path/to/original timestamp
+--- /path/to/new timestamp
+***************
+*** 1,3 ****
+--- 1,9 ----
++ This is an important
++ notice! It should
++ therefore be located at
++ the beginning of this
++ document!
+
+! compress the size of the
+! changes.
+
+ It is important to spell
diff --git a/test/syntax/code/django b/test/syntax/code/django
new file mode 100644
index 00000000..150037f5
--- /dev/null
+++ b/test/syntax/code/django
@@ -0,0 +1,16 @@
+{% if articles|length %}
+{% for article in articles %}
+
+{# Striped table #}
+<tr class="{% cycle odd,even %}">
+ <td>{{ article|default:"Hi... "|escape }}</td>
+ <td {% if article.today %}class="today"{% endif %}>{{ article.date|date:'d.m.Y' }}</td>
+</tr>
+
+{% endfor %}
+{% endif %}
+
+{% comment %}
+Comments may be long and multiline.
+Markup is <em>not</em> highlighted within comments.
+{% endcomment %}
diff --git a/test/syntax/code/dockerfile b/test/syntax/code/dockerfile
new file mode 100644
index 00000000..e796dc7e
--- /dev/null
+++ b/test/syntax/code/dockerfile
@@ -0,0 +1,48 @@
+# Example instructions from https://docs.docker.com/reference/builder/
+FROM ubuntu:14.04
+
+MAINTAINER example@example.com
+
+ENV foo /bar
+WORKDIR ${foo} # WORKDIR /bar
+ADD . $foo # ADD . /bar
+COPY \$foo /quux # COPY $foo /quux
+
+RUN apt-get update && apt-get install -y software-properties-common\
+ zsh curl wget git htop\
+ unzip vim telnet
+RUN ["/bin/bash", "-c", "echo hello ${USER}"]
+
+CMD ["executable","param1","param2"]
+CMD command param1 param2
+
+EXPOSE 1337
+
+ENV myName="John Doe" myDog=Rex\ The\ Dog \
+ myCat=fluffy
+
+ENV myName John Doe
+ENV myDog Rex The Dog
+ENV myCat fluffy
+
+ADD hom* /mydir/ # adds all files starting with "hom"
+ADD hom?.txt /mydir/ # ? is replaced with any single character
+
+COPY hom* /mydir/ # adds all files starting with "hom"
+COPY hom?.txt /mydir/ # ? is replaced with any single character
+
+ENTRYPOINT ["executable", "param1", "param2"]
+ENTRYPOINT command param1 param2
+
+VOLUME ["/data"]
+
+USER daemon
+
+LABEL com.example.label-with-value="foo"
+LABEL version="1.0"
+LABEL description="This text illustrates \
+that label-values can span multiple lines."
+
+WORKDIR /path/to/workdir
+
+ONBUILD ADD . /app/src
diff --git a/test/syntax/code/dos b/test/syntax/code/dos
new file mode 100644
index 00000000..246ca3d9
--- /dev/null
+++ b/test/syntax/code/dos
@@ -0,0 +1,24 @@
+cd \
+copy a b
+ping 192.168.0.1
+@rem ping 192.168.0.1
+net stop sharedaccess
+del %tmp% /f /s /q
+del %temp% /f /s /q
+ipconfig /flushdns
+taskkill /F /IM JAVA.EXE /T
+
+cd Photoshop/Adobe Photoshop CS3/AMT/
+if exist application.sif (
+ ren application.sif _application.sif
+) else (
+ ren _application.sif application.sif
+)
+
+taskkill /F /IM proquota.exe /T
+
+sfc /SCANNOW
+
+set path = test
+
+xcopy %1\*.* %2
diff --git a/test/syntax/code/erb b/test/syntax/code/erb
new file mode 100644
index 00000000..f7ea6203
--- /dev/null
+++ b/test/syntax/code/erb
@@ -0,0 +1,10 @@
+<%# this is a comment %>
+
+<% @posts.each do |post| %>
+ <p><%= link_to post.title, post %></p>
+<% end %>
+
+<%- available_things = things.select(&:available?) -%>
+<%%- x = 1 + 2 -%%>
+<%% value = 'real string #{@value}' %%>
+<%%= available_things.inspect %%>
diff --git a/test/syntax/code/fsharp b/test/syntax/code/fsharp
new file mode 100644
index 00000000..b7a00317
--- /dev/null
+++ b/test/syntax/code/fsharp
@@ -0,0 +1,48 @@
+open System
+
+// Single line comment...
+(*
+ This is a
+ multiline comment.
+*)
+let checkList alist =
+ match alist with
+ | [] -> 0
+ | [a] -> 1
+ | [a; b] -> 2
+ | [a; b; c] -> 3
+ | _ -> failwith "List is too big!"
+
+
+let text = "Some text..."
+let text2 = @"A ""verbatim"" string..."
+let catalog = """
+Some "long" string...
+"""
+
+let rec fib x = if x <= 2 then 1 else fib(x-1) + fib(x-2)
+
+let fibs =
+ Async.Parallel [ for i in 0..40 -> async { return fib(i) } ]
+ |> Async.RunSynchronously
+
+type Sprocket(gears) =
+ member this.Gears : int = gears
+
+[<AbstractClass>]
+type Animal =
+ abstract Speak : unit -> unit
+
+type Widget =
+ | RedWidget
+ | GreenWidget
+
+type Point = {X: float; Y: float;}
+
+[<Measure>]
+type s
+let minutte = 60<s>
+
+type DefaultMailbox<'a>() =
+ let mutable inbox = ConcurrentQueue<'a>()
+ let awaitMsg = new AutoResetEvent(false)
diff --git a/test/syntax/code/go b/test/syntax/code/go
new file mode 100644
index 00000000..aa8663a9
--- /dev/null
+++ b/test/syntax/code/go
@@ -0,0 +1,34 @@
+package main
+
+import (
+ "fmt"
+ "os"
+)
+
+const (
+ Sunday = iota
+ numberOfDays // this constant is not exported
+)
+
+type Foo interface {
+ FooFunc(int, float32) (complex128, []int)
+}
+
+type Bar struct {
+ os.File /* multi-line
+ comment */
+ PublicData chan int
+}
+
+func main() {
+ ch := make(chan int)
+ ch <- 1
+ x, ok := <- ch
+ ok = true
+ float_var := 1.0e10
+ defer fmt.Println('\'')
+ defer fmt.Println(`exitting now\`)
+ var fv1 float64 = 0.75
+ go println(len("hello world!"))
+ return
+}
diff --git a/test/syntax/code/haml b/test/syntax/code/haml
new file mode 100644
index 00000000..fb4bab32
--- /dev/null
+++ b/test/syntax/code/haml
@@ -0,0 +1,14 @@
+!!! XML
+%html
+ %body
+ %h1.jumbo{:id=>"a", :style=>'font-weight: normal', :title=>title} highlight.js
+ /html comment
+ -# ignore this line
+ %ul(style='margin: 0')
+ -items.each do |i|
+ %i= i
+ = variable
+ =variable2
+ ~ variable3
+ ~variable4
+ The current year is #{DataTime.now.year}.
diff --git a/test/syntax/code/haskell b/test/syntax/code/haskell
new file mode 100644
index 00000000..acb83786
--- /dev/null
+++ b/test/syntax/code/haskell
@@ -0,0 +1,38 @@
+{-# LANGUAGE TypeSynonymInstances #-}
+module Network.UDP
+( DataPacket(..)
+, openBoundUDPPort
+, openListeningUDPPort
+, pingUDPPort
+, sendUDPPacketTo
+, recvUDPPacket
+, recvUDPPacketFrom
+) where
+
+import qualified Data.ByteString as Strict (ByteString, concat, singleton)
+import qualified Data.ByteString.Lazy as Lazy (ByteString, toChunks, fromChunks)
+import Data.ByteString.Char8 (pack, unpack)
+import Network.Socket hiding (sendTo, recv, recvFrom)
+import Network.Socket.ByteString (sendTo, recv, recvFrom)
+
+-- Type class for converting StringLike types to and from strict ByteStrings
+class DataPacket a where
+ toStrictBS :: a -> Strict.ByteString
+ fromStrictBS :: Strict.ByteString -> a
+
+instance DataPacket Strict.ByteString where
+ toStrictBS = id
+ {-# INLINE toStrictBS #-}
+ fromStrictBS = id
+ {-# INLINE fromStrictBS #-}
+
+openBoundUDPPort :: String -> Int -> IO Socket
+openBoundUDPPort uri port = do
+ s <- getUDPSocket
+ bindAddr <- inet_addr uri
+ let a = SockAddrInet (toEnum port) bindAddr
+ bindSocket s a
+ return s
+
+pingUDPPort :: Socket -> SockAddr -> IO ()
+pingUDPPort s a = sendTo s (Strict.singleton 0) a >> return ()
diff --git a/test/syntax/code/http b/test/syntax/code/http
new file mode 100644
index 00000000..34631a1d
--- /dev/null
+++ b/test/syntax/code/http
@@ -0,0 +1,6 @@
+POST /task?id=1 HTTP/1.1
+Host: example.org
+Content-Type: application/json; charset=utf-8
+Content-Length: 19
+
+{"status": "ok", "extended": true}
diff --git a/test/syntax/code/ini b/test/syntax/code/ini
new file mode 100644
index 00000000..03a5c297
--- /dev/null
+++ b/test/syntax/code/ini
@@ -0,0 +1,12 @@
+; boilerplate
+[package]
+name = "some_name"
+authors = ["Author"]
+description = "This is \
+a description"
+
+[[lib]]
+name = ${NAME}
+default = True
+auto = no
+counter = 1_000
diff --git a/test/syntax/code/java b/test/syntax/code/java
new file mode 100644
index 00000000..7683240c
--- /dev/null
+++ b/test/syntax/code/java
@@ -0,0 +1,35 @@
+/**
+ * @author John Smith <john.smith@example.com>
+ * @version 1.0
+*/
+package l2f.gameserver.model;
+
+import java.util.ArrayList;
+
+public abstract class L2Character extends L2Object {
+ public static final Short ABNORMAL_EFFECT_BLEEDING = 0x0_0_0_1; // not sure
+
+ public void moveTo(int x, int y, int z) {
+ _ai = null;
+ _log.warning("Should not be called");
+ if (1 > 5) {
+ return;
+ }
+ }
+
+ /** Task of AI notification */
+ @SuppressWarnings( { "nls", "unqualified-field-access", "boxing" })
+ public class NotifyAITask implements Runnable {
+ private final CtrlEvent _evt;
+
+ List<String> mList = new ArrayList<String>()
+
+ public void run() {
+ try {
+ getAI().notifyEvent(_evt, _evt.class, null);
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/test/syntax/code/javascript b/test/syntax/code/javascript
new file mode 100644
index 00000000..5a6bc04e
--- /dev/null
+++ b/test/syntax/code/javascript
@@ -0,0 +1,37 @@
+import {x, y} as p from 'point';
+const ANSWER = 42;
+
+class Car extends Vehicle {
+ constructor(speed, cost) {
+ super(speed);
+
+ var c = Symbol('cost');
+ this[c] = cost;
+
+ this.intro = `This is a car runs at
+ ${speed}.`;
+ }
+}
+
+for (let num of [1, 2, 3]) {
+ console.log(num + 0b111110111);
+}
+
+function $initHighlight(block, flags) {
+ try {
+ if (block.className.search(/\bno\-highlight\b/) != -1)
+ return processBlock(block.function, true, 0x0F) + ' class=""';
+ } catch (e) {
+ /* handle exception */
+ var e4x =
+ <div>Example
+ <p>1234</p></div>;
+ }
+ for (var i = 0 / 2; i < classes.length; i++) { // "0 / 2" should not be parsed as regexp
+ if (checkCondition(classes[i]) === undefined)
+ return /\d+[\s/]/g;
+ }
+ console.log(Array.every(classes, Boolean));
+}
+
+export $initHighlight;
diff --git a/test/syntax/code/json b/test/syntax/code/json
new file mode 100644
index 00000000..9710b228
--- /dev/null
+++ b/test/syntax/code/json
@@ -0,0 +1,12 @@
+[
+ {
+ "title": "apples",
+ "count": [12000, 20000],
+ "description": {"text": "...", "sensitive": false}
+ },
+ {
+ "title": "oranges",
+ "count": [17500, null],
+ "description": {"text": "...", "sensitive": false}
+ }
+]
diff --git a/test/syntax/code/lisp b/test/syntax/code/lisp
new file mode 100644
index 00000000..2b622087
--- /dev/null
+++ b/test/syntax/code/lisp
@@ -0,0 +1,22 @@
+#!/usr/bin/env csi
+
+(defun prompt-for-cd ()
+ "Prompts
+ for CD"
+ (prompt-read "Title" 1.53 1 2/4 1.7 1.7e0 2.9E-4 +42 -7 #b001 #b001/100 #o777 #O777 #xabc55 #c(0 -5.6))
+ (prompt-read "Artist" &rest)
+ (or (parse-integer (prompt-read "Rating") :junk-allowed t) 0)
+ (if x (format t "yes") (format t "no" nil) ;and here comment
+ )
+ ;; second line comment
+ '(+ 1 2)
+ (defvar *lines*) ; list of all lines
+ (position-if-not #'sys::whitespacep line :start beg))
+ (quote (privet 1 2 3))
+ '(hello world)
+ (* 5 7)
+ (1 2 34 5)
+ (:use "aaaa")
+ (let ((x 10) (y 20))
+ (print (+ x y))
+ )
diff --git a/test/syntax/code/lua b/test/syntax/code/lua
new file mode 100644
index 00000000..58174ee6
--- /dev/null
+++ b/test/syntax/code/lua
@@ -0,0 +1,32 @@
+--[[
+Simple signal/slot implementation
+]]
+local signal_mt = {
+ __index = {
+ register = table.insert
+ }
+}
+function signal_mt.__index:emit(... --[[ Comment in params ]])
+ for _, slot in ipairs(self) do
+ slot(self, ...)
+ end
+end
+local function create_signal()
+ return setmetatable({}, signal_mt)
+end
+
+-- Signal test
+local signal = create_signal()
+signal:register(function(signal, ...)
+ print(...)
+end)
+signal:emit('Answer to Life, the Universe, and Everything:', 42)
+
+--[==[ [=[ [[
+Nested ]]
+multi-line ]=]
+comment ]==]
+[==[ Nested
+[=[ multi-line
+[[ string
+]] ]=] ]==]
diff --git a/test/syntax/code/makefile b/test/syntax/code/makefile
new file mode 100644
index 00000000..cd1ec79d
--- /dev/null
+++ b/test/syntax/code/makefile
@@ -0,0 +1,13 @@
+# Makefile
+
+BUILDDIR = _build
+EXTRAS ?= $(BUILDDIR)/extras
+
+.PHONY: main clean
+
+main:
+ @echo "Building main facility..."
+ build_main $(BUILDDIR)
+
+clean:
+ rm -rf $(BUILDDIR)/*
diff --git a/test/syntax/code/markdown b/test/syntax/code/markdown
new file mode 100644
index 00000000..e7f66da9
--- /dev/null
+++ b/test/syntax/code/markdown
@@ -0,0 +1,22 @@
+# hello world
+
+you can write text [with links](http://example.com) inline or [link references][1].
+
+* one _thing_ has *em*phasis
+* two __things__ are **bold**
+
+[1]: http://example.com
+
+---
+
+hello world
+===========
+
+<this_is inline="xml"></this_is>
+
+> markdown is so cool
+
+ so are code segments
+
+1. one thing (yeah!)
+2. two thing `i can write code`, and `more` wipee!
diff --git a/test/syntax/code/matlab b/test/syntax/code/matlab
new file mode 100644
index 00000000..81fa7175
--- /dev/null
+++ b/test/syntax/code/matlab
@@ -0,0 +1,45 @@
+n = 20; % number of points
+points = [random('unid', 100, n, 1), random('unid', 100, n, 1)];
+len = zeros(1, n - 1);
+points = sortrows(points);
+%% Initial set of points
+plot(points(:,1),points(:,2));
+for i = 1: n-1
+ len(i) = points(i + 1, 1) - points(i, 1);
+end
+while(max(len) > 2 * min(len))
+ [d, i] = max(len);
+ k = on_margin(points, i, d, -1);
+ m = on_margin(points, i + 1, d, 1);
+ xm = 0; ym = 0;
+%% New point
+ if(i == 1 || i + 1 == n)
+ xm = mean(points([i,i+1],1))
+ ym = mean(points([i,i+1],2))
+ else
+ [xm, ym] = dlg1(points([k, i, i + 1, m], 1), ...
+ points([k, i, i + 1, m], 2))
+ end
+
+ points = [ points(1:i, :); [xm, ym]; points(i + 1:end, :)];
+end
+
+%{
+ This is a block comment. Please ignore me.
+%}
+
+function [net] = get_fit_network(inputs, targets)
+ % Create Network
+ numHiddenNeurons = 20; % Adjust as desired
+ net = newfit(inputs,targets,numHiddenNeurons);
+ net.trainParam.goal = 0.01;
+ net.trainParam.epochs = 1000;
+ % Train and Apply Network
+ [net,tr] = train(net,inputs,targets);
+end
+
+foo_matrix = [1, 2, 3; 4, 5, 6]''';
+foo_cell = {1, 2, 3; 4, 5, 6}''.'.';
+
+cell2flatten = {1,2,3,4,5};
+flattenedcell = cat(1, cell2flatten{:});
diff --git a/test/syntax/code/nginx b/test/syntax/code/nginx
new file mode 100644
index 00000000..adf4b7e9
--- /dev/null
+++ b/test/syntax/code/nginx
@@ -0,0 +1,47 @@
+user www www;
+worker_processes 2;
+pid /var/run/nginx.pid;
+error_log /var/log/nginx.error_log debug | info | notice | warn | error | crit;
+
+events {
+ connections 2000;
+ use kqueue | rtsig | epoll | /dev/poll | select | poll;
+}
+
+http {
+ log_format main '$remote_addr - $remote_user [$time_local] '
+ '"$request" $status $bytes_sent '
+ '"$http_referer" "$http_user_agent" '
+ '"$gzip_ratio"';
+
+ send_timeout 3m;
+ client_header_buffer_size 1k;
+
+ gzip on;
+ gzip_min_length 1100;
+
+ #lingering_time 30;
+
+ server {
+ server_name one.example.com www.one.example.com;
+ access_log /var/log/nginx.access_log main;
+
+ rewrite (.*) /index.php?page=$1 break;
+
+ location / {
+ proxy_pass http://127.0.0.1/;
+ proxy_redirect off;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ charset koi8-r;
+ }
+
+ location /api/ {
+ fastcgi_pass 127.0.0.1:9000;
+ }
+
+ location ~* \.(jpg|jpeg|gif)$ {
+ root /spool/www;
+ }
+ }
+}
diff --git a/test/syntax/code/objectivec b/test/syntax/code/objectivec
new file mode 100644
index 00000000..177f2ff3
--- /dev/null
+++ b/test/syntax/code/objectivec
@@ -0,0 +1,43 @@
+#import <UIKit/UIKit.h>
+#import "Dependency.h"
+
+@protocol WorldDataSource
+@optional
+- (NSString*)worldName;
+@required
+- (BOOL)allowsToLive;
+@end
+
+@interface Test : NSObject <HelloDelegate, WorldDataSource> {
+ NSString *_greeting;
+}
+
+@property (nonatomic, readonly) NSString *greeting;
+- (IBAction) show;
+@end
+
+@implementation Test
+
+@synthesize test=_test;
+
++ (id) test {
+ return [self testWithGreeting:@"Hello, world!\nFoo bar!"];
+}
+
++ (id) testWithGreeting:(NSString*)greeting {
+ return [[[self alloc] initWithGreeting:greeting] autorelease];
+}
+
+- (id) initWithGreeting:(NSString*)greeting {
+ if ( (self = [super init]) ) {
+ _greeting = [greeting retain];
+ }
+ return self;
+}
+
+- (void) dealloc {
+ [_greeting release];
+ [super dealloc];
+}
+
+@end
diff --git a/test/syntax/code/perl b/test/syntax/code/perl
new file mode 100644
index 00000000..3b08442d
--- /dev/null
+++ b/test/syntax/code/perl
@@ -0,0 +1,41 @@
+# loads object
+sub load
+{
+ my $flds = $c->db_load($id,@_) || do {
+ Carp::carp "Can`t load (class: $c, id: $id): '$!'"; return undef
+ };
+ my $o = $c->_perl_new();
+ $id12 = $id / 24 / 3600;
+ $o->{'ID'} = $id12 + 123;
+ #$o->{'SHCUT'} = $flds->{'SHCUT'};
+ my $p = $o->props;
+ my $vt;
+ $string =~ m/^sought_text$/;
+ $items = split //, 'abc';
+ $string //= "bar";
+ for my $key (keys %$p)
+ {
+ if(${$vt.'::property'}) {
+ $o->{$key . '_real'} = $flds->{$key};
+ tie $o->{$key}, 'CMSBuilder::Property', $o, $key;
+ }
+ }
+ $o->save if delete $o->{'_save_after_load'};
+
+ # GH-117
+ my $g = glob("/usr/bin/*");
+
+ return $o;
+}
+
+__DATA__
+@@ layouts/default.html.ep
+<!DOCTYPE html>
+<html>
+ <head><title><%= title %></title></head>
+ <body><%= content %></body>
+</html>
+__END__
+
+=head1 NAME
+POD till the end of file
diff --git a/test/syntax/code/php b/test/syntax/code/php
new file mode 100644
index 00000000..ec43315f
--- /dev/null
+++ b/test/syntax/code/php
@@ -0,0 +1,52 @@
+require_once 'Zend/Uri/Http.php';
+
+namespace Location\Web;
+
+interface Factory
+{
+ static function _factory();
+}
+
+abstract class URI extends BaseURI implements Factory
+{
+ abstract function test();
+
+ public static $st1 = 1;
+ const ME = "Yo";
+ var $list = NULL;
+ private $var;
+
+ /**
+ * Returns a URI
+ *
+ * @return URI
+ */
+ static public function _factory($stats = array(), $uri = 'http')
+ {
+ echo __METHOD__;
+ $uri = explode(':', $uri, 0b10);
+ $schemeSpecific = isset($uri[1]) ? $uri[1] : '';
+ $desc = 'Multi
+line description';
+
+ // Security check
+ if (!ctype_alnum($scheme)) {
+ throw new Zend_Uri_Exception('Illegal scheme');
+ }
+
+ $this->var = 0 - self::$st;
+ $this->list = list(Array("1"=> 2, 2=>self::ME, 3 => \Location\Web\URI::class));
+
+ return [
+ 'uri' => $uri,
+ 'value' => null,
+ ];
+ }
+}
+
+echo URI::ME . URI::$st1;
+
+__halt_compiler () ; datahere
+datahere
+datahere */
+datahere
diff --git a/test/syntax/code/python b/test/syntax/code/python
new file mode 100644
index 00000000..1216323c
--- /dev/null
+++ b/test/syntax/code/python
@@ -0,0 +1,12 @@
+@requires_authorization
+def somefunc(param1='', param2=0):
+ r'''A docstring'''
+ if param1 > param2: # interesting
+ print 'Gre\'ater'
+ return (param2 - param1 + 1 + 0b10l) or None
+
+class SomeClass:
+ pass
+
+>>> message = '''interpreter
+... prompt'''
diff --git a/test/syntax/code/r b/test/syntax/code/r
new file mode 100644
index 00000000..2f277478
--- /dev/null
+++ b/test/syntax/code/r
@@ -0,0 +1,68 @@
+library(ggplot2)
+
+centre <- function(x, type, ...) {
+ switch(type,
+ mean = mean(x),
+ median = median(x),
+ trimmed = mean(x, trim = .1))
+}
+
+myVar1
+myVar.2
+data$x
+foo "bar" baz
+# test "test"
+"test # test"
+
+(123) (1) (10) (0.1) (.2) (1e-7)
+(1.2e+7) (2e) (3e+10) (0x0) (0xa)
+(0xabcdef1234567890) (123L) (1L)
+(0x10L) (10000000L) (1e6L) (1.1L)
+(1e-3L) (4123.381E-10i)
+(3.) (3.E10) # BUG: .E10 should be part of number
+
+# Numbers in some different contexts
+1L
+0x40
+.234
+3.
+1L + 30
+plot(cars, xlim=20)
+plot(cars, xlim=0x20)
+foo<-30
+my.data.3 <- read() # not a number
+c(1,2,3)
+1%%2
+
+"this is a quote that spans
+multiple lines
+\"
+
+is this still a quote? it should be.
+# even still!
+
+" # now we're done.
+
+'same for
+single quotes #'
+
+# keywords
+NULL, NA, TRUE, FALSE, Inf, NaN, NA_integer_,
+NA_real_, NA_character_, NA_complex_, function,
+while, repeat, for, if, in, else, next, break,
+..., ..1, ..2
+
+# not keywords
+the quick brown fox jumped over the lazy dogs
+null na true false inf nan na_integer_ na_real_
+na_character_ na_complex_ Function While Repeat
+For If In Else Next Break .. .... "NULL" `NULL` 'NULL'
+
+# operators
++, -, *, /, %%, ^, >, >=, <, <=, ==, !=, !, &, |, ~,
+->, <-, <<-, $, :, ::
+
+# infix operator
+foo %union% bar
+%"test"%
+`"test"`
diff --git a/test/syntax/code/ruby b/test/syntax/code/ruby
new file mode 100644
index 00000000..1fb23784
--- /dev/null
+++ b/test/syntax/code/ruby
@@ -0,0 +1,28 @@
+class A < B; def self.create(object = User) object end end
+class Zebra; def inspect; "X#{2 + self.object_id}" end end
+
+module ABC::DEF
+ include Comparable
+
+ # @param test
+ # @return [String] nothing
+ def foo(test)
+ Thread.new do |blockvar|
+ ABC::DEF.reverse(:a_symbol, :'a symbol', :<=>, 'test' + ?\012)
+ answer = valid?4 && valid?CONST && ?A && ?A.ord
+ end.join
+ end
+
+ def [](index) self[index] end
+ def ==(other) other == self end
+end
+
+class Car < ActiveRecord::Base
+ has_many :wheels, class_name: 'Wheel', foreign_key: 'car_id'
+ scope :available, -> { where(available: true) }
+end
+
+hash = {1 => 'one', 2 => 'two'}
+
+2.0.0p0 :001 > ['some']
+ => ["some"]
diff --git a/test/syntax/code/rust b/test/syntax/code/rust
new file mode 100644
index 00000000..6d0fd4d4
--- /dev/null
+++ b/test/syntax/code/rust
@@ -0,0 +1,55 @@
+use std;
+
+#![warn(unstable)]
+
+/* Factorial */
+fn fac(n: int) -> int {
+ let s: str = "This is
+a multi-line string.
+
+It ends with an unescaped '\"'.";
+ let c: char = 'Ф';
+ let r: str = r##" raw string "##;
+
+ let result = 1, i = 1;
+ while i <= n { // No parens around the condition
+ result *= i;
+ i += 1;
+ }
+ ret result;
+}
+
+pure fn pure_length<T>(ls: list<T>) -> uint { /* ... */ }
+
+type t = map::hashtbl<int,str>;
+let x = id::<int>(10);
+
+// Define some modules.
+#[path = "foo.rs"]
+mod foo;
+
+impl <T> Seq<T> for [T] {
+ fn len() -> uint { vec::len(self) }
+ fn iter(b: fn(T)) {
+ for elt in self { b(elt); }
+ }
+}
+
+enum list<T> {
+ Nil;
+ Cons(T, @list<T>);
+}
+
+let a: list<int> = Cons(7, @cons(13, @nil));
+
+struct Baz<'a> {
+ baz: &'a str,
+}
+
+'h: for i in range(0,10) {
+ 'g: loop {
+ if i % 2 == 0 { continue 'h; }
+ if i == 9 { break 'h; }
+ break 'g;
+ }
+}
diff --git a/test/syntax/code/scala b/test/syntax/code/scala
new file mode 100644
index 00000000..d0de6175
--- /dev/null
+++ b/test/syntax/code/scala
@@ -0,0 +1,44 @@
+case class Person(name: String, age: Int)
+
+def absoluteValue(n: Int): Int =
+ if (n < 0) -n else n
+
+val hux = "hux"
+def mux = "mux"
+def qux: String = "qux"
+
+type ξ[A] = (A, A)
+
+trait Hist { lhs =>
+ def ⊕(rhs: Hist): Hist
+}
+
+def gsum[A: Ring](as: Seq[A]): A =
+ as.foldLeft(Ring[A].zero)(_ + _)
+
+sealed trait Compass
+case object North extends Compass
+case object South extends Compass
+case object East extends Compass
+case object West extends Compass
+
+trait Cake {
+ type T;
+ val things: Seq[T]
+
+ abstract class Spindler
+
+ def spindle(s: Spindler, ts: Seq[T], reversed: Boolean = false): Seq[T]
+}
+
+val colors = Map(
+ "red" -> 0xFF0000,
+ "turquoise" -> 0x00FFFF,
+ "black" -> 0x000000,
+ "orange" -> 0xFF8040,
+ "brown" -> 0x804000)
+
+lazy val ns = for {
+ x <- 0 until 100
+ y <- 0 until 100
+} yield (x + y) * 33.33
diff --git a/test/syntax/code/scheme b/test/syntax/code/scheme
new file mode 100644
index 00000000..b62a98cb
--- /dev/null
+++ b/test/syntax/code/scheme
@@ -0,0 +1,28 @@
+;; Calculation of Hofstadter's male and female sequences as a list of pairs
+
+(define (hofstadter-male-female n)
+(letrec ((female (lambda (n)
+ (if (= n 0)
+ 1
+ (- n (male (female (- n 1)))))))
+ (male (lambda (n)
+ (if (= n 0)
+ 0
+ (- n (female (male (- n 1))))))))
+ (let loop ((i 0))
+ (if (> i n)
+ '()
+ (cons (cons (female i)
+ (male i))
+ (loop (+ i 1)))))))
+
+(hofstadter-male-female 8)
+
+(define (find-first func lst)
+(call-with-current-continuation
+ (lambda (return-immediately)
+ (for-each (lambda (x)
+ (if (func x)
+ (return-immediately x)))
+ lst)
+ #f)))
diff --git a/test/syntax/code/smalltalk b/test/syntax/code/smalltalk
new file mode 100644
index 00000000..7c960a72
--- /dev/null
+++ b/test/syntax/code/smalltalk
@@ -0,0 +1,39 @@
+Object>>method: num
+ "comment 123"
+ | var1 var2 |
+ (1 to: num) do: [:i | |var| ^i].
+ Klass with: var1.
+ Klass new.
+ arr := #('123' 123.345 #hello Transcript var $@).
+ arr := #().
+ var2 = arr at: 3.
+ ^ self abc
+
+heapExample
+ "HeapTest new heapExample"
+ "Multiline
+ decription"
+ | n rnd array time sorted |
+ n := 5000.
+ "# of elements to sort"
+ rnd := Random new.
+ array := (1 to: n)
+ collect: [:i | rnd next].
+ "First, the heap version"
+ time := Time
+ millisecondsToRun: [sorted := Heap withAll: array.
+ 1
+ to: n
+ do: [:i |
+ sorted removeFirst.
+ sorted add: rnd next]].
+ Transcript cr; show: 'Time for Heap: ' , time printString , ' msecs'.
+ "The quicksort version"
+ time := Time
+ millisecondsToRun: [sorted := SortedCollection withAll: array.
+ 1
+ to: n
+ do: [:i |
+ sorted removeFirst.
+ sorted add: rnd next]].
+ Transcript cr; show: 'Time for SortedCollection: ' , time printString , ' msecs'
diff --git a/test/syntax/code/sql b/test/syntax/code/sql
new file mode 100644
index 00000000..377e6b39
--- /dev/null
+++ b/test/syntax/code/sql
@@ -0,0 +1,19 @@
+BEGIN;
+CREATE TABLE "topic" (
+ -- This is the greatest table of all time
+ "id" serial NOT NULL PRIMARY KEY,
+ "forum_id" integer NOT NULL,
+ "subject" varchar(255) NOT NULL -- Because nobody likes an empty subject
+);
+ALTER TABLE "topic" ADD CONSTRAINT forum_id FOREIGN KEY ("forum_id") REFERENCES "forum" ("id");
+
+-- Initials
+insert into "topic" ("forum_id", "subject") values (2, 'D''artagnian');
+
+select /* comment */ count(*) from cicero_forum;
+
+-- this line lacks ; at the end to allow people to be sloppy and omit it in one-liners
+/*
+but who cares?
+*/
+COMMIT
diff --git a/test/syntax/code/tcl b/test/syntax/code/tcl
new file mode 100644
index 00000000..c05db107
--- /dev/null
+++ b/test/syntax/code/tcl
@@ -0,0 +1,26 @@
+package json
+
+source helper.tcl
+# randomness verified by a die throw
+set ::rand 4
+
+proc give::recursive::count {base p} { ; # 2 mandatory params
+ while {$p > 0} {
+ set result [expr $result * $base]; incr p -1
+ }
+ return $result
+}
+
+set a 'a'; set b "bcdef"; set lst [list "item"]
+puts [llength $a$b]
+
+set ::my::tid($id) $::my::tid(def)
+lappend lst $arr($idx) $::my::arr($idx) $ar(key)
+lreplace ::my::tid($id) 4 4
+puts $::rand ${::rand} ${::AWESOME::component::variable}
+
+puts "$x + $y is\t [expr $x + $y]"
+
+proc isprime x {
+ expr {$x>1 && ![regexp {^(oo+?)\1+$} [string repeat o $x]]}
+}
diff --git a/test/syntax/code/tex b/test/syntax/code/tex
new file mode 100644
index 00000000..10b25557
--- /dev/null
+++ b/test/syntax/code/tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\usepackage[koi8-r]{inputenc}
+\hoffset=0pt
+\voffset=.3em
+\tolerance=400
+\newcommand{\eTiX}{\TeX}
+\begin{document}
+\section*{Highlight.js}
+\begin{table}[c|c]
+$\frac 12\, + \, \frac 1{x^3}\text{Hello \! world}$ & \textbf{Goodbye\~ world} \\\eTiX $ \pi=400 $
+\end{table}
+Ch\'erie, \c{c}a ne me pla\^\i t pas! % comment \b
+G\"otterd\"ammerung~45\%=34.
+$$
+ \int\limits_{0}^{\pi}\frac{4}{x-7}=3
+$$
+\end{document}
diff --git a/test/syntax/code/vala b/test/syntax/code/vala
new file mode 100644
index 00000000..aed04682
--- /dev/null
+++ b/test/syntax/code/vala
@@ -0,0 +1,46 @@
+using DBus;
+
+namespace Test {
+ class Foo : Object {
+ public signal void some_event (); // definition of the signal
+ public void method () {
+ some_event (); // emitting the signal (callbacks get invoked)
+ }
+ }
+}
+
+/* defining a class */
+class Track : GLib.Object, Test.Foo { /* subclassing 'GLib.Object' */
+ public double mass; /* a public field */
+ public double name { get; set; } /* a public property */
+ private bool terminated = false; /* a private field */
+ public void terminate() { /* a public method */
+ terminated = true;
+ }
+}
+
+const ALL_UPPER_CASE = "you should follow this convention";
+
+var t = new Track(); // same as: Track t = new Track();
+var s = "hello"; // same as: string s = "hello";
+var l = new List<int>(); // same as: List<int> l = new List<int>();
+var i = 10; // same as: int i = 10;
+
+
+#if (ololo)
+Regex regex = /foo/;
+#endif
+
+/*
+ * Entry point can be outside class
+ */
+void main () {
+ var long_string = """
+ Example of "verbatim string".
+ Same as in @"string" in C#
+ """
+ var foo = new Foo ();
+ foo.some_event.connect (callback_a); // connecting the callback functions
+ foo.some_event.connect (callback_b);
+ foo.method ();
+}
diff --git a/test/syntax/code/xml b/test/syntax/code/xml
new file mode 100644
index 00000000..7f002c4b
--- /dev/null
+++ b/test/syntax/code/xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<response value="ok" xml:lang="en">
+ <text>Ok</text>
+ <comment html_allowed="true"/>
+ <ns1:description><![CDATA[
+ CDATA is <not> magical.
+ ]]></ns1:description>
+ <a></a> <a/>
+</response>
+
+
+<!DOCTYPE html>
+<title>Title</title>
+
+<style>body {width: 500px;}</style>
+
+<script type="application/javascript">
+ function $init() {return true;}
+</script>
+
+<body>
+ <p checked class="title" id='title'>Title</p>
+ <!-- here goes the rest of the page -->
+</body>
diff --git a/test/syntax/code/xquery b/test/syntax/code/xquery
new file mode 100644
index 00000000..9ac5efdf
--- /dev/null
+++ b/test/syntax/code/xquery
@@ -0,0 +1,20 @@
+declare option output:method 'json';
+
+(
+let $map := map { 'R': 'red', 'G': 'green', 'B': 'blue' }
+return (
+ $map?* (: 1. returns all values; same as: map:keys($map) ! $map(.) :),
+ $map?R (: 2. returns the value associated with the key 'R'; same as: $map('R') :),
+ $map?('G','B') (: 3. returns the values associated with the key 'G' and 'B' :)
+),
+
+('A', 'B', 'C') => count(),
+
+for $country in db:open('factbook')//country
+where $country/@population > 100000000
+let $name := $country/name[1]
+for $city in $country//city[population > 1000000]
+group by $name
+return <country name='{ $name }'>{ $city/name }</country>
+
+)
diff --git a/test/syntax/code/yaml b/test/syntax/code/yaml
new file mode 100644
index 00000000..49c4939e
--- /dev/null
+++ b/test/syntax/code/yaml
@@ -0,0 +1,39 @@
+---
+# comment
+string_1: "Bar"
+string_2: 'bar'
+string_3: bar
+inline_keys_ignored: sompath/name/file.jpg
+keywords_in_yaml:
+ - true
+ - false
+ - TRUE
+ - FALSE
+ - 21
+ - 21.0
+ - !!str 123
+"quoted_key": &foobar
+ bar: foo
+ foo:
+ "foo": bar
+
+reference: *foobar
+
+multiline_1: |
+ Multiline
+ String
+multiline_2: >
+ Multiline
+ String
+multiline_3: "
+ Multiline string
+ "
+
+ansible_variables: "foo {{variable}}"
+
+array_nested:
+- a
+- b: 1
+ c: 2
+- b
+- comment
diff --git a/test/syntax/dita.dita b/test/syntax/dita.dita
new file mode 100644
index 00000000..216eeb7f
--- /dev/null
+++ b/test/syntax/dita.dita
@@ -0,0 +1,636 @@
+<topic xmlns:xi="http://www.w3.org/2001/XInclude"
+ id="dita">
+
+<title>Syntax Highlighting</title>
+
+<topic id="embedded">
+<title>Embedded Markup</title>
+<body>
+<codeblock outputclass="c">
+#include &lt;stdlib.h>
+int main(char** argv) {
+ // This is a <xref href="#">link</xref>
+ /* This is <varname>replaceable text</varname> */
+ int i = 12;
+ printf("hello %s\n", world);
+}
+</codeblock>
+</body>
+</topic>
+
+<topic id="actionscript">
+ <title>ActionScript</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="actionscript"</codeph></title>
+ <codeblock outputclass="actionscript"><xi:include parse="text" href="code/actionscript"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="apache">
+ <title>Apache Config</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="apache"</codeph></title>
+ <codeblock outputclass="apache"><xi:include parse="text" href="code/apache"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="asciidoc">
+ <title>AsciiDoc</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="asciidoc"</codeph></title>
+ <codeblock outputclass="asciidoc"><xi:include parse="text" href="code/asciidoc"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="adoc"</codeph></title>
+ <codeblock outputclass="adoc"><xi:include parse="text" href="code/asciidoc"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="bash">
+ <title>Bash</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="sh"</codeph></title>
+ <codeblock outputclass="sh"><xi:include parse="text" href="code/bash"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="bash"</codeph></title>
+ <codeblock outputclass="bash"><xi:include parse="text" href="code/bash"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="csh"</codeph></title>
+ <codeblock outputclass="csh"><xi:include parse="text" href="code/bash"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="bourne"</codeph></title>
+ <codeblock outputclass="bourne"><xi:include parse="text" href="code/bash"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="c">
+ <title>C</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="c"</codeph></title>
+ <codeblock outputclass="c"><xi:include parse="text" href="code/cpp"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="cs">
+ <title>C#</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="cs"</codeph></title>
+ <codeblock outputclass="cs"><xi:include parse="text" href="code/cs"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="csharp"</codeph></title>
+ <codeblock outputclass="csharp"><xi:include parse="text" href="code/cs"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="cpp">
+ <title>C++</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="cpp"</codeph></title>
+ <codeblock outputclass="cpp"><xi:include parse="text" href="code/cpp"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="c++"</codeph></title>
+ <codeblock outputclass="c++"><xi:include parse="text" href="code/cpp"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="clojure">
+ <title>Clojure</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="clojure"</codeph></title>
+ <codeblock outputclass="clojure"><xi:include parse="text" href="code/clojure"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="clj"</codeph></title>
+ <codeblock outputclass="clj"><xi:include parse="text" href="code/clojure"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="cmake">
+ <title>CMake</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="cmake"</codeph></title>
+ <codeblock outputclass="cmake"><xi:include parse="text" href="code/cmake"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="css">
+ <title>CSS</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="css"</codeph></title>
+ <codeblock outputclass="css"><xi:include parse="text" href="code/css"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="css21"</codeph></title>
+ <codeblock outputclass="css21"><xi:include parse="text" href="code/css"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="d">
+ <title>D</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="d"</codeph></title>
+ <codeblock outputclass="d"><xi:include parse="text" href="code/d"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="diff">
+ <title>Diff</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="diff"</codeph></title>
+ <codeblock outputclass="diff"><xi:include parse="text" href="code/diff"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="patch"</codeph></title>
+ <codeblock outputclass="patch"><xi:include parse="text" href="code/diff"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="django">
+ <title>Django</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="django"</codeph></title>
+ <codeblock outputclass="django"><xi:include parse="text" href="code/django"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="dockerfile">
+ <title>Dockerfile</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="dockerfile"</codeph></title>
+ <codeblock outputclass="dockerfile"><xi:include parse="text" href="code/dockerfile"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="dos">
+ <title>DOS Batch</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="dos"</codeph></title>
+ <codeblock outputclass="dos"><xi:include parse="text" href="code/dos"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="erb">
+ <title>Embedded Ruby</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="erb"</codeph></title>
+ <codeblock outputclass="erb"><xi:include parse="text" href="code/erb"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="fsharp">
+ <title>F#</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="fsharp"</codeph></title>
+ <codeblock outputclass="fsharp"><xi:include parse="text" href="code/fsharp"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="go">
+ <title>Go</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="go"</codeph></title>
+ <codeblock outputclass="go"><xi:include parse="text" href="code/go"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="haml">
+ <title>Haml</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="haml"</codeph></title>
+ <codeblock outputclass="haml"><xi:include parse="text" href="code/haml"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="haskell">
+ <title>Haskell</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="haskell"</codeph></title>
+ <codeblock outputclass="haskell"><xi:include parse="text" href="code/haskell"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="hs"</codeph></title>
+ <codeblock outputclass="hs"><xi:include parse="text" href="code/haskell"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="html">
+ <title>HTML</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="html"</codeph></title>
+ <codeblock outputclass="html"><xi:include parse="text" href="code/xml"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="xhtml"</codeph></title>
+ <codeblock outputclass="xhtml"><xi:include parse="text" href="code/xml"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="http">
+ <title>HTTP</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="http"</codeph></title>
+ <codeblock outputclass="http"><xi:include parse="text" href="code/http"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="ini">
+ <title>INI</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="ini"</codeph></title>
+ <codeblock outputclass="ini"><xi:include parse="text" href="code/ini"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="java">
+ <title>Java</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="java"</codeph></title>
+ <codeblock outputclass="java"><xi:include parse="text" href="code/java"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="json">
+ <title>JSON</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="json"</codeph></title>
+ <codeblock outputclass="json"><xi:include parse="text" href="code/json"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="javascript">
+ <title>JavaScript</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="javascript"</codeph></title>
+ <codeblock outputclass="javascript"><xi:include parse="text" href="code/javascript"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="js"</codeph></title>
+ <codeblock outputclass="js"><xi:include parse="text" href="code/javascript"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="LISP">
+ <title>LISP</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="lisp"</codeph></title>
+ <codeblock outputclass="lisp"><xi:include parse="text" href="code/lisp"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="cl"</codeph></title>
+ <codeblock outputclass="cl"><xi:include parse="text" href="code/lisp"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="el"</codeph></title>
+ <codeblock outputclass="el"><xi:include parse="text" href="code/lisp"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="lsp"</codeph></title>
+ <codeblock outputclass="lsp"><xi:include parse="text" href="code/lisp"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="lua">
+ <title>Lua</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="lua"</codeph></title>
+ <codeblock outputclass="lua"><xi:include parse="text" href="code/lua"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="makefile">
+ <title>Makefile</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="makefile"</codeph></title>
+ <codeblock outputclass="makefile"><xi:include parse="text" href="code/makefile"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="make"</codeph></title>
+ <codeblock outputclass="make"><xi:include parse="text" href="code/makefile"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="markdown">
+ <title>Markdown</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="markdown"</codeph></title>
+ <codeblock outputclass="markdown"><xi:include parse="text" href="code/markdown"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="md"</codeph></title>
+ <codeblock outputclass="md"><xi:include parse="text" href="code/markdown"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="matlab">
+ <title>MATLAB/Octave</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="matlab"</codeph></title>
+ <codeblock outputclass="matlab"><xi:include parse="text" href="code/matlab"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="octave"</codeph></title>
+ <codeblock outputclass="octave"><xi:include parse="text" href="code/matlab"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="nginx">
+ <title>Nginx Config</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="nginx"</codeph></title>
+ <codeblock outputclass="nginx"><xi:include parse="text" href="code/nginx"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="objectivec">
+ <title>Objective-C</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="objc"</codeph></title>
+ <codeblock outputclass="objc"><xi:include parse="text" href="code/objectivec"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="m"</codeph></title>
+ <codeblock outputclass="m"><xi:include parse="text" href="code/objectivec"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="perl">
+ <title>Perl</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="perl"</codeph></title>
+ <codeblock outputclass="perl"><xi:include parse="text" href="code/perl"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="pl"</codeph></title>
+ <codeblock outputclass="pl"><xi:include parse="text" href="code/perl"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="pm"</codeph></title>
+ <codeblock outputclass="pm"><xi:include parse="text" href="code/perl"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="php">
+ <title>PHP</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="php"</codeph></title>
+ <codeblock outputclass="php"><xi:include parse="text" href="code/php"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="python">
+ <title>Python</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="python"</codeph></title>
+ <codeblock outputclass="python"><xi:include parse="text" href="code/python"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="py"</codeph></title>
+ <codeblock outputclass="py"><xi:include parse="text" href="code/python"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="r">
+ <title>R/S</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="r"</codeph></title>
+ <codeblock outputclass="r"><xi:include parse="text" href="code/r"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="s"</codeph></title>
+ <codeblock outputclass="s"><xi:include parse="text" href="code/r"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="ruby">
+ <title>Ruby</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="ruby"</codeph></title>
+ <codeblock outputclass="ruby"><xi:include parse="text" href="code/ruby"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="rb"</codeph></title>
+ <codeblock outputclass="rb"><xi:include parse="text" href="code/ruby"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="rust">
+ <title>Rust</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="rust"</codeph></title>
+ <codeblock outputclass="rust"><xi:include parse="text" href="code/rust"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="scala">
+ <title>Scala</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="scala"</codeph></title>
+ <codeblock outputclass="scala"><xi:include parse="text" href="code/scala"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="scheme">
+ <title>Scheme</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="scheme"</codeph></title>
+ <codeblock outputclass="scheme"><xi:include parse="text" href="code/scheme"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="scm"</codeph></title>
+ <codeblock outputclass="scm"><xi:include parse="text" href="code/scheme"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="smalltalk">
+ <title>Smalltalk</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="smalltalk"</codeph></title>
+ <codeblock outputclass="smalltalk"><xi:include parse="text" href="code/smalltalk"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="sql">
+ <title>SQL</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="sql"</codeph></title>
+ <codeblock outputclass="sql"><xi:include parse="text" href="code/sql"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="sql92"</codeph></title>
+ <codeblock outputclass="sql92"><xi:include parse="text" href="code/sql"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="sql1999"</codeph></title>
+ <codeblock outputclass="sql1999"><xi:include parse="text" href="code/sql"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="sql2003"</codeph></title>
+ <codeblock outputclass="sql2003"><xi:include parse="text" href="code/sql"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="tcl">
+ <title>TCL</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="tcl"</codeph></title>
+ <codeblock outputclass="tcl"><xi:include parse="text" href="code/tcl"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="tex">
+ <title>TeX</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="tex"</codeph></title>
+ <codeblock outputclass="tex"><xi:include parse="text" href="code/tex"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="latex"</codeph></title>
+ <codeblock outputclass="latex"><xi:include parse="text" href="code/tex"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="vala">
+ <title>Vala</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="vala"</codeph></title>
+ <codeblock outputclass="vala"><xi:include parse="text" href="code/vala"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="xml">
+ <title>XML</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="xml"</codeph></title>
+ <codeblock outputclass="xml"><xi:include parse="text" href="code/xml"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="myxml"</codeph></title>
+ <codeblock outputclass="myxml"><xi:include parse="text" href="code/xml"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="xquery">
+ <title>XQuery</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="xquery"</codeph></title>
+ <codeblock outputclass="xquery"><xi:include parse="text" href="code/xquery"/></codeblock>
+ </section>
+ <section>
+ <title><codeph>outputclass="xq"</codeph></title>
+ <codeblock outputclass="xq"><xi:include parse="text" href="code/xquery"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+<topic id="yaml">
+ <title>YAML</title>
+ <body>
+ <section>
+ <title><codeph>outputclass="yaml"</codeph></title>
+ <codeblock outputclass="yaml"><xi:include parse="text" href="code/yaml"/></codeblock>
+ </section>
+ </body>
+</topic>
+
+</topic>
+
diff --git a/test/syntax/docbook.docbook b/test/syntax/docbook.docbook
new file mode 100644
index 00000000..0de666a9
--- /dev/null
+++ b/test/syntax/docbook.docbook
@@ -0,0 +1,537 @@
+<article xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ id="docbook">
+
+<title>Syntax Highlighting</title>
+
+<section id="embedded">
+<title>Embedded Markup</title>
+<programlisting language="c">
+#include &lt;stdlib.h>
+int main(char** argv) {
+ // This is a <link xlink:href="#">link</link>
+ /* This is <replaceable>replaceable text</replaceable> */
+ int i = 12;
+ printf("hello %s\n", world);
+}
+</programlisting>
+</section>
+
+<section id="actionscript">
+ <title>ActionScript</title>
+ <example>
+ <title><code>language="actionscript"</code></title>
+ <programlisting language="actionscript"><xi:include parse="text" href="code/actionscript"/></programlisting>
+ </example>
+</section>
+
+<section id="apache">
+ <title>Apache Config</title>
+ <example>
+ <title><code>language="apache"</code></title>
+ <programlisting language="apache"><xi:include parse="text" href="code/apache"/></programlisting>
+ </example>
+</section>
+
+<section id="asciidoc">
+ <title>AsciiDoc</title>
+ <example>
+ <title><code>language="asciidoc"</code></title>
+ <programlisting language="asciidoc"><xi:include parse="text" href="code/asciidoc"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="adoc"</code></title>
+ <programlisting language="adoc"><xi:include parse="text" href="code/asciidoc"/></programlisting>
+ </example>
+</section>
+
+<section id="bash">
+ <title>Bash</title>
+ <example>
+ <title><code>language="sh"</code></title>
+ <programlisting language="sh"><xi:include parse="text" href="code/bash"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="bash"</code></title>
+ <programlisting language="bash"><xi:include parse="text" href="code/bash"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="csh"</code></title>
+ <programlisting language="csh"><xi:include parse="text" href="code/bash"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="bourne"</code></title>
+ <programlisting language="bourne"><xi:include parse="text" href="code/bash"/></programlisting>
+ </example>
+</section>
+
+<section id="c">
+ <title>C</title>
+ <example>
+ <title><code>language="c"</code></title>
+ <programlisting language="c"><xi:include parse="text" href="code/cpp"/></programlisting>
+ </example>
+</section>
+
+<section id="cs">
+ <title>C#</title>
+ <example>
+ <title><code>language="cs"</code></title>
+ <programlisting language="cs"><xi:include parse="text" href="code/cs"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="csharp"</code></title>
+ <programlisting language="csharp"><xi:include parse="text" href="code/cs"/></programlisting>
+ </example>
+</section>
+
+<section id="cpp">
+ <title>C++</title>
+ <example>
+ <title><code>language="cpp"</code></title>
+ <programlisting language="cpp"><xi:include parse="text" href="code/cpp"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="c++"</code></title>
+ <programlisting language="c++"><xi:include parse="text" href="code/cpp"/></programlisting>
+ </example>
+</section>
+
+<section id="clojure">
+ <title>Clojure</title>
+ <example>
+ <title><code>language="clojure"</code></title>
+ <programlisting language="clojure"><xi:include parse="text" href="code/clojure"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="clj"</code></title>
+ <programlisting language="clj"><xi:include parse="text" href="code/clojure"/></programlisting>
+ </example>
+</section>
+
+<section id="cmake">
+ <title>CMake</title>
+ <example>
+ <title><code>language="cmake"</code></title>
+ <programlisting language="cmake"><xi:include parse="text" href="code/cmake"/></programlisting>
+ </example>
+</section>
+
+<section id="css">
+ <title>CSS</title>
+ <example>
+ <title><code>language="css"</code></title>
+ <programlisting language="css"><xi:include parse="text" href="code/css"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="css21"</code></title>
+ <programlisting language="css21"><xi:include parse="text" href="code/css"/></programlisting>
+ </example>
+</section>
+
+<section id="d">
+ <title>D</title>
+ <example>
+ <title><code>language="d"</code></title>
+ <programlisting language="d"><xi:include parse="text" href="code/d"/></programlisting>
+ </example>
+</section>
+
+<section id="diff">
+ <title>Diff</title>
+ <example>
+ <title><code>language="diff"</code></title>
+ <programlisting language="diff"><xi:include parse="text" href="code/diff"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="patch"</code></title>
+ <programlisting language="patch"><xi:include parse="text" href="code/diff"/></programlisting>
+ </example>
+</section>
+
+<section id="django">
+ <title>Django</title>
+ <example>
+ <title><code>language="django"</code></title>
+ <programlisting language="django"><xi:include parse="text" href="code/django"/></programlisting>
+ </example>
+</section>
+
+<section id="dockerfile">
+ <title>Dockerfile</title>
+ <example>
+ <title><code>language="dockerfile"</code></title>
+ <programlisting language="dockerfile"><xi:include parse="text" href="code/dockerfile"/></programlisting>
+ </example>
+</section>
+
+<section id="dos">
+ <title>DOS Batch</title>
+ <example>
+ <title><code>language="dos"</code></title>
+ <programlisting language="dos"><xi:include parse="text" href="code/dos"/></programlisting>
+ </example>
+</section>
+
+<section id="erb">
+ <title>Embedded Ruby</title>
+ <example>
+ <title><code>language="erb"</code></title>
+ <programlisting language="erb"><xi:include parse="text" href="code/erb"/></programlisting>
+ </example>
+</section>
+
+<section id="fsharp">
+ <title>F#</title>
+ <example>
+ <title><code>language="fsharp"</code></title>
+ <programlisting language="fsharp"><xi:include parse="text" href="code/fsharp"/></programlisting>
+ </example>
+</section>
+
+<section id="go">
+ <title>Go</title>
+ <example>
+ <title><code>language="go"</code></title>
+ <programlisting language="go"><xi:include parse="text" href="code/go"/></programlisting>
+ </example>
+</section>
+
+<section id="haml">
+ <title>Haml</title>
+ <example>
+ <title><code>language="haml"</code></title>
+ <programlisting language="haml"><xi:include parse="text" href="code/haml"/></programlisting>
+ </example>
+</section>
+
+<section id="haskell">
+ <title>Haskell</title>
+ <example>
+ <title><code>language="haskell"</code></title>
+ <programlisting language="haskell"><xi:include parse="text" href="code/haskell"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="hs"</code></title>
+ <programlisting language="hs"><xi:include parse="text" href="code/haskell"/></programlisting>
+ </example>
+</section>
+
+<section id="html">
+ <title>HTML</title>
+ <example>
+ <title><code>language="html"</code></title>
+ <programlisting language="html"><xi:include parse="text" href="code/xml"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="xhtml"</code></title>
+ <programlisting language="xhtml"><xi:include parse="text" href="code/xml"/></programlisting>
+ </example>
+</section>
+
+<section id="http">
+ <title>HTTP</title>
+ <example>
+ <title><code>language="http"</code></title>
+ <programlisting language="http"><xi:include parse="text" href="code/http"/></programlisting>
+ </example>
+</section>
+
+<section id="ini">
+ <title>INI</title>
+ <example>
+ <title><code>language="ini"</code></title>
+ <programlisting language="ini"><xi:include parse="text" href="code/ini"/></programlisting>
+ </example>
+</section>
+
+<section id="java">
+ <title>Java</title>
+ <example>
+ <title><code>language="java"</code></title>
+ <programlisting language="java"><xi:include parse="text" href="code/java"/></programlisting>
+ </example>
+</section>
+
+<section id="json">
+ <title>JSON</title>
+ <example>
+ <title><code>language="json"</code></title>
+ <programlisting language="json"><xi:include parse="text" href="code/json"/></programlisting>
+ </example>
+</section>
+
+<section id="javascript">
+ <title>JavaScript</title>
+ <example>
+ <title><code>language="javascript"</code></title>
+ <programlisting language="javascript"><xi:include parse="text" href="code/javascript"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="js"</code></title>
+ <programlisting language="js"><xi:include parse="text" href="code/javascript"/></programlisting>
+ </example>
+</section>
+
+<section id="LISP">
+ <title>LISP</title>
+ <example>
+ <title><code>language="lisp"</code></title>
+ <programlisting language="lisp"><xi:include parse="text" href="code/lisp"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="cl"</code></title>
+ <programlisting language="cl"><xi:include parse="text" href="code/lisp"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="el"</code></title>
+ <programlisting language="el"><xi:include parse="text" href="code/lisp"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="lsp"</code></title>
+ <programlisting language="lsp"><xi:include parse="text" href="code/lisp"/></programlisting>
+ </example>
+</section>
+
+<section id="lua">
+ <title>Lua</title>
+ <example>
+ <title><code>language="lua"</code></title>
+ <programlisting language="lua"><xi:include parse="text" href="code/lua"/></programlisting>
+ </example>
+</section>
+
+<section id="makefile">
+ <title>Makefile</title>
+ <example>
+ <title><code>language="makefile"</code></title>
+ <programlisting language="makefile"><xi:include parse="text" href="code/makefile"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="make"</code></title>
+ <programlisting language="make"><xi:include parse="text" href="code/makefile"/></programlisting>
+ </example>
+</section>
+
+<section id="markdown">
+ <title>Markdown</title>
+ <example>
+ <title><code>language="markdown"</code></title>
+ <programlisting language="markdown"><xi:include parse="text" href="code/markdown"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="md"</code></title>
+ <programlisting language="md"><xi:include parse="text" href="code/markdown"/></programlisting>
+ </example>
+</section>
+
+<section id="matlab">
+ <title>MATLAB/Octave</title>
+ <example>
+ <title><code>language="matlab"</code></title>
+ <programlisting language="matlab"><xi:include parse="text" href="code/matlab"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="octave"</code></title>
+ <programlisting language="octave"><xi:include parse="text" href="code/matlab"/></programlisting>
+ </example>
+</section>
+
+<section id="nginx">
+ <title>Nginx Config</title>
+ <example>
+ <title><code>language="nginx"</code></title>
+ <programlisting language="nginx"><xi:include parse="text" href="code/nginx"/></programlisting>
+ </example>
+</section>
+
+<section id="objectivec">
+ <title>Objective-C</title>
+ <example>
+ <title><code>language="objc"</code></title>
+ <programlisting language="objc"><xi:include parse="text" href="code/objectivec"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="m"</code></title>
+ <programlisting language="m"><xi:include parse="text" href="code/objectivec"/></programlisting>
+ </example>
+</section>
+
+<section id="perl">
+ <title>Perl</title>
+ <example>
+ <title><code>language="perl"</code></title>
+ <programlisting language="perl"><xi:include parse="text" href="code/perl"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="pl"</code></title>
+ <programlisting language="pl"><xi:include parse="text" href="code/perl"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="pm"</code></title>
+ <programlisting language="pm"><xi:include parse="text" href="code/perl"/></programlisting>
+ </example>
+</section>
+
+<section id="php">
+ <title>PHP</title>
+ <example>
+ <title><code>language="php"</code></title>
+ <programlisting language="php"><xi:include parse="text" href="code/php"/></programlisting>
+ </example>
+</section>
+
+<section id="python">
+ <title>Python</title>
+ <example>
+ <title><code>language="python"</code></title>
+ <programlisting language="python"><xi:include parse="text" href="code/python"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="py"</code></title>
+ <programlisting language="py"><xi:include parse="text" href="code/python"/></programlisting>
+ </example>
+</section>
+
+<section id="r">
+ <title>R/S</title>
+ <example>
+ <title><code>language="r"</code></title>
+ <programlisting language="r"><xi:include parse="text" href="code/r"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="s"</code></title>
+ <programlisting language="s"><xi:include parse="text" href="code/r"/></programlisting>
+ </example>
+</section>
+
+<section id="ruby">
+ <title>Ruby</title>
+ <example>
+ <title><code>language="ruby"</code></title>
+ <programlisting language="ruby"><xi:include parse="text" href="code/ruby"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="rb"</code></title>
+ <programlisting language="rb"><xi:include parse="text" href="code/ruby"/></programlisting>
+ </example>
+</section>
+
+<section id="rust">
+ <title>Rust</title>
+ <example>
+ <title><code>language="rust"</code></title>
+ <programlisting language="rust"><xi:include parse="text" href="code/rust"/></programlisting>
+ </example>
+</section>
+
+<section id="scala">
+ <title>Scala</title>
+ <example>
+ <title><code>language="scala"</code></title>
+ <programlisting language="scala"><xi:include parse="text" href="code/scala"/></programlisting>
+ </example>
+</section>
+
+<section id="scheme">
+ <title>Scheme</title>
+ <example>
+ <title><code>language="scheme"</code></title>
+ <programlisting language="scheme"><xi:include parse="text" href="code/scheme"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="scm"</code></title>
+ <programlisting language="scm"><xi:include parse="text" href="code/scheme"/></programlisting>
+ </example>
+</section>
+
+<section id="smalltalk">
+ <title>Smalltalk</title>
+ <example>
+ <title><code>language="smalltalk"</code></title>
+ <programlisting language="smalltalk"><xi:include parse="text" href="code/smalltalk"/></programlisting>
+ </example>
+</section>
+
+<section id="sql">
+ <title>SQL</title>
+ <example>
+ <title><code>language="sql"</code></title>
+ <programlisting language="sql"><xi:include parse="text" href="code/sql"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="sql92"</code></title>
+ <programlisting language="sql92"><xi:include parse="text" href="code/sql"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="sql1999"</code></title>
+ <programlisting language="sql1999"><xi:include parse="text" href="code/sql"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="sql2003"</code></title>
+ <programlisting language="sql2003"><xi:include parse="text" href="code/sql"/></programlisting>
+ </example>
+</section>
+
+<section id="tcl">
+ <title>TCL</title>
+ <example>
+ <title><code>language="tcl"</code></title>
+ <programlisting language="tcl"><xi:include parse="text" href="code/tcl"/></programlisting>
+ </example>
+</section>
+
+<section id="tex">
+ <title>TeX</title>
+ <example>
+ <title><code>language="tex"</code></title>
+ <programlisting language="tex"><xi:include parse="text" href="code/tex"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="latex"</code></title>
+ <programlisting language="latex"><xi:include parse="text" href="code/tex"/></programlisting>
+ </example>
+</section>
+
+<section id="vala">
+ <title>Vala</title>
+ <example>
+ <title><code>language="vala"</code></title>
+ <programlisting language="vala"><xi:include parse="text" href="code/vala"/></programlisting>
+ </example>
+</section>
+
+<section id="xml">
+ <title>XML</title>
+ <example>
+ <title><code>language="xml"</code></title>
+ <programlisting language="xml"><xi:include parse="text" href="code/xml"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="myxml"</code></title>
+ <programlisting language="myxml"><xi:include parse="text" href="code/xml"/></programlisting>
+ </example>
+</section>
+
+<section id="xquery">
+ <title>XQuery</title>
+ <example>
+ <title><code>language="xquery"</code></title>
+ <programlisting language="xquery"><xi:include parse="text" href="code/xquery"/></programlisting>
+ </example>
+ <example>
+ <title><code>language="xq"</code></title>
+ <programlisting language="xq"><xi:include parse="text" href="code/xquery"/></programlisting>
+ </example>
+</section>
+
+<section id="yaml">
+ <title>YAML</title>
+ <example>
+ <title><code>language="yaml"</code></title>
+ <programlisting language="yaml"><xi:include parse="text" href="code/yaml"/></programlisting>
+ </example>
+</section>
+
+</article>
diff --git a/test/syntax/mallard.page b/test/syntax/mallard.page
new file mode 100644
index 00000000..9eedebcc
--- /dev/null
+++ b/test/syntax/mallard.page
@@ -0,0 +1,725 @@
+<page xmlns="http://projectmallard.org/1.0/"
+ xmlns:e="http://projectmallard.org/experimental/"
+ xmlns:ui="http://projectmallard.org/ui/1.0/"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ id="mallard">
+<title>Syntax Highlighting</title>
+
+<section id="embedded">
+<title>Embedded Markup</title>
+<code mime="text/x-csrc">
+#include &lt;stdlib.h>
+int main(char** argv) {
+ // This is a <link href="#">link</link>
+ /* This is <var>replaceable text</var> */
+ int i = 12;
+ printf(<e:hi>"hello %s\n"</e:hi>, world);
+}
+</code>
+</section>
+
+<section id="actionscript">
+ <title>ActionScript</title>
+ <listing ui:expanded="false">
+ <title><code>mime="application/x-actionscript"</code></title>
+ <code mime="application/x-actionscript"><xi:include parse="text" href="code/actionscript"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="actionscript"</code></title>
+ <code type="actionscript"><xi:include parse="text" href="code/actionscript"/></code>
+ </listing>
+</section>
+
+<section id="apache">
+ <title>Apache Config</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-apacheconf"</code></title>
+ <code mime="text/x-apacheconf"><xi:include parse="text" href="code/apache"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="apache"</code></title>
+ <code type="apache"><xi:include parse="text" href="code/apache"/></code>
+ </listing>
+</section>
+
+<section id="asciidoc">
+ <title>AsciiDoc</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-asciidoc"</code></title>
+ <code mime="text/x-asciidoc"><xi:include parse="text" href="code/asciidoc"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="asciidoc"</code></title>
+ <code type="asciidoc"><xi:include parse="text" href="code/asciidoc"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="adoc"</code></title>
+ <code type="adoc"><xi:include parse="text" href="code/asciidoc"/></code>
+ </listing>
+</section>
+
+<section id="bash">
+ <title>Bash</title>
+ <listing ui:expanded="false">
+ <title><code>mime="application/x-shellscript"</code></title>
+ <code mime="application/x-shellscript"><xi:include parse="text" href="code/bash"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="sh"</code></title>
+ <code type="sh"><xi:include parse="text" href="code/bash"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="bash"</code></title>
+ <code type="bash"><xi:include parse="text" href="code/bash"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="csh"</code></title>
+ <code type="csh"><xi:include parse="text" href="code/bash"/></code>
+ </listing>
+</section>
+
+<section id="c">
+ <title>C</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-chdr"</code></title>
+ <code mime="text/x-chdr"><xi:include parse="text" href="code/cpp"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-csrc"</code></title>
+ <code mime="text/x-csrc"><xi:include parse="text" href="code/cpp"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="c"</code></title>
+ <code type="c"><xi:include parse="text" href="code/cpp"/></code>
+ </listing>
+</section>
+
+<section id="cs">
+ <title>C#</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-csharp"</code></title>
+ <code mime="text/x-csharp"><xi:include parse="text" href="code/cs"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="cs"</code></title>
+ <code type="cs"><xi:include parse="text" href="code/cs"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="csharp"</code></title>
+ <code type="csharp"><xi:include parse="text" href="code/cs"/></code>
+ </listing>
+</section>
+
+<section id="cpp">
+ <title>C++</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-c++hdr"</code></title>
+ <code mime="text/x-c++hdr"><xi:include parse="text" href="code/cpp"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-c++src"</code></title>
+ <code mime="text/x-c++src"><xi:include parse="text" href="code/cpp"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="cpp"</code></title>
+ <code type="cpp"><xi:include parse="text" href="code/cpp"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="c++"</code></title>
+ <code type="c++"><xi:include parse="text" href="code/cpp"/></code>
+ </listing>
+</section>
+
+<section id="clojure">
+ <title>Clojure</title>
+ <listing ui:expanded="false">
+ <title><code>mime="application/x-clojure"</code></title>
+ <code mime="application/x-clojure"><xi:include parse="text" href="code/clojure"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="clojure"</code></title>
+ <code type="clojure"><xi:include parse="text" href="code/clojure"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="clj"</code></title>
+ <code type="clj"><xi:include parse="text" href="code/clojure"/></code>
+ </listing>
+</section>
+
+<section id="cmake">
+ <title>CMake</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-cmake"</code></title>
+ <code mime="text/x-cmake"><xi:include parse="text" href="code/cmake"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="cmake"</code></title>
+ <code type="cmake"><xi:include parse="text" href="code/cmake"/></code>
+ </listing>
+</section>
+
+<section id="css">
+ <title>CSS</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/css"</code></title>
+ <code mime="text/css"><xi:include parse="text" href="code/css"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="css"</code></title>
+ <code type="css"><xi:include parse="text" href="code/css"/></code>
+ </listing>
+</section>
+
+<section id="d">
+ <title>D</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-d"</code></title>
+ <code mime="text/x-d"><xi:include parse="text" href="code/d"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="d"</code></title>
+ <code type="d"><xi:include parse="text" href="code/d"/></code>
+ </listing>
+</section>
+
+<section id="diff">
+ <title>Diff</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-diff"</code></title>
+ <code mime="text/x-diff"><xi:include parse="text" href="code/diff"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-patch"</code></title>
+ <code mime="text/x-patch"><xi:include parse="text" href="code/diff"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="diff"</code></title>
+ <code type="diff"><xi:include parse="text" href="code/diff"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="patch"</code></title>
+ <code type="patch"><xi:include parse="text" href="code/diff"/></code>
+ </listing>
+</section>
+
+<section id="django">
+ <title>Django</title>
+ <listing ui:expanded="false">
+ <title><code>mime="application/x-django-templating"</code></title>
+ <code mime="application/x-django-templating"><xi:include parse="text" href="code/django"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="django"</code></title>
+ <code type="django"><xi:include parse="text" href="code/django"/></code>
+ </listing>
+</section>
+
+<section id="dockerfile">
+ <title>Dockerfile</title>
+ <listing ui:expanded="false">
+ <title><code>type="dockerfile"</code></title>
+ <code type="dockerfile"><xi:include parse="text" href="code/dockerfile"/></code>
+ </listing>
+</section>
+
+<section id="dos">
+ <title>DOS Batch</title>
+ <listing ui:expanded="false">
+ <title><code>mime="application/x-dos-batch"</code></title>
+ <code mime="application/x-dos-batch"><xi:include parse="text" href="code/dos"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="dos"</code></title>
+ <code type="dos"><xi:include parse="text" href="code/dos"/></code>
+ </listing>
+</section>
+
+<section id="erb">
+ <title>Embedded Ruby</title>
+ <listing ui:expanded="false">
+ <title><code>mime="application/x-ruby-templating"</code></title>
+ <code mime="application/x-ruby-templating"><xi:include parse="text" href="code/erb"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="erb"</code></title>
+ <code type="erb"><xi:include parse="text" href="code/erb"/></code>
+ </listing>
+</section>
+
+<section id="fsharp">
+ <title>F#</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-fsharp"</code></title>
+ <code mime="text/x-fsharp"><xi:include parse="text" href="code/fsharp"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="fsharp"</code></title>
+ <code type="fsharp"><xi:include parse="text" href="code/fsharp"/></code>
+ </listing>
+</section>
+
+<section id="go">
+ <title>Go</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-go"</code></title>
+ <code mime="text/x-go"><xi:include parse="text" href="code/go"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="go"</code></title>
+ <code type="go"><xi:include parse="text" href="code/go"/></code>
+ </listing>
+</section>
+
+<section id="haml">
+ <title>Haml</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-haml"</code></title>
+ <code mime="text/x-haml"><xi:include parse="text" href="code/haml"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="haml"</code></title>
+ <code type="haml"><xi:include parse="text" href="code/haml"/></code>
+ </listing>
+</section>
+
+<section id="haskell">
+ <title>Haskell</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-haskell"</code></title>
+ <code mime="text/x-haskell"><xi:include parse="text" href="code/haskell"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="haskell"</code></title>
+ <code type="haskell"><xi:include parse="text" href="code/haskell"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="hs"</code></title>
+ <code type="hs"><xi:include parse="text" href="code/haskell"/></code>
+ </listing>
+</section>
+
+<section id="html">
+ <title>HTML</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/html"</code></title>
+ <code mime="text/html"><xi:include parse="text" href="code/xml"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="html"</code></title>
+ <code type="html"><xi:include parse="text" href="code/xml"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="xhtml"</code></title>
+ <code type="xhtml"><xi:include parse="text" href="code/xml"/></code>
+ </listing>
+</section>
+
+<section id="http">
+ <title>HTTP</title>
+ <listing ui:expanded="false">
+ <title><code>type="http"</code></title>
+ <code type="http"><xi:include parse="text" href="code/http"/></code>
+ </listing>
+</section>
+
+<section id="ini">
+ <title>INI</title>
+ <listing ui:expanded="false">
+ <title><code>type="ini"</code></title>
+ <code type="ini"><xi:include parse="text" href="code/ini"/></code>
+ </listing>
+</section>
+
+<section id="java">
+ <title>Java</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-java"</code></title>
+ <code mime="text/x-java"><xi:include parse="text" href="code/java"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="java"</code></title>
+ <code type="java"><xi:include parse="text" href="code/java"/></code>
+ </listing>
+</section>
+
+<section id="json">
+ <title>JSON</title>
+ <listing ui:expanded="false">
+ <title><code>mime="application/json"</code></title>
+ <code mime="application/json"><xi:include parse="text" href="code/json"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="json"</code></title>
+ <code type="json"><xi:include parse="text" href="code/json"/></code>
+ </listing>
+</section>
+
+<section id="javascript">
+ <title>JavaScript</title>
+ <listing ui:expanded="false">
+ <title><code>mime="application/javascript"</code></title>
+ <code mime="application/javascript"><xi:include parse="text" href="code/javascript"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="javascript"</code></title>
+ <code type="javascript"><xi:include parse="text" href="code/javascript"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="js"</code></title>
+ <code type="js"><xi:include parse="text" href="code/javascript"/></code>
+ </listing>
+</section>
+
+<section id="LISP">
+ <title>LISP</title>
+ <listing ui:expanded="false">
+ <title><code>mime="application/x-lisp"</code></title>
+ <code mime="application/x-lisp"><xi:include parse="text" href="code/lisp"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-emacs-lisp"</code></title>
+ <code mime="text/x-emacs-lisp"><xi:include parse="text" href="code/lisp"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="lisp"</code></title>
+ <code type="lisp"><xi:include parse="text" href="code/lisp"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="cl"</code></title>
+ <code type="cl"><xi:include parse="text" href="code/lisp"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="el"</code></title>
+ <code type="el"><xi:include parse="text" href="code/lisp"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="lsp"</code></title>
+ <code type="lsp"><xi:include parse="text" href="code/lisp"/></code>
+ </listing>
+</section>
+
+<section id="lua">
+ <title>Lua</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-lua"</code></title>
+ <code mime="text/x-lua"><xi:include parse="text" href="code/lua"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="lua"</code></title>
+ <code type="lua"><xi:include parse="text" href="code/lua"/></code>
+ </listing>
+</section>
+
+<section id="makefile">
+ <title>Makefile</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-makefile"</code></title>
+ <code mime="text/x-makefile"><xi:include parse="text" href="code/makefile"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="makefile"</code></title>
+ <code type="makefile"><xi:include parse="text" href="code/makefile"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="make"</code></title>
+ <code type="make"><xi:include parse="text" href="code/makefile"/></code>
+ </listing>
+</section>
+
+<section id="markdown">
+ <title>Markdown</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-markdown"</code></title>
+ <code mime="text/x-markdown"><xi:include parse="text" href="code/markdown"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="markdown"</code></title>
+ <code type="markdown"><xi:include parse="text" href="code/markdown"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="md"</code></title>
+ <code type="md"><xi:include parse="text" href="code/markdown"/></code>
+ </listing>
+</section>
+
+<section id="matlab">
+ <title>MATLAB/Octave</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-matlab"</code></title>
+ <code mime="text/x-matlab"><xi:include parse="text" href="code/matlab"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-octave"</code></title>
+ <code mime="text/x-octave"><xi:include parse="text" href="code/matlab"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="matlab"</code></title>
+ <code type="matlab"><xi:include parse="text" href="code/matlab"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="octave"</code></title>
+ <code type="octave"><xi:include parse="text" href="code/matlab"/></code>
+ </listing>
+</section>
+
+<section id="nginx">
+ <title>Nginx Config</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-nginx-conf"</code></title>
+ <code mime="text/x-nginx-conf"><xi:include parse="text" href="code/nginx"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="nginx"</code></title>
+ <code type="nginx"><xi:include parse="text" href="code/nginx"/></code>
+ </listing>
+</section>
+
+<section id="objectivec">
+ <title>Objective-C</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-objcsrc"</code></title>
+ <code mime="text/x-objcsrc"><xi:include parse="text" href="code/objectivec"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="objc"</code></title>
+ <code type="objc"><xi:include parse="text" href="code/objectivec"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="m"</code></title>
+ <code type="m"><xi:include parse="text" href="code/objectivec"/></code>
+ </listing>
+</section>
+
+<section id="perl">
+ <title>Perl</title>
+ <listing ui:expanded="false">
+ <title><code>mime="application/x-perl"</code></title>
+ <code mime="application/x-perl"><xi:include parse="text" href="code/perl"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="perl"</code></title>
+ <code type="perl"><xi:include parse="text" href="code/perl"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="pl"</code></title>
+ <code type="pl"><xi:include parse="text" href="code/perl"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="pm"</code></title>
+ <code type="pm"><xi:include parse="text" href="code/perl"/></code>
+ </listing>
+</section>
+
+<section id="php">
+ <title>PHP</title>
+ <listing ui:expanded="false">
+ <title><code>mime="application/x-php"</code></title>
+ <code mime="application/x-php"><xi:include parse="text" href="code/php"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="php"</code></title>
+ <code type="php"><xi:include parse="text" href="code/php"/></code>
+ </listing>
+</section>
+
+<section id="python">
+ <title>Python</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-python"</code></title>
+ <code mime="text/x-python"><xi:include parse="text" href="code/python"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="python"</code></title>
+ <code type="python"><xi:include parse="text" href="code/python"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="py"</code></title>
+ <code type="py"><xi:include parse="text" href="code/python"/></code>
+ </listing>
+</section>
+
+<section id="r">
+ <title>R/S</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-r"</code></title>
+ <code mime="text/x-r"><xi:include parse="text" href="code/r"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-s"</code></title>
+ <code mime="text/x-s"><xi:include parse="text" href="code/r"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="r"</code></title>
+ <code type="r"><xi:include parse="text" href="code/r"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="s"</code></title>
+ <code type="s"><xi:include parse="text" href="code/r"/></code>
+ </listing>
+</section>
+
+<section id="ruby">
+ <title>Ruby</title>
+ <listing ui:expanded="false">
+ <title><code>mime="application/x-ruby"</code></title>
+ <code mime="application/x-ruby"><xi:include parse="text" href="code/ruby"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="ruby"</code></title>
+ <code type="ruby"><xi:include parse="text" href="code/ruby"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="rb"</code></title>
+ <code type="rb"><xi:include parse="text" href="code/ruby"/></code>
+ </listing>
+</section>
+
+<section id="rust">
+ <title>Rust</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-rust"</code></title>
+ <code mime="text/x-rust"><xi:include parse="text" href="code/rust"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="rust"</code></title>
+ <code type="rust"><xi:include parse="text" href="code/rust"/></code>
+ </listing>
+</section>
+
+<section id="scala">
+ <title>Scala</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-scala"</code></title>
+ <code mime="text/x-scala"><xi:include parse="text" href="code/scala"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="scala"</code></title>
+ <code type="scala"><xi:include parse="text" href="code/scala"/></code>
+ </listing>
+</section>
+
+<section id="scheme">
+ <title>Scheme</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-scheme"</code></title>
+ <code mime="text/x-scheme"><xi:include parse="text" href="code/scheme"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="scheme"</code></title>
+ <code type="scheme"><xi:include parse="text" href="code/scheme"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="scm"</code></title>
+ <code type="scm"><xi:include parse="text" href="code/scheme"/></code>
+ </listing>
+</section>
+
+<section id="smalltalk">
+ <title>Smalltalk</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-smalltalk"</code></title>
+ <code mime="text/x-smalltalk"><xi:include parse="text" href="code/smalltalk"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="smalltalk"</code></title>
+ <code type="smalltalk"><xi:include parse="text" href="code/smalltalk"/></code>
+ </listing>
+</section>
+
+<section id="sql">
+ <title>SQL</title>
+ <listing ui:expanded="false">
+ <title><code>mime="application/sql"</code></title>
+ <code mime="application/sql"><xi:include parse="text" href="code/sql"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="sql"</code></title>
+ <code type="sql"><xi:include parse="text" href="code/sql"/></code>
+ </listing>
+</section>
+
+<section id="tcl">
+ <title>TCL</title>
+ <listing ui:expanded="false">
+ <title><code>mime="application/x-tcl"</code></title>
+ <code mime="application/x-tcl"><xi:include parse="text" href="code/tcl"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="tcl"</code></title>
+ <code type="tcl"><xi:include parse="text" href="code/tcl"/></code>
+ </listing>
+</section>
+
+<section id="tex">
+ <title>TeX</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-tex"</code></title>
+ <code mime="text/x-tex"><xi:include parse="text" href="code/tex"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="tex"</code></title>
+ <code type="tex"><xi:include parse="text" href="code/tex"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="latex"</code></title>
+ <code type="latex"><xi:include parse="text" href="code/tex"/></code>
+ </listing>
+</section>
+
+<section id="vala">
+ <title>Vala</title>
+ <listing ui:expanded="false">
+ <title><code>mime="text/x-vala"</code></title>
+ <code mime="text/x-vala"><xi:include parse="text" href="code/vala"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="vala"</code></title>
+ <code type="vala"><xi:include parse="text" href="code/vala"/></code>
+ </listing>
+</section>
+
+<section id="xml">
+ <title>XML</title>
+ <listing ui:expanded="false">
+ <title><code>mime="application/xml"</code></title>
+ <code mime="application/xml"><xi:include parse="text" href="code/xml"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>mime="application/docbook+xml"</code></title>
+ <code mime="application/docbook+xml"><xi:include parse="text" href="code/xml"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="xml"</code></title>
+ <code type="xml"><xi:include parse="text" href="code/xml"/></code>
+ </listing>
+</section>
+
+<section id="xquery">
+ <title>XQuery</title>
+ <listing ui:expanded="false">
+ <title><code>mime="application/xquery"</code></title>
+ <code mime="application/xquery"><xi:include parse="text" href="code/xquery"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="xquery"</code></title>
+ <code type="xquery"><xi:include parse="text" href="code/xquery"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="xq"</code></title>
+ <code type="xq"><xi:include parse="text" href="code/xquery"/></code>
+ </listing>
+</section>
+
+<section id="yaml">
+ <title>YAML</title>
+ <listing ui:expanded="false">
+ <title><code>mime="application/x-yaml"</code></title>
+ <code mime="application/x-yaml"><xi:include parse="text" href="code/yaml"/></code>
+ </listing>
+ <listing ui:expanded="false">
+ <title><code>type="yaml"</code></title>
+ <code type="yaml"><xi:include parse="text" href="code/yaml"/></code>
+ </listing>
+</section>
+
+</page>
diff --git a/xslt/common/Makefile.am b/xslt/common/Makefile.am
index 064e20cf..33ab76c9 100644
--- a/xslt/common/Makefile.am
+++ b/xslt/common/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = domains
+SUBDIRS = domains icons
xsldir=$(datadir)/yelp-xsl/xslt/common
diff --git a/xslt/common/color.xsl b/xslt/common/color.xsl
index 97fedc16..672c1c52 100644
--- a/xslt/common/color.xsl
+++ b/xslt/common/color.xsl
@@ -15,189 +15,946 @@ along with this program; see the file COPYING.LGPL. If not, see <http://www.gnu
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:math="http://exslt.org/math"
+ exclude-result-prefixes="math"
version="1.0">
<!--!!==========================================================================
Colors
-Specify common named colors to style output.
-:Revision:version="1.0" date="2010-05-25" status="final"
+Common named colors and color utilities for output styling.
+:Revision:version="3.22" date="2016-01-03" status="final"
This stylesheet provides a common interface to specify custom colors for
transformations to presentation-oreinted formats. This allows similar
output for different types of input documents.
+
+This stylesheet also provides a number of templates for manipulating colors
+and extracting information about colors.
+-->
+
+
+<!--**==========================================================================
+color.hex2dec
+Convert a hexidecimal number to decimal.
+:Revision: version="3.22" date="2016-01-03" status="final"
+$hex: The hexidecimal number to convert to decimal.
+
+This template converts a hexidecimal number to decimal. It's useful for getting
+the numeric values of color components in a hexidecimal color code.
+-->
+<xsl:template name="color.hex2dec">
+ <xsl:param name="hex"/>
+ <xsl:variable name="char" select="substring($hex, string-length($hex))"/>
+ <xsl:variable name="dec">
+ <xsl:choose>
+ <xsl:when test="$char = 'a' or $char = 'A'">10</xsl:when>
+ <xsl:when test="$char = 'b' or $char = 'B'">11</xsl:when>
+ <xsl:when test="$char = 'c' or $char = 'C'">12</xsl:when>
+ <xsl:when test="$char = 'd' or $char = 'D'">13</xsl:when>
+ <xsl:when test="$char = 'e' or $char = 'E'">14</xsl:when>
+ <xsl:when test="$char = 'f' or $char = 'F'">15</xsl:when>
+ <xsl:otherwise><xsl:value-of select="$char"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="string-length($hex) = 1">
+ <xsl:value-of select="number($dec)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="tens">
+ <xsl:call-template name="color.hex2dec">
+ <xsl:with-param name="hex" select="substring($hex, 1, string-length($hex) - 1)"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$dec + 16 * $tens"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<!--**==========================================================================
+color.r
+Extract the red component of a color.
+:Revision: version="3.22" date="2016-01-03" status="final"
+$color: A color specified in hexidecimal, #{rgb()}, or #{rgba()}.
+
+This template extracts the red portion of a color, returning a number between
+0 and 255. It accepts six-digit and three-digit hexidecimal color codes,
+colors specified with #{rgb()}, and colors specified with #{rgba()}. It does
+not accept HSL or named HTML colors.
+-->
+<xsl:template name="color.r">
+ <xsl:param name="color"/>
+ <xsl:choose>
+ <xsl:when test="starts-with($color, '#') and string-length($color) = 7">
+ <xsl:call-template name="color.hex2dec">
+ <xsl:with-param name="hex" select="substring($color, 2, 2)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="starts-with($color, '#') and string-length($color) = 4">
+ <xsl:call-template name="color.hex2dec">
+ <xsl:with-param name="hex" select="concat(substring($color, 2, 1), substring($color, 2, 1))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="starts-with($color, 'rgb(') or starts-with($color, 'rgba(')">
+ <xsl:value-of select="substring-before(substring-after($color, '('), ',')"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+
+<!--**==========================================================================
+color.g
+Extract the green component of a color.
+:Revision: version="3.22" date="2016-01-03" status="final"
+$color: A color specified in hexidecimal, #{rgb()}, or #{rgba()}.
+
+This template extracts the green portion of a color, returning a number between
+0 and 255. It accepts six-digit and three-digit hexidecimal color codes,
+colors specified with #{rgb()}, and colors specified with #{rgba()}. It does
+not accept HSL or named HTML colors.
+-->
+<xsl:template name="color.g">
+ <xsl:param name="color"/>
+ <xsl:choose>
+ <xsl:when test="starts-with($color, '#') and string-length($color) = 7">
+ <xsl:call-template name="color.hex2dec">
+ <xsl:with-param name="hex" select="substring($color, 4, 2)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="starts-with($color, '#') and string-length($color) = 4">
+ <xsl:call-template name="color.hex2dec">
+ <xsl:with-param name="hex" select="concat(substring($color, 3, 1), substring($color, 3, 1))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="starts-with($color, 'rgb(') or starts-with($color, 'rgba(')">
+ <xsl:value-of select="substring-before(substring-after($color, ','), ',')"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+
+<!--**==========================================================================
+color.b
+Extract the blue component of a color.
+:Revision: version="3.22" date="2016-01-03" status="final"
+$color: A color specified in hexidecimal, #{rgb()}, or #{rgba()}.
+
+This template extracts the blue portion of a color, returning a number between
+0 and 255. It accepts six-digit and three-digit hexidecimal color codes,
+colors specified with #{rgb()}, and colors specified with #{rgba()}. It does
+not accept HSL or named HTML colors.
+-->
+<xsl:template name="color.b">
+ <xsl:param name="color"/>
+ <xsl:choose>
+ <xsl:when test="starts-with($color, '#') and string-length($color) = 7">
+ <xsl:call-template name="color.hex2dec">
+ <xsl:with-param name="hex" select="substring($color, 6, 2)"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="starts-with($color, '#') and string-length($color) = 4">
+ <xsl:call-template name="color.hex2dec">
+ <xsl:with-param name="hex" select="concat(substring($color, 4, 1), substring($color, 4, 1))"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="starts-with($color, 'rgb(')">
+ <xsl:value-of select="substring-before(
+ substring-after(substring-after($color, ','), ','),
+ ')')"/>
+ </xsl:when>
+ <xsl:when test="starts-with($color, 'rgba(')">
+ <xsl:value-of select="substring-before(
+ substring-after(substring-after($color, ','), ','),
+ ',')"/>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+
+<!--**==========================================================================
+color.a
+Extract the alpha value of a color.
+:Revision: version="3.22" date="2016-01-03" status="final"
+$color: A color specified in hexidecimal, #{rgb()}, or #{rgba()}.
+
+This template extracts the alpha, or opacity level, of a color. It returns a
+number between 0.0 and 1.0. It accepts six-digit and three-digit hexidecimal
+color codes, colors specified with #{rgb()}, and colors specified with
+#{rgba()}. It does not accept HSL or named HTML colors. For colors specified
+with anything other than #{rgba()}, it always returns 1.0.
+-->
+<xsl:template name="color.a">
+ <xsl:param name="color"/>
+ <xsl:choose>
+ <xsl:when test="starts-with($color, 'rgba(')">
+ <xsl:value-of select="number(substring-before(substring-after(
+ substring-after(substring-after($color, ','), ','), ','), ')'))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>1.0</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<!--**==========================================================================
+color.rl
+Get the relative luminance of a color.
+:Revision: version="3.22" date="2016-01-03" status="final"
+$color: A color specified in hexidecimal, #{rgb()}, or #{rgba()}.
+
+This template calculates the relative luminance of a color, returning a number
+between 0.0 and 1.0. The relative luminance is used when calculating color
+contrast. The relative luminance algorithm is defined by the WCAG:
+
+http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef
+
+This template accepts six-digit and three-digit hexidecimal color codes, colors
+specified with #{rgb()}, and colors specified with #{rgba()}. It does not accept
+HSL or named HTML colors.
+-->
+<xsl:template name="color.rl">
+ <xsl:param name="color"/>
+ <xsl:variable name="r">
+ <xsl:variable name="rsrgb_">
+ <xsl:call-template name="color.r">
+ <xsl:with-param name="color" select="$color"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="rsrgb" select="$rsrgb_ div 255"/>
+ <xsl:choose>
+ <xsl:when test="$rsrgb &gt; 0.03928">
+ <xsl:value-of select="math:power(($rsrgb + 0.055) div 1.055, 2.4)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$rsrgb div 12.92"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="g">
+ <xsl:variable name="gsrgb_">
+ <xsl:call-template name="color.g">
+ <xsl:with-param name="color" select="$color"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="gsrgb" select="$gsrgb_ div 255"/>
+ <xsl:choose>
+ <xsl:when test="$gsrgb &gt; 0.03928">
+ <xsl:value-of select="math:power(($gsrgb + 0.055) div 1.055, 2.4)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$gsrgb div 12.92"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="b">
+ <xsl:variable name="bsrgb_">
+ <xsl:call-template name="color.b">
+ <xsl:with-param name="color" select="$color"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="bsrgb" select="$bsrgb_ div 255"/>
+ <xsl:choose>
+ <xsl:when test="$bsrgb &gt; 0.03928">
+ <xsl:value-of select="math:power(($bsrgb + 0.055) div 1.055, 2.4)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$bsrgb div 12.92"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:value-of select="(0.2126 * $r) + (0.0722 * $b) + (0.7152 * $g)"/>
+</xsl:template>
+
+
+<!--**==========================================================================
+color.contrast
+Get the contrast between two colors.
+:Revision: version="3.22" date="2016-01-03" status="final"
+$bg: A color specified in hexidecimal, #{rgb()}, or #{rgba()}.
+$fg: A color specified in hexidecimal, #{rgb()}, or #{rgba()}.
+
+This template calculates the contrast ratio between colors. The contrast ratio
+is a number between 1 and 21. The algorithm is defined by the WCAG:
+
+http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef
+
+This template calls *{color.rl} to get the relative luminance of ${bg} and ${fg}.
+It accepts six-digit and three-digit hexidecimal color codes, colors specified
+with #{rgb()}, and colors specified with #{rgba()}. It does not accept HSL or
+named HTML colors. Note that it does not take the alpha value into account when
+calculating the contrast ratio. Semi-transparent colors will have a lower
+actual contrast ratio than what is reported by this template.
+
+The WCAG recommends a contrast ratio of at least 4.5 for normal text, and a
+ratio of at least 3.0 for large-scale text.
+-->
+<xsl:template name="color.contrast">
+ <xsl:param name="bg"/>
+ <xsl:param name="fg"/>
+ <xsl:variable name="bg.rl">
+ <xsl:call-template name="color.rl">
+ <xsl:with-param name="color" select="$bg"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="fg.rl">
+ <xsl:call-template name="color.rl">
+ <xsl:with-param name="color" select="$fg"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$bg.rl > $fg.rl">
+ <xsl:value-of select="round(100 * (($bg.rl + 0.05) div ($fg.rl + 0.05))) div 100"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="round(100 * (($fg.rl + 0.05) div ($bg.rl + 0.05))) div 100"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<!--**==========================================================================
+color.blend
+Blend two colors together at a specified mix level.
+:Revision: version="3.22" date="2016-01-03" status="final"
+$bg: A color specified in hexidecimal, #{rgb()}, or #{rgba()}.
+$fg: A color specified in hexidecimal, #{rgb()}, or #{rgba()}.
+$mix: The mix level, between 0.0 and 1.0.
+
+This template calculates a color by selecting a midpoint between ${bg} and
+${fg}, where the ${mix} parameter specifies how far to move from ${bg} to
+${fg}. For opaque colors, setting ${mix} to 0.0 will result in ${bg}, and
+setting ${mix} to 1.0 will result in ${fg}.
+
+This template takes the alpha values of ${bg} and ${fg} into account, so
+that specifying 1.0 for ${mix} will result in a color that is the result
+of overlaying ${fg} on top of ${bg}. In effect, ${mix} acts as a multiplier
+on the alpha channels of the colors.
+
+This template calls *{color.r}, ${color.g}, ${color.b}, and ${color.a} to get
+the components of ${bg} and ${fg}. It accepts six-digit and three-digit
+hexidecimal color codes, colors specified with #{rgb()}, and colors specified
+with #{rgba()}. It does not accept HSL or named HTML colors.
+
+If the return color is fully opaque, this template returns the color using
+the #{rgb()} scheme. Otherwise, it uses the #{rgba()} scheme.
+-->
+<xsl:template name="color.blend">
+ <xsl:param name="bg" select="'#ffffff'"/>
+ <xsl:param name="fg" select="'#000000'"/>
+ <xsl:param name="mix" select="0.5"/>
+
+ <xsl:variable name="fgr">
+ <xsl:call-template name="color.r">
+ <xsl:with-param name="color" select="$fg"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="fgb">
+ <xsl:call-template name="color.b">
+ <xsl:with-param name="color" select="$fg"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="fgg">
+ <xsl:call-template name="color.g">
+ <xsl:with-param name="color" select="$fg"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="fga">
+ <xsl:call-template name="color.a">
+ <xsl:with-param name="color" select="$fg"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="bgr">
+ <xsl:call-template name="color.r">
+ <xsl:with-param name="color" select="$bg"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="bgb">
+ <xsl:call-template name="color.b">
+ <xsl:with-param name="color" select="$bg"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="bgg">
+ <xsl:call-template name="color.g">
+ <xsl:with-param name="color" select="$bg"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="bga">
+ <xsl:call-template name="color.a">
+ <xsl:with-param name="color" select="$bg"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name="a" select="($fga * $mix) + ($bga * (1 - $mix))"/>
+ <xsl:variable name="r" select="(($bgr * $bga * (1 - $mix)) +
+ ($fgr * $fga * $mix)) div $a"/>
+ <xsl:variable name="g" select="(($bgg * $bga * (1 - $mix)) +
+ ($fgg * $fga * $mix)) div $a"/>
+ <xsl:variable name="b" select="(($bgb * $bga * (1 - $mix)) +
+ ($fgb * $fga * $mix)) div $a"/>
+ <xsl:variable name="rgba" select="$a &lt; 1"/>
+ <xsl:choose>
+ <xsl:when test="$rgba">
+ <xsl:text>rgba(</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>rgb(</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="$r &lt; 0">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <xsl:when test="$r &gt; 255">
+ <xsl:text>255</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="round($r)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>,</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$g &lt; 0">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <xsl:when test="$g &gt; 255">
+ <xsl:text>255</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="round($g)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>,</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$b &lt; 0">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <xsl:when test="$b &gt; 255">
+ <xsl:text>255</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="round($b)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$rgba">
+ <xsl:text>,</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$a &lt; 0">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <xsl:when test="$a &gt; 1.0">
+ <xsl:text>1.0</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$a"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:text>)</xsl:text>
+</xsl:template>
+
+
+<!--#* _color.fgify -->
+<xsl:template name="_color.fgify">
+ <xsl:param name="color"/>
+ <xsl:param name="target" select="5"/>
+ <xsl:param name="recdepth" select="0"/>
+ <xsl:variable name="newcolor">
+ <xsl:call-template name="color.blend">
+ <xsl:with-param name="bg" select="$color"/>
+ <xsl:with-param name="fg" select="$color.fg"/>
+ <xsl:with-param name="mix" select="0.1"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="contrast">
+ <xsl:call-template name="color.contrast">
+ <xsl:with-param name="bg" select="$color.bg"/>
+ <xsl:with-param name="fg" select="$newcolor"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$recdepth > 10">
+ <xsl:message>
+ <xsl:text>Recursion depth exceeded calculating fg color</xsl:text>
+ </xsl:message>
+ <xsl:value-of select="$newcolor"/>
+ </xsl:when>
+ <xsl:when test="$contrast >= $target">
+ <xsl:value-of select="$newcolor"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="_color.fgify">
+ <xsl:with-param name="color" select="$newcolor"/>
+ <xsl:with-param name="target" select="$target"/>
+ <xsl:with-param name="recdepth" select="$recdepth + 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<!--#* _color.bgify -->
+<xsl:template name="_color.bgify">
+ <xsl:param name="color"/>
+ <xsl:param name="target" select="19"/>
+ <xsl:param name="recdepth" select="0"/>
+ <xsl:variable name="newcolor">
+ <xsl:call-template name="color.blend">
+ <xsl:with-param name="bg" select="$color"/>
+ <xsl:with-param name="fg" select="$color.bg"/>
+ <xsl:with-param name="mix" select="0.2"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="contrast">
+ <xsl:call-template name="color.contrast">
+ <xsl:with-param name="bg" select="$newcolor"/>
+ <xsl:with-param name="fg" select="$color.fg"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$recdepth > 20">
+ <xsl:message>
+ <xsl:text>Recursion depth exceeded calculating bg color</xsl:text>
+ </xsl:message>
+ <xsl:value-of select="$newcolor"/>
+ </xsl:when>
+ <xsl:when test="$contrast >= $target">
+ <xsl:value-of select="$newcolor"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="_color.bgify">
+ <xsl:with-param name="color" select="$newcolor"/>
+ <xsl:with-param name="target" select="$target"/>
+ <xsl:with-param name="recdepth" select="$recdepth + 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+
+<!--@@==========================================================================
+color.fg
+The primary text color.
+:Revision:version="3.22" date="2016-01-03" status="final"
+
+This parameters specifies the normal color of text. It should have a high color
+contrast against @{color.bg}. Other text colors can be automatically computed
+based on this color.
+-->
+<xsl:param name="color.fg" select="'#000000'"/>
+
+
+<!--@@==========================================================================
+color.bg
+The normal background color.
+:Revision:version="3.22" date="2016-01-03" status="final"
+
+This parameters specifies the background color. It should have a high color
+contrast against @{color.fg}. Other background colors can be automatically
+computed based on this color.
+-->
+<xsl:param name="color.bg" select="'#ffffff'"/>
+
+
+<!--@@==========================================================================
+color.red
+A red accent color.
+:Revision:version="3.22" date="2016-01-03" status="final"
+
+This parameter specifies a shade of red that is suitable for borders and
+other accents. It should have some contrast against background colors, but it
+does not need as high of a contrast as text colors.
+-->
+<xsl:param name="color.red" select="'#cc0000'"/>
+
+
+<!--@@==========================================================================
+color.fg.red
+A red text color.
+:Revision:version="3.22" date="2016-01-03" status="final"
+
+This parameter specifies a shade of red that is suitable for text. It should
+have a high color contrast against @{color.bg}. If not specified, it can be
+automatically computed based on @{color.red} and @{color.fg}.
-->
+<xsl:param name="color.fg.red">
+ <xsl:call-template name="_color.fgify">
+ <xsl:with-param name="color" select="$color.red"/>
+ </xsl:call-template>
+</xsl:param>
<!--@@==========================================================================
-color.background
-The background color.
-:Revision:version="1.0" date="2010-05-25" status="final"
+color.bg.red
+A red background color.
+:Revision:version="3.22" date="2016-01-03" status="final"
-This parameter specifies the default background color. Foreground colors
-should be legible on this color.
+This parameter specifies a shade of red that is suitable for backgrounds.
+It should have a high color contrast against @{color.fg}. If not specified,
+it can be automatically computed based on @{color.red} and @{color.bg}.
-->
-<xsl:param name="color.background" select="'#ffffff'"/>
+<xsl:param name="color.bg.red">
+ <xsl:call-template name="_color.bgify">
+ <xsl:with-param name="color" select="$color.red"/>
+ </xsl:call-template>
+</xsl:param>
<!--@@==========================================================================
-color.link
-The color of links.
-:Revision:version="1.0" date="2010-05-25" status="final"
+color.orange
+An orange accent color.
+:Revision:version="3.22" date="2016-01-03" status="final"
-This parameter specifies the color for unvisited links. It should be
-legible on all background colors.
+This parameter specifies a shade of orange that is suitable for borders and
+other accents. It should have some contrast against background colors, but it
+does not need as high of a contrast as text colors.
-->
-<xsl:param name="color.link" select="'#204a87'"/>
+<xsl:param name="color.orange" select="'#f57900'"/>
<!--@@==========================================================================
-color.link_visited
-The color of visited links.
-:Revision:version="1.0" date="2010-05-25" status="final"
+color.fg.orange
+An orange text color.
+:Revision:version="3.22" date="2016-01-03" status="final"
-This parameter specifies the color for visited links. It should be
-legible on all background colors.
+This parameter specifies a shade of orange that is suitable for text. It should
+have a high color contrast against @{color.bg}. If not specified, it can be
+automatically computed based on @{color.orange} and @{color.fg}.
-->
-<xsl:param name="color.link_visited" select="'#5c3566'"/>
+<xsl:param name="color.fg.orange">
+ <xsl:call-template name="_color.fgify">
+ <xsl:with-param name="color" select="$color.orange"/>
+ </xsl:call-template>
+</xsl:param>
<!--@@==========================================================================
-color.text
-The normal text color.
-:Revision:version="1.0" date="2010-05-25" status="final"
+color.bg.orange
+An orange background color.
+:Revision:version="3.22" date="2016-01-03" status="final"
-This parameter specifies the default color for normal text. It should be
-legible on all background colors.
+This parameter specifies a shade of orange that is suitable for backgrounds.
+It should have a high color contrast against @{color.fg}. If not specified,
+it can be automatically computed based on @{color.orange} and @{color.bg}.
-->
-<xsl:param name="color.text" select="'#000000'"/>
+<xsl:param name="color.bg.orange">
+ <xsl:call-template name="_color.bgify">
+ <xsl:with-param name="color" select="$color.orange"/>
+ </xsl:call-template>
+</xsl:param>
<!--@@==========================================================================
-color.text_light
-The light text color.
-:Revision:version="1.0" date="2010-05-25" status="final"
+color.yellow
+A yellow accent color.
+:Revision:version="3.22" date="2016-01-03" status="final"
-This parameter specifies the color for light text. The light text
-color is used to make bold headings and certain parenthetical text
-less intense. It should be legible on all background colors.
+This parameter specifies a shade of yellow that is suitable for borders and
+other accents. It should have some contrast against background colors, but it
+does not need as high of a contrast as text colors.
-->
-<xsl:param name="color.text_light" select="'#2e3436'"/>
+<xsl:param name="color.yellow" select="'#edd400'"/>
<!--@@==========================================================================
-color.text_error
-The error text color.
-:Revision:version="1.0" date="2010-05-25" status="final"
+color.fg.yellow
+A yellow text color.
+:Revision:version="3.22" date="2016-01-03" status="final"
-This parameter specifies the color for error text. The error text
-color is used to style error messages from command line sessions.
-It should be legible on all background colors.
+This parameter specifies a shade of yellow that is suitable for text. It should
+have a high color contrast against @{color.bg}. If not specified, it can be
+automatically computed based on @{color.yellow} and @{color.fg}.
-->
-<xsl:param name="color.text_error" select="'#a40000'"/>
+<xsl:param name="color.fg.yellow">
+ <xsl:call-template name="_color.fgify">
+ <xsl:with-param name="color" select="$color.yellow"/>
+ <xsl:with-param name="target" select="5.5"/>
+ </xsl:call-template>
+</xsl:param>
<!--@@==========================================================================
-color.blue_background
-The blue background color.
-:Revision:version="1.0" date="2010-05-25" status="final"
+color.bg.yellow
+A yellow background color.
+:Revision:version="3.22" date="2016-01-03" status="final"
-This parameter specifies the blue background color. The blue
-background color may be used by certain types of block elements.
-Foreground colors should be legible on this color.
+This parameter specifies a shade of yellow that is suitable for backgrounds.
+It should have a high color contrast against @{color.fg}. If not specified,
+it can be automatically computed based on @{color.yellow} and @{color.bg}.
-->
-<xsl:param name="color.blue_background" select="'#e6f2ff'"/>
+<xsl:param name="color.bg.yellow">
+ <xsl:call-template name="_color.bgify">
+ <xsl:with-param name="color" select="$color.yellow"/>
+ <xsl:with-param name="target" select="20"/>
+ </xsl:call-template>
+</xsl:param>
<!--@@==========================================================================
-color.blue_border
-The blue border color.
-:Revision:version="1.0" date="2010-05-25" status="final"
+color.green
+A green accent color.
+:Revision:version="3.22" date="2016-01-03" status="final"
-This parameter specifies the blue border color. The blue
-border color may be used by certain types of block elements.
+This parameter specifies a shade of green that is suitable for borders and
+other accents. It should have some contrast against background colors, but it
+does not need as high of a contrast as text colors.
-->
-<xsl:param name="color.blue_border" select="'#729fcf'"/>
+<xsl:param name="color.green" select="'#73d216'"/>
<!--@@==========================================================================
-color.gray_background
-The gray background color.
-:Revision:version="1.0" date="2010-05-25" status="final"
+color.fg.green
+A green text color.
+:Revision:version="3.22" date="2016-01-03" status="final"
-This parameter specifies the gray background color. The gray
-background color may be used by certain types of block elements.
-Foreground colors should be legible on this color.
+This parameter specifies a shade of green that is suitable for text. It should
+have a high color contrast against @{color.bg}. If not specified, it can be
+automatically computed based on @{color.green} and @{color.fg}.
-->
-<xsl:param name="color.gray_background" select="'#f3f3f0'"/>
+<xsl:param name="color.fg.green">
+ <xsl:call-template name="_color.fgify">
+ <xsl:with-param name="color" select="$color.green"/>
+ </xsl:call-template>
+</xsl:param>
<!--@@==========================================================================
-color.dark_background
-The dark gray background color.
-:Revision:version="1.0" date="2010-05-25" status="final"
+color.bg.green
+A green background color.
+:Revision:version="3.22" date="2016-01-03" status="final"
-This parameter specifies the dark gray background color. The dark
-gray background color may be used by certain types of block elements.
-Foreground colors should be legible on this color.
+This parameter specifies a shade of green that is suitable for backgrounds.
+It should have a high color contrast against @{color.fg}. If not specified,
+it can be automatically computed based on @{color.green} and @{color.bg}.
-->
-<xsl:param name="color.dark_background" select="'#e5e5e3'"/>
+<xsl:param name="color.bg.green">
+ <xsl:call-template name="_color.bgify">
+ <xsl:with-param name="color" select="$color.green"/>
+ </xsl:call-template>
+</xsl:param>
<!--@@==========================================================================
-color.gray_border
-The gray border color.
-:Revision:version="1.0" date="2010-05-25" status="final"
+color.blue
+A blue accent color.
+:Revision:version="3.22" date="2016-01-03" status="final"
-This parameter specifies the gray border color. The gray
-border color may be used by certain types of block elements.
+This parameter specifies a shade of blue that is suitable for borders and
+other accents. It should have some contrast against background colors, but it
+does not need as high of a contrast as text colors.
-->
-<xsl:param name="color.gray_border" select="'#babdb6'"/>
+<xsl:param name="color.blue" select="'#3465a4'"/>
+
+
+<!--@@==========================================================================
+color.fg.blue
+A blue text color.
+:Revision:version="3.22" date="2016-01-03" status="final"
+This parameter specifies a shade of blue that is suitable for text. It should
+have a high color contrast against @{color.bg}. If not specified, it can be
+automatically computed based on @{color.blue} and @{color.fg}.
+-->
+<xsl:param name="color.fg.blue">
+ <xsl:call-template name="_color.fgify">
+ <xsl:with-param name="color" select="$color.blue"/>
+ </xsl:call-template>
+</xsl:param>
<!--@@==========================================================================
-color.red_background
-The red background color.
-:Revision:version="1.0" date="2010-05-25" status="final"
+color.bg.blue
+A blue background color.
+:Revision:version="3.22" date="2016-01-03" status="final"
-This parameter specifies the red background color. The red
-background color may be used by certain types of block elements.
-Foreground colors should be legible on this color.
+This parameter specifies a shade of blue that is suitable for backgrounds.
+It should have a high color contrast against @{color.fg}. If not specified,
+it can be automatically computed based on @{color.blue} and @{color.bg}.
-->
-<xsl:param name="color.red_background" select="'#ffdede'"/>
+<xsl:param name="color.bg.blue">
+ <xsl:call-template name="_color.bgify">
+ <xsl:with-param name="color" select="$color.blue"/>
+ </xsl:call-template>
+</xsl:param>
<!--@@==========================================================================
-color.red_border
-The red border color.
-:Revision:version="1.0" date="2010-05-25" status="final"
+color.purple
+A purple accent color.
+:Revision:version="3.22" date="2016-01-03" status="final"
-This parameter specifies the red border color. The red
-border color may be used by certain types of block elements.
+This parameter specifies a shade of purple that is suitable for borders and
+other accents. It should have some contrast against background colors, but it
+does not need as high of a contrast as text colors.
-->
-<xsl:param name="color.red_border" select="'#ef2929'"/>
+<xsl:param name="color.purple" select="'#75507b'"/>
<!--@@==========================================================================
-color.yellow_background
-The yellow background color.
-:Revision:version="1.0" date="2010-05-25" status="final"
+color.fg.purple
+A purple text color.
+:Revision:version="3.22" date="2016-01-03" status="final"
-This parameter specifies the yellow background color. The yellow
-background color may be used by certain types of block elements.
-Foreground colors should be legible on this color.
+This parameter specifies a shade of purple that is suitable for text. It should
+have a high color contrast against @{color.bg}. If not specified, it can be
+automatically computed based on @{color.purple} and @{color.fg}.
-->
-<xsl:param name="color.yellow_background" select="'#fffacc'"/>
+<xsl:param name="color.fg.purple">
+ <xsl:call-template name="_color.fgify">
+ <xsl:with-param name="color" select="$color.purple"/>
+ </xsl:call-template>
+</xsl:param>
<!--@@==========================================================================
-color.yellow_border
-The yellow border color.
-:Revision:version="1.0" date="2010-05-25" status="final"
+color.bg.purple
+A purple background color.
+:Revision:version="3.22" date="2016-01-03" status="final"
-This parameter specifies the yellow border color. The yellow
-border color may be used by certain types of block elements.
+This parameter specifies a shade of purple that is suitable for backgrounds.
+It should have a high color contrast against @{color.fg}. If not specified,
+it can be automatically computed based on @{color.purple} and @{color.bg}.
-->
-<xsl:param name="color.yellow_border" select="'#edd400'"/>
+<xsl:param name="color.bg.purple">
+ <xsl:call-template name="_color.bgify">
+ <xsl:with-param name="color" select="$color.purple"/>
+ </xsl:call-template>
+</xsl:param>
+
+
+<!--@@==========================================================================
+color.gray
+A gray accent color.
+:Revision:version="3.22" date="2016-01-03" status="final"
+
+This parameter specifies a shade of gray that is suitable for borders and
+other accents. It should have some contrast against background colors, but it
+does not need as high of a contrast as text colors.
+-->
+<xsl:param name="color.gray" select="'#babdb6'"/>
+
+
+<!--@@==========================================================================
+color.fg.gray
+A gray text color.
+:Revision:version="3.22" date="2016-01-03" status="final"
+
+This parameter specifies a shade of gray that is suitable for text. It should
+have a high color contrast against @{color.bg}. If not specified, it can be
+automatically computed based on @{color.gray} and @{color.fg}.
+-->
+<xsl:param name="color.fg.gray">
+ <xsl:call-template name="_color.fgify">
+ <xsl:with-param name="color" select="$color.gray"/>
+ </xsl:call-template>
+</xsl:param>
+
+
+<!--@@==========================================================================
+color.bg.gray
+A gray background color.
+:Revision:version="3.22" date="2016-01-03" status="final"
+
+This parameter specifies a shade of gray that is suitable for backgrounds.
+It should have a high color contrast against @{color.fg}. If not specified,
+it can be automatically computed based on @{color.gray} and @{color.bg}.
+-->
+<xsl:param name="color.bg.gray">
+ <xsl:call-template name="_color.bgify">
+ <xsl:with-param name="color" select="$color.gray"/>
+ </xsl:call-template>
+</xsl:param>
+
+
+<!--@@==========================================================================
+color.fg.dark
+A dark gray text color.
+:Revision:version="3.22" date="2016-01-03" status="final"
+
+This parameter specifies a dark shade of gray that is suitable for text. It
+should have a very high color contrast against @{color.bg}. It is typically
+used to slightly reduce the visual weight of headers and bold text. If not
+specified, it can be automatically computed based on @{color.gray} and
+@{color.fg}.
+-->
+<xsl:param name="color.fg.dark">
+ <xsl:call-template name="_color.fgify">
+ <xsl:with-param name="color" select="$color.gray"/>
+ <xsl:with-param name="target" select="8"/>
+ </xsl:call-template>
+</xsl:param>
+
+
+<!--@@==========================================================================
+color.bg.dark
+A dark gray background color.
+:Revision:version="3.22" date="2016-01-03" status="final"
+
+This parameter specifies a shade of gray that is suitable for backgrounds,
+and is darker than @{color.bg.gray}. It should have a high color contrast
+against @{color.fg}. It is typically used at the intersection of shaded
+rows and columns in a table, or as a very light gray accent color. If not
+specified, it can be automatically computed based on @{color.gray} and
+@{color.bg}.
+-->
+<xsl:param name="color.bg.dark">
+ <xsl:call-template name="_color.bgify">
+ <xsl:with-param name="color" select="$color.gray"/>
+ <xsl:with-param name="target" select="17"/>
+ </xsl:call-template>
+</xsl:param>
+
+
+<!--
+Old color parameters below. Kept for compatibility with existing
+customizations that reference these colors.
+-->
+
+<!--#@ color.background -->
+<xsl:param name="color.background" select="$color.bg"/>
+
+<!--#@ color.link -->
+<xsl:param name="color.link" select="$color.fg.blue"/>
+
+<!--#@ color.link_visited -->
+<xsl:param name="color.link_visited" select="$color.fg.purple"/>
+
+<!--#@ color.text -->
+<xsl:param name="color.text" select="$color.fg"/>
+
+<!--#@ color.text_light -->
+<xsl:param name="color.text_light" select="$color.fg.dark"/>
+
+<!--#@ color.text_error -->
+<xsl:param name="color.text_error" select="$color.fg.red"/>
+
+<!--#@ color.blue_background -->
+<xsl:param name="color.blue_background" select="$color.bg.blue"/>
+
+<!--#@ color.blue_border -->
+<xsl:param name="color.blue_border" select="$color.blue"/>
+
+<!--#@ color.gray_background -->
+<xsl:param name="color.gray_background" select="$color.bg.gray"/>
+
+<!--#@ color.dark_background -->
+<xsl:param name="color.dark_background" select="$color.bg.dark"/>
+
+<!--#@ color.gray_border -->
+<xsl:param name="color.gray_border" select="$color.gray"/>
+
+<!--#@ color.red_background -->
+<xsl:param name="color.red_background" select="$color.bg.red"/>
+
+<!--#@ color.red_border -->
+<xsl:param name="color.red_border" select="$color.red"/>
+
+<!--#@ color.yellow_background -->
+<xsl:param name="color.yellow_background" select="$color.bg.yellow"/>
+
+<!--#@ color.yellow_border -->
+<xsl:param name="color.yellow_border" select="$color.yellow"/>
</xsl:stylesheet>
diff --git a/xslt/common/domains/yelp-xsl.xml.in b/xslt/common/domains/yelp-xsl.xml.in
index a847f64c..e7315563 100644
--- a/xslt/common/domains/yelp-xsl.xml.in
+++ b/xslt/common/domains/yelp-xsl.xml.in
@@ -132,6 +132,11 @@ reviewed, and it awaiting a final approval.
<msgstr>Candidate</msgstr>
</msg>
+<msg id="Caution">
+<its:locNote>Accessible title for a caution note.</its:locNote>
+<msgstr>Caution</msgstr>
+</msg>
+
<msg id="Close">
<its:locNote>Accessible title for an close button.</its:locNote>
<msgstr>Close</msgstr>
@@ -147,6 +152,11 @@ reviewed, and it awaiting a final approval.
<msgstr>Creative Commons</msgstr>
</msg>
+<msg id="Danger">
+<its:locNote>Accessible title for a danger note.</its:locNote>
+<msgstr>Danger</msgstr>
+</msg>
+
<msg id="Dedication">
<its:locNote>Default title for a dedication section.</its:locNote>
<msgstr>Dedication</msgstr>
@@ -244,6 +254,11 @@ but needs to be updated to reflect software updates.
<msgstr>Outdated</msgstr>
</msg>
+<msg id="Package">
+<its:locNote>Accessible title for a package note.</its:locNote>
+<msgstr>Package</msgstr>
+</msg>
+
<msg id="Pause">
<its:locNote>Tooltip on play/pause buttons for audio and video objects.</its:locNote>
<msgstr>Pause</msgstr>
diff --git a/xslt/common/html.xsl b/xslt/common/html.xsl
index ed84bc14..9edbe278 100644
--- a/xslt/common/html.xsl
+++ b/xslt/common/html.xsl
@@ -212,6 +212,19 @@ time by JavaScript.
<xsl:param name="html.syntax.highlight" select="true()"/>
+<!--@@==========================================================================
+html.output.prefix
+An optional path prefix for files output with *{html.output}.
+:Revision:version="3.next" date="2016-10-03" status="review"
+
+This parameter allows you to specify an prefix to place before the output path
+used by *{html.output} when creating files. You can use this to override the
+output directory. Make sure you include a trailing slash, unless you want to
+prefix the base file name itself.
+-->
+<xsl:param name="html.output.prefix" select="''"/>
+
+
<!--**==========================================================================
html.output
Create an HTML output file.
@@ -229,6 +242,10 @@ as follows: If an #{xml:id} attribute is present, it is used; otherwise, if
an #{id} attribute is present, it is uses; otherwise, if ${node} is the root
element, @{html.basename} is used; otherwise, #{generate-id()} is called.
+This template prepends @{html.output.prefix} to the value of ${href} when
+it calls #{exsl:document}, regardless of whether ${href} was passed in or
+generated automatically.
+
After calling #{exsl:document}, this template calls the %{html.output.after.mode}
mode on ${node}. Importing stylesheets that create multiple output files can
use this to process output files without blocking earlier output.
@@ -253,14 +270,14 @@ use this to process output files without blocking earlier output.
</xsl:param>
<xsl:choose>
<xsl:when test="$html.xhtml">
- <exsl:document href="{$href}">
+ <exsl:document href="{$html.output.prefix}{$href}">
<xsl:call-template name="html.page">
<xsl:with-param name="node" select="$node"/>
</xsl:call-template>
</exsl:document>
</xsl:when>
<xsl:otherwise>
- <exsl:document href="{$href}" method="html"
+ <exsl:document href="{$html.output.prefix}{$href}" method="html"
doctype-system="about:legacy-compat">
<xsl:call-template name="html.page">
<xsl:with-param name="node" select="$node"/>
@@ -288,14 +305,32 @@ parent elements.
<!--**==========================================================================
html.page
Create an HTML document.
-:Revision:version="1.0" date="2010-05-26" status="final"
+:Revision:version="3.next" date="2016-09-12" status="review"
$node: The node to create HTML for.
This template creates the actual HTML output for ${node}. It outputs top-level
elements and container divs, and calls various templates and modes to output
the inner content. Importing stylesheets should implement at least
%{html.title.mode} and %{html.body.mode} for any elements that could be passed
-as ${node} to this template.
+as ${node} to this template. Importing stylesheets should also implement
+%{html.header.mode} to output link trails and %{html.footer.mode} to output
+credits and other page information.
+
+This template outputs the HTML #{body} element, which takes it attributes
+from two sources. First, it calls *{html.lang.attrs}, which automatically
+outputs correct #{lang}, #{xml:lang}, and #{dir} attributes. It then calls
+%{html.body.attr.mode} on ${node} for additional attributes.
+
+This template also calls a number of stub templates that can be overridden by
+extension stylesheets. Override the *{html.head.custom} element to put custom
+content in the HTML #{head} element. Override the *{html.top.custom} and
+*{html.bottom.custom} templates to add site-specific content at the top and
+bottom of the page. Override the *{html.header.custom} and *{html.footer.custom}
+templates to provide additional content directoy above and below the main
+content. Override *{html.sidebar.custom} to create sidebars.
+
+This template also calls *{html.css} and *{html.js} to output CSS and JavaScript
+elements. See those templates for further extension points.
-->
<xsl:template name="html.page">
<xsl:param name="node" select="."/>
@@ -324,23 +359,32 @@ as ${node} to this template.
<xsl:call-template name="html.top.custom">
<xsl:with-param name="node" select="$node"/>
</xsl:call-template>
- <div class="page" role="main">
- <div class="header">
- <xsl:call-template name="html.header.custom">
- <xsl:with-param name="node" select="$node"/>
- </xsl:call-template>
- <xsl:apply-templates mode="html.header.mode" select="$node"/>
- </div>
- <div class="body">
- <xsl:apply-templates mode="html.body.mode" select="$node"/>
- </div>
- <div class="footer">
- <xsl:apply-templates mode="html.footer.mode" select="$node"/>
- <xsl:call-template name="html.footer.custom">
- <xsl:with-param name="node" select="$node"/>
- </xsl:call-template>
+ <main>
+ <xsl:call-template name="html.sidebar.custom">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ <div class="page">
+ <header>
+ <div class="inner pagewide">
+ <xsl:call-template name="html.header.custom">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ <xsl:apply-templates mode="html.header.mode" select="$node"/>
+ </div>
+ </header>
+ <article>
+ <xsl:apply-templates mode="html.body.mode" select="$node"/>
+ </article>
+ <footer>
+ <div class="inner pagewide">
+ <xsl:apply-templates mode="html.footer.mode" select="$node"/>
+ <xsl:call-template name="html.footer.custom">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </div>
+ </footer>
</div>
- </div>
+ </main>
<xsl:call-template name="html.bottom.custom">
<xsl:with-param name="node" select="$node"/>
</xsl:call-template>
@@ -378,11 +422,11 @@ implement this node to add attributes for styling, data, or other purposes.
html.top.custom
Stub to output HTML at the top of the page.
:Stub: true
-:Revision: version="1.0" date="2011-11-01" status="final"
+:Revision: version="3.next" date="2016-09-12" status="review"
$node: The node a page is being created for.
This template is a stub, called by *{html.page}. It is called before the
-#{div.page} wrapper div. Override this template to provide site-specific HTML
+#{main} element. Override this template to provide site-specific HTML
at the top of the page.
-->
<xsl:template name="html.top.custom">
@@ -394,11 +438,11 @@ at the top of the page.
html.bottom.custom
Stub to output HTML at the bottom of the page.
:Stub: true
-:Revision: version="1.0" date="2011-11-01" status="final"
+:Revision: version="3.next" date="2016-09-12" status="review"
$node: The node a page is being created for.
This template is a stub, called by *{html.page}. It is called after the
-#{div.page} wrapper div. Override this template to provide site-specific HTML
+#{main} element. Override this template to provide site-specific HTML
at the bottom of the page.
-->
<xsl:template name="html.bottom.custom">
@@ -407,15 +451,35 @@ at the bottom of the page.
<!--**==========================================================================
+html.sidebar.custom
+Stub to output custom sidebar content.
+:Stub: true
+:Revision: version="3.next" date="2016-09-12" status="review"
+$node: The node a page is being created for.
+
+This template is a stub, called by *{html.page}. It is called inside the #{main}
+element, before the #{div.page} element. The #{main} element uses a horizontal
+flexbox by default. You can override this template to provide sidebar content.
+Note that there is only one extension point for sidebar content, and it is
+always placed before the main content in document order. To create a sidebar
+on the right, output the element here, then adjust the #{order} CSS property
+for that element to display it after the #{main} element.
+-->
+<xsl:template name="html.sidebar.custom">
+ <xsl:param name="node" select="."/>
+</xsl:template>
+
+
+<!--**==========================================================================
html.header.custom
Stub to output custom header content.
:Stub: true
-:Revision: version="1.0" date="2011-10-27" status="final"
+:Revision: version="3.next" date="2016-09-12" status="review"
$node: The node a page is being created for.
-This template is a stub, called by *{html.page}. It is called inside the header
-div, before %{html.header.mode} is applied to ${node}. You can override this
-template to provide additional content at the top of the page.
+This template is a stub, called by *{html.page}. It is called inside the
+#{header} element, before %{html.header.mode} is applied to ${node}. You can
+override this template to provide additional content above the main content.
-->
<xsl:template name="html.header.custom">
<xsl:param name="node" select="."/>
@@ -425,12 +489,12 @@ template to provide additional content at the top of the page.
<!--%%==========================================================================
html.header.mode
Output the header content for an element.
-:Revision:version="1.0" date="2010-05-26" status="final"
+:Revision:version="3.next" date="2016-09-12" status="review"
-This mode is called by *{html.page} to output the contents of the header div
-above the main content. Importing stylesheets may implement this mode for any
-element that will be passed to *{html.page}. If they do not, the header div
-will be empty.
+This mode is called by *{html.page} to output the contents of the #{header}
+element above the main content. Importing stylesheets may implement this mode
+for any element that will be passed to *{html.page}. If they do not, the
+#{header} element will be empty by default.
-->
<xsl:template mode="html.header.mode" match="*"/>
@@ -439,12 +503,12 @@ will be empty.
html.footer.custom
Stub to output custom footer content.
:Stub: true
-:Revision: version="1.0" date="2011-10-27" status="final"
+:Revision: version="3.next" date="2016-09-12" status="review"
$node: The node a page is being created for.
-This template is a stub, called by *{html.page}. It is called inside the footer
-div, after %{html.footer.mode} is applied to ${node}. You can override this
-template to provide additional content at the bottom of the page.
+This template is a stub, called by *{html.page}. It is called inside the
+#{footer} element, after %{html.footer.mode} is applied to ${node}. You can
+override this template to provide additional content below the main content.
-->
<xsl:template name="html.footer.custom">
<xsl:param name="node" select="."/>
@@ -454,12 +518,12 @@ template to provide additional content at the bottom of the page.
<!--%%==========================================================================
html.footer.mode
Output the footer content for an element.
-:Revision:version="1.0" date="2010-05-26" status="final"
+:Revision:version="3.next" date="2016-09-12" status="review"
-This mode is called by *{html.page} to output the contents of the footer div
-below the main content. Importing stylesheets may implement this mode for any
-element that will be passed to *{html.page}. If they do not, the footer div
-will be empty.
+This mode is called by *{html.page} to output the contents of the #{footer}
+element below the main content. Importing stylesheets may implement this mode
+for any element that will be passed to *{html.page}. If they do not, the
+#{footer} element will be empty by default.
-->
<xsl:template mode="html.footer.mode" match="*"/>
@@ -495,7 +559,7 @@ to provide additional elements in the HTML #{head} element of output files.
html.linktrails.empty
Stub to output something when no link trails are present.
:Stub: true
-:Revision:version="3.20" date="2015-10-02" status="final"
+:Revision:version="3.next" date="2015-10-02" status="final"
$node: The source element a page is bring created for.
This template is a stub. It is called by templates that output link trails when
@@ -512,7 +576,7 @@ trails would otherwise be present.
html.linktrails.prefix
Stub to output extra content before a link trail.
:Stub: true
-:Revision:version="3.20" date="2015-10-02" status="final"
+:Revision:version="3.next" date="2015-10-02" status="final"
$node: A source-specific element providing information about the link trail.
This template is a stub. It is called by templates that output link trails
@@ -571,6 +635,135 @@ values that do not conflict with those used in these stylesheets.
<!--**==========================================================================
+html.content.pre
+Output content before the content of a page or section.
+:Revision: version="3.22" date="2016-06-21" status="final"
+$node: The node a page or section is being created for.
+$page: Whether the content is for a page.
+
+This template is called by importing stylesheets before any content of a page
+or section, but after the title. It calls *{html.content.pre.custom}, then
+applies %{html.content.pre.mode} to ${node}. If the ${page} parameter is true,
+then this template is being called on an output page. Otherwise, it is being
+called on a section within a page.
+-->
+<xsl:template name="html.content.pre">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="page" select="true()"/>
+ <xsl:call-template name="html.content.pre.custom">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="page" select="$page"/>
+ </xsl:call-template>
+ <xsl:apply-templates mode="html.content.pre.mode" select="$node">
+ <xsl:with-param name="page" select="$page"/>
+ </xsl:apply-templates>
+</xsl:template>
+
+
+<!--**==========================================================================
+html.content.pre.custom
+Stub to output content before the content of a page or section.
+:Stub: true
+:Revision: version="3.22" date="2016-06-21" status="final"
+$node: The node a page or section is being created for.
+$page: Whether the content is for a page.
+
+This template is a stub, called by *{html.content.pre.custom}. It is called
+before %{html.content.pre.mode} is applied. Override this template to provide
+site-specific HTML before the content of a page or section. If the ${page}
+parameter is true, then this template is being called on an output page.
+Otherwise, it is being called on a section within a page.
+-->
+<xsl:template name="html.content.pre.custom">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="page" select="true()"/>
+</xsl:template>
+
+
+<!--%%==========================================================================
+html.content.pre.mode
+Output content before the content of a page or section.
+:Revision: version="3.22" date="2016-06-21" status="final"
+$page: Whether the content is for a page.
+
+This mode is applied by *{html.content.pre} after calling
+*{html.content.pre.custom}. Importing stylesheets can use this to add
+additional content for specific types of input elements before the content
+of a page or section. If the ${page} parameter is true, then this template
+is being called on an output page. Otherwise, it is being called on a section
+within a page.
+-->
+<xsl:template mode="html.content.pre.mode" match="*">
+ <xsl:param name="page" select="true()"/>
+</xsl:template>
+
+
+<!--**==========================================================================
+html.content.post
+Output content after the content of a page or section, before subsections.
+:Revision: version="3.22" date="2016-06-21" status="final"
+$node: The node a page or section is being created for.
+$page: Whether the content is for a page.
+
+This template is called by importing stylesheets after any content of a page
+or section, but before any subsections. It applies %{html.content.post.mode}
+to ${node}, then calls *{html.content.post.custom}. If the ${page} parameter
+is true, then this template is being called on an output page. Otherwise, it
+is being called on a section within a page.
+-->
+<xsl:template name="html.content.post">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="page" select="true()"/>
+ <xsl:apply-templates mode="html.content.post.mode" select="$node">
+ <xsl:with-param name="page" select="$page"/>
+ </xsl:apply-templates>
+ <xsl:call-template name="html.content.post.custom">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="page" select="$page"/>
+ </xsl:call-template>
+</xsl:template>
+
+
+<!--**==========================================================================
+html.content.post.custom
+Stub to output content after the content of a page or section, before subsections.
+:Stub: true
+:Revision: version="3.22" date="2016-06-21" status="final"
+$node: The node a page or section is being created for.
+$page: Whether the content is for a page.
+
+This template is a stub, called by *{html.content.post.custom}. It is called
+after %{html.content.pre.mode} is applied. Override this template to provide
+site-specific HTML after the content of a page or section, but before any
+subsections. If the ${page} parameter is true, then this template is being
+called on an output page. Otherwise, it is being called on a section within
+a page.
+-->
+<xsl:template name="html.content.post.custom">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="page" select="true()"/>
+</xsl:template>
+
+
+<!--%%==========================================================================
+html.content.post.mode
+Output content after the content of a page or section, before subsections.
+:Revision: version="3.22" date="2016-06-21" status="final"
+$page: Whether the content is for a page.
+
+This mode is applied by *{html.content.post} before calling
+*{html.content.post.custom}. Importing stylesheets can use this to add
+additional content for specific types of input elements after the content
+of a page or section, but before any subsections. If the ${page} parameter
+is true, then this template is being called on an output page. Otherwise,
+it is being called on a section within a page.
+-->
+<xsl:template mode="html.content.post.mode" match="*">
+ <xsl:param name="page" select="true()"/>
+</xsl:template>
+
+
+<!--**==========================================================================
html.css
Output all CSS for an HTML output page.
:Revision:version="1.0" date="2010-12-23" status="final"
@@ -743,83 +936,109 @@ body {
font-family: sans-serif;
margin: 0; padding: 0;
background-color: </xsl:text>
- <xsl:value-of select="$color.background"/><xsl:text>;
+ <xsl:value-of select="$color.bg"/><xsl:text>;
color: </xsl:text>
- <xsl:value-of select="$color.text"/><xsl:text>;
+ <xsl:value-of select="$color.fg"/><xsl:text>;
direction: </xsl:text><xsl:value-of select="$direction"/><xsl:text>;
}
-div.page {
- margin: 1em auto 1em auto;
- max-width: 60em;
- border: solid 1px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
+article, aside, nav, header, footer, section {
+ display: block;
+ margin: 0;
+ padding: 0;
+}
+main {
+ display: flex;
+ flex-flow: row;
}
-div.body {
+main > * {
+ flex: 0 0 220px;
+}
+main > div.page {
+ flex-grow: 1;
margin: 0;
- padding-left: 1em;
- padding-right: 1em;
- padding-bottom: 1em;
+ display: flex;
+ flex-flow: column;
+ align-items: stretch;
+ justify-content: flex-start;
+ min-height: 100vh;
+}
+div.page > article { flex: 1 0 100%; }
+div.page > header, div.page > footer { flex: 0 1 auto; }
+.pagewide {
+ max-width: 940px;
+ margin-left: auto;
+ margin-right: auto;
+ padding-left: 10px;
+ padding-right: 10px;
+}
+article {
+ padding-top: 10px;
+ padding-bottom: 10px;
min-height: 20em;
- background-color: </xsl:text><xsl:value-of select="$color.background"/><xsl:text>;
+ background-color: </xsl:text><xsl:value-of select="$color.bg"/><xsl:text>;
}
-div.header { margin: 0; }
-div.footer { margin: 0; }
-div.sect {
+section {
margin-top: 2.4em;
clear: both;
}
-div.sect div.sect {
+section section {
margin-top: 1.44em;
}
+.yelp-hash-highlight {
+ animation-name: yelp-hash-highlight;
+ animation-duration: 0.5s;
+ animation-fill-mode: forwards;
+}
+@keyframes yelp-hash-highlight {
+ from { transform: translateY(0px) }
+ 25% { transform: translateY(20px); }
+ 50% { transform: translateY(0); }
+ 75% { transform: translateY(10px); }
+ to { transform: translateY(0px); }
+}
div.trails {
- margin: 0;
- padding: 0.5em 1em 0.5em 1em;
- background-color: </xsl:text><xsl:value-of select="$color.gray_background"/><xsl:text>;
+ margin: 0 -10px 0 -10px;
+ padding: 0.2em 10px;
+ background-color: </xsl:text><xsl:value-of select="$color.bg.gray"/><xsl:text>;
}
div.trail {
- margin: 0.2em 0 0 0;
+ margin: 0.2em 0;
padding: 0 1em 0 1em;
text-indent: -1em;
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
}
a.trail { white-space: nowrap; }
div.hgroup {
- margin: 1em 0 0.5em 0;
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ margin-bottom: 0.5em;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
}
-div.sect div.hgroup {
+section > div.inner > div.hgroup {
margin-top: 0;
border-bottom: solid 1px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
+ <xsl:value-of select="$color.gray"/><xsl:text>;
}
-div.sect-links div.hgroup {
+section.links > div.inner > div.hgroup {
border-bottom: solid 2px </xsl:text>
- <xsl:value-of select="$color.blue_border"/><xsl:text>;
-}
-div.sect div.sect-links {
- margin-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 0;
+ <xsl:value-of select="$color.fg.blue"/><xsl:text>;
}
-div.sect div.sect-links div.hgroup {
+section section.links > div.inner > div.hgroup {
border: none;
}
h1, h2, h3, h4, h5, h6, h7 {
margin: 0; padding: 0;
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
font-weight: bold;
}
h1 { font-size: 2em; }
h2 { font-size: 1.44em; }
h3.title, h4.title, h5.title, h6.title, h7.title { font-size: 1.2em; }
h3, h4, h5, h6, h7 { font-size: 1em; }
-
-p { line-height: 1.72em; }
-div, pre, p { margin: 1em 0 0 0; padding: 0; }
-div.contents > *:first-child,
-th > *:first-child, td > *:first-child,
-dt > *:first-child, dd > *:first-child,
-li > *:first-child { margin-top: 0; }
-div.inner, div.region, div.contents, pre.contents { margin-top: 0; }
-pre.contents div { margin-top: 0 !important; }
+p { line-height: 1.44em; }
+div, pre, p { margin: 0; padding: 0; }
+div.contents > * + *,
+th > * + *, td > * + *,
+dt > * + *, dd > * + *,
+li > * + * { margin-top: 1em; }
p img { vertical-align: middle; }
p.lead { font-size: 1.2em; }
div.clear {
@@ -829,35 +1048,46 @@ div.clear {
}
.center { text-align: center; }
-div.about {
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+footer.about {
+ color: </xsl:text><xsl:value-of select="$color.fg.gray"/><xsl:text>;
+ margin: 0;
+ background-color: </xsl:text><xsl:value-of select="$color.bg"/><xsl:text>;
}
-div.about > div.inner > div.hgroup {
+footer.about > div.inner > div.hgroup {
margin: 0; padding: 0;
text-align: center;
border: none;
}
-div.about > div.inner > div.hgroup > h2 {
+footer.about > div.inner > div.hgroup > h2 {
margin: 0; padding: 0.2em;
font-size: inherit;
}
-div.about.ui-expander > div.inner > div.hgroup span.title:before {
+footer.about.ui-expander > div.inner > div.hgroup span.title:before {
content: "";
}
div.copyrights {
- margin: 1em;
+ max-width: 700px;
text-align: center;
-}
-div.copyright {
- margin: 0;
-}
-div.aboutblurb {
- display: inline-block;
+ padding: 10px;
+ margin: 0 auto;
+}
+div.copyright { margin: 0; }
+div.credits {
+ display: flex;
+ flex-flow: row wrap;
+ align-items: stretch;
+ justify-content: flex-start;
+ max-width: 720px;
+ margin: 0 auto;
+}
+div.credits > * {
vertical-align: top;
text-align: left;
- max-width: 18em;
- margin: 0 1em 1em 1em;
+ flex: 1 0 220px;
+ margin: 0;
+ padding: 10px;
}
+div.credits > *:empty { padding: 0 10px; height: 0; }
ul.credits, ul.credits li {
margin: 0; padding: 0;
list-style-type: none;
@@ -866,27 +1096,32 @@ ul.credits li {
margin-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 1em;
text-indent: -1em;
}
+div.license {
+ max-width: 700px;
+ margin: 0 auto;
+ padding: 10px;
+}
table {
border-collapse: collapse;
- border-color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ border-color: </xsl:text><xsl:value-of select="$color.gray"/><xsl:text>;
border-width: 1px;
}
td, th {
padding: 0.5em;
vertical-align: top;
- border-color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ border-color: </xsl:text><xsl:value-of select="$color.gray"/><xsl:text>;
border-width: 1px;
}
thead td, thead th, tfoot td, tfoot th {
font-weight: bold;
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
- background-color: </xsl:text><xsl:value-of select="$color.dark_background"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
+ background-color: </xsl:text><xsl:value-of select="$color.bg.dark"/><xsl:text>;
}
th {
text-align: </xsl:text><xsl:value-of select="$left"/><xsl:text>;
font-weight: bold;
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
}
ul, ol, dl { margin: 0; padding: 0; }
@@ -896,6 +1131,11 @@ li {
padding: 0;
}
li:first-child { margin-top: 0; }
+@media (max-width: 480px) {
+ li {
+ margin-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 1.44em;
+ }
+}
dt { margin-top: 1em; }
dt:first-child { margin-top: 0; }
dt + dt { margin-top: 0; }
@@ -914,46 +1154,19 @@ dl.compact dt + dt { margin-top: 0; }
a {
text-decoration: none;
- color: </xsl:text><xsl:value-of select="$color.link"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg.blue"/><xsl:text>;
}
a:visited { color: </xsl:text>
- <xsl:value-of select="$color.link_visited"/><xsl:text>; }
+ <xsl:value-of select="$color.fg.purple"/><xsl:text>; }
a:hover {
border-bottom: dotted 1px </xsl:text>
- <xsl:value-of select="$color.blue_border"/><xsl:text>;
+ <xsl:value-of select="$color.fg.blue"/><xsl:text>;
}
p a {
border-bottom: dotted 1px </xsl:text>
- <xsl:value-of select="$color.blue_border"/><xsl:text>;
+ <xsl:value-of select="$color.fg.blue"/><xsl:text>;
}
a img { border: none; }
-@media only screen and (max-width: 400px) {
- div.page {
- margin: 0;
- border: none;
- }
- div.body {
- padding-left: 0;
- padding-right: 0;
- }
- div.body > div.hgroup,
- div.body > div.region > div.contents > *,
- div.body > div.region > div.sect > div.inner > div.hgroup > *,
- div.body > div.region > div.sect > div.inner > div.region > div.contents > * {
- margin-left: 12px;
- margin-right: 12px;
- }
- div.body > div.region > div.sect-links {
- margin-left: 0;
- margin-right: 0;
- }
- div.trails {
- padding: 12px;
- }
- li {
- margin-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 1.44em;
- }
-}
</xsl:text>
</xsl:template>
@@ -991,10 +1204,16 @@ All parameters can be automatically computed if not provided.
</xsl:call-template>
</xsl:param>
<xsl:text>
+.yelp-svg-fill {
+ fill: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
+}
+.yelp-svg-stroke {
+ stroke: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
+}
div.title {
margin: 0 0 0.2em 0;
font-weight: bold;
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
}
div.title h1, div.title h2, div.title h3, div.title h4, div.title h5, div.title h6 {
margin: 0;
@@ -1008,7 +1227,7 @@ pre.contents {
padding: 0.5em 1em 0.5em 1em;
}
div.links-center { text-align: center; }
-div.links .desc { color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>; }
+div.links .desc { color: </xsl:text><xsl:value-of select="$color.fg.gray"/><xsl:text>; }
div.links > div.inner > div.region > div.desc { font-style: italic; }
div.links ul { margin: 0; padding: 0; }
div.links ul ul {
@@ -1017,16 +1236,15 @@ div.links ul ul {
li.links {
margin: 0.5em 0 0.5em 0;
padding: 0;
- padding-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 1em;
list-style-type: none;
}
div.sectionlinks {
display: inline-block;
padding: 0 1em 0 1em;
background-color: </xsl:text>
- <xsl:value-of select="$color.blue_background"/><xsl:text>;
+ <xsl:value-of select="$color.bg.blue"/><xsl:text>;
border: solid 1px </xsl:text>
- <xsl:value-of select="$color.blue_border"/><xsl:text>;
+ <xsl:value-of select="$color.fg.blue"/><xsl:text>;
}
div.sectionlinks ul { margin: 0; }
div.sectionlinks li { padding: 0; }
@@ -1040,60 +1258,37 @@ div.sectionlinks div.sectionlinks {
div.sectionlinks div.sectionlinks li {
padding-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 1.44em;
}
-div.nextlinks {
- font-size: 1.2em;
- margin-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 1.2em;
- float: </xsl:text><xsl:value-of select="$right"/><xsl:text>;
- clear: both;
-}
-div.nextlinks a {
- background-color: </xsl:text><xsl:value-of select="$color.gray_background"/><xsl:text>;
+nav.prevnext { clear: both; }
+div.region > nav.prevnext, div.region + nav.prevnext { margin-top: 1em; }
+nav.prevnext > div.inner { float: </xsl:text><xsl:value-of select="$right"/><xsl:text>; }
+nav.prevnext > div.inner > * {
+ background-color: </xsl:text><xsl:value-of select="$color.bg.gray"/><xsl:text>;
display: inline-block;
position: relative;
height: 1.44em;
- padding: 0.2em 0.83em;
+ padding: 0.2em 0.83em 0 0.83em;
margin-bottom: 1em;
+ border: solid 1px </xsl:text><xsl:value-of select="$color.gray"/><xsl:text>;
+}
+nav.prevnext > div.inner > span { visibility: hidden; }
+nav.prevnext > div.inner > a + a {
+ border-</xsl:text><xsl:value-of select="$left"/><xsl:text>: none;
+}
+nav.prevnext > div.inner > a:first-child {
+ border-top-</xsl:text><xsl:value-of select="$left"/><xsl:text>-radius: 2px;
+ border-bottom-</xsl:text><xsl:value-of select="$left"/><xsl:text>-radius: 2px;
}
-a.nextlinks-prev { margin-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 0.72em; }
-a.nextlinks-next { margin-</xsl:text><xsl:value-of select="$right"/><xsl:text>: 0.72em; }
-a.nextlinks-prev:after, a.nextlinks-next:after {
- border: solid transparent;
- content: " ";
- position: absolute;
- height: 0; width: 0;
- border-width: 0.92em;
- top: 50%;
- margin-top: -0.92em;
-}
-a.nextlinks-prev:after {
- </xsl:text><xsl:value-of select="$right"/><xsl:text>: 100%;
- border-</xsl:text><xsl:value-of select="$right"/><xsl:text>-color: </xsl:text>
- <xsl:value-of select="$color.gray_background"/><xsl:text>;
-}
-a.nextlinks-next:after {
- </xsl:text><xsl:value-of select="$left"/><xsl:text>: 100%;
- border-</xsl:text><xsl:value-of select="$left"/><xsl:text>-color: </xsl:text>
- <xsl:value-of select="$color.gray_background"/><xsl:text>;
-}
-div.nextlinks a:hover {
-border: none;
- background: </xsl:text><xsl:value-of select="$color.blue_background"/><xsl:text>
-}
-a.nextlinks-prev:hover:after {
- border-</xsl:text><xsl:value-of select="$right"/><xsl:text>-color: </xsl:text>
- <xsl:value-of select="$color.blue_background"/><xsl:text>
-}
-a.nextlinks-next:hover:after {
- border-</xsl:text><xsl:value-of select="$left"/><xsl:text>-color: </xsl:text>
- <xsl:value-of select="$color.blue_background"/><xsl:text>
+nav.prevnext > div.inner > a:last-of-type {
+ border-top-</xsl:text><xsl:value-of select="$right"/><xsl:text>-radius: 2px;
+ border-bottom-</xsl:text><xsl:value-of select="$right"/><xsl:text>-radius: 2px;
}
div.serieslinks {
display: inline-block;
padding: 0 1em 0 1em;
background-color: </xsl:text>
- <xsl:value-of select="$color.blue_background"/><xsl:text>;
+ <xsl:value-of select="$color.bg.blue"/><xsl:text>;
border: solid 1px </xsl:text>
- <xsl:value-of select="$color.blue_border"/><xsl:text>;
+ <xsl:value-of select="$color.fg.blue"/><xsl:text>;
}
div.serieslinks ul { margin: 0; }
div.serieslinks li { padding: 0; }
@@ -1104,44 +1299,61 @@ pre.numbered {
float: </xsl:text><xsl:value-of select="$left"/><xsl:text>;
margin-</xsl:text><xsl:value-of select="$right"/><xsl:text>: 0.5em;
text-align: </xsl:text><xsl:value-of select="$right"/><xsl:text>;
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg.gray"/><xsl:text>;
background-color: </xsl:text>
- <xsl:value-of select="$color.yellow_background"/><xsl:text>;
+ <xsl:value-of select="$color.bg.yellow"/><xsl:text>;
}
div.code {
border: solid 1px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
+ <xsl:value-of select="$color.gray"/><xsl:text>;
}
div.example {
border-</xsl:text><xsl:value-of select="$left"/><xsl:text>: solid 4px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
+ <xsl:value-of select="$color.gray"/><xsl:text>;
padding-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 1em;
}
div.example > div.inner > div.region > div.desc { font-style: italic; }
div.figure {
+ display: inline-block;
+ max-width: 100%;
margin-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 1.72em;
+}
+div.figure > div.inner {
padding: 4px;
color: </xsl:text>
- <xsl:value-of select="$color.text_light"/><xsl:text>;
+ <xsl:value-of select="$color.fg.dark"/><xsl:text>;
border: solid 1px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
+ <xsl:value-of select="$color.gray"/><xsl:text>;
background-color: </xsl:text>
- <xsl:value-of select="$color.gray_background"/><xsl:text>;
+ <xsl:value-of select="$color.bg.gray"/><xsl:text>;
}
-div.figure > div.inner > a.zoom {
+@media (max-width: 960px) {
+ div.figure {
+ margin-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 0;
+ }
+}
+a.figure-zoom {
float: </xsl:text><xsl:value-of select="$right"/><xsl:text>;
}
+a.figure-zoom:hover { border-bottom: none; }
+a.figure-zoom:hover .yelp-svg-fill { fill: </xsl:text>
+ <xsl:value-of select="$color.blue"/><xsl:text>; }
+a.figure-zoom:hover .yelp-svg-stroke { stroke: </xsl:text>
+ <xsl:value-of select="$color.blue"/><xsl:text>; }
+a.figure-zoom .figure-zoom-out { display: none; }
+a.figure-zoom.figure-zoomed .figure-zoom-in { display: none; }
+a.figure-zoom.figure-zoomed .figure-zoom-out { display: inline-block; }
div.figure > div.inner > div.region > div.contents {
margin: 0;
padding: 0.5em 1em 0.5em 1em;
clear: both;
text-align: center;
color: </xsl:text>
- <xsl:value-of select="$color.text"/><xsl:text>;
+ <xsl:value-of select="$color.fg"/><xsl:text>;
border: solid 1px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
+ <xsl:value-of select="$color.gray"/><xsl:text>;
background-color: </xsl:text>
- <xsl:value-of select="$color.background"/><xsl:text>;
+ <xsl:value-of select="$color.bg"/><xsl:text>;
}
div.list > div.inner > div.title { margin-bottom: 0.5em; }
div.listing > div.inner { margin: 0; padding: 0; }
@@ -1149,37 +1361,36 @@ div.listing > div.inner > div.region > div.desc { font-style: italic; }
div.note {
padding: 6px;
border: solid 1px </xsl:text>
- <xsl:value-of select="$color.dark_background"/><xsl:text>;
+ <xsl:value-of select="$color.bg.dark"/><xsl:text>;
background-color: </xsl:text>
- <xsl:value-of select="$color.gray_background"/><xsl:text>;
+ <xsl:value-of select="$color.bg.gray"/><xsl:text>;
+ display: flex;
+ flex-flow: row;
}
-div.note > div.inner > div.title {
- margin-</xsl:text><xsl:value-of select="$left"/><xsl:text>: </xsl:text>
- <xsl:value-of select="$icons.size.note + 6"/><xsl:text>px;
+div.note > * { margin: 0 6px; padding: 0; min-height: 24px; }
+div.note-warning > svg .yelp-svg-fill {
+ fill: </xsl:text><xsl:value-of select="$color.red"/><xsl:text>;
}
-div.note > div.inner > div.region > div.contents {
- margin: 0; padding: 0;
- margin-</xsl:text><xsl:value-of select="$left"/><xsl:text>: </xsl:text>
- <xsl:value-of select="$icons.size.note + 6"/><xsl:text>px;
+div.note-danger {
+ border-color: </xsl:text><xsl:value-of select="$color.red"/><xsl:text>;
}
-div.note > div.inner {
- margin: 0; padding: 0;
- background-image: url("</xsl:text>
- <xsl:value-of select="$icons.note"/><xsl:text>");
- background-position: </xsl:text><xsl:value-of select="$left"/><xsl:text> top;
- background-repeat: no-repeat;
- min-height: </xsl:text><xsl:value-of select="$icons.size.note"/><xsl:text>px;
-}
-div.note-advanced > div.inner { <!-- background-image: url("</xsl:text>
- <xsl:value-of select="$icons.note.advanced"/><xsl:text>"); --> }
-div.note-bug > div.inner { background-image: url("</xsl:text>
- <xsl:value-of select="$icons.note.bug"/><xsl:text>"); }
-div.note-important > div.inner { background-image: url("</xsl:text>
- <xsl:value-of select="$icons.note.important"/><xsl:text>"); }
-div.note-tip > div.inner { background-image: url("</xsl:text>
- <xsl:value-of select="$icons.note.tip"/><xsl:text>"); }
-div.note-warning > div.inner { background-image: url("</xsl:text>
- <xsl:value-of select="$icons.note.warning"/><xsl:text>"); }
+div.note-important > svg .yelp-svg-fill {
+ fill: </xsl:text><xsl:value-of select="$color.blue"/><xsl:text>;
+}
+div.note-danger > svg .yelp-svg-fill {
+ fill: </xsl:text><xsl:value-of select="$color.red"/><xsl:text>;
+ animation-name: yelp-note-danger;
+ animation-duration: 2s;
+ animation-fill-mode: forwards;
+ animation-iteration-count: infinite;
+}
+@keyframes yelp-note-danger {
+ from { fill: </xsl:text><xsl:value-of select="$color.red"/><xsl:text> }
+ 50% { fill: </xsl:text><xsl:value-of select="$color.gray"/><xsl:text> }
+ to { fill: </xsl:text><xsl:value-of select="$color.red"/><xsl:text> }
+}
+
+
div.note-sidebar {
float: </xsl:text><xsl:value-of select="$right"/><xsl:text>;
max-width: 40%;
@@ -1247,7 +1458,7 @@ div.quote > div.inner:before {
<xsl:value-of select="$icons.size.quote"/><xsl:text>px;
text-align: center;
color: </xsl:text>
- <xsl:value-of select="$color.dark_background"/><xsl:text>;
+ <xsl:value-of select="$color.bg.dark"/><xsl:text>;
}
div.quote > div.inner > div.title {
margin: 0;
@@ -1264,37 +1475,30 @@ div.quote > div.inner > div.region > div.cite {
margin-top: 0.5em;
margin-</xsl:text><xsl:value-of select="$left"/><xsl:text>: </xsl:text>
<xsl:value-of select="$icons.size.quote"/><xsl:text>px;
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg.gray"/><xsl:text>;
}
div.quote > div.inner > div.region > div.cite::before {
<!-- FIXME: i18n -->
content: '&#x2015; ';
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg.gray"/><xsl:text>;
}
div.screen {
background-color: </xsl:text>
- <xsl:value-of select="$color.gray_background"/><xsl:text>;
+ <xsl:value-of select="$color.bg.gray"/><xsl:text>;
border: solid 1px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
+ <xsl:value-of select="$color.gray"/><xsl:text>;
}
ol.steps, ul.steps {
- margin: 0;
padding: 0.5em 1em 0.5em 1em;
border-</xsl:text><xsl:value-of select="$left"/><xsl:text>: solid 4px </xsl:text>
- <xsl:value-of select="$color.yellow_border"/><xsl:text>;
- -moz-box-shadow: 0 1px 2px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
- -webkit-box-shadow: 0 1px 2px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
+ <xsl:value-of select="$color.yellow"/><xsl:text>;
box-shadow: 0 1px 2px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
+ <xsl:value-of select="$color.gray"/><xsl:text>;
}
ol.steps .steps {
padding: 0;
border: none;
- background-color: none;
- -moz-box-shadow: none;
- -webkit-box-shadow: none;
+ background-color: unset;
box-shadow: none;
}
li.steps { margin-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 1.44em; }
@@ -1305,13 +1509,13 @@ div.synopsis > div.contents, div.synopsis > pre.contents {
border-top: solid 1px;
border-bottom: solid 1px;
border-color: </xsl:text>
- <xsl:value-of select="$color.blue_border"/><xsl:text>;
+ <xsl:value-of select="$color.fg.blue"/><xsl:text>;
background-color: </xsl:text>
- <xsl:value-of select="$color.gray_background"/><xsl:text>;
+ <xsl:value-of select="$color.bg.gray"/><xsl:text>;
}
div.synopsis > div.inner > div.region > div.desc { font-style: italic; }
div.synopsis div.code {
- background: none;
+ background: unset;
border: none;
padding: 0;
}
@@ -1319,153 +1523,184 @@ div.synopsis div.code > pre.contents { margin: 0; padding: 0; }
div.unknown > div.inner > div.region > div.desc { font-style: italic; }
div.table > div.desc { font-style: italic; }
tr.shade {
- background-color: </xsl:text><xsl:value-of select="$color.gray_background"/><xsl:text>;
+ background-color: </xsl:text><xsl:value-of select="$color.bg.gray"/><xsl:text>;
}
td.shade {
- background-color: </xsl:text><xsl:value-of select="$color.gray_background"/><xsl:text>;
+ background-color: </xsl:text><xsl:value-of select="$color.bg.gray"/><xsl:text>;
}
tr.shade td.shade {
- background-color: </xsl:text><xsl:value-of select="$color.dark_background"/><xsl:text>;
+ background-color: </xsl:text><xsl:value-of select="$color.bg.dark"/><xsl:text>;
}
span.app { font-style: italic; }
span.cmd {
- font-family: monospace;
+ font-family: monospace,monospace; font-size: 0.83em;
background-color: </xsl:text>
- <xsl:value-of select="$color.gray_background"/><xsl:text>;
+ <xsl:value-of select="$color.bg.gray"/><xsl:text>;
padding: 0 0.2em 0 0.2em;
}
-span.cmd span.cmd { background-color: none; padding: 0; }
-pre span.cmd { background-color: none; padding: 0; }
+span.cmd span.cmd { background-color: unset; padding: 0; }
+pre span.cmd { background-color: unset; padding: 0; }
span.code {
- font-family: monospace;
- border-bottom: solid 1px </xsl:text><xsl:value-of select="$color.dark_background"/><xsl:text>;
+ font-family: monospace,monospace; font-size: 0.83em;
+ border-bottom: solid 1px </xsl:text><xsl:value-of select="$color.bg.dark"/><xsl:text>;
}
span.code span.code { border: none; }
pre span.code { border: none; }
span.em { font-style: italic; }
span.em-bold {
font-style: normal; font-weight: bold;
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
}
pre span.error {
- color: </xsl:text><xsl:value-of select="$color.text_error"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg.red"/><xsl:text>;
}
-span.file { font-family: monospace; }
+span.file { font-family: monospace,monospace; font-size: 0.83em; }
span.gui, span.guiseq { color: </xsl:text>
- <xsl:value-of select="$color.text_light"/><xsl:text>; }
-span.input { font-family: monospace; }
+ <xsl:value-of select="$color.fg.dark"/><xsl:text>; }
+span.input { font-family: monospace,monospace; font-size: 0.83em; }
pre span.input {
font-weight: bold;
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
}
kbd {
font-family: inherit;
font-size: inherit;
color: </xsl:text>
- <xsl:value-of select="$color.text_light"/><xsl:text>;
+ <xsl:value-of select="$color.fg.dark"/><xsl:text>;
background-color: </xsl:text>
- <xsl:value-of select="$color.gray_background"/><xsl:text>;
+ <xsl:value-of select="$color.bg.gray"/><xsl:text>;
border: solid 1px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
+ <xsl:value-of select="$color.gray"/><xsl:text>;
border-radius: 2px;
- -moz-box-shadow: 1px 1px 2px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
- -webkit-box-shadow: 1px 1px 2px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
box-shadow: 1px 1px 2px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
+ <xsl:value-of select="$color.gray"/><xsl:text>;
margin: 0 0.2em 0 0.2em;
- padding: 0 0.5em 0 0.5em;
+ padding: 0.2em 0.5em 0 0.5em;
white-space: nowrap;
}
kbd.key-Fn {
font-weight: bold;
color: </xsl:text>
- <xsl:value-of select="$color.blue_border"/><xsl:text>;
+ <xsl:value-of select="$color.fg.blue"/><xsl:text>;
}
span.key a {
border-bottom: none;
}
a > kbd {
- color: </xsl:text><xsl:value-of select="$color.link"/><xsl:text>;
- border-color: </xsl:text><xsl:value-of select="$color.blue_border"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg.blue"/><xsl:text>;
+ border-color: </xsl:text><xsl:value-of select="$color.fg.blue"/><xsl:text>;
}
span.keyseq {
color: </xsl:text>
- <xsl:value-of select="$color.text_light"/><xsl:text>;
+ <xsl:value-of select="$color.fg.dark"/><xsl:text>;
white-space: nowrap
}
-span.output { font-family: monospace; }
+span.output { font-family: monospace,monospace; font-size: 0.83em; }
pre span.output {
- color: </xsl:text><xsl:value-of select="$color.text"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg"/><xsl:text>;
}
pre span.prompt {
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
}
-span.sys { font-family: monospace; }
+span.sys { font-family: monospace,monospace; font-size: 0.83em; }
span.var { font-style: italic; }
.ui-tile-img .media-controls { display: none; }
span.media-audio, span.media-video { display: inline-block; }
audio, video { display: block; margin: 0; }
div.media > div.inner { display: inline-block; text-align: center; }
-div.media-controls {
+.media-controls {
min-width: 24em;
height: 24px;
margin: 0; padding: 0;
- border-left: solid 1px </xsl:text><xsl:value-of select="$color.text"/><xsl:text>;;
- border-right: solid 1px </xsl:text><xsl:value-of select="$color.text"/><xsl:text>;;
- border-bottom: solid 1px </xsl:text><xsl:value-of select="$color.text"/><xsl:text>;;
- background-color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
- color: </xsl:text><xsl:value-of select="$color.background"/><xsl:text>;
- -moz-border-bottom-left-radius: 4px;
- -moz-border-bottom-right-radius: 4px;
- -webkit-border-bottom-left-radius: 4px;
- -webkit-border-bottom-right-radius: 4px;
+ border-left: solid 1px </xsl:text><xsl:value-of select="$color.fg"/><xsl:text>;;
+ border-right: solid 1px </xsl:text><xsl:value-of select="$color.fg"/><xsl:text>;;
+ border-bottom: solid 1px </xsl:text><xsl:value-of select="$color.fg"/><xsl:text>;;
+ background-color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.bg"/><xsl:text>;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
+ display: flex;
+ align-items: center;
+}
+.media-audio .media-controls {
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+}
+.media-controls > * {
+ flex: 0 1 auto;
+}
+.media-controls > input.media-range {
+ flex: 1 0 auto;
+ background-color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
+ margin: 0 10px;
+ -webkit-appearance: none;
+}
+input.media-range::-webkit-slider-runnable-track {
+ height: 4px;
+ background: </xsl:text><xsl:value-of select="$color.fg.gray"/><xsl:text>;
+ border-radius: 2px;
+}
+input.media-range::-webkit-slider-thumb {
+ -webkit-appearance: none;
+ height: 16px;
+ width: 16px;
+ border-radius: 8px;
+ background: </xsl:text><xsl:value-of select="$color.bg.dark"/><xsl:text>;
+ border: solid 1px </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
+ margin-top: -6px;
+}
+input.media-range::-webkit-slider-thumb:hover,
+input.media-range::-webkit-slider-thumb:focus {
+ background: </xsl:text><xsl:value-of select="$color.bg.gray"/><xsl:text>;
+}
+input.media-range::-moz-range-track {
+ height: 4px;
+ background: </xsl:text><xsl:value-of select="$color.fg.gray"/><xsl:text>;
+ border-radius: 2px;
}
-div.media-controls-audio {
- border-top: solid 1px </xsl:text><xsl:value-of select="$color.text"/><xsl:text>;;
- -moz-border-radius: 4px;
- -webkit-border-radius: 4px;
+input.media-range::-moz-range-thumb {
+ -webkit-appearance: none;
+ height: 16px;
+ width: 16px;
+ border-radius: 8px;
+ background: </xsl:text><xsl:value-of select="$color.bg.dark"/><xsl:text>;
+ border: solid 1px </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
+ margin-top: -6px;
+}
+.media-controls-audio {
+ border-top: solid 1px </xsl:text><xsl:value-of select="$color.fg"/><xsl:text>;;
border-radius: 4px;
}
button.media-play {
height: 24px;
padding: 0 2px 0 2px; line-height: 0;
- float: </xsl:text><xsl:value-of select="$left"/><xsl:text>;
- background-color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ background-color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
border: none;
border-</xsl:text><xsl:value-of select="$right"/><xsl:text>: solid 1px </xsl:text>
- <xsl:value-of select="$color.text"/><xsl:text>;;
+ <xsl:value-of select="$color.fg"/><xsl:text>;;
}
button.media-play:hover, button.media-play:focus {
- background-color: </xsl:text><xsl:value-of select="$color.blue_border"/><xsl:text>;
-}
-button.media-play canvas { margin: 0; }
-div.media-range {
- display: inline-block;
- margin: 2px 8px 0 8px;
- padding: 0;
- height: 20px;
-}
-div.media-time {
- float: </xsl:text><xsl:value-of select="$right"/><xsl:text>;
+ background-color: </xsl:text><xsl:value-of select="$color.fg.blue"/><xsl:text>;
+}
+button.media-play .yelp-svg-fill { fill: </xsl:text>
+ <xsl:value-of select="$color.bg.gray"/><xsl:text>; }
+button.media-play .media-pause { display: none; }
+button.media-play-playing .media-play { display: none; }
+button.media-play-playing .media-pause { display: inline; }
+.media-time {
margin: 0;
font-size: 16px;
height: 24px;
line-height: 24px;
}
-div.media-time > span {
+.media-time > span {
padding-</xsl:text><xsl:value-of select="$right"/><xsl:text>: 8px;
}
-span.media-duration {
+.media-duration {
font-size: 12px;
- color: </xsl:text><xsl:value-of select="$color.dark_background"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.bg.dark"/><xsl:text>;
opacity: 0.8;
}
div.media-ttml { margin: 0; padding: 0; }
@@ -1483,67 +1718,87 @@ div.media-ttml-p {
padding: 6px;
max-width: 24em;
border: solid 1px </xsl:text>
- <xsl:value-of select="$color.yellow_border"/><xsl:text>;
+ <xsl:value-of select="$color.fg.yellow"/><xsl:text>;
background-color: </xsl:text>
- <xsl:value-of select="$color.yellow_background"/><xsl:text>;
- -moz-box-shadow: 2px 2px 4px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
- -webkit-box-shadow: 2px 2px 4px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
+ <xsl:value-of select="$color.bg.yellow"/><xsl:text>;
box-shadow: 2px 2px 4px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
+ <xsl:value-of select="$color.gray"/><xsl:text>;
}
div.yelp-data { display: none; }
-div.ui-expander > div.inner > div.title span.title,
-div.ui-expander > div.inner > div.hgroup span.title {
+.ui-expander > div.inner > div.title span.title,
+.ui-expander > div.inner > div.hgroup span.title {
cursor: default;
}
-div.ui-expander > div.inner > div.title span.title:before,
-div.ui-expander > div.inner > div.hgroup span.title:before {
- font-size: 2em;
- font-weight: normal;
+.ui-expander > div.inner > div.title span.title:before,
+.ui-expander > div.inner > div.hgroup span.title:before {
+ font-weight: bold;
content: "⌃";
display: inline-block;
- line-height: 0.2em;
- vertical-align: bottom;
- color: </xsl:text><xsl:value-of select="$color.link"/><xsl:text>;
-}
-div.ui-expander-c > div.inner > div.hgroup { border-bottom: none; }
-div.ui-expander-e > div.inner > div.title span.title:before,
-div.ui-expander-e > div.inner > div.hgroup span.title:before {
- content: "⌄";
- vertical-align: top;
+ margin: 0;
+ color: </xsl:text><xsl:value-of select="$color.fg.blue"/><xsl:text>;
+ transform: translateY(0.2em) rotate(0deg);
+ -webkit-transform: translateY(0.2em) rotate(0deg);
+ transition: transform 0.2s linear;
+ transform-origin: 50% 30%;
+ -webkit-transform-origin: 50% 30%;
+ -webkit-transition: -webkit-transform 0.2s linear;
+ margin: 0 0.2em;
+}
+.ui-expander-c > div.inner > div.hgroup { border-bottom: none; }
+.ui-expander-e > div.inner > div.title span.title:before,
+.ui-expander-e > div.inner > div.hgroup span.title:before {</xsl:text>
+<xsl:choose>
+<xsl:when test="$direction = 'rtl'">
+ transform: translateY(0.2em) rotate(-180deg);
+ -webkit-transform: translateY(0.2em) rotate(-180deg);
+</xsl:when>
+<xsl:otherwise>
+ transform: translateY(0.2em) rotate(180deg);
+ -webkit-transform: translateY(0.2em) rotate(180deg);
+</xsl:otherwise>
+</xsl:choose><xsl:text>}
+.ui-expander > div.inner > div.title:hover,
+.ui-expander > div.inner > div.hgroup:hover * {
+ color: </xsl:text><xsl:value-of select="$color.fg.blue"/><xsl:text>;
+}
+.ui-expander > div.inner > div.hgroup > .subtitle {
+ margin-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 2em;
}
-div.ui-expander > div.inner > div.title:hover,
-div.ui-expander > div.inner > div.hgroup:hover * {
- color: </xsl:text><xsl:value-of select="$color.link"/><xsl:text>;
+.ui-expander-c > div.inner > div.region {
+ display: none;
}
-div.ui-expander > div.inner > div.hgroup > .subtitle {
- margin-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 2em;
+.ui-expander-e > div.inner > div.region {
+ animation-name: yelp-ui-expander-e;
+ animation-duration: 0.2s;
+ animation-fill-mode: forwards;
+ transform-origin: 0 0;
+}
+@keyframes yelp-ui-expander-e {
+ from { transform: scaleY(0); }
+ to { transform: scaleY(1); }
}
-@media only screen and (max-width: 400px) {
- div.links {
- margin-left: 12px;
- margin-right: 12px;
- }
- li.links { padding: 0; }
- div.body > div.region > div.contents > div.example,
- div.body > div.region > div.contents > div.steps,
- div.body > div.region > div.contents > div.note,
- div.body > div.region > div.sect > div.inner > div.region > div.contents > div.example,
- div.body > div.region > div.sect > div.inner > div.region > div.contents > div.steps,
- div.body > div.region > div.sect > div.inner > div.region > div.contents > div.note {
- margin-left: 0;
- margin-right: 0;
+
+@media only screen and (max-width: 480px) {
+ article > div.region > div.contents > div.example,
+ article > div.region > section > div.inner > div.region > div.contents > div.example {
+ margin-left: -10px;
+ margin-right: -10px;
}
- div.steps > div.inner > div.title {
- margin-left: 18px;
- margin-right: 18px;
+ div.example {
+ padding-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 6px;
+ padding-</xsl:text><xsl:value-of select="$right"/><xsl:text>: 10px;
}
- ol.steps, ul.steps {
- -moz-box-shadow: none;
- -webkit-box-shadow: none;
- box-shadow: none;
+ article > div.region > div.contents > div.note,
+ article > div.region > section > div.inner > div.region > div.contents > div.note {
+ margin-left: -10px;
+ margin-right: -10px;
+ padding-left: 10px;
+ padding-right: 10px;
+ }
+ article > div.region > div.contents > div.note,
+ article > div.region > section > div.inner > div.region > div.contents > div.note {
+ border-left: none;
+ border-right: none;
}
div.note-sidebar {
float: none;
@@ -1555,8 +1810,23 @@ div.ui-expander > div.inner > div.hgroup > .subtitle {
}
div.note-sidebar > div.inner > div.title,
div.note-sidebar > div.inner > div.region > div.contents {
- margin-left: 12px;
- margin-right: 12px;
+ margin-left: 10px;
+ margin-right: 10px;
+ }
+ article > div.region > div.contents > div.steps,
+ article > div.region > section > div.inner > div.region > div.contents > div.steps {
+ margin-left: -10px;
+ margin-right: -10px;
+ }
+ div.steps > div.inner > div.title {
+ margin-left: 10px;
+ margin-right: 10px;
+ }
+ ol.steps, ul.steps {
+ box-shadow: none;
+ padding: 0;
+ padding-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 6px;
+ padding-</xsl:text><xsl:value-of select="$right"/><xsl:text>: 10px;
}
}
</xsl:text>
@@ -1596,15 +1866,56 @@ All parameters can be automatically computed if not provided.
</xsl:call-template>
</xsl:param>
<xsl:if test="$html.syntax.highlight">
- <xsl:text>
-pre.syntax span.function, pre.syntax span.keyword, pre.syntax span.tag {
- color: </xsl:text><xsl:value-of select="$color.blue_border"/><xsl:text>;
-}
-pre.syntax span.string, pre.syntax span.operator {
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
-}
-</xsl:text>
- </xsl:if>
+.hljs a {
+ color: inherit;
+ border-bottom: dotted 1px <xsl:value-of select="$color.fg.blue"/>;
+}
+.hljs a:hover, .hljs a:hover * { color: <xsl:value-of select="$color.fg.blue"/>; }
+.hljs-addition {
+ color: <xsl:value-of select="$color.fg.green"/>;
+ background-color: <xsl:value-of select="$color.bg.green"/>;
+}
+.hljs-deletion {
+ color: <xsl:value-of select="$color.fg.red"/>;
+ background-color: <xsl:value-of select="$color.bg.red"/>;
+}
+.hljs-emphasis { font-style: italic; }
+.hljs-strong { font-weight: bold; }
+.hljs-attr { color: <xsl:value-of select="$color.fg.blue"/>; }
+.hljs-attribute { color: <xsl:value-of select="$color.fg.yellow"/>; }
+.hljs-built_in { color: <xsl:value-of select="$color.fg.orange"/>; }
+.hljs-bullet { color: <xsl:value-of select="$color.fg.green"/>; }
+.hljs-class { }
+.hljs-code { }
+.hljs-comment { color: <xsl:value-of select="$color.fg.gray"/>; }
+.hljs-doctag { }
+.hljs-formula { color: <xsl:value-of select="$color.fg.dark"/>; }
+.hljs-function { }
+.hljs-keyword { color: <xsl:value-of select="$color.fg.purple"/>; }
+.hljs-link { color: <xsl:value-of select="$color.fg.orange"/>; }
+.hljs-literal { color: <xsl:value-of select="$color.fg.orange"/>; }
+.hljs-meta { color: <xsl:value-of select="$color.fg.orange"/>; }
+.hljs-name { color: <xsl:value-of select="$color.fg.red"/>; }
+.hljs-number { color: <xsl:value-of select="$color.fg.orange"/>; }
+.hljs-params { color: <xsl:value-of select="$color.fg.orange"/>; }
+.hljs-quote { color: <xsl:value-of select="$color.fg.gray"/>; }
+.hljs-regexp { color: <xsl:value-of select="$color.fg.red"/>; }
+.hljs-rest_arg { }
+.hljs-section { color: <xsl:value-of select="$color.fg.blue"/>; }
+.hljs-string { color: <xsl:value-of select="$color.fg.green"/>; }
+.hljs-subst { }
+.hljs-symbol { color: <xsl:value-of select="$color.fg.green"/>; }
+.hljs-tag { color: <xsl:value-of select="$color.fg.red"/>; }
+.hljs-title { color: <xsl:value-of select="$color.fg.blue"/>; }
+.hljs-type { }
+.hljs-variable { }
+.hljs-selector-attr { }
+.hljs-selector-class { color: <xsl:value-of select="$color.fg.red"/>; }
+.hljs-selector-id { color: <xsl:value-of select="$color.fg.red"/>; }
+.hljs-selector-tag { color: <xsl:value-of select="$color.fg.purple"/>; }
+.hljs-template-tag { }
+.hljs-template-variable { }
+</xsl:if>
</xsl:template>
@@ -1642,31 +1953,32 @@ template to provide additional CSS that will be used by all HTML output.
<!--**==========================================================================
html.js
Output all JavaScript for an HTML output page.
-:Revision:version="1.0" date="2010-12-31" status="final"
+:Revision:version="3.next" date="2016-01-18" status="final"
$node: The node to create JavaScript for.
This template creates the JavaScript for an HTML output page. It calls the
-template *{html.js.jquery} to output references to jQuery files. It then
-calls *{html.js.custom} to output references to custom JavaScript files.
-Finally, it outputs an HTML #{script} tag and calls *{html.js.content} to
-ouput the contents of that tag.
+templates *{html.js.jquery}, *{html.js.syntax}, and *{html.js.mathjax} to
+output references to external libraries. It then calls *{html.js.custom} to
+output references to custom JavaScript files. Finally, it calls
+*{html.js.script} to output local JavaScript created by *{html.js.content}.
-->
<xsl:template name="html.js">
<xsl:param name="node" select="."/>
<xsl:call-template name="html.js.jquery">
<xsl:with-param name="node" select="$node"/>
</xsl:call-template>
+ <xsl:call-template name="html.js.syntax">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
<xsl:call-template name="html.js.mathjax">
<xsl:with-param name="node" select="$node"/>
</xsl:call-template>
<xsl:call-template name="html.js.custom">
<xsl:with-param name="node" select="$node"/>
</xsl:call-template>
- <script type="text/javascript">
- <xsl:call-template name="html.js.content">
- <xsl:with-param name="node" select="$node"/>
- </xsl:call-template>
- </script>
+ <xsl:call-template name="html.js.script">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
</xsl:template>
@@ -1690,14 +2002,6 @@ output relative to @{html.js.root}.
<xsl:text>jquery.js</xsl:text>
</xsl:attribute>
</script>
- <xsl:if test="$html.syntax.highlight">
- <script type="text/javascript">
- <xsl:attribute name="src">
- <xsl:value-of select="$html.js.root"/>
- <xsl:text>jquery.syntax.js</xsl:text>
- </xsl:attribute>
- </script>
- </xsl:if>
</xsl:template>
@@ -1725,17 +2029,39 @@ copy, override this template and provide the necessary files.
<!--**==========================================================================
+html.js.script
+Output a JavaScript #{script} tag containing local content.
+:Revision:version="3.next" date="2016-01-18" status="final"
+$node: The node to create JavaScript for.
+
+This template is called by *{html.js} to output JavaScript content. It outputs
+a #{script} tag and calls *{html.js.content} to output the contents. To force
+all JavaScript into external files, override this template to output a #{script}
+tag referencing an external file with the #{src} attribute, then output the
+result of *{html.js.content} to that file.
+-->
+<xsl:template name="html.js.script">
+ <xsl:param name="node" select="."/>
+ <script type="text/javascript">
+ <xsl:call-template name="html.js.content">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </script>
+</xsl:template>
+
+
+<!--**==========================================================================
html.js.content
Output JavaScript content for an HTML output page.
-:Revision:version="3.4" date="2011-11-04" status="final"
+:Revision:version="3.next" date="2016-01-18" status="final"
$node: The node to create JavaScript for.
-This template is called by *{html.js} to output JavaScript content. It does not
-output an HTML #{script} tag. The JavaScript output by this template or templates
-it calls may depend on the jQuery code referenced by *{html.js.jquery}. This
-template calls the templates *{html.js.core}, *{html.js.ui}, *{html.js.media},
-and *{html.js.syntax}. It then calls the mode
-%{html.js.mode} on ${node} and calls the template *{html.js.content.custom}.
+This template is called by *{html.js.script} to output JavaScript content. It
+does not output an HTML #{script} tag. The JavaScript output by this template
+or templates it calls may depend on the jQuery code referenced by
+*{html.js.jquery}. This template calls the templates *{html.js.core},
+*{html.js.ui}, and *{html.js.media}. It then calls the mode %{html.js.mode}
+on ${node} and calls the template *{html.js.content.custom}.
-->
<xsl:template name="html.js.content">
<xsl:param name="node" select="."/>
@@ -1748,9 +2074,6 @@ and *{html.js.syntax}. It then calls the mode
<xsl:call-template name="html.js.media">
<xsl:with-param name="node" select="$node"/>
</xsl:call-template>
- <xsl:call-template name="html.js.syntax">
- <xsl:with-param name="node" select="$node"/>
- </xsl:call-template>
<xsl:apply-templates mode="html.js.mode" select="$node"/>
<xsl:call-template name="html.js.content.custom">
<xsl:with-param name="node" select="$node"/>
@@ -1770,32 +2093,21 @@ Currently, it outputs code to highlight a section when #{location.hash} is set.
<xsl:template name="html.js.core">
<xsl:param name="node" select="."/>
<xsl:text>
-var __yelp_generate_id_counter__ = 0;
-function yelp_generate_id () {
- var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString();
- if ($('#' + ret).length != 0)
- return yelp_generate_id();
- else
- return ret;
-};
-$(document).ready (function () {
- var highlight_hash = function () {
+document.addEventListener('DOMContentLoaded', function() {
+ var yelp_hash_highlight = function () {
if (location.hash != '') {
- var sect = $(location.hash);
- sect.css('background-color', '</xsl:text><xsl:value-of select="$color.yellow_background"/><xsl:text>');
- window.setTimeout(function () {
- sect.css({
- '-webkit-transition': 'background-color 2s linear',
- '-moz-transition': 'background-color 2s linear',
- 'transition': 'background-color 2s linear',
- 'background-color': 'rgba(1, 1, 1, 0)'
- });
- }, 200);
+ var sect = document.querySelector(location.hash);
+ if (sect != null) {
+ sect.classList.add('yelp-hash-highlight');
+ window.setTimeout(function () {
+ sect.classList.remove('yelp-hash-highlight');
+ }, 500);
+ }
}
- };
- $(window).bind('hashchange', highlight_hash);
- highlight_hash();
-});
+ }
+ window.addEventListener('hashchange', yelp_hash_highlight, false);
+ yelp_hash_highlight();
+}, false);
</xsl:text>
</xsl:template>
@@ -1812,89 +2124,131 @@ such as expandable blocks and sections.
<xsl:template name="html.js.ui">
<xsl:param name="node" select="."/>
<xsl:text><![CDATA[
-$.fn.yelp_ui_expander_toggle = function (onlyopen, callback) {
- var expander = $(this);
- var region = expander.children('.inner').children('.region');
- var yelpdata = expander.children('div.yelp-data-ui-expander');
- var compfunc = function () {
- if (expander.is('div.figure')) { expander.yelp_auto_resize(); }
- if (callback) { callback(); }
- return true;
- };
- var title = expander.children('.inner').children('.title');
- if (title.length == 0)
- title = expander.children('.inner').children('.hgroup');
- var title = title.find('span.title:first');
- if (expander.is('.ui-expander-e')) {
- if (!onlyopen) {
- expander.removeClass('ui-expander-e').addClass('ui-expander-c');
- region.attr('aria-expanded', 'false').slideUp('fast', compfunc);
- title.html(yelpdata.children('div.yelp-title-collapsed').html());
+var __yelp_generate_id_counter__ = 0;
+function yelp_generate_id () {
+ var ret = 'yelp--' + (++__yelp_generate_id_counter__).toString();
+ if (document.getElementById(ret) != null)
+ return yelp_generate_id();
+ else
+ return ret;
+};
+function yelp_ui_expander_init (expander) {
+ var yelpdata = null;
+ var innerdiv = null;
+ var region = null;
+ var title = null;
+ var title_e = null;
+ var title_c = null;
+ var titlespan = null;
+ var issect = false;
+ for (var i = 0; i < expander.children.length; i++) {
+ var child = expander.children[i];
+ if (child.classList.contains('yelp-data-ui-expander')) {
+ yelpdata = child;
+ }
+ else if (child.classList.contains('inner')) {
+ innerdiv = child;
}
}
- else {
- expander.removeClass('ui-expander-c').addClass('ui-expander-e');
- region.attr('aria-expanded', 'true').slideDown('fast', compfunc);
- title.html(yelpdata.children('div.yelp-title-expanded').html());
+ if (innerdiv == null) {
+ return;
}
-};
-$(document).ready(function () {
- $('.ui-expander').each(function () {
- var expander = $(this);
- var yelpdata = expander.children('div.yelp-data-ui-expander');
- var region = expander.children('.inner').children('.region');
- var title = expander.children('.inner').children('.title');
- var issect = false;
- if (title.length == 0) {
- title = expander.children('.inner').children('.hgroup');
+ for (var i = 0; i < innerdiv.children.length; i++) {
+ var child = innerdiv.children[i];
+ if (child.classList.contains('region')) {
+ region = child;
+ }
+ else if (child.classList.contains('title')) {
+ title = child;
+ }
+ else if (child.classList.contains('hgroup')) {
+ title = child;
issect = true;
}
- if (title.length == 0) {
- return;
+ }
+ if (region == null || title == null) {
+ return;
+ }
+ if (!region.hasAttribute('id')) {
+ region.setAttribute('id', yelp_generate_id());
+ }
+ title.setAttribute('aria-controls', region.getAttribute('id'));
+
+ if (yelpdata != null) {
+ for (var i = 0; i < yelpdata.children.length; i++) {
+ var child = yelpdata.children[i];
+ if (child.classList.contains('yelp-title-expanded')) {
+ title_e = child;
+ }
+ else if (child.classList.contains('yelp-title-collapsed')) {
+ title_c = child;
+ }
+ }
+ }
+ titlespan = title.querySelector('span.title');
+ if (titlespan == null) {
+ return;
+ }
+ if (title_e == null) {
+ var node = document.createElement('div');
+ node.className = 'yelp-title-expanded';
+ node.innerHTML = titlespan.innerHTML;
+ yelpdata.appendChild(node);
+ title_e = node;
+ }
+ if (title_c == null) {
+ var node = document.createElement('div');
+ node.className = 'yelp-title-collapsed';
+ node.innerHTML = titlespan.innerHTML;
+ yelpdata.appendChild(node);
+ title_c = node;
+ }
+
+ var ui_expander_toggle = function () {
+ if (yelpdata.getAttribute('data-yelp-expanded') == 'false') {
+ yelpdata.setAttribute('data-yelp-expanded', 'true');
+ expander.classList.remove('ui-expander-e');
+ expander.classList.add('ui-expander-c');
+ region.setAttribute('aria-expanded', 'false');
+ if (title_c != null)
+ titlespan.innerHTML = title_c.innerHTML;
}
- if (region.attr('id') == '')
- region.attr('id', yelp_generate_id());
- title.attr('aria-controls', region.attr('id'));
- var titlespan = title.find('span.title:first');
- var title_e = yelpdata.children('div.yelp-title-expanded');
- var title_c = yelpdata.children('div.yelp-title-collapsed');
- if (title_e.length == 0)
- yelpdata.append($('<div class="yelp-title-expanded"></div>').html(titlespan.html()));
- if (title_c.length == 0)
- yelpdata.append($('<div class="yelp-title-collapsed"></div>').html(titlespan.html()));
- if (yelpdata.attr('data-yelp-expanded') == 'false') {
- expander.addClass('ui-expander-c');
- region.attr('aria-expanded', 'false').hide();
- if (title_c.length != 0)
- titlespan.html(title_c.html());
- } else {
- expander.addClass('ui-expander-e');
- region.attr('aria-expanded', 'true');
- if (title_e.length != 0)
- titlespan.html(title_e.html());
+ else {
+ yelpdata.setAttribute('data-yelp-expanded', 'false');
+ expander.classList.remove('ui-expander-c');
+ expander.classList.add('ui-expander-e');
+ region.setAttribute('aria-expanded', 'true');
+ if (title_e != null)
+ titlespan.innerHTML = title_e.innerHTML;
}
- title.click(function () {
- expander.yelp_ui_expander_toggle(false);
- });
- });
-});
-$(document).ready(function () {
- var expand_hash = function () {
+ };
+ expander.yelp_ui_expander_toggle = ui_expander_toggle;
+ title.addEventListener('click', ui_expander_toggle, false);
+ ui_expander_toggle();
+}
+document.addEventListener('DOMContentLoaded', function() {
+ var matches = document.querySelectorAll('.ui-expander');
+ for (var i = 0; i < matches.length; i++) {
+ yelp_ui_expander_init(matches[i]);
+ }
+ var yelp_hash_ui_expand = function () {
if (location.hash != '') {
- var target = $(location.hash);
- var parents = target.parents('div.ui-expander');
- if (target.is('div.ui-expander'))
- parents = parents.andSelf();
- parents.each(function () {
- $(this).yelp_ui_expander_toggle(true, function () {
- window.scrollTo(0, $(target).offset().top);
- });
- });
+ var sect = document.querySelector(location.hash);
+ if (sect != null) {
+ for (var cur = sect; cur instanceof Element; cur = cur.parentNode) {
+ if (cur.classList.contains('ui-expander')) {
+ if (cur.classList.contains('ui-expander-c')) {
+ cur.yelp_ui_expander_toggle();
+ }
+ }
+ }
+ sect.scrollIntoView();
+ }
}
};
- $(window).bind('hashchange', expand_hash);
- expand_hash();
-});
+ window.addEventListener('hashchange', yelp_hash_ui_expand, false);
+ yelp_hash_ui_expand();
+}, false);
]]></xsl:text>
</xsl:template>
@@ -1912,269 +2266,239 @@ control for audio and video elements as well as support for captions.
<xsl:param name="node" select="."/>
<xsl:text><![CDATA[
yelp_color_text_light = ']]></xsl:text>
-<xsl:value-of select="$color.text_light"/><xsl:text><![CDATA[';
+<xsl:value-of select="$color.fg.dark"/><xsl:text><![CDATA[';
yelp_color_gray_background = ']]></xsl:text>
-<xsl:value-of select="$color.gray_background"/><xsl:text><![CDATA[';
+<xsl:value-of select="$color.bg.gray"/><xsl:text><![CDATA[';
yelp_color_gray_border = ']]></xsl:text>
-<xsl:value-of select="$color.gray_border"/><xsl:text><![CDATA[';
-yelp_paint_zoom = function (zoom, zoomed) {
- var ctxt = zoom.children('canvas')[0].getContext('2d');
- ctxt.strokeStyle = ctxt.fillStyle = yelp_color_text_light;
- ctxt.clearRect(0, 0, 10, 10);
- ctxt.strokeRect(0.5, 0.5, 9, 9);
- if (zoomed) {
- ctxt.fillRect(1, 1, 9, 4);
- ctxt.fillRect(5, 5, 4, 4);
- zoom.attr('title', zoom.attr('data-zoom-out-title'));
- }
- else {
- ctxt.fillRect(1, 5, 4, 4);
- zoom.attr('title', zoom.attr('data-zoom-in-title'));
+<xsl:value-of select="$color.gray"/><xsl:text><![CDATA[';
+function yelp_figure_init (figure) {
+ var zoom = figure.querySelector('a.figure-zoom');
+
+ var figure_resize = function () {
+ var zoomed = zoom.classList.contains('figure-zoomed');
+ var imgs = figure.querySelectorAll('img');
+ for (var i = 0; i < imgs.length; i++) {
+ var img = imgs[i];
+ var mediaDiv = null;
+ for (var cur = img; cur instanceof Element; cur = cur.parentNode) {
+ if ((cur.nodeName == 'div' || cur.nodeName == 'DIV') &&
+ cur.classList.contains('media')) {
+ mediaDiv = cur;
+ break;
+ }
+ }
+ if (mediaDiv == null)
+ continue;
+ if (!img.hasAttribute('data-yelp-original-width')) {
+ var iwidth = null;
+ if (img.hasAttribute('width'))
+ iwidth = parseInt(img.getAttribute('width'));
+ else
+ iwidth = img.width;
+ img.setAttribute('data-yelp-original-width', iwidth);
+ var iheight = null;
+ if (img.hasAttribute('height'))
+ iheight = parseInt(img.getAttribute('height'));
+ else
+ iheight = img.height * (iwidth / img.width);
+ img.setAttribute('data-yelp-original-height', iheight);
+ }
+ var owidth = img.width;
+ var oheight = img.height;
+ img.width = parseInt(img.getAttribute('data-yelp-original-width'));
+ img.height = parseInt(img.getAttribute('data-yelp-original-height'));
+ var mediaw = mediaDiv.offsetWidth;
+ img.width = owidth;
+ img.height = oheight;
+ if (parseInt(img.getAttribute('data-yelp-original-width')) <= mediaw) {
+ img.width = parseInt(img.getAttribute('data-yelp-original-width'));
+ img.height = parseInt(img.getAttribute('data-yelp-original-height'));
+ zoom.style.display = 'none';
+ }
+ else if (zoomed) {
+ img.width = parseInt(img.getAttribute('data-yelp-original-width'));
+ img.height = parseInt(img.getAttribute('data-yelp-original-height'));
+ zoom.style.display = 'block';
+ }
+ else {
+ img.width = mediaw;
+ img.height = (parseInt(img.getAttribute('data-yelp-original-height')) *
+ img.width /
+ parseInt(img.getAttribute('data-yelp-original-width')));
+ zoom.style.display = 'block';
+ }
+ }
}
+ figure.yelp_figure_resize = figure_resize;
+ figure.yelp_figure_resize();
+
+ zoom.onclick = function (e) {
+ var zoomed = zoom.classList.contains('figure-zoomed');
+ if (zoomed)
+ zoom.classList.remove('figure-zoomed');
+ else
+ zoom.classList.add('figure-zoomed');
+ figure.yelp_figure_resize();
+ return false;
+ };
}
-$.fn.yelp_auto_resize = function () {
- var fig = $(this);
- if (fig.is('img'))
- fig = fig.parents('div.figure').eq(0);
- if (fig.data('yelp-zoom-timeout') != undefined) {
- clearInterval(fig.data('yelp-zoom-timeout'));
- fig.removeData('yelp-zoom-timeout');
+window.addEventListener('load', function() {
+ var figures = document.querySelectorAll('div.figure');
+ for (var i = 0; i < figures.length; i++) {
+ if (figures[i].querySelector('img') != null)
+ yelp_figure_init(figures[i]);
}
- var imgs = fig.find('img');
- for (var i = 0; i < imgs.length; i++) {
- var img = $(imgs[i]);
- if (img.data('yelp-load-bound') == true)
- img.unbind('load', fig.yelp_auto_resize);
- if (!imgs[i].complete) {
- img.data('yelp-load-bound', true);
- img.bind('load', fig.yelp_auto_resize);
- return false;
- }
- }
- $(window).unbind('resize', yelp_resize_imgs);
- var zoom = fig.children('div.inner').children('a.zoom');
- if (fig.find('div.contents:first').is(':hidden')) {
- zoom.hide();
+ var timeout = null;
+ var yelp_figures_resize = function () {
+ if (timeout != null)
+ return;
+ timeout = window.setTimeout(function () {
+ for (var i = 0; i < figures.length; i++) {
+ if (figures[i].querySelector('img') != null)
+ figures[i].yelp_figure_resize();
+ }
+ window.clearTimeout(timeout);
+ timeout = null;
+ }, 100);
+ };
+ window.addEventListener('resize', yelp_figures_resize, false);
+}, false);
+function yelp_media_init (media) {
+ media.removeAttribute('controls');
+ if (media.parentNode.classList.contains('links-tile-img')) {
return;
}
- for (var i = 0; i < imgs.length; i++) {
- var img = $(imgs[i]);
- if (img.data('yelp-original-width') == undefined) {
- var iwidth = parseInt(img.attr('width'));
- if (!iwidth)
- iwidth = img[0].width;
- img.data('yelp-original-width', iwidth);
- var iheight = parseInt(img.attr('height'));
- if (!iheight)
- iheight = img[0].height * (iwidth / img[0].width);
- img.data('yelp-original-height', iheight);
- }
- if (img.data('yelp-original-width') > img.parent().width()) {
- if (img.data('yelp-zoomed') != true) {
- img[0].width = img.parent().width();
- img[0].height = (parseInt(img.data('yelp-original-height')) *
- img.width() / parseInt(img.data('yelp-original-width')));
- }
- zoom.show();
- }
- else {
- img[0].width = img.data('yelp-original-width');
- img[0].height = img.data('yelp-original-height');
- zoom.hide();
+
+ media.addEventListener('click', function () {
+ if (media.paused)
+ media.play();
+ else
+ media.pause();
+ }, false);
+
+ var controls = null;
+ for (var cur = media.nextSibling; cur instanceof Element; cur = cur.nextSibling) {
+ if (cur.classList.contains('media-controls')) {
+ controls = cur;
+ break;
}
}
- /* The image scaling above can cause the window to resize if it causes
- * scrollbars to disappear or reapper. Unbind the resize handler before
- * scaling the image. Don't rebind immediately, because we'll still get
- * that resize event in an idle. Rebind on the callback instead.
- */
- var reresize = function () {
- $(window).unbind('resize', reresize);
- $(window).bind('resize', yelp_resize_imgs);
- }
- $(window).bind('resize', reresize);
- return false;
-};
-yelp_resize_imgs = function () {
- $('div.figure img').parents('div.figure').each(function () {
- var div = $(this);
- if (div.data('yelp-zoom-timeout') == undefined)
- div.data('yelp-zoom-timeout', setTimeout(function () { div.yelp_auto_resize() }, 1));
- });
- return false;
-};
-$(document).ready(function () {
- $('div.figure img').parents('div.figure').each(function () {
- var fig = $(this);
- var zoom = fig.children('div.inner').children('a.zoom');
- zoom.append($('<canvas width="10" height="10"/>'));
- yelp_paint_zoom(zoom, false);
- zoom.data('yelp-zoomed', false);
- zoom.click(function () {
- var zoomed = !zoom.data('yelp-zoomed');
- zoom.data('yelp-zoomed', zoomed);
- zoom.parent().find('img').each(function () {
- var zimg = $(this);
- zimg.data('yelp-zoomed', zoomed);
- if (zoomed) {
- zimg[0].width = zimg.data('yelp-original-width');
- zimg[0].height = zimg.data('yelp-original-height');
- } else {
- zimg[0].width = zimg.parent().width();
- zimg[0].height = (parseInt(zimg.data('yelp-original-height')) *
- zimg.width() / parseInt(zimg.data('yelp-original-width')));
- }
- yelp_paint_zoom(zoom, zoomed);
- });
- return false;
- });
- });
- yelp_resize_imgs();
- $(window).bind('resize', yelp_resize_imgs);
-});
-function yelp_init_video (element) {
- var video = $(element);
- video.removeAttr('controls');
-
- var controls = $('<div class="media-controls media-controls-' + element.nodeName + '"></div>');
- var playControl = $('<button class="media-play"></button>').attr({
- 'data-play-label': video.attr('data-play-label'),
- 'data-pause-label': video.attr('data-pause-label'),
- 'value': video.attr('data-play-label')
- });
- var playCanvas = $('<canvas width="20" height="20"></canvas>');
- playControl.append(playCanvas);
- var rangeCanvas = $('<canvas width="104" height="20"></canvas>');
- var rangeCanvasCtxt = rangeCanvas[0].getContext('2d');
- rangeCanvasCtxt.strokeStyle = yelp_color_gray_border;
- rangeCanvasCtxt.strokeWidth = 1;
- rangeCanvasCtxt.strokeRect(0.5, 0.5, 103, 19);
- var currentSpan = $('<span class="media-current">0:00</span>');
- var durationSpan = $('<span class="media-duration">-:--</span>');
- controls.append(playControl,
- $('<div class="media-range"></div>').append(rangeCanvas),
- $('<div class="media-time"></div>').append(currentSpan, durationSpan));
- video.after(controls);
-
- var playCanvasCtxt = playCanvas[0].getContext('2d');
- var paintPlayButton = function () {
- playCanvasCtxt.fillStyle = yelp_color_gray_background;
- playCanvasCtxt.clearRect(0, 0, 20, 20);
- playCanvasCtxt.beginPath();
- playCanvasCtxt.moveTo(5, 5); playCanvasCtxt.lineTo(5, 15);
- playCanvasCtxt.lineTo(15, 10); playCanvasCtxt.lineTo(5, 5);
- playCanvasCtxt.fill();
- }
- var paintPauseButton = function () {
- playCanvasCtxt.fillStyle = yelp_color_gray_background;
- playCanvasCtxt.clearRect(0, 0, 20, 20);
- playCanvasCtxt.beginPath();
- playCanvasCtxt.moveTo(5, 5); playCanvasCtxt.lineTo(9, 5);
- playCanvasCtxt.lineTo(9, 15); playCanvasCtxt.lineTo(5, 15);
- playCanvasCtxt.lineTo(5, 5); playCanvasCtxt.fill();
- playCanvasCtxt.beginPath();
- playCanvasCtxt.moveTo(11, 5); playCanvasCtxt.lineTo(15, 5);
- playCanvasCtxt.lineTo(15, 15); playCanvasCtxt.lineTo(11, 15);
- playCanvasCtxt.lineTo(11, 5); playCanvasCtxt.fill();
+ if (controls == null) {
+ media.setAttribute('controls', 'controls');
+ return;
}
- paintPlayButton();
-
- var video_el = video[0];
- var mediaChange = function () {
- if (video_el.ended)
- video_el.pause()
- if (video_el.paused) {
- playControl.attr('value', playControl.attr('data-play-label'));
- paintPlayButton();
+ var playbutton = controls.querySelector('button.media-play');
+ playbutton.addEventListener('click', function () {
+ if (media.paused || media.ended)
+ media.play();
+ else
+ media.pause();
+ }, false);
+
+ var mediachange = function () {
+ if (media.ended)
+ media.pause()
+ if (media.paused) {
+ playbutton.setAttribute('value', playbutton.getAttribute('data-play-label'));
+ playbutton.classList.remove('media-play-playing');
}
else {
- playControl.attr('value', playControl.attr('data-pause-label'));
- paintPauseButton();
+ playbutton.setAttribute('value', playbutton.getAttribute('data-pause-label'));
+ playbutton.classList.add('media-play-playing');
}
}
- video_el.addEventListener('play', mediaChange, false);
- video_el.addEventListener('pause', mediaChange, false);
- video_el.addEventListener('ended', mediaChange, false);
+ media.addEventListener('play', mediachange, false);
+ media.addEventListener('pause', mediachange, false);
+ media.addEventListener('ended', mediachange, false);
- var playClick = function () {
- if (video_el.paused || video_el.ended)
- video_el.play();
- else
- video_el.pause();
+ var mediarange = controls.querySelector('input.media-range');
+ mediarange.addEventListener('input', function () {
+ var pct = this.value;
+ if (pct < 0)
+ pct = 0;
+ if (pct > 100)
+ pct = 100;
+ media.currentTime = (pct / 100.0) * media.duration;
+ }, false);
+ var curspan = controls.querySelector('span.media-current');
+ var durspan = controls.querySelector('span.media-duration');
+ var durationUpdate = function () {
+ if (!isNaN(media.duration)) {
+ mins = parseInt(media.duration / 60);
+ secs = parseInt(media.duration - (60 * mins));
+ durspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs);
+ }
};
- playControl.click(playClick);
-
- var ttmlDiv = video.parent().children('div.media-ttml');
- var ttmlNodes = ttmlDiv.find('.media-ttml-node');
+ media.addEventListener('durationchange', durationUpdate, false);
+
+ var ttmlDiv = null;
+ var ttmlNodes = null;
+ for (var i = 0; i < media.parentNode.children.length; i++) {
+ var child = media.parentNode.children[i];
+ if (child.classList.contains('media-ttml'))
+ ttmlDiv = child;
+ }
+ if (ttmlDiv != null) {
+ ttmlNodes = ttmlDiv.querySelectorAll('.media-ttml-node');
+ }
var timeUpdate = function () {
- var pct = (element.currentTime / element.duration) * 100;
- rangeCanvasCtxt.fillStyle = yelp_color_gray_border;
- rangeCanvasCtxt.clearRect(2, 2, 100, 16);
- rangeCanvasCtxt.fillRect(2, 2, pct, 16);
- var mins = parseInt(element.currentTime / 60);
- var secs = parseInt(element.currentTime - (60 * mins))
- currentSpan.text(mins + (secs < 10 ? ':0' : ':') + secs);
- ttmlNodes.each(function () {
- var ttml = this;
- if (element.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) &&
- (!ttml.hasAttribute('data-ttml-end') ||
- element.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) {
- if (ttml.tagName == 'span' || ttml.tagName == 'SPAN')
- ttml.style.display = 'inline';
- else
- ttml.style.display = 'block';
- }
- else {
- ttml.style.display = 'none';
+ var pct = (media.currentTime / media.duration) * 100;
+ mediarange.value = pct;
+ var mins = parseInt(media.currentTime / 60);
+ var secs = parseInt(media.currentTime - (60 * mins))
+ curspan.textContent = (mins + (secs < 10 ? ':0' : ':') + secs);
+ if (ttmlNodes != null) {
+ for (var i = 0; i < ttmlNodes.length; i++) {
+ var ttml = ttmlNodes[i];
+ if (media.currentTime >= parseFloat(ttml.getAttribute('data-ttml-begin')) &&
+ (!ttml.hasAttribute('data-ttml-end') ||
+ media.currentTime < parseFloat(ttml.getAttribute('data-ttml-end')) )) {
+ if (ttml.tagName == 'span' || ttml.tagName == 'SPAN')
+ ttml.style.display = 'inline';
+ else
+ ttml.style.display = 'block';
+ }
+ else {
+ ttml.style.display = 'none';
+ }
}
- });
- };
- element.addEventListener('timeupdate', timeUpdate, false);
- var durationUpdate = function () {
- if (!isNaN(element.duration)) {
- mins = parseInt(element.duration / 60);
- secs = parseInt(element.duration - (60 * mins));
- durationSpan.text(mins + (secs < 10 ? ':0' : ':') + secs);
}
};
- element.addEventListener('durationchange', durationUpdate, false);
-
- rangeCanvas.click(function (event) {
- var pct = event.clientX - Math.floor(rangeCanvas.offset().left);
- if (pct < 0)
- pct = 0;
- if (pct > 100)
- pct = 100;
- element.currentTime = (pct / 100.0) * element.duration;
- });
+ media.addEventListener('timeupdate', timeUpdate, false);
};
-$(document).ready(function () {
- $('video, audio').each(function () { yelp_init_video(this) });;
-});
+document.addEventListener('DOMContentLoaded', function() {
+ var matches = document.querySelectorAll('video, audio');
+ for (var i = 0; i < matches.length; i++) {
+ yelp_media_init(matches[i]);
+ }
+}, false);
]]></xsl:text>
</xsl:template>
<!--**==========================================================================
html.js.syntax
-Output JavaScript for syntax highlighting
-:Revision: version="1.0" date="2011-04-16" status="final"
+Output #{script} elements for syntax highlighting.
+:Revision: version="3.22" date="2016-01-03" status="final"
$node: The node to create JavaScript for.
-This template outputs JavaScript that does syntax highlighting. JavaScript
-@{html.syntax.highlight} is #{true}. Note that this content just initializes
-the syntax highlighting. The real work is done by #{jquery.syntax.js}, which
-is included by *{html.js.syntax}.
+This template outputs HTML #{script} elements to enable syntax highlighting.
+It only outputs if @{html.syntax.highlight} is #{true}. It outputs one #{script}
+element to load in #{highlight.js}, and another to initialize #{highlight.js}
+on all #{code} elements with #{"syntax"} in the class value.
-->
<xsl:template name="html.js.syntax">
<xsl:param name="node" select="."/>
<xsl:if test="$html.syntax.highlight">
-<xsl:text><![CDATA[
-$(document).ready( function () { jQuery.syntax({root: ']]></xsl:text>
-<xsl:value-of select="$html.js.root"/><xsl:text><![CDATA[', blockLayout: 'yelp',
-theme: false, linkify: false}); });
-]]></xsl:text>
+ <script type="text/javascript" src="{$html.js.root}highlight.pack.js"></script>
+ <script><![CDATA[
+document.addEventListener('DOMContentLoaded', function() {
+ var matches = document.querySelectorAll('code.syntax')
+ for (var i = 0; i < matches.length; i++) {
+ hljs.highlightBlock(matches[i]);
+ }
+}, false);]]></script>
</xsl:if>
</xsl:template>
@@ -2316,79 +2640,79 @@ if ${dir} is non-empty.
<!--**==========================================================================
html.syntax.class
Output HTML class values for syntax highlighting.
-:Revision:version="3.12" date="2013-11-02" status="final"
+:Revision:version="3.22" date="2016-01-03" status="final"
$node: The source element whose content will be syntax highlighted.
-$mime: A MIME type identifying the content, as from a Mallard #{mime} attribute.
-$language: A name identifying the content as from a DocBook #{language} attribute.
-This template looks at ${mime} and ${language} and determines if there is a
-suitable syntax highlighting brush available. If so, it outputs a string that
-should be placed in the #{class} attribute of a #{pre} element by the calling
-template.
+This template calls %{html.syntax.class.mode} on ${node}. If the result of that
+mode is a suitable language identifier, it outputs appropriate CSS class names
+to enable syntax highlighting. The output should be placed in the #{class}
+attribute of a #{pre} or similar output element by the calling template.
+
+Importing stylesheets should implement %{html.syntax.class.mode} for any source
+elements that may be syntax highlighted, then call this template when building
+the #{class} attribute for output elements.
-->
<xsl:template name="html.syntax.class">
<xsl:param name="node" select="."/>
- <xsl:param name="mime" select="$node/@mime"/>
- <xsl:param name="language" select="$node/@language"/>
- <xsl:choose>
- <xsl:when test="$mime = 'application/x-shellscript' or $language = 'bash'">
- <xsl:text>syntax brush-bash-script</xsl:text>
- </xsl:when>
- <xsl:when test="$mime = 'text/x-csrc' or $mime = 'text/x-chdr' or
- $mime = 'text/x-c++hdr' or $mime = 'text/x-c++src' or
- $mime = 'text/x-objcsrc' or $language = 'c' or
- $language = 'cpp' or $language = 'objc'">
- <xsl:text>syntax brush-clang</xsl:text>
- </xsl:when>
- <xsl:when test="$mime = 'text/x-csharp' or $language = 'csharp'">
- <xsl:text>syntax brush-csharp</xsl:text>
- </xsl:when>
- <xsl:when test="$mime = 'text/css' or $language = 'css'">
- <xsl:text>syntax brush-css</xsl:text>
- </xsl:when>
- <xsl:when test="$mime = 'text/x-patch' or $language = 'diff'">
- <xsl:text>syntax brush-diff</xsl:text>
- </xsl:when>
- <xsl:when test="$mime = 'text/html' or $mime = 'application/xml' or
- substring($mime, string-length($mime) - 3) = '+xml' or
- $language = 'html' or $language = 'xml'">
- <xsl:text>syntax brush-html</xsl:text>
- </xsl:when>
- <xsl:when test="$mime = 'text/x-java' or $language = 'java'">
- <xsl:text>syntax brush-java</xsl:text>
- </xsl:when>
- <xsl:when test="$mime = 'application/javascript' or $language = 'javascript'">
- <xsl:text>syntax brush-javascript</xsl:text>
- </xsl:when>
- <xsl:when test="$mime = 'text/x-scheme' or $mime = 'text/x-emacs-lisp' or
- $language = 'lisp'">
- <xsl:text>syntax brush-lisp</xsl:text>
- </xsl:when>
- <xsl:when test="$mime = 'text/x-lua' or $language = 'lua'">
- <xsl:text>syntax brush-lua</xsl:text>
- </xsl:when>
- <xsl:when test="$mime = 'text/x-pascal' or $language = 'pascal'">
- <xsl:text>syntax brush-pascal</xsl:text>
- </xsl:when>
- <xsl:when test="$mime = 'application/x-perl' or $language = 'perl'">
- <xsl:text>syntax brush-perl5</xsl:text>
- </xsl:when>
- <xsl:when test="$mime = 'application/x-php' or $language = 'php'">
- <xsl:text>syntax brush-php-script</xsl:text>
- </xsl:when>
- <xsl:when test="$mime = 'text/x-python' or $language = 'python'">
- <xsl:text>syntax brush-python</xsl:text>
- </xsl:when>
- <xsl:when test="$mime = 'application/x-ruby' or $language = 'ruby'">
- <xsl:text>syntax brush-ruby</xsl:text>
- </xsl:when>
- <xsl:when test="$mime = 'text/x-sql' or $language = 'sql'">
- <xsl:text>syntax brush-sql</xsl:text>
- </xsl:when>
- <xsl:when test="$mime = 'application/x-yaml' or $language = 'yaml'">
- <xsl:text>syntax brush-yaml</xsl:text>
- </xsl:when>
- </xsl:choose>
+ <xsl:variable name="class">
+ <xsl:apply-templates mode="html.syntax.class.mode" select="$node"/>
+ </xsl:variable>
+ <xsl:if test="normalize-space($class) != ''">
+ <xsl:text>syntax language-</xsl:text>
+ <xsl:value-of select="$class"/>
+ </xsl:if>
+</xsl:template>
+
+
+<!--%%==========================================================================
+html.syntax.class.mode
+Get the syntax highlighting language for a source-specific element.
+:Revision:version="3.22" date="2016-01-03" status="final"
+
+This mode is called by *{html.syntax.class} on source elements that may have
+syntax highlighted. This template should be implemented by importing stylesheets.
+It should return a simple language identifier.
+-->
+<xsl:template mode="html.syntax.class.mode" match="*"/>
+
+
+<!--**==========================================================================
+html.media.controls
+Output media controls for a video or audio object.
+:Revision:version="3.22" date="2016-02-12" status="final"
+
+This template outputs HTML containing controls for a media play for audio or
+video HTML elements. To work with the built-in JavaScript binding code, it
+should be placed immediately after the #{audio} or #{video} element.
+-->
+<xsl:template name="html.media.controls">
+ <xsl:param name="type" select="'video'"/>
+ <span class="media-controls media-controls-{$type}">
+ <button class="media-play">
+ <xsl:attribute name="data-play-label">
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="'Play'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="data-pause-label">
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="'Pause'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="value">
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="'Play'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="icons.svg.media.play"/>
+ <xsl:call-template name="icons.svg.media.pause"/>
+ </button>
+ <input type="range" class="media-range" value="0"/>
+ <span class="media-time">
+ <span class="media-current">0:00</span>
+ <span class="media-duration">-:--</span>
+ </span>
+ </span>
</xsl:template>
</xsl:stylesheet>
diff --git a/xslt/common/icons.xsl b/xslt/common/icons.xsl
index 983e9eef..e625eac4 100644
--- a/xslt/common/icons.xsl
+++ b/xslt/common/icons.xsl
@@ -15,98 +15,262 @@ along with this program; see the file COPYING.LGPL. If not, see <http://www.gnu
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:svg="http://www.w3.org/2000/svg"
version="1.0">
<!--!!==========================================================================
Icons
Specify common named icons to style output.
-:Requires: l10n
-:Revision:version="1.0" date="2010-05-25" status="final"
+:Revision:version="3.next" date="2015-09-16" status="review"
This stylesheet provides a common interface to specify icons for transformations
to presentation-oreinted formats. This allows similar output for different
types of input documents.
+
+Many of the icons are output as SVG elements that can be embedded directly
+into an HTML document. These icons use class names like #{yelp-svg-fill} and
+#{yelp-svg-stroke}, allowing you to style them with colors from the !{colors}
+module.
+
+Some SVG icons are read from separate source SVG files. When this is done, the
+%{icons.svg.mode} mode is applied to reduce the SVG to the minimal form needed
+for proper presentation.
-->
-<!--@@==========================================================================
-icons.base_url
-The default URL prefix for all icons.
-:Revision:version="1.0" date="2010-01-26" status="final"
+<!--%%==========================================================================
+icons.svg.mode
+Reduce SVG icons to elements needed for presentation.
+:Revision:version="3.next" date="2016-09-16" status="review"
-This parameter provides a default URL prefix. All icon locations in this
-stylesheet reference files directly under this URL prefix by default. If
-you override the individual icon parameters in this stylesheet, this parameter
-has no effect. This parameter should end with a trailing slash.
+This mode matches SVG elements and outputs only the SVG needed for presentation.
+It strips out metadata and other elements and attributes used primarily by
+authoring tools. It also uses the @{html.svg.namespace} parameter to output SVG
+with or without namespace information, compatible with the dual HTML/XHTML
+output of these stylesheets.
-->
-<xsl:param name="icons.base_url" select="''"/>
+<xsl:template mode="icons.svg.mode" match="svg:title"/>
+<xsl:template mode="icons.svg.mode" match="svg:metadata"/>
+<xsl:template mode="icons.svg.mode" match="svg:*">
+ <xsl:element name="{local-name(.)}" namespace="{$html.svg.namespace}">
+ <xsl:for-each select="@*">
+ <xsl:choose>
+ <xsl:when test="local-name(.) = 'id'"/>
+ <xsl:when test="namespace-uri(.) = 'http://www.inkscape.org/namespaces/inkscape'"/>
+ <xsl:when test="namespace-uri(.) = 'http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd'"/>
+ <xsl:otherwise>
+ <xsl:copy-of select="."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ <xsl:apply-templates mode="icons.svg.mode" select="node()"/>
+ </xsl:element>
+</xsl:template>
+<xsl:template mode="icons.svg.mode" match="text()">
+ <xsl:copy-of select="."/>
+</xsl:template>
+<xsl:template mode="icons.svg.mode" match="*"/>
+
+
+<!--**==========================================================================
+icons.svg.note
+Output an #{svg} element for a note icon.
+:Revision: version="3.next" date="2016-09-15" status="review"
+$style: The style of the note.
+
+This template outputs an SVG #{svg} element with an icon suitable for notes
+and other types of admonitions. It takes a ${style} parameter specifying a
+note style. The default style is #{"note"}. This template uses the ${style}
+parameter to determine which specific template to call to output the SVG
+content.
+
+SVG icons can use CSS class names to pick up colors from the !{colors} module.
+-->
+<xsl:template name="icons.svg.note">
+ <xsl:param name="style"/>
+ <xsl:choose>
+ <xsl:when test="$style = 'advanced'">
+ <xsl:call-template name="icons.svg.note.advanced"/>
+ </xsl:when>
+ <xsl:when test="$style = 'bug'">
+ <xsl:call-template name="icons.svg.note.bug"/>
+ </xsl:when>
+ <xsl:when test="$style = 'caution'">
+ <xsl:call-template name="icons.svg.note.caution"/>
+ </xsl:when>
+ <xsl:when test="$style = 'danger'">
+ <xsl:call-template name="icons.svg.note.danger"/>
+ </xsl:when>
+ <xsl:when test="$style = 'important'">
+ <xsl:call-template name="icons.svg.note.important"/>
+ </xsl:when>
+ <xsl:when test="$style = 'package'">
+ <xsl:call-template name="icons.svg.note.package"/>
+ </xsl:when>
+ <xsl:when test="$style = 'tip'">
+ <xsl:call-template name="icons.svg.note.tip"/>
+ </xsl:when>
+ <xsl:when test="$style = 'warning'">
+ <xsl:call-template name="icons.svg.note.warning"/>
+ </xsl:when>
+ <xsl:otherwise test="$style = 'note'">
+ <xsl:call-template name="icons.svg.note.note"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+<!--**==========================================================================
+icons.svg.note.advanced
+Output an #{svg} element for an advanced note icon.
+:Revision: version="3.next" date="2016-09-15" status="review"
+
+This template outputs an SVG #{svg} element with an icon suitable for notes
+with advanced information.
+
+SVG icons can use CSS class names to pick up colors from the !{colors} module.
+By default, this icon uses the #{yelp-svg-fill} class name.
+-->
+<xsl:template name="icons.svg.note.advanced">
+ <xsl:apply-templates mode="icons.svg.mode"
+ select="document('icons/yelp-note-advanced.svg')"/>
+</xsl:template>
-<!--@@==========================================================================
-icons.size.note
-The size of the note icons.
-:Revision:version="1.0" date="2010-03-05" status="final"
+<!--**==========================================================================
+icons.svg.note.bug
+Output an #{svg} element for a bug note icon.
+:Revision: version="3.next" date="2016-09-15" status="review"
-This parameter specifies the size of the note icons. Use an integer giving
-the width of the image files in pixels. Icons are assumed to be square, and
-all note icons are assumed to have the same size.
+This template outputs an SVG #{svg} element with an icon suitable for notes
+about known bugs.
+
+SVG icons can use CSS class names to pick up colors from the !{colors} module.
+By default, this icon uses the #{yelp-svg-fill} class name.
-->
-<xsl:param name="icons.size.note" select="24"/>
+<xsl:template name="icons.svg.note.bug">
+ <xsl:apply-templates mode="icons.svg.mode"
+ select="document('icons/yelp-note-bug.svg')"/>
+</xsl:template>
-<!--@@==========================================================================
-icons.note
-The URL for the note icon.
-:Revision:version="1.0" date="2010-05-03" status="final"
+<!--**==========================================================================
+icons.svg.note.caution
+Output an #{svg} element for a caution note icon.
+:Revision: version="3.next" date="2016-09-15" status="review"
+
+This template outputs an SVG #{svg} element with an icon suitable for notes
+with cautionary information.
-This parameter specifies the URL for the icon used for regular notes.
+SVG icons can use CSS class names to pick up colors from the !{colors} module.
+By default, this icon uses the #{yelp-svg-fill} class name.
-->
-<xsl:param name="icons.note"
- select="concat($icons.base_url, 'yelp-note.png')"/>
+<xsl:template name="icons.svg.note.caution">
+ <xsl:apply-templates mode="icons.svg.mode"
+ select="document('icons/yelp-note-warning.svg')"/>
+</xsl:template>
-<!--@@==========================================================================
-icons.note.bug
-The URL for the bug note icon.
-:Revision:version="1.0" date="2010-05-03" status="final"
+<!--**==========================================================================
+icons.svg.note.danger
+Output an #{svg} element for a danger note icon.
+:Revision: version="3.next" date="2016-09-15" status="review"
+
+This template outputs an SVG #{svg} element with an icon suitable for notes
+about dangerous situations.
-This parameter specifies the URL for the icon used for bug notes.
+SVG icons can use CSS class names to pick up colors from the !{colors} module.
+By default, this icon uses the #{yelp-svg-fill} class name.
-->
-<xsl:param name="icons.note.bug"
- select="concat($icons.base_url, 'yelp-note-bug.png')"/>
+<xsl:template name="icons.svg.note.danger">
+ <xsl:apply-templates mode="icons.svg.mode"
+ select="document('icons/yelp-note-warning.svg')"/>
+</xsl:template>
-<!--@@==========================================================================
-icons.note.important
-The URL for the important note icon.
-:Revision:version="1.0" date="2010-05-03" status="final"
+<!--**==========================================================================
+icons.svg.note.important
+Output an #{svg} element for an important note icon.
+:Revision: version="3.next" date="2016-09-15" status="review"
+
+This template outputs an SVG #{svg} element with an icon suitable for notes
+with important information.
-This parameter specifies the URL for the icon used for important notes.
+SVG icons can use CSS class names to pick up colors from the !{colors} module.
+By default, this icon uses the #{yelp-svg-fill} class name.
-->
-<xsl:param name="icons.note.important"
- select="concat($icons.base_url, 'yelp-note-important.png')"/>
+<xsl:template name="icons.svg.note.important">
+ <xsl:apply-templates mode="icons.svg.mode"
+ select="document('icons/yelp-note-important.svg')"/>
+</xsl:template>
-<!--@@==========================================================================
-icons.note.tip
-The URL for the tip note icon.
-:Revision:version="1.0" date="2010-05-03" status="final"
+<!--**==========================================================================
+icons.svg.note.note
+Output an #{svg} element for a note icon.
+:Revision: version="3.next" date="2016-09-15" status="review"
-This parameter specifies the URL for the icon used for tip notes.
+This template outputs an SVG #{svg} element with an icon suitable for notes
+with general information.
+
+SVG icons can use CSS class names to pick up colors from the !{colors} module.
+By default, this icon uses the #{yelp-svg-fill} class name.
-->
-<xsl:param name="icons.note.tip"
- select="concat($icons.base_url, 'yelp-note-tip.png')"/>
+<xsl:template name="icons.svg.note.note">
+ <xsl:apply-templates mode="icons.svg.mode"
+ select="document('icons/yelp-note-note.svg')"/>
+</xsl:template>
-<!--@@==========================================================================
-icons.note.warning
-The URL for the warning note icon.
-:Revision:version="1.0" date="2010-05-03" status="final"
+<!--**==========================================================================
+icons.svg.note.package
+Output an #{svg} element for a package note icon.
+:Revision: version="3.next" date="2016-09-15" status="review"
+
+This template outputs an SVG #{svg} element with an icon suitable for notes
+about packages the user may need to install.
+
+SVG icons can use CSS class names to pick up colors from the !{colors} module.
+By default, this icon uses the #{yelp-svg-fill} class name.
+-->
+<xsl:template name="icons.svg.note.package">
+ <xsl:apply-templates mode="icons.svg.mode"
+ select="document('icons/yelp-note-package.svg')"/>
+</xsl:template>
+
+
+<!--**==========================================================================
+icons.svg.note.tip
+Output an #{svg} element for a tip note icon.
+:Revision: version="3.next" date="2016-09-15" status="review"
+
+This template outputs an SVG #{svg} element with an icon suitable for notes
+with tips.
-This parameter specifies the URL for the icon used for warning notes.
+SVG icons can use CSS class names to pick up colors from the !{colors} module.
+By default, this icon uses the #{yelp-svg-fill} class name.
-->
-<xsl:param name="icons.note.warning"
- select="concat($icons.base_url, 'yelp-note-warning.png')"/>
+<xsl:template name="icons.svg.note.tip">
+ <xsl:apply-templates mode="icons.svg.mode"
+ select="document('icons/yelp-note-tip.svg')"/>
+</xsl:template>
+
+
+<!--**==========================================================================
+icons.svg.note.warning
+Output an #{svg} element for a warning note icon.
+:Revision: version="3.next" date="2016-09-15" status="review"
+
+This template outputs an SVG #{svg} element with an icon suitable for notes
+with warnings.
+
+SVG icons can use CSS class names to pick up colors from the !{colors} module.
+By default, this icon uses the #{yelp-svg-fill} class name.
+-->
+<xsl:template name="icons.svg.note.warning">
+ <xsl:apply-templates mode="icons.svg.mode"
+ select="document('icons/yelp-note-warning.svg')"/>
+</xsl:template>
<!--@@==========================================================================
@@ -125,4 +289,86 @@ This parameters still affects the size of that character.
<xsl:param name="icons.size.quote" select="48"/>
+
+
+<!--**==========================================================================
+icons.svg.figure.zoom.in
+Output an #{svg} element for a figure zoom-in icon.
+:Revision: version="3.next" date="2016-02-11" status="review"
+
+This template outputs an SVG #{svg} element with the zoom-in icon for figures.
+Figures automatically scale images down. This icon shows them at their original
+size.
+
+SVG icons can use CSS class names to pick up colors from the !{colors} module.
+By default, this icon uses the #{yelp-svg-stroke} and #{yelp-svg-fill} class
+names.
+-->
+<xsl:template name="icons.svg.figure.zoom.in">
+ <svg:svg width="10" height="10" class="figure-zoom-in">
+ <svg:rect x="0.5" y="0.5" width="9" height="9"
+ class="yelp-svg-stroke" stroke-width="1" fill="none"/>
+ <svg:rect x="0" y="5" width="5" height="5"
+ class="yelp-svg-fill"/>
+ </svg:svg>
+</xsl:template>
+
+
+<!--**==========================================================================
+icons.svg.figure.zoom.out
+Output an #{svg} element for a figure zoom-out icon.
+:Revision: version="3.next" date="2016-02-11" status="review"
+
+This template outputs an SVG #{svg} element with the zoom-in icon for figures.
+Figures automatically scale images down. This icon scales them back down after
+they have been zoomed.
+
+SVG icons can use CSS class names to pick up colors from the !{colors} module.
+By default, this icon uses the #{yelp-svg-stroke} and #{yelp-svg-fill} class
+names.
+-->
+<xsl:template name="icons.svg.figure.zoom.out">
+ <svg:svg width="10" height="10" class="figure-zoom-out">
+ <svg:rect x="0.5" y="0.5" width="9" height="9"
+ class="yelp-svg-stroke" stroke-width="1" fill="none"/>
+ <svg:polygon points="0,0 10,0 10,10 5,10 5,5 10,5 0,5"
+ class="yelp-svg-fill"/>
+ </svg:svg>
+</xsl:template>
+
+
+<!--**==========================================================================
+icons.svg.media.play
+Output an #{svg} element for a figure zoom-out icon.
+:Revision: version="3.next" date="2016-02-12" status="review"
+
+This template outputs an SVG #{svg} element with a play icon for media controls.
+
+SVG icons can use CSS class names to pick up colors from the !{colors} module.
+By default, this icon uses the #{yelp-svg-fill} class name.
+-->
+<xsl:template name="icons.svg.media.play">
+ <svg:svg width="20" height="20" class="media-play">
+ <svg:polygon points="5,4 5,16 15,10" class="yelp-svg-fill"/>
+ </svg:svg>
+</xsl:template>
+
+
+<!--**==========================================================================
+icons.svg.media.pause
+Output an #{svg} element for a figure zoom-out icon.
+:Revision: version="3.next" date="2016-02-12" status="review"
+
+This template outputs an SVG #{svg} element with a pause icon for media controls.
+
+SVG icons can use CSS class names to pick up colors from the !{colors} module.
+By default, this icon uses the #{yelp-svg-fill} class name.
+-->
+<xsl:template name="icons.svg.media.pause">
+ <svg:svg width="20" height="20" class="media-pause">
+ <svg:rect x="4" y="4" width="4" height="12" class="yelp-svg-fill"/>
+ <svg:rect x="12" y="4" width="4" height="12" class="yelp-svg-fill"/>
+ </svg:svg>
+</xsl:template>
+
</xsl:stylesheet>
diff --git a/xslt/common/icons/Makefile.am b/xslt/common/icons/Makefile.am
new file mode 100644
index 00000000..02cdcd9e
--- /dev/null
+++ b/xslt/common/icons/Makefile.am
@@ -0,0 +1,12 @@
+xsldir=$(datadir)/yelp-xsl/xslt/common/icons
+
+xsl_DATA = \
+ yelp-note-advanced.svg \
+ yelp-note-bug.svg \
+ yelp-note-important.svg \
+ yelp-note-note.svg \
+ yelp-note-package.svg \
+ yelp-note-tip.svg \
+ yelp-note-warning.svg
+
+EXTRA_DIST=$(xsl_DATA)
diff --git a/xslt/common/icons/yelp-note-advanced.svg b/xslt/common/icons/yelp-note-advanced.svg
new file mode 100644
index 00000000..5620fbf9
--- /dev/null
+++ b/xslt/common/icons/yelp-note-advanced.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" version="1.1">
+ <g>
+ <path class="yelp-svg-fill" d="m5.4473 12.572c-2.039 0.957-3.4473 3.019-3.4473 5.428v4h20v-4c0-2.406-1.406-4.466-3.441-5.424a8 8 0 0 1 -6.559 3.424 8 8 0 0 1 -6.5527 -3.428z"/>
+ <path class="yelp-svg-fill" d="m12 3a5 5 0 0 0 -5 5 5 5 0 0 0 5 5 5 5 0 0 0 5 -5 5 5 0 0 0 -5 -5zm0 3a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2z"/>
+ <path class="yelp-svg-fill" d="m15.312 6 3.688 1v2l-3.4688 1z"/>
+ <path class="yelp-svg-fill" d="m14 11.312-1 3.688h-2l-1-3.469z"/>
+ <path class="yelp-svg-fill" d="m10 4.6875 1-3.6875h2l1 3.4688z"/>
+ <path class="yelp-svg-fill" d="m8.6875 10-3.6875-1v-2l3.4688-1z"/>
+ <path class="yelp-svg-fill" d="m12.928 4.2435 3.3146-1.9003 1.4142 1.4142-1.7457 3.1599z"/>
+ <path class="yelp-svg-fill" d="m15.757 8.9281 1.9003 3.3146-1.4142 1.4142-3.1599-1.7457z"/>
+ <path class="yelp-svg-fill" d="m8.2435 7.0719-1.9004-3.3145 1.4143-1.4143 3.1596 1.7457z"/>
+ <path class="yelp-svg-fill" d="m11.072 11.757-3.3146 1.9-1.4143-1.414 1.7457-3.1602z"/>
+ </g>
+</svg>
diff --git a/xslt/common/icons/yelp-note-bug.svg b/xslt/common/icons/yelp-note-bug.svg
new file mode 100644
index 00000000..56ddc85c
--- /dev/null
+++ b/xslt/common/icons/yelp-note-bug.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" version="1.1">
+ <g>
+ <path class="yelp-svg-fill" d="m7 8v6.697 0.303h0.0078a5 6.3027 0 0 0 3.9922 5.867v-6.867h2v6.871a5 6.3027 0 0 0 3.988 -5.871h0.012v-0.303-6.697h-10z"/>
+ <path class="yelp-svg-fill" d="m12 3a4 4 0 0 0 -4 4h8a4 4 0 0 0 -4 -4z"/>
+ <path class="yelp-svg-fill" d="m16 12h6v1h-6z"/>
+ <path class="yelp-svg-fill" d="m9.2045 16.361h6v1h-6z" transform="rotate(-30)"/>
+ <path class="yelp-svg-fill" d="m21.704 4.2894h6v1h-6z" transform="rotate(30)"/>
+ <path class="yelp-svg-fill" d="m2 12h6v1h-6z"/>
+ <path class="yelp-svg-fill" d="m5.5801 4.3612h6v1h-6z" transform="rotate(30)"/>
+ <path class="yelp-svg-fill" d="m-6.9199 16.289h6v1h-6z" transform="rotate(-30)"/>
+ </g>
+</svg>
diff --git a/xslt/common/icons/yelp-note-important.svg b/xslt/common/icons/yelp-note-important.svg
new file mode 100644
index 00000000..3b508240
--- /dev/null
+++ b/xslt/common/icons/yelp-note-important.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" version="1.1">
+ <path class="yelp-svg-fill" d="m12.5 2a9.5 9.5 0 0 0 -9.5 9.5 9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5 -9.5 9.5 9.5 0 0 0 -9.5 -9.5zm0 3a1.5 1.5 0 0 1 1.5 1.5v6a1.5 1.5 0 0 1 -1.5 1.5 1.5 1.5 0 0 1 -1.5 -1.5v-6a1.5 1.5 0 0 1 1.5 -1.5zm0 10.5a1.5 1.5 0 0 1 1.5 1.5 1.5 1.5 0 0 1 -1.5 1.5 1.5 1.5 0 0 1 -1.5 -1.5 1.5 1.5 0 0 1 1.5 -1.5z"/>
+</svg>
diff --git a/xslt/common/icons/yelp-note-note.svg b/xslt/common/icons/yelp-note-note.svg
new file mode 100644
index 00000000..cc0460b0
--- /dev/null
+++ b/xslt/common/icons/yelp-note-note.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" version="1.1">
+ <g>
+ <path class="yelp-svg-fill" d="m4 3h16c0.554 0 1 0.446 1 1v11h-6v6h-11c-0.554 0-1-0.446-1-1v-16c0-0.554 0.446-1 1-1z"/>
+ <path class="yelp-svg-fill" d="m17 16h4l-5 5v-4c0-0.554 0.446-1 1-1z"/>
+ </g>
+</svg>
diff --git a/xslt/common/icons/yelp-note-package.svg b/xslt/common/icons/yelp-note-package.svg
new file mode 100644
index 00000000..9fb4884a
--- /dev/null
+++ b/xslt/common/icons/yelp-note-package.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" version="1.1">
+ <g>
+ <path class="yelp-svg-fill" d="m3 10v7.429l9 5.571 9-5.571v-7.429l-9 5z"/>
+ <path class="yelp-svg-fill" d="m3 7v2l9 5 9-5v-2l-9-5z"/>
+ </g>
+</svg>
diff --git a/xslt/common/icons/yelp-note-tip.svg b/xslt/common/icons/yelp-note-tip.svg
new file mode 100644
index 00000000..3d82014c
--- /dev/null
+++ b/xslt/common/icons/yelp-note-tip.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" version="1.1">
+ <g>
+ <path class="yelp-svg-fill" style="color-rendering:auto;text-decoration-color:#000000;color:#000000;isolation:auto;mix-blend-mode:normal;shape-rendering:auto;solid-color:#000000;block-progression:tb;text-decoration-line:none;text-decoration-style:solid;image-rendering:auto;white-space:normal;text-indent:0;text-transform:none" d="m12 2c-3.8541 0-7 3.1459-7 7 0 1.823 0.4945 3.139 1.1641 4.133 0.6695 0.994 1.4328 1.671 2.039 2.471 0.0882 0.116 0.1749 0.656 0.2071 1.32 0.016 0.332 0.0133 0.68 0.1894 1.119 0.0881 0.22 0.2439 0.478 0.5059 0.672 0.2619 0.194 0.6028 0.285 0.8945 0.285h4c0.583 0 1.204-0.478 1.402-0.908 0.199-0.43 0.217-0.793 0.244-1.137 0.056-0.688 0.138-1.319 0.211-1.441 0.549-0.916 1.304-2.009 1.94-3.114 0.636-1.104 1.203-2.199 1.203-3.4 0-3.8541-3.146-7-7-7zm0 2c2.773 0 5 2.2267 5 5 0 0.456-0.359 1.401-0.936 2.402-0.111 0.195-0.246 0.399-0.369 0.598h-7.8825c-0.4871-0.728-0.8125-1.519-0.8125-3 0-2.7733 2.2267-5 5-5z"/>
+ <path class="yelp-svg-fill" d="m9 20a0.5 0.5 0 0 0 -0.5 0.5 0.5 0.5 0 0 0 0.5 0.5h6a0.5 0.5 0 0 0 0.5 -0.5 0.5 0.5 0 0 0 -0.5 -0.5h-6zm0 2a0.5 0.5 0 0 0 -0.5 0.5 0.5 0.5 0 0 0 0.5 0.5h6a0.5 0.5 0 0 0 0.5 -0.5 0.5 0.5 0 0 0 -0.5 -0.5h-6z"/>
+ </g>
+</svg>
diff --git a/xslt/common/icons/yelp-note-warning.svg b/xslt/common/icons/yelp-note-warning.svg
new file mode 100644
index 00000000..e8e4cfa9
--- /dev/null
+++ b/xslt/common/icons/yelp-note-warning.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" version="1.1">
+ <path class="yelp-svg-fill" d="m11.92 3.3047a1.3872 1.3872 0 0 0 -1.129 0.6933l-8.6055 14.922a1.3872 1.3872 0 0 0 1.2012 2.08l17.226-0.008a1.3872 1.3872 0 0 0 1.201 -2.08l-8.619-14.916a1.3872 1.3872 0 0 0 -1.136 -0.6913 1.3872 1.3872 0 0 0 -0.139 0zm0.08 4.6953a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1v-6a1 1 0 0 1 1 -1zm0 9a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1z"/>
+</svg>
diff --git a/xslt/common/l10n-numbers.xsl b/xslt/common/l10n-numbers.xsl
index 884cac4b..8d7b394d 100644
--- a/xslt/common/l10n-numbers.xsl
+++ b/xslt/common/l10n-numbers.xsl
@@ -298,7 +298,7 @@ See #{http://en.wikipedia.org/wiki/Greek_numerals}.
<xsl:otherwise>
<xsl:call-template name="l10n.number.ionic.private">
<xsl:with-param name="value" select="$value"/>
- <xsl:with-param name="format" select="'ionic-lower'"/>
+ <xsl:with-param name="format" select="$format"/>
<xsl:with-param name="level" select="1"/>
</xsl:call-template>
<xsl:text>´</xsl:text>
@@ -354,9 +354,6 @@ See #{http://en.wikipedia.org/wiki/Greek_numerals}.
<xsl:when test="not($stigma) and $digit = 6 and $level = 1">
<xsl:text>ΣΤ</xsl:text>
</xsl:when>
- <xsl:when test="not($stigma) and $digit = 6 and $level = 1">
- <xsl:text>,Σ,Τ</xsl:text>
- </xsl:when>
<xsl:when test="$level = 1 or $level = 4">
<xsl:if test="$level = 4">
<xsl:text>,</xsl:text>
diff --git a/xslt/dita/html/dita2html-block.xsl b/xslt/dita/html/dita2html-block.xsl
index aa432444..f639e82f 100644
--- a/xslt/dita/html/dita2html-block.xsl
+++ b/xslt/dita/html/dita2html-block.xsl
@@ -115,7 +115,14 @@ FIXME
<xsl:with-param name="node" select="$node"/>
<xsl:with-param name="class" select="$class"/>
</xsl:call-template>
- <pre class="contents">
+ <pre class="contents"><code>
+ <xsl:if test="$html.syntax.highlight">
+ <xsl:attribute name="class">
+ <xsl:call-template name="html.syntax.class">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ </xsl:if>
<!-- Strip off a leading newline -->
<xsl:if test="$children[1]/self::text()">
<xsl:choose>
@@ -127,9 +134,9 @@ FIXME
</xsl:otherwise>
</xsl:choose>
</xsl:if>
- <xsl:apply-templates mode="dita2html.topic.mdoe"
+ <xsl:apply-templates mode="dita2html.topic.mode"
select="$children[not(position() = 1 and self::text())]"/>
- </pre>
+ </code></pre>
</div>
</xsl:template>
@@ -155,6 +162,214 @@ FIXME
</xsl:call-template>
</xsl:template>
+<xsl:template mode="html.syntax.class.mode" match="&topic_codeblock;">
+ <xsl:param name="language" select="translate(@outputclass,
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYX',
+ 'abcdefghijklmnopqrstuvwxyz')"/>
+ <xsl:choose>
+ <!-- ActionScript -->
+ <xsl:when test="$language = 'actionscript'">
+ <xsl:text>actionscript</xsl:text>
+ </xsl:when>
+ <!-- Apache -->
+ <xsl:when test="$language = 'apache'">
+ <xsl:text>apache</xsl:text>
+ </xsl:when>
+ <!-- AsciiDoc -->
+ <xsl:when test="$language = 'asciidoc' or $language = 'adoc'">
+ <xsl:text>asciidoc</xsl:text>
+ </xsl:when>
+ <!-- Bash -->
+ <xsl:when test="$language = 'sh' or $language = 'bash' or
+ $language = 'csh' or $language = 'bourne'">
+ <xsl:text>bash</xsl:text>
+ </xsl:when>
+ <!-- C -->
+ <xsl:when test="$language = 'c'">
+ <xsl:text>c</xsl:text>
+ </xsl:when>
+ <!-- C# -->
+ <xsl:when test="$language = 'cs' or $language = 'csharp'">
+ <xsl:text>cs</xsl:text>
+ </xsl:when>
+ <!-- C++ -->
+ <xsl:when test="$language = 'cpp' or $language = 'c++'">
+ <xsl:text>cpp</xsl:text>
+ </xsl:when>
+ <!-- Clojure -->
+ <xsl:when test="$language = 'clojure' or $language = 'clj'">
+ <xsl:text>clojure</xsl:text>
+ </xsl:when>
+ <!-- CMake -->
+ <xsl:when test="$language = 'cmake'">
+ <xsl:text>cmake</xsl:text>
+ </xsl:when>
+ <!-- CSS -->
+ <xsl:when test="$language = 'css' or $language = 'css21'">
+ <xsl:text>css</xsl:text>
+ </xsl:when>
+ <!-- D -->
+ <xsl:when test="$language = 'd'">
+ <xsl:text>d</xsl:text>
+ </xsl:when>
+ <!-- Diff -->
+ <xsl:when test="$language = 'diff' or $language = 'patch'">
+ <xsl:text>diff</xsl:text>
+ </xsl:when>
+ <!-- Django -->
+ <xsl:when test="$language = 'django'">
+ <xsl:text>django</xsl:text>
+ </xsl:when>
+ <!-- Dockerfile -->
+ <xsl:when test="$language = 'dockerfile'">
+ <xsl:text>dockerfile</xsl:text>
+ </xsl:when>
+ <!-- DOS -->
+ <xsl:when test="$language = 'dos'">
+ <xsl:text>dos</xsl:text>
+ </xsl:when>
+ <!-- Embedded Ruby -->
+ <xsl:when test="$language = 'erb'">
+ <xsl:text>erb</xsl:text>
+ </xsl:when>
+ <!-- F# -->
+ <xsl:when test="$language = 'fsharp'">
+ <xsl:text>fsharp</xsl:text>
+ </xsl:when>
+ <!-- Go -->
+ <xsl:when test="$language = 'go'">
+ <xsl:text>go</xsl:text>
+ </xsl:when>
+ <!-- Nginx -->
+ <xsl:when test="$language = 'haml'">
+ <xsl:text>haml</xsl:text>
+ </xsl:when>
+ <!-- Haskell -->
+ <xsl:when test="$language = 'haskell' or $language = 'hs'">
+ <xsl:text>hs</xsl:text>
+ </xsl:when>
+ <!-- HTML -->
+ <xsl:when test="$language = 'html' or $language = 'xhtml'">
+ <xsl:text>html</xsl:text>
+ </xsl:when>
+ <!-- HTTP -->
+ <xsl:when test="$language = 'http'">
+ <xsl:text>http</xsl:text>
+ </xsl:when>
+ <!-- INI -->
+ <xsl:when test="$language = 'ini'">
+ <xsl:text>ini</xsl:text>
+ </xsl:when>
+ <!-- Java -->
+ <xsl:when test="$language = 'java'">
+ <xsl:text>java</xsl:text>
+ </xsl:when>
+ <!-- Javascript -->
+ <xsl:when test="$language = 'js' or $language = 'javascript'">
+ <xsl:text>javascript</xsl:text>
+ </xsl:when>
+ <!-- JSON -->
+ <xsl:when test="$language = 'json'">
+ <xsl:text>json</xsl:text>
+ </xsl:when>
+ <!-- LISP -->
+ <xsl:when test="$language = 'lisp' or $language = 'el' or
+ $language = 'cl' or $language = 'lsp'">
+ <xsl:text>lisp</xsl:text>
+ </xsl:when>
+ <!-- Lua -->
+ <xsl:when test="$language = 'lua'">
+ <xsl:text>lua</xsl:text>
+ </xsl:when>
+ <!-- Makefile -->
+ <xsl:when test="$language = 'makefile' or $language = 'make'">
+ <xsl:text>makefile</xsl:text>
+ </xsl:when>
+ <!-- Markdown -->
+ <xsl:when test="$language = 'markdown' or $language = 'md'">
+ <xsl:text>markdown</xsl:text>
+ </xsl:when>
+ <!-- MATLAB/Octave -->
+ <xsl:when test="$language = 'matlab' or $language = 'octave'">
+ <xsl:text>matlab</xsl:text>
+ </xsl:when>
+ <!-- Nginx -->
+ <xsl:when test="$language = 'nginx'">
+ <xsl:text>nginx</xsl:text>
+ </xsl:when>
+ <!-- Objective C -->
+ <xsl:when test="$language = 'objc' or $language = 'm'">
+ <xsl:text>objectivec</xsl:text>
+ </xsl:when>
+ <!-- Perl -->
+ <xsl:when test="$language = 'perl' or
+ $language = 'pl' or $language = 'pm'">
+ <xsl:text>perl</xsl:text>
+ </xsl:when>
+ <!-- PHP -->
+ <xsl:when test="$language = 'php'">
+ <xsl:text>php</xsl:text>
+ </xsl:when>
+ <!-- Python -->
+ <xsl:when test="$language = 'py' or $language = 'python'">
+ <xsl:text>python</xsl:text>
+ </xsl:when>
+ <!-- R/S -->
+ <xsl:when test="$language = 'r' or $language = 's'">
+ <xsl:text>r</xsl:text>
+ </xsl:when>
+ <!-- Ruby -->
+ <xsl:when test="$language = 'ruby' or $language = 'rb'">
+ <xsl:text>ruby</xsl:text>
+ </xsl:when>
+ <!-- Rust -->
+ <xsl:when test="$language = 'rust'">
+ <xsl:text>rust</xsl:text>
+ </xsl:when>
+ <!-- Scala -->
+ <xsl:when test="$language = 'scala'">
+ <xsl:text>scala</xsl:text>
+ </xsl:when>
+ <!-- Scheme -->
+ <xsl:when test="$language = 'scheme' or $language = 'scm'">
+ <xsl:text>scheme</xsl:text>
+ </xsl:when>
+ <!-- Smalltalk -->
+ <xsl:when test="$language = 'smalltalk'">
+ <xsl:text>smalltalk</xsl:text>
+ </xsl:when>
+ <!-- SQL -->
+ <xsl:when test="$language = 'sql' or $language = 'sql92' or
+ $language = 'sql1999' or $language = 'sql2003'">
+ <xsl:text>sql</xsl:text>
+ </xsl:when>
+ <!-- TCL -->
+ <xsl:when test="$language = 'tcl'">
+ <xsl:text>tcl</xsl:text>
+ </xsl:when>
+ <!-- TeX -->
+ <xsl:when test="$language = 'tex' or $language = 'latex'">
+ <xsl:text>tex</xsl:text>
+ </xsl:when>
+ <!-- Vala -->
+ <xsl:when test="$language = 'vala'">
+ <xsl:text>vala</xsl:text>
+ </xsl:when>
+ <!-- XML -->
+ <xsl:when test="$language = 'xml' or $language = 'myxml'">
+ <xsl:text>xml</xsl:text>
+ </xsl:when>
+ <!-- XQuery -->
+ <xsl:when test="$language = 'xq' or $language = 'xquery'">
+ <xsl:text>xquery</xsl:text>
+ </xsl:when>
+ <!-- YAML -->
+ <xsl:when test="$language = 'yaml'">
+ <xsl:text>yaml</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
<!-- = context = -->
<xsl:template mode="dita2html.topic.mode" match="&topic_context;">
<xsl:call-template name="dita2html.div">
@@ -198,6 +413,22 @@ FIXME
</xsl:call-template>
<xsl:call-template name="html.lang.attrs"/>
<div class="inner">
+ <xsl:if test="$style = 'figure'">
+ <a href="#" class="figure-zoom">
+ <xsl:attribute name="data-zoom-in-title">
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="'View images at normal size'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:attribute name="data-zoom-out-title">
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="'Scale images down'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="icons.svg.figure.zoom.in"/>
+ <xsl:call-template name="icons.svg.figure.zoom.out"/>
+ </a>
+ </xsl:if>
<xsl:apply-templates mode="dita2html.topic.mode" select="$conref/&topic_title_all;"/>
<div class="region">
<xsl:if test="$style = 'listing'">
@@ -230,21 +461,34 @@ FIXME
<xsl:with-param name="conref" select="$conref"/>
</xsl:call-template>
</xsl:variable>
- <xsl:variable name="notetype">
+ <xsl:variable name="notetitle">
<xsl:choose>
<xsl:when test="$type = 'attention' or $type = 'important' or
$type = 'remember' or $type = 'restriction'">
- <xsl:text>important</xsl:text>
+ <xsl:text>Important</xsl:text>
+ </xsl:when>
+ <xsl:when test="$type = 'caution' or $type = 'notice'">
+ <xsl:text>Caution</xsl:text>
+ </xsl:when>
+ <xsl:when test="$type = 'danger'">
+ <xsl:text>Danger</xsl:text>
</xsl:when>
- <xsl:when test="$type = 'caution' or $type = 'danger' or
- $type = 'notice' or $type = 'warning'">
- <xsl:text>warning</xsl:text>
+ <xsl:when test="$type = 'warning'">
+ <xsl:text>Warning</xsl:text>
</xsl:when>
<xsl:when test="$type = 'fastpath' or $type = 'tip'">
- <xsl:text>tip</xsl:text>
+ <xsl:text>Tip</xsl:text>
</xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Note</xsl:text>
+ </xsl:otherwise>
</xsl:choose>
</xsl:variable>
+ <xsl:variable name="notetype">
+ <xsl:value-of select="translate($notetitle,
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
+ 'abcdefghijklmnopqrstuvwxyz')"/>
+ </xsl:variable>
<div>
<xsl:call-template name="dita.id"/>
<xsl:call-template name="html.lang.attrs"/>
@@ -257,6 +501,14 @@ FIXME
</xsl:if>
</xsl:with-param>
</xsl:call-template>
+ <xsl:attribute name="title">
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="$notetitle"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:call-template name="icons.svg.note">
+ <xsl:with-param name="style" select="$notetype"/>
+ </xsl:call-template>
<div class="inner">
<div class="region">
<div class="contents">
@@ -327,7 +579,9 @@ FIXME
this is the OT's behavior. -->
<xsl:apply-templates mode="dita2html.topic.mode" select="$conref/&topic_title_all;[1]"/>
<div class="region">
- <xsl:apply-templates mode="dita2html.topic.mode" select="$conref/node()[not(self::&topic_title_all;)]"/>
+ <div class="contents">
+ <xsl:apply-templates mode="dita2html.topic.mode" select="$conref/node()[not(self::&topic_title_all;)]"/>
+ </div>
</div>
</div>
</xsl:template>
diff --git a/xslt/dita/html/dita2html-topic.xsl b/xslt/dita/html/dita2html-topic.xsl
index be1edfe1..066cdfc2 100644
--- a/xslt/dita/html/dita2html-topic.xsl
+++ b/xslt/dita/html/dita2html-topic.xsl
@@ -44,6 +44,13 @@ REMARK: Describe this module
</xsl:call-template>
</xsl:for-each>
</xsl:when>
+ <xsl:when test="&topic_topic;">
+ <!-- Don't call the stylesheets this way for publishing, but
+ sometimes it's useful for one-off simple topic tests. -->
+ <xsl:call-template name="html.output">
+ <xsl:with-param name="node" select="&topic_topic;"/>
+ </xsl:call-template>
+ </xsl:when>
<xsl:otherwise>
<xsl:message>
<xsl:text>Unmatched root element: </xsl:text>
@@ -64,9 +71,9 @@ REMARK: Describe this module
<xsl:variable name="next" select="($node//&map_topicref;[@href][1] |
$node/following::&map_topicref;[@href]
)[1]"/>
- <div class="links nextlinks">
+ <nav class="prevnext pagewide"><div class="inner">
<xsl:if test="$prev">
- <a class="nextlinks-prev">
+ <a>
<xsl:attribute name="href">
<xsl:for-each select="str:split($node/@href, '/')">
<xsl:if test="position() != last()">
@@ -96,8 +103,9 @@ REMARK: Describe this module
</xsl:call-template>
</a>
</xsl:if>
- <xsl:if test="$next">
- <a class="nextlinks-next">
+ <xsl:choose>
+ <xsl:when test="$next">
+ <a>
<xsl:attribute name="href">
<xsl:for-each select="str:split($node/@href, '/')">
<xsl:if test="position() != last()">
@@ -117,8 +125,16 @@ REMARK: Describe this module
<xsl:with-param name="msgid" select="'Next'"/>
</xsl:call-template>
</a>
- </xsl:if>
- </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <span>
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="'Next'"/>
+ </xsl:call-template>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div></nav>
</xsl:template>
@@ -189,7 +205,7 @@ REMARK: Describe this module
<xsl:variable name="publishers" select="$info/&topic_publisher;"/>
<xsl:variable name="others" select="$info/&topic_author;[not(@type = 'creator' or @type = 'translator')]"/>
<xsl:if test="$copyrights or $authors or $translators or $publishers or $others">
- <div class="sect about ui-expander" role="contentinfo">
+ <footer class="about ui-expander" role="contentinfo">
<div class="yelp-data yelp-data-ui-expander" data-yelp-expanded="false"/>
<div class="inner">
<div class="hgroup">
@@ -216,85 +232,63 @@ REMARK: Describe this module
</xsl:for-each>
</div>
</xsl:if>
- <xsl:if test="$authors">
- <div class="aboutblurb authors">
- <div class="title">
- <span class="title">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Written By'"/>
- </xsl:call-template>
- </span>
- </div>
- <ul class="credits">
- <xsl:for-each select="$authors">
- <li>
- <xsl:apply-templates mode="dita2html.topic.mode"/>
- </li>
- </xsl:for-each>
- </ul>
- </div>
- </xsl:if>
- <xsl:if test="$translators">
- <div class="aboutblurb translators">
- <div class="title">
- <span class="title">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Translated By'"/>
- </xsl:call-template>
- </span>
- </div>
- <ul class="credits">
- <xsl:for-each select="$translators">
- <li>
- <xsl:apply-templates mode="dita2html.topic.mode"/>
- </li>
- </xsl:for-each>
- </ul>
- </div>
- </xsl:if>
- <xsl:if test="$publishers">
- <div class="aboutblurb publishers">
- <div class="title">
- <span class="title">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Published By'"/>
- </xsl:call-template>
- </span>
- </div>
- <ul class="credits">
- <xsl:for-each select="$publishers">
- <li>
- <xsl:apply-templates mode="dita2html.topic.mode"/>
- </li>
- </xsl:for-each>
- </ul>
- </div>
- </xsl:if>
- <xsl:if test="$others">
- <div class="aboutblurb othercredits">
- <div class="title">
- <span class="title">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Other Credits'"/>
- </xsl:call-template>
- </span>
- </div>
- <ul class="credits">
- <xsl:for-each select="$others">
- <li>
- <xsl:apply-templates mode="dita2html.topic.mode"/>
- </li>
- </xsl:for-each>
- </ul>
+ <xsl:if test="$authors or $translators or $publishers or $others">
+ <div class="credits">
+ <xsl:call-template name="_dita2html.topic.about.credits">
+ <xsl:with-param name="class" select="'credits-authors'"/>
+ <xsl:with-param name="title" select="'Written By'"/>
+ <xsl:with-param name="credits" select="$authors"/>
+ </xsl:call-template>
+ <xsl:call-template name="_dita2html.topic.about.credits">
+ <xsl:with-param name="class" select="'credits-translators'"/>
+ <xsl:with-param name="title" select="'Translated By'"/>
+ <xsl:with-param name="credits" select="$translators"/>
+ </xsl:call-template>
+ <xsl:call-template name="_dita2html.topic.about.credits">
+ <xsl:with-param name="class" select="'credits-publishers'"/>
+ <xsl:with-param name="title" select="'Published By'"/>
+ <xsl:with-param name="credits" select="$publishers"/>
+ </xsl:call-template>
+ <xsl:call-template name="_dita2html.topic.about.credits">
+ <xsl:with-param name="class" select="'credits-others'"/>
+ <xsl:with-param name="title" select="'Other Credits'"/>
+ <xsl:with-param name="credits" select="$others"/>
+ </xsl:call-template>
</div>
</xsl:if>
</div>
</div>
</div>
+ </footer>
+ </xsl:if>
+</xsl:template>
+
+<!--#* _dita2html.topic.about.credits -->
+<xsl:template name="_dita2html.topic.about.credits">
+ <xsl:param name="class"/>
+ <xsl:param name="title"/>
+ <xsl:param name="credits"/>
+ <xsl:if test="$credits">
+ <div class="{$class}">
+ <div class="title">
+ <span class="title">
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="$title"/>
+ </xsl:call-template>
+ </span>
+ </div>
+ <ul class="credits">
+ <xsl:for-each select="$credits">
+ <li>
+ <xsl:apply-templates mode="dita2html.topic.mode"/>
+ </li>
+ </xsl:for-each>
+ </ul>
</div>
</xsl:if>
</xsl:template>
+
<xsl:template mode="l10n.format.mode" match="msg:copyright.years">
<xsl:param name="node"/>
<xsl:value-of select="$node/&topic_copyryear;/@year"/>
@@ -326,7 +320,7 @@ REMARK: Describe this module
</xsl:template>
-<!-- == map == -->
+<!-- == map & html.*.mode == -->
<!-- = map % html.title.mode = -->
<xsl:template mode="html.title.mode" match="&map_map;">
@@ -365,16 +359,18 @@ REMARK: Describe this module
<div class="region">
<xsl:call-template name="dita.id"/>
<xsl:call-template name="html.lang.attrs"/>
- <xsl:call-template name="dita2html.links.topic">
- <xsl:with-param name="source" select="."/>
- </xsl:call-template>
+ <div class="contents">
+ <xsl:call-template name="dita2html.links.topic">
+ <xsl:with-param name="source" select="."/>
+ </xsl:call-template>
+ </div>
</div>
<xsl:call-template name="dita2html.links.prevnext"/>
<div class="clear"/>
</xsl:template>
-<!-- == topicref == -->
+<!-- == topicref % html.*.mode == -->
<!-- = topicref % html.title.mode = -->
<xsl:template mode="html.title.mode" match="&map_topicref;">
@@ -462,6 +458,31 @@ REMARK: Describe this module
</xsl:template>
+<!-- == topic % html.*.mode == -->
+<!-- These only get called when using a topic as a top-level, instead
+of a map. You shouldn't generally use these stylesheets that way, but
+it's occasionally useful for testing simple topics. -->
+
+<!-- = topic % html.title.mode = -->
+<xsl:template mode="html.title.mode" match="&topic_topic;">
+ <xsl:value-of select="&topic_title_all;"/>
+</xsl:template>
+
+<!-- = topic % html.header.mode = -->
+<xsl:template mode="html.header.mode" match="&topic_topic;">
+</xsl:template>
+
+<!-- = topic % html.footer.mode = -->
+<xsl:template mode="html.footer.mode" match="&topic_topic;">
+ <xsl:call-template name="dita2html.topic.about"/>
+</xsl:template>
+
+<!-- = topic % html.body.mode = -->
+<xsl:template mode="html.body.mode" match="&topic_topic;">
+ <xsl:apply-templates mode="dita2html.topic.mode" select="."/>
+</xsl:template>
+
+
<!-- == CSS == -->
<xsl:template mode="html.css.mode" match="*">
@@ -515,16 +536,16 @@ div.dita-object > div.desc {
<xsl:param name="topicref" select="/false"/>
<xsl:choose>
<xsl:when test="parent::&topic_topic_all;">
- <div>
+ <section>
<xsl:call-template name="dita.id"/>
<xsl:call-template name="html.lang.attrs"/>
<xsl:call-template name="html.class.attr">
- <xsl:with-param name="class" select="'sect'"/>
+ <xsl:with-param name="class" select="local-name(.)"/>
</xsl:call-template>
<div class="inner">
<xsl:call-template name="_dita2html.topic.inner"/>
</div>
- </div>
+ </section>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="_dita2html.topic.inner">
@@ -549,7 +570,7 @@ div.dita-object > div.desc {
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
- <div class="hgroup">
+ <div class="hgroup pagewide">
<xsl:element name="{concat('h', $depth_)}" namespace="{$html.namespace}">
<xsl:attribute name="class">
<xsl:text>title</xsl:text>
@@ -559,11 +580,13 @@ div.dita-object > div.desc {
</span>
</xsl:element>
</div>
- <xsl:apply-templates mode="dita2html.topic.mode" select="$conref/&topic_body;">
- <xsl:with-param name="topicref" select="$topicref"/>
- </xsl:apply-templates>
- <xsl:apply-templates mode="dita2html.topic.mode" select="$conref/&topic_topic_all;"/>
- <xsl:apply-templates mode="dita2html.topic.mode" select="$conref/&topic_related-links;"/>
+ <div class="region">
+ <xsl:apply-templates mode="dita2html.topic.mode" select="$conref/&topic_body;">
+ <xsl:with-param name="topicref" select="$topicref"/>
+ </xsl:apply-templates>
+ <xsl:apply-templates mode="dita2html.topic.mode" select="$conref/&topic_topic_all;"/>
+ <xsl:apply-templates mode="dita2html.topic.mode" select="$conref/&topic_related-links;"/>
+ </div>
</xsl:template>
<xsl:template mode="dita2html.topic.mode" match="&topic_body;">
@@ -574,26 +597,31 @@ div.dita-object > div.desc {
<xsl:call-template name="dita.id"/>
<xsl:call-template name="html.lang.attrs"/>
<xsl:call-template name="html.class.attr">
- <xsl:with-param name="class" select="'region'"/>
+ <xsl:with-param name="class" select="'contents pagewide'"/>
</xsl:call-template>
- <div class="contents">
- <xsl:apply-templates mode="dita2html.topic.mode" select="../&topic_shortdesc;"/>
- <xsl:apply-templates mode="dita2html.topic.mode" select="$conref/node()"/>
- </div>
+ <xsl:call-template name="html.content.pre">
+ <xsl:with-param name="page" select="not(../parent::&topic_topic_all;)"/>
+ </xsl:call-template>
+ <xsl:apply-templates mode="dita2html.topic.mode" select="../&topic_shortdesc;"/>
+ <xsl:apply-templates mode="dita2html.topic.mode" select="$conref/node()"/>
<xsl:call-template name="dita2html.links.topic">
<xsl:with-param name="source" select="$topicref"/>
</xsl:call-template>
+ <xsl:call-template name="html.content.post">
+ <xsl:with-param name="page" select="not(../parent::&topic_topic_all;)"/>
+ </xsl:call-template>
</div>
</xsl:template>
<xsl:template mode="dita2html.topic.mode" match="&topic_related-links;">
- <div role="navigation">
+ <section role="navigation">
<xsl:call-template name="html.lang.attrs"/>
<xsl:call-template name="html.class.attr">
- <xsl:with-param name="class" select="'sect sect-links'"/>
+ <xsl:with-param name="class" select="'links'"/>
</xsl:call-template>
- <div class="hgroup"/>
- <div class="contents">
+ <div class="inner">
+ <div class="hgroup pagewide"/>
+ <div class="contents pagewide">
<div class="links">
<xsl:call-template name="dita.id"/>
<xsl:call-template name="html.lang.attrs"/>
@@ -606,7 +634,8 @@ div.dita-object > div.desc {
</div>
</div>
</div>
- </div>
+ </div>
+ </section>
</xsl:template>
<xsl:template mode="dita2html.topic.mode" match="&topic_link;">
diff --git a/xslt/dita/html/dita2html.xsl b/xslt/dita/html/dita2html.xsl
index 11703794..ede0436c 100644
--- a/xslt/dita/html/dita2html.xsl
+++ b/xslt/dita/html/dita2html.xsl
@@ -16,7 +16,9 @@ along with this program; see the file COPYING.LGPL. If not, see <http://www.gnu
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:html="http://www.w3.org/1999/xhtml"
- exclude-result-prefixes="html mml"
+ xmlns:mml="http://www.w3.org/1998/Math/MathML"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ exclude-result-prefixes="html mml svg"
version="1.0">
<!--!!==========================================================================
@@ -30,5 +32,7 @@ REMARK: Describe this module
<xsl:param name="html.xhtml" select="false()"/>
<xsl:namespace-alias stylesheet-prefix="html" result-prefix="#default"/>
+<xsl:namespace-alias stylesheet-prefix="mml" result-prefix="#default"/>
+<xsl:namespace-alias stylesheet-prefix="svg" result-prefix="#default"/>
</xsl:stylesheet>
diff --git a/xslt/docbook/common/db-selectors.mod b/xslt/docbook/common/db-selectors.mod
index 76f3272b..113696fb 100644
--- a/xslt/docbook/common/db-selectors.mod
+++ b/xslt/docbook/common/db-selectors.mod
@@ -51,3 +51,24 @@ local-name(.) = 'setindex' or
local-name(.) = 'simplesect' or
local-name(.) = 'toc'
]">
+<!ENTITY db_infos "*[
+self::db:info or
+self::appendixinfo or
+self::articleinfo or
+self::bibliographyinfo or
+self::bookinfo or
+self::chapterinfo or
+self::glossaryinfo or
+self::indexinfo or
+self::partinfo or
+self::prefaceinfo or
+self::refentryinfo or
+self::referenceinfo or
+self::sect1info or
+self::sect2info or
+self::sect3info or
+self::sect4info or
+self::sect5info or
+self::sectioninfo or
+self::setindexinfo
+]">
diff --git a/xslt/docbook/common/db-title.xsl b/xslt/docbook/common/db-title.xsl
index 25f8a7e9..76f4c265 100644
--- a/xslt/docbook/common/db-title.xsl
+++ b/xslt/docbook/common/db-title.xsl
@@ -13,10 +13,14 @@ details.
You should have received a copy of the GNU Lesser General Public License
along with this program; see the file COPYING.LGPL. If not, see <http://www.gnu.org/licenses/>.
-->
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY % selectors SYSTEM "db-selectors.mod">
+%selectors;
+]>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:db="http://docbook.org/ns/docbook"
- xmlns:msg="http://projects.gnome.org/yelp/gettext/"
+ xmlns:msg="http://projects.gnome.org/yelp/gettext/"
exclude-result-prefixes="db msg"
version="1.0">
@@ -34,24 +38,20 @@ elements with optional titles.
<!--**==========================================================================
db.title
Output a title for an element.
-:Revision:version="3.4" date="2011-11-10" status="final"
+:Revision:version="3.next" date="2017-03-18" status="final"
$node: The element to output the title of.
$info: The info child element of ${node}.
This template outputs the title of the element ${node} as it might be used for
a heading or for link text. For certain types of elements, this templates will
use a localized automatic title if no explicit title is provided.
+
+When ${node} is an element for which this template cannot construct a title,
+it calls itself recursively passing the parent element of ${node}.
-->
<xsl:template name="db.title">
<xsl:param name="node" select="."/>
- <xsl:param name="info" select="
- $node/appendixinfo | $node/articleinfo | $node/bibliographyinfo | $node/blockinfo |
- $node/bookinfo | $node/chapterinfo | $node/glossaryinfo | $node/indexinfo |
- $node/objectinfo | $node/partinfo | $node/prefaceinfo | $node/refentryinfo |
- $node/referenceinfo | $node/refsect1info | $node/refsect2info | $node/refsect3info |
- $node/refsectioninfo | $node/refsynopsisdivinfo | $node/sect1info | $node/sect2info |
- $node/sect3infof | $node/sect4info | $node/sect5info | $node/sectioninfo |
- $node/setindexinfo | $node/db:info "/>
+ <xsl:param name="info" select="$node/&db_infos;"/>
<xsl:choose>
<xsl:when test="$node/self::anchor or $node/self::db:anchor">
<xsl:variable name="target_chunk_id">
@@ -124,6 +124,11 @@ use a localized automatic title if no explicit title is provided.
<xsl:with-param name="msgid" select="'Synopsis'"/>
</xsl:call-template>
</xsl:when>
+ <xsl:when test="$node/..">
+ <xsl:call-template name="db.title">
+ <xsl:with-param name="node" select="$node/.."/>
+ </xsl:call-template>
+ </xsl:when>
</xsl:choose>
</xsl:template>
@@ -141,14 +146,7 @@ this template just calls *{db.title}.
-->
<xsl:template name="db.titleabbrev">
<xsl:param name="node" select="."/>
- <xsl:param name="info" select="
- $node/appendixinfo | $node/articleinfo | $node/bibliographyinfo | $node/blockinfo |
- $node/bookinfo | $node/chapterinfo | $node/glossaryinfo | $node/indexinfo |
- $node/objectinfo | $node/partinfo | $node/prefaceinfo | $node/refentryinfo |
- $node/referenceinfo | $node/refsect1info | $node/refsect2info | $node/refsect3info |
- $node/refsectioninfo | $node/refsynopsisdivinfo | $node/sect1info | $node/sect2info |
- $node/sect3infof | $node/sect4info | $node/sect5info | $node/sectioninfo |
- $node/setindexinfo | $node/db:info "/>
+ <xsl:param name="info" select="$node/&db_infos;"/>
<xsl:variable name="titleabbrev" select="
$node/titleabbrev | $node/db:titleabbrev | $info/titleabbrev | $info/db:titleabbrev"/>
<xsl:choose>
@@ -180,14 +178,7 @@ a subtitle is not found.
-->
<xsl:template name="db.subtitle">
<xsl:param name="node" select="."/>
- <xsl:param name="info" select="
- $node/appendixinfo | $node/articleinfo | $node/bibliographyinfo | $node/blockinfo |
- $node/bookinfo | $node/chapterinfo | $node/glossaryinfo | $node/indexinfo |
- $node/objectinfo | $node/partinfo | $node/prefaceinfo | $node/refentryinfo |
- $node/referenceinfo | $node/refsect1info | $node/refsect2info | $node/refsect3info |
- $node/refsectioninfo | $node/refsynopsisdivinfo | $node/sect1info | $node/sect2info |
- $node/sect3infof | $node/sect4info | $node/sect5info | $node/sectioninfo |
- $node/setindexinfo | $node/db:info "/>
+ <xsl:param name="info" select="$node/&db_infos;"/>
<xsl:variable name="subtitle" select="
$node/subtitle | $node/db:subtitle | $info/subtitle | $info/db:subtitle"/>
<xsl:choose>
diff --git a/xslt/docbook/html/db2html-block.xsl b/xslt/docbook/html/db2html-block.xsl
index d0e2b049..b9cb4ee9 100644
--- a/xslt/docbook/html/db2html-block.xsl
+++ b/xslt/docbook/html/db2html-block.xsl
@@ -80,6 +80,7 @@ $class: The value of the HTML #{class} attribute.
$title: An element to use for the title.
$caption: An element to use for the caption.
$titleattr: An optional value for the HTML #{title} attribute.
+$icon: An icon for the block, as a copyable node set.
This template outputs HTML for a formal DocBook element, one that can have
a title or caption. It passes the ${class} parameter to *{html.class.attr}.
@@ -98,6 +99,7 @@ This template handles conditional processing.
$node/db:title | $node/db:info/db:title"/>
<xsl:param name="caption" select="$node/caption | $node/db:caption"/>
<xsl:param name="titleattr" select="''"/>
+ <xsl:param name="icon"/>
<xsl:variable name="if">
<xsl:call-template name="db.profile.test">
@@ -121,9 +123,10 @@ This template handles conditional processing.
<xsl:call-template name="db2html.anchor">
<xsl:with-param name="node" select="$node"/>
</xsl:call-template>
+ <xsl:copy-of select="$icon"/>
<div class="inner">
<xsl:if test="$node/self::figure or $node/self::db:figure">
- <a href="#" class="zoom">
+ <a href="#" class="figure-zoom">
<xsl:attribute name="data-zoom-in-title">
<xsl:call-template name="l10n.gettext">
<xsl:with-param name="msgid" select="'View images at normal size'"/>
@@ -134,6 +137,8 @@ This template handles conditional processing.
<xsl:with-param name="msgid" select="'Scale images down'"/>
</xsl:call-template>
</xsl:attribute>
+ <xsl:call-template name="icons.svg.figure.zoom.in"/>
+ <xsl:call-template name="icons.svg.figure.zoom.out"/>
</a>
</xsl:if>
<xsl:if test="$title">
@@ -360,15 +365,14 @@ This template handles conditional processing.
<xsl:with-param name="number" select="$number"/>
</xsl:call-template></pre>
</xsl:if>
- <pre>
- <xsl:attribute name="class">
- <xsl:text>contents </xsl:text>
- <xsl:if test="$html.syntax.highlight and $node/@language">
+ <pre class="contents"><code>
+ <xsl:if test="$html.syntax.highlight and $node/@language">
+ <xsl:attribute name="class">
<xsl:call-template name="html.syntax.class">
<xsl:with-param name="node" select="$node"/>
</xsl:call-template>
- </xsl:if>
- </xsl:attribute>
+ </xsl:attribute>
+ </xsl:if>
<!-- Strip off a leading newline -->
<xsl:if test="$children[1]/self::text()">
<xsl:choose>
@@ -381,7 +385,7 @@ This template handles conditional processing.
</xsl:choose>
</xsl:if>
<xsl:apply-templates select="$children[not(position() = 1 and self::text())]"/>
- </pre>
+ </code></pre>
</div>
</xsl:if>
</xsl:template>
@@ -470,12 +474,41 @@ This template handles conditional processing.
<!-- = caution = -->
<xsl:template match="caution | db:caution">
<xsl:call-template name="db2html.block.formal">
- <xsl:with-param name="class" select="'note note-warning'"/>
+ <xsl:with-param name="class">
+ <xsl:text>note note-</xsl:text>
+ <xsl:choose>
+ <xsl:when test="@role = 'danger'">
+ <xsl:text>danger</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>caution</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
<xsl:with-param name="titleattr">
<xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Warning'"/>
+ <xsl:with-param name="msgid">
+ <xsl:choose>
+ <xsl:when test="@role = 'danger'">
+ <xsl:text>Danger</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Caution</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
</xsl:call-template>
</xsl:with-param>
+ <xsl:with-param name="icon">
+ <xsl:choose>
+ <xsl:when test="@role = 'danger'">
+ <xsl:call-template name="icons.svg.note.danger"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="icons.svg.note.caution"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
</xsl:call-template>
</xsl:template>
@@ -526,6 +559,9 @@ This template handles conditional processing.
<xsl:with-param name="msgid" select="'Important'"/>
</xsl:call-template>
</xsl:with-param>
+ <xsl:with-param name="icon">
+ <xsl:call-template name="icons.svg.note.important"/>
+ </xsl:with-param>
</xsl:call-template>
</xsl:template>
@@ -576,6 +612,11 @@ This template handles conditional processing.
</xsl:otherwise>
</xsl:choose>
</xsl:with-param>
+ <xsl:with-param name="icon">
+ <xsl:call-template name="icons.svg.note">
+ <xsl:with-param name="style" select="@role"/>
+ </xsl:call-template>
+ </xsl:with-param>
</xsl:call-template>
</xsl:template>
@@ -591,6 +632,216 @@ This template handles conditional processing.
</xsl:call-template>
</xsl:template>
+<xsl:template mode="html.syntax.class.mode"
+ match="programlisting | db:programlisting">
+ <xsl:param name="language" select="translate(@language,
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYX',
+ 'abcdefghijklmnopqrstuvwxyz')"/>
+ <!-- Try to accept the same values as xslthl -->
+ <xsl:choose>
+ <!-- ActionScript -->
+ <xsl:when test="$language = 'actionscript'">
+ <xsl:text>actionscript</xsl:text>
+ </xsl:when>
+ <!-- Apache -->
+ <xsl:when test="$language = 'apache'">
+ <xsl:text>apache</xsl:text>
+ </xsl:when>
+ <!-- AsciiDoc -->
+ <xsl:when test="$language = 'asciidoc' or $language = 'adoc'">
+ <xsl:text>asciidoc</xsl:text>
+ </xsl:when>
+ <!-- Bash -->
+ <xsl:when test="$language = 'sh' or $language = 'bash' or
+ $language = 'csh' or $language = 'bourne'">
+ <xsl:text>bash</xsl:text>
+ </xsl:when>
+ <!-- C -->
+ <xsl:when test="$language = 'c'">
+ <xsl:text>c</xsl:text>
+ </xsl:when>
+ <!-- C# -->
+ <xsl:when test="$language = 'cs' or $language = 'csharp'">
+ <xsl:text>cs</xsl:text>
+ </xsl:when>
+ <!-- C++ -->
+ <xsl:when test="$language = 'cpp' or $language = 'c++'">
+ <xsl:text>cpp</xsl:text>
+ </xsl:when>
+ <!-- Clojure -->
+ <xsl:when test="$language = 'clojure' or $language = 'clj'">
+ <xsl:text>clojure</xsl:text>
+ </xsl:when>
+ <!-- CMake -->
+ <xsl:when test="$language = 'cmake'">
+ <xsl:text>cmake</xsl:text>
+ </xsl:when>
+ <!-- CSS -->
+ <xsl:when test="$language = 'css' or $language = 'css21'">
+ <xsl:text>css</xsl:text>
+ </xsl:when>
+ <!-- D -->
+ <xsl:when test="$language = 'd'">
+ <xsl:text>d</xsl:text>
+ </xsl:when>
+ <!-- Diff -->
+ <xsl:when test="$language = 'diff' or $language = 'patch'">
+ <xsl:text>diff</xsl:text>
+ </xsl:when>
+ <!-- Django -->
+ <xsl:when test="$language = 'django'">
+ <xsl:text>django</xsl:text>
+ </xsl:when>
+ <!-- Dockerfile -->
+ <xsl:when test="$language = 'dockerfile'">
+ <xsl:text>dockerfile</xsl:text>
+ </xsl:when>
+ <!-- DOS -->
+ <xsl:when test="$language = 'dos'">
+ <xsl:text>dos</xsl:text>
+ </xsl:when>
+ <!-- Embedded Ruby -->
+ <xsl:when test="$language = 'erb'">
+ <xsl:text>erb</xsl:text>
+ </xsl:when>
+ <!-- F# -->
+ <xsl:when test="$language = 'fsharp'">
+ <xsl:text>fsharp</xsl:text>
+ </xsl:when>
+ <!-- Go -->
+ <xsl:when test="$language = 'go'">
+ <xsl:text>go</xsl:text>
+ </xsl:when>
+ <!-- Nginx -->
+ <xsl:when test="$language = 'haml'">
+ <xsl:text>haml</xsl:text>
+ </xsl:when>
+ <!-- Haskell -->
+ <xsl:when test="$language = 'haskell' or $language = 'hs'">
+ <xsl:text>hs</xsl:text>
+ </xsl:when>
+ <!-- HTML -->
+ <xsl:when test="$language = 'html' or $language = 'xhtml'">
+ <xsl:text>html</xsl:text>
+ </xsl:when>
+ <!-- HTTP -->
+ <xsl:when test="$language = 'http'">
+ <xsl:text>http</xsl:text>
+ </xsl:when>
+ <!-- INI -->
+ <xsl:when test="$language = 'ini'">
+ <xsl:text>ini</xsl:text>
+ </xsl:when>
+ <!-- Java -->
+ <xsl:when test="$language = 'java'">
+ <xsl:text>java</xsl:text>
+ </xsl:when>
+ <!-- Javascript -->
+ <xsl:when test="$language = 'js' or $language = 'javascript'">
+ <xsl:text>javascript</xsl:text>
+ </xsl:when>
+ <!-- JSON -->
+ <xsl:when test="$language = 'json'">
+ <xsl:text>json</xsl:text>
+ </xsl:when>
+ <!-- LISP -->
+ <xsl:when test="$language = 'lisp' or $language = 'el' or
+ $language = 'cl' or $language = 'lsp'">
+ <xsl:text>lisp</xsl:text>
+ </xsl:when>
+ <!-- Lua -->
+ <xsl:when test="$language = 'lua'">
+ <xsl:text>lua</xsl:text>
+ </xsl:when>
+ <!-- Makefile -->
+ <xsl:when test="$language = 'makefile' or $language = 'make'">
+ <xsl:text>makefile</xsl:text>
+ </xsl:when>
+ <!-- Markdown -->
+ <xsl:when test="$language = 'markdown' or $language = 'md'">
+ <xsl:text>markdown</xsl:text>
+ </xsl:when>
+ <!-- MATLAB/Octave -->
+ <xsl:when test="$language = 'matlab' or $language = 'octave'">
+ <xsl:text>matlab</xsl:text>
+ </xsl:when>
+ <!-- Nginx -->
+ <xsl:when test="$language = 'nginx'">
+ <xsl:text>nginx</xsl:text>
+ </xsl:when>
+ <!-- Objective C -->
+ <xsl:when test="$language = 'objc' or $language = 'm'">
+ <xsl:text>objectivec</xsl:text>
+ </xsl:when>
+ <!-- Perl -->
+ <xsl:when test="$language = 'perl' or
+ $language = 'pl' or $language = 'pm'">
+ <xsl:text>perl</xsl:text>
+ </xsl:when>
+ <!-- PHP -->
+ <xsl:when test="$language = 'php'">
+ <xsl:text>php</xsl:text>
+ </xsl:when>
+ <!-- Python -->
+ <xsl:when test="$language = 'py' or $language = 'python'">
+ <xsl:text>python</xsl:text>
+ </xsl:when>
+ <!-- R/S -->
+ <xsl:when test="$language = 'r' or $language = 's'">
+ <xsl:text>r</xsl:text>
+ </xsl:when>
+ <!-- Ruby -->
+ <xsl:when test="$language = 'ruby' or $language = 'rb'">
+ <xsl:text>ruby</xsl:text>
+ </xsl:when>
+ <!-- Rust -->
+ <xsl:when test="$language = 'rust'">
+ <xsl:text>rust</xsl:text>
+ </xsl:when>
+ <!-- Scala -->
+ <xsl:when test="$language = 'scala'">
+ <xsl:text>scala</xsl:text>
+ </xsl:when>
+ <!-- Scheme -->
+ <xsl:when test="$language = 'scheme' or $language = 'scm'">
+ <xsl:text>scheme</xsl:text>
+ </xsl:when>
+ <!-- Smalltalk -->
+ <xsl:when test="$language = 'smalltalk'">
+ <xsl:text>smalltalk</xsl:text>
+ </xsl:when>
+ <!-- SQL -->
+ <xsl:when test="$language = 'sql' or $language = 'sql92' or
+ $language = 'sql1999' or $language = 'sql2003'">
+ <xsl:text>sql</xsl:text>
+ </xsl:when>
+ <!-- TCL -->
+ <xsl:when test="$language = 'tcl'">
+ <xsl:text>tcl</xsl:text>
+ </xsl:when>
+ <!-- TeX -->
+ <xsl:when test="$language = 'tex' or $language = 'latex'">
+ <xsl:text>tex</xsl:text>
+ </xsl:when>
+ <!-- Vala -->
+ <xsl:when test="$language = 'vala'">
+ <xsl:text>vala</xsl:text>
+ </xsl:when>
+ <!-- XML -->
+ <xsl:when test="$language = 'xml' or $language = 'myxml'">
+ <xsl:text>xml</xsl:text>
+ </xsl:when>
+ <!-- XQuery -->
+ <xsl:when test="$language = 'xq' or $language = 'xquery'">
+ <xsl:text>xquery</xsl:text>
+ </xsl:when>
+ <!-- YAML -->
+ <xsl:when test="$language = 'yaml'">
+ <xsl:text>yaml</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
<!-- = screen = -->
<xsl:template match="screen | db:screen">
<xsl:call-template name="db2html.pre"/>
@@ -652,6 +903,9 @@ This template handles conditional processing.
<xsl:with-param name="msgid" select="'Tip'"/>
</xsl:call-template>
</xsl:with-param>
+ <xsl:with-param name="icon">
+ <xsl:call-template name="icons.svg.note.tip"/>
+ </xsl:with-param>
</xsl:call-template>
</xsl:template>
@@ -666,12 +920,41 @@ This template handles conditional processing.
<!-- = warning = -->
<xsl:template match="warning | db:warning">
<xsl:call-template name="db2html.block.formal">
- <xsl:with-param name="class" select="'note note-warning'"/>
+ <xsl:with-param name="class">
+ <xsl:text>note note-</xsl:text>
+ <xsl:choose>
+ <xsl:when test="@role = 'danger'">
+ <xsl:text>danger</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>warning</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
<xsl:with-param name="titleattr">
<xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Warning'"/>
+ <xsl:with-param name="msgid">
+ <xsl:choose>
+ <xsl:when test="@role = 'danger'">
+ <xsl:text>Danger</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>Warning</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
</xsl:call-template>
</xsl:with-param>
+ <xsl:with-param name="icon">
+ <xsl:choose>
+ <xsl:when test="@role = 'danger'">
+ <xsl:call-template name="icons.svg.note.danger"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="icons.svg.note.warning"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
</xsl:call-template>
</xsl:template>
diff --git a/xslt/docbook/html/db2html-classsynopsis.xsl b/xslt/docbook/html/db2html-classsynopsis.xsl
index 10e5a09c..c72e9eab 100644
--- a/xslt/docbook/html/db2html-classsynopsis.xsl
+++ b/xslt/docbook/html/db2html-classsynopsis.xsl
@@ -65,7 +65,7 @@ at the root of a DocBook document.
classsynopsis | constructorsynopsis | fieldsynopsis |
methodsynopsis | destructorsynopsis |
db:classsynopsis | db:constructorsynopsis | db:fieldsynopsis |
- db:methodsynopsis | db:destructorsynopsis |">
+ db:methodsynopsis | db:destructorsynopsis ">
<xsl:variable name="if"><xsl:call-template name="db.profile.test"/></xsl:variable>
<xsl:if test="$if != ''">
<xsl:variable name="language">
diff --git a/xslt/docbook/html/db2html-css.xsl b/xslt/docbook/html/db2html-css.xsl
index 5aa11f8f..16b53331 100644
--- a/xslt/docbook/html/db2html-css.xsl
+++ b/xslt/docbook/html/db2html-css.xsl
@@ -63,7 +63,7 @@ td.td-rowsep { border-bottom: solid 1px; }
<!-- == bibliography == -->
span.bibliolabel {
font-weight: bold;
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
}
div.biblioentry span.title {
font-weight: normal;
@@ -78,11 +78,11 @@ div.epigraph {
text-align: </xsl:text><xsl:value-of select="$right"/><xsl:text>;
margin-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 20%;
margin-</xsl:text><xsl:value-of select="$right"/><xsl:text>: 0;
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
}
div.programlisting .userinput {
font-weight: bold;
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
}
div.address, div.literallayout { white-space: pre; }
@@ -90,7 +90,7 @@ div.address, div.literallayout { white-space: pre; }
<!-- == footnotes == -->
div.footnotes {
border-top: solid 2px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
+ <xsl:value-of select="$color.gray"/><xsl:text>;
}
div.footnote { margin-top: 1.44em; }
sup.footnote { font-size: 0.83em; }
@@ -99,23 +99,47 @@ a.footnote {
text-decoration: none;
border-bottom: none;
padding: 0.2em 0.5em 0.2em 0.5em;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
border-radius: 2px;
}
div.footnote > a.footnote {
margin-</xsl:text><xsl:value-of select="$right"/><xsl:text>: 0.83em;
- background-color: </xsl:text><xsl:value-of select="$color.gray_background"/><xsl:text>;
+ background-color: </xsl:text><xsl:value-of select="$color.bg.gray"/><xsl:text>;
}
div.footnote > a.footnote + p { display: inline-block; margin: 0; }
a.footnote:hover, div.footnote > a.footnote:hover {
- background-color: </xsl:text><xsl:value-of select="$color.blue_background"/><xsl:text>;
- -moz-box-shadow: 0 0 2px </xsl:text>
- <xsl:value-of select="$color.blue_border"/><xsl:text>;
- -webkit-box-shadow: 0 0 2px </xsl:text>
- <xsl:value-of select="$color.blue_border"/><xsl:text>;
+ background-color: </xsl:text><xsl:value-of select="$color.bg.blue"/><xsl:text>;
box-shadow: 0 0 2px </xsl:text>
- <xsl:value-of select="$color.blue_border"/><xsl:text>;
+ <xsl:value-of select="$color.blue"/><xsl:text>;
+}
+
+<!-- == indexes == -->
+dt.ixprimary {
+ font-weight: bold;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
+}
+dt.ixprimary * { font-style: normal; }
+dt.ixprimary + dt.ixprimary { margin-top: 1em; }
+dd.ixsecondary {
+ color: </xsl:text><xsl:value-of select="$color.fg.gray"/><xsl:text>;
+}
+dt.ixsecondary, dt.ixtertiary { margin-top: 0.2em; }
+dd.ixlink, dd.ixsee, dd.ixseealso {
+ color: </xsl:text><xsl:value-of select="$color.fg.gray"/><xsl:text>;
+}
+dd.ixlink + dd, dd.ixsee + dd, dd.ixseealso + dd {
+ margin-top: 0.2em;
+}
+dt.ixsecondary:before, dt.ixtertiary:before {
+ content: "⏺";
+ color: </xsl:text><xsl:value-of select="$color.fg.gray"/><xsl:text>;
+}
+dd.ixlink:before {
+ content: "⏺";
+ color: </xsl:text><xsl:value-of select="$color.blue"/><xsl:text>;
+}
+dd.ixsee:before, dd.ixseealso:before {
+ content: "⏺";
+ color: </xsl:text><xsl:value-of select="$color.gray"/><xsl:text>;
}
<!-- == unsorted == -->
@@ -130,17 +154,15 @@ div.simplelist table { margin-left: 0; border: none; }
div.simplelist td {
padding: 0.5em;
border-</xsl:text><xsl:value-of select="$left"/><xsl:text>: solid 1px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
+ <xsl:value-of select="$color.gray"/><xsl:text>;
}
-<!--
-div.simplelist td.td-first {
+div.simplelist td:first-child {
padding-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 0;
border-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 0;
}
--->
span.accel { text-decoration: underline; }
-span.email { font-family: monospace; }
+span.email { font-family: monospace,monospace; font-size: 0.83em; }
span.firstterm { font-style: italic; }
span.foreignphrase { font-style: italic; }
@@ -157,7 +179,7 @@ span.lineannotation { font-style: italic; }
span.medialabel { font-style: italic; }
.methodparam span.parameter { font-style: italic; }
span.paramdef span.parameter { font-style: italic; }
-span.prompt { font-family: monospace; }
+span.prompt { font-family: monospace,monospace; font-size: 0.83em; }
span.wordasword { font-style: italic; }
<!-- FIXME below -->
@@ -165,6 +187,7 @@ dt.question {
margin-left: 0;
margin-right: 0;
font-weight: bold;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
}
dd + dt.question { margin-top: 1em; }
dd.answer {
@@ -173,22 +196,21 @@ dd.answer {
margin-right: 2em;
}
div.qanda-label {
- line-height: 1.72em;
+ line-height: 1.44em;
float: </xsl:text><xsl:value-of select="$left"/><xsl:text>;
margin-</xsl:text><xsl:value-of select="$right"/><xsl:text>: 1em;
font-weight: bold;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
}
dl.qandaset ol, dl.qandaset ul, dl.qandaset table { clear: both; }
div.synopfragment { padding-top: 0.5em; }
span.co {
- -moz-border-radius: 4px;
- -webkit-border-radius: 4px;
border-radius: 4px;
background-color: </xsl:text>
- <xsl:value-of select="$color.yellow_background"/><xsl:text>;
+ <xsl:value-of select="$color.bg.yellow"/><xsl:text>;
outline: solid 1px </xsl:text>
- <xsl:value-of select="$color.yellow_border"/><xsl:text>;
+ <xsl:value-of select="$color.yellow"/><xsl:text>;
}
span.co a { text-decoration: none; }
span.co a:hover { text-decoration: none; }
diff --git a/xslt/docbook/html/db2html-division.xsl b/xslt/docbook/html/db2html-division.xsl
index dab0fed0..7d2fefa7 100644
--- a/xslt/docbook/html/db2html-division.xsl
+++ b/xslt/docbook/html/db2html-division.xsl
@@ -120,28 +120,31 @@ REMARK: Talk about some of the parameters
<xsl:with-param name="node" select="$node"/>
</xsl:call-template>
</xsl:param>
- <!-- FIXME: these two parameters don't make much sense now -->
<xsl:param name="chunk_divisions"
select="($depth_in_chunk = 0) and
($depth_of_chunk &lt; $db.chunk.max_depth)"/>
<xsl:choose>
<xsl:when test="$depth_in_chunk != 0">
- <div>
+ <section>
+ <xsl:choose>
+ <xsl:when test="$node/@xml:id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="$node/@xml:id"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$node/@id">
+ <xsl:attribute name="id">
+ <xsl:value-of select="$node/@id"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
<xsl:call-template name="html.lang.attrs">
<xsl:with-param name="node" select="$node"/>
</xsl:call-template>
<xsl:call-template name="html.class.attr">
<xsl:with-param name="node" select="$node"/>
- <xsl:with-param name="class">
- <xsl:value-of select="local-name($node)"/>
- <xsl:text> sect</xsl:text>
- </xsl:with-param>
+ <xsl:with-param name="class" select="local-name($node)"/>
</xsl:call-template>
- <xsl:if test="$node/@id">
- <xsl:attribute name="id">
- <xsl:value-of select="$node/@id"/>
- </xsl:attribute>
- </xsl:if>
<div class="inner">
<xsl:call-template name="_db2html.division.div.inner">
<xsl:with-param name="node" select="$node"/>
@@ -153,7 +156,7 @@ REMARK: Talk about some of the parameters
<xsl:with-param name="chunk_divisions" select="$chunk_divisions"/>
</xsl:call-template>
</div>
- </div>
+ </section>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="_db2html.division.div.inner">
@@ -184,7 +187,10 @@ REMARK: Talk about some of the parameters
<xsl:with-param name="depth_in_chunk" select="$depth_in_chunk"/>
</xsl:call-template>
<div class="region">
- <div class="contents">
+ <div class="contents pagewide">
+ <xsl:call-template name="html.content.pre">
+ <xsl:with-param name="page" select="$depth_in_chunk = 0"/>
+ </xsl:call-template>
<xsl:apply-templates mode="db2html.division.div.content.mode" select="$node">
<xsl:with-param name="info" select="$info"/>
<xsl:with-param name="entries" select="$entries"/>
@@ -192,14 +198,17 @@ REMARK: Talk about some of the parameters
<xsl:with-param name="depth_in_chunk" select="$depth_in_chunk"/>
<xsl:with-param name="depth_of_chunk" select="$depth_of_chunk"/>
</xsl:apply-templates>
- </div>
- <xsl:if test="$depth_in_chunk = 0 and
- not($node/processing-instruction('db2html.no_sectionlinks'))">
- <xsl:call-template name="db2html.links.section">
- <xsl:with-param name="node" select="$node"/>
- <xsl:with-param name="divisions" select="$divisions"/>
+ <xsl:if test="$depth_in_chunk = 0 and
+ not($node/processing-instruction('db2html.no_sectionlinks'))">
+ <xsl:call-template name="db2html.links.section">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="divisions" select="$divisions"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:call-template name="html.content.post">
+ <xsl:with-param name="page" select="$depth_in_chunk = 0"/>
</xsl:call-template>
- </xsl:if>
+ </div>
<xsl:for-each select="$divisions">
<xsl:if test="not($chunk_divisions) or not(self::&db_chunks;)">
<xsl:apply-templates select=".">
@@ -300,7 +309,7 @@ REMARK: Talk about the different kinds of title blocks
</xsl:choose>
</xsl:variable>
- <div class="hgroup">
+ <div class="hgroup pagewide">
<xsl:element name="{$title_h}" namespace="{$html.namespace}">
<xsl:attribute name="class">
<xsl:text>title</xsl:text>
@@ -345,13 +354,7 @@ the division. By default it is called by the %{html.footer.mode} implementation.
-->
<xsl:template name="db2html.division.about">
<xsl:param name="node" select="."/>
- <xsl:param name="info" select="
- $node/appendixinfo | $node/articleinfo | $node/bibliographyinfo | $node/bookinfo |
- $node/chapterinfo | $node/glossaryinfo | $node/indexinfo | $node/partinfo |
- $node/prefaceinfo | $node/refentryinfo | $node/referenceinfo | $node/refsect1info |
- $node/refsect2info | $node/refsect3info | $node/refsectioninfo | $node/sect1info |
- $node/sect2info | $node/sect3info | $node/sect4info | $node/sect5info |
- $node/sectioninfo | $node/setindexinfo | $node/db:info "/>
+ <xsl:param name="info" select="$node/ancestor-or-self::*/&db_infos;"/>
<xsl:variable name="copyrights" select="$info/copyright | $info/db:copyright"/>
<xsl:variable name="authors" select="
$info/author | $info/authorgroup/author |
@@ -375,8 +378,9 @@ the division. By default it is called by the %{html.footer.mode} implementation.
$info/db:othercredit | $info/db:authorgroup/db:othercredit,
($authors | $editors | $translators))"/>
<xsl:variable name="legal" select="$info/legalnotice | $info/db:legalnotice"/>
- <xsl:if test="$copyrights or $authors or $editors or $translators or $publishers or $othercredits or $legal">
- <div class="sect about ui-expander" role="contentinfo">
+ <xsl:if test="$copyrights or $authors or $editors or $translators or
+ $publishers or $othercredits or $legal">
+ <footer class="about ui-expander" role="contentinfo">
<div class="yelp-data yelp-data-ui-expander" data-yelp-expanded="false"/>
<div class="inner">
<div class="hgroup">
@@ -399,98 +403,37 @@ the division. By default it is called by the %{html.footer.mode} implementation.
</xsl:for-each>
</div>
</xsl:if>
- <xsl:if test="$authors">
- <div class="aboutblurb authors">
- <div class="title">
- <span class="title">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Written By'"/>
- </xsl:call-template>
- </span>
- </div>
- <ul class="credits">
- <xsl:for-each select="$authors">
- <li>
- <xsl:apply-templates select="."/>
- </li>
- </xsl:for-each>
- </ul>
- </div>
- </xsl:if>
- <xsl:if test="$editors">
- <div class="aboutblurb editors">
- <div class="title">
- <span class="title">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Edited By'"/>
- </xsl:call-template>
- </span>
- </div>
- <ul class="credits">
- <xsl:for-each select="$editors">
- <li>
- <xsl:apply-templates select="."/>
- </li>
- </xsl:for-each>
- </ul>
- </div>
- </xsl:if>
- <xsl:if test="$translators">
- <div class="aboutblurb translators">
- <div class="title">
- <span class="title">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Translated By'"/>
- </xsl:call-template>
- </span>
- </div>
- <ul class="credits">
- <xsl:for-each select="$translators">
- <li>
- <xsl:apply-templates select="."/>
- </li>
- </xsl:for-each>
- </ul>
- </div>
- </xsl:if>
- <xsl:if test="$publishers">
- <div class="aboutblurb publishers">
- <div class="title">
- <span class="title">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Published By'"/>
- </xsl:call-template>
- </span>
- </div>
- <ul class="credits">
- <xsl:for-each select="$publishers">
- <li>
- <xsl:apply-templates select="."/>
- </li>
- </xsl:for-each>
- </ul>
- </div>
- </xsl:if>
- <xsl:if test="$othercredits">
- <div class="aboutblurb othercredits">
- <div class="title">
- <span class="title">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Other Credits'"/>
- </xsl:call-template>
- </span>
- </div>
- <ul class="credits">
- <xsl:for-each select="$othercredits">
- <li>
- <xsl:apply-templates select="."/>
- </li>
- </xsl:for-each>
- </ul>
+ <xsl:if test="$authors or $editors or $translators or $publishers or $othercredits">
+ <div class="credits">
+ <xsl:call-template name="_db2html.division.about.credits">
+ <xsl:with-param name="class" select="'credits-authors'"/>
+ <xsl:with-param name="title" select="'Written By'"/>
+ <xsl:with-param name="credits" select="$authors"/>
+ </xsl:call-template>
+ <xsl:call-template name="_db2html.division.about.credits">
+ <xsl:with-param name="class" select="'credits-editors'"/>
+ <xsl:with-param name="title" select="'Edited By'"/>
+ <xsl:with-param name="credits" select="$editors"/>
+ </xsl:call-template>
+ <xsl:call-template name="_db2html.division.about.credits">
+ <xsl:with-param name="class" select="'credits-translators'"/>
+ <xsl:with-param name="title" select="'Translated By'"/>
+ <xsl:with-param name="credits" select="$translators"/>
+ </xsl:call-template>
+ <xsl:call-template name="_db2html.division.about.credits">
+ <xsl:with-param name="class" select="'credits-publishers'"/>
+ <xsl:with-param name="title" select="'Published By'"/>
+ <xsl:with-param name="credits" select="$publishers"/>
+ </xsl:call-template>
+ <xsl:call-template name="_db2html.division.about.credits">
+ <xsl:with-param name="class" select="'credits-others'"/>
+ <xsl:with-param name="title" select="'Other Credits'"/>
+ <xsl:with-param name="credits" select="$othercredits"/>
+ </xsl:call-template>
</div>
</xsl:if>
<xsl:for-each select="$legal">
- <div class="aboutblurb license">
+ <div class="license">
<div class="title">
<span class="title">
<xsl:choose>
@@ -514,11 +457,37 @@ the division. By default it is called by the %{html.footer.mode} implementation.
</div>
</div>
</div>
+ </footer>
+ </xsl:if>
+</xsl:template>
+
+<!--#* _db2html.division.about.credits -->
+<xsl:template name="_db2html.division.about.credits">
+ <xsl:param name="class"/>
+ <xsl:param name="title"/>
+ <xsl:param name="credits"/>
+ <xsl:if test="$credits">
+ <div class="{$class}">
+ <div class="title">
+ <span class="title">
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="$title"/>
+ </xsl:call-template>
+ </span>
+ </div>
+ <ul class="credits">
+ <xsl:for-each select="$credits">
+ <li>
+ <xsl:apply-templates select="."/>
+ </li>
+ </xsl:for-each>
+ </ul>
</div>
</xsl:if>
</xsl:template>
+
<!-- == Matched Templates == -->
<!-- = appendix = -->
diff --git a/xslt/docbook/html/db2html-index.xsl b/xslt/docbook/html/db2html-index.xsl
index 48d3330f..fa3f6f97 100644
--- a/xslt/docbook/html/db2html-index.xsl
+++ b/xslt/docbook/html/db2html-index.xsl
@@ -13,6 +13,28 @@ details.
You should have received a copy of the GNU Lesser General Public License
along with this program; see the file COPYING.LGPL. If not, see <http://www.gnu.org/licenses/>.
-->
+<!DOCTYPE xsl:stylesheet [
+<!ENTITY % selectors SYSTEM "../common/db-selectors.mod">
+%selectors;
+<!ENTITY primarykey "normalize-space(concat(
+ primary/@sortas | db:primary/@sortas, ' ',
+ primary | db:primary))">
+<!ENTITY secondarykey "normalize-space(concat(
+ primary/@sortas | db:primary/@sortas, ' ',
+ primary | db:primary, ' ',
+ secondary/@sortas | db:secondary/@sortas, ' ',
+ secondary | db:secondary))">
+<!ENTITY tertiarykey "normalize-space(concat(
+ primary/@sortas | db:primary/@sortas, ' ',
+ primary | db:primary, ' ',
+ secondary/@sortas | db:secondary/@sortas, ' ',
+ secondary | db:secondary, ' ',
+ tertiary/@sortas | db:tertiary/@sortas, ' ',
+ tertiary | db:tertiary))">
+<!ENTITY uppercase "'ABCDEFGHIJKLMNOPQRSTUVWXYZ'">
+<!ENTITY lowercase "'abcdefghijklmnopqrstuvwxyz'">
+]>
+<!-- FIXME: upper/lower for langs? -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:db="http://docbook.org/ns/docbook"
@@ -36,6 +58,22 @@ seealsoie
indexterm (autoidx)
-->
+<xsl:key name="db.index.all.key"
+ match="indexterm | db:indexterm"
+ use="''"/>
+
+<xsl:key name="db.index.primary.key"
+ match="indexterm | db:indexterm"
+ use="&primarykey;"/>
+
+<xsl:key name="db.index.secondary.key"
+ match="indexterm[secondary] | db:indexterm[db:secondary]"
+ use="&secondarykey;"/>
+
+<xsl:key name="db.index.tertiary.key"
+ match="indexterm[tertiary] | db:indexterm[db:tertiary]"
+ use="&tertiarykey;"/>
+
<!-- == Matched Templates == -->
<!-- = suppress = -->
@@ -47,7 +85,7 @@ indexterm (autoidx)
<xsl:template match="indexentry | db:indexentry">
<xsl:variable name="if"><xsl:call-template name="db.profile.test"/></xsl:variable>
<xsl:if test="$if != ''">
- <dt class="primaryie">
+ <dt class="ixprimary">
<xsl:apply-templates select="primaryie/node() | db:primaryie/node()"/>
</dt>
<xsl:variable name="pri_see"
@@ -57,7 +95,7 @@ indexterm (autoidx)
select="seealsoie[not(preceding-sibling::secondaryie)] |
db:seealsoie[not(preceding-sibling::db:secondaryie)]"/>
<xsl:if test="$pri_see">
- <dd class="see">
+ <dd class="ixsee">
<xsl:call-template name="l10n.gettext">
<xsl:with-param name="msgid" select="'seeie.format'"/>
<xsl:with-param name="node" select="$pri_see"/>
@@ -66,7 +104,7 @@ indexterm (autoidx)
</dd>
</xsl:if>
<xsl:if test="$pri_seealso">
- <dd class="seealso">
+ <dd class="ixseealso">
<xsl:call-template name="l10n.gettext">
<xsl:with-param name="msgid" select="'seealsoie.format'"/>
<xsl:with-param name="node" select="$pri_seealso"/>
@@ -75,9 +113,9 @@ indexterm (autoidx)
</dd>
</xsl:if>
<xsl:for-each select="secondaryie | db:secondaryie">
- <dd class="secondary">
- <dl class="secondary">
- <dt class="secondaryie">
+ <dd class="ixsecondary">
+ <dl class="ixsecondary">
+ <dt class="ixsecondary">
<xsl:apply-templates/>
</dt>
<xsl:variable name="sec_see"
@@ -96,7 +134,7 @@ indexterm (autoidx)
following-sibling::db:tertiaryie
[set:has-same-node(preceding-sibling::db:secondaryie[1], current())]"/>
<xsl:if test="$sec_see">
- <dd class="see">
+ <dd class="ixsee">
<xsl:call-template name="l10n.gettext">
<xsl:with-param name="msgid" select="'seeie.format'"/>
<xsl:with-param name="node" select="$sec_see"/>
@@ -105,7 +143,7 @@ indexterm (autoidx)
</dd>
</xsl:if>
<xsl:if test="$sec_seealso">
- <dd class="seealso">
+ <dd class="ixseealso">
<xsl:call-template name="l10n.gettext">
<xsl:with-param name="msgid" select="'seealsoie.format'"/>
<xsl:with-param name="node" select="$sec_seealso"/>
@@ -216,4 +254,175 @@ indexterm (autoidx)
</xsl:for-each>
</xsl:template>
+<!-- = index % db2html.division.div.content.mode = -->
+<!-- Auto-generated indexes -->
+<xsl:template mode="db2html.division.div.content.mode"
+ match="index[count(indexentry | indexdiv) = 0] |
+ db:index[count(db:indexentry | db:indexdiv) = 0]">
+ <xsl:param name="node" select="."/>
+ <xsl:param name="info" select="indexinfo | db:info"/>
+ <xsl:param name="depth_in_chunk">
+ <xsl:call-template name="db.chunk.depth-in-chunk">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:param>
+ <xsl:param name="depth_of_chunk">
+ <xsl:call-template name="db.chunk.depth-of-chunk">
+ <xsl:with-param name="node" select="$node"/>
+ </xsl:call-template>
+ </xsl:param>
+ <xsl:variable name="nots" select="title | db:title | titleabbrev | db:titleabbrev | subtitle | db:subtitle"/>
+ <xsl:apply-templates select="set:difference(*, $nots)">
+ <xsl:with-param name="depth_in_chunk" select="$depth_in_chunk + 1"/>
+ <xsl:with-param name="depth_of_chunk" select="$depth_of_chunk"/>
+ </xsl:apply-templates>
+
+ <xsl:variable name="allterms" select="key('db.index.all.key', '')"/>
+ <xsl:variable name="prifirstterms"
+ select="$allterms[count(. | key('db.index.primary.key', &primarykey;)[1]) = 1]"/>
+ <dl>
+ <xsl:for-each select="$prifirstterms">
+ <xsl:sort select="translate(&primarykey;, &uppercase;, &lowercase;)"/>
+ <xsl:variable name="term" select="."/>
+ <xsl:if test="true()">
+ <dt class="ixprimary">
+ <xsl:apply-templates select="primary/node() | db:primary/node()"/>
+ </dt>
+ <xsl:variable name="prikey" select="&primarykey;"/>
+ <xsl:variable name="priterms" select="key('db.index.primary.key', $prikey)"/>
+ <xsl:variable name="prilinks"
+ select="$priterms[not(secondary | db:secondary | see | db:see)]"/>
+ <xsl:for-each select="$prilinks">
+ <dd class="ixlink">
+ <xsl:call-template name="db2html.xref">
+ <xsl:with-param name="target" select="."/>
+ </xsl:call-template>
+ </dd>
+ </xsl:for-each>
+ <xsl:variable name="prisee"
+ select="$priterms[not(secondary)]/see | $priterms[not(db:secondary)]/db:see"/>
+ <xsl:for-each select="$prisee">
+ <dd class="ixsee">
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="'seeie.format'"/>
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="format" select="true()"/>
+ </xsl:call-template>
+ </dd>
+ </xsl:for-each>
+ <xsl:variable name="priseealso"
+ select="$priterms[not(secondary)]/seealso | $priterms[not(db:secondary)]/db:seealso"/>
+ <xsl:for-each select="$priseealso">
+ <dd class="ixseealso">
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="'seealsoie.format'"/>
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="format" select="true()"/>
+ </xsl:call-template>
+ </dd>
+ </xsl:for-each>
+ <xsl:if test="$priterms/secondary or $priterms/db:secondary">
+ <dd class="ixsecondary">
+ <dl class="ixsecondary">
+ <xsl:variable name="secfirstterms"
+ select="$priterms[count(. | key('db.index.secondary.key',
+ &secondarykey;)[1]) = 1]"/>
+ <xsl:for-each select="$secfirstterms">
+ <xsl:sort select="translate(&secondarykey;, &uppercase;, &lowercase;)"/>
+ <xsl:if test="secondary | db:secondary">
+ <dt class="ixsecondary">
+ <xsl:value-of select="secondary | db:secondary"/>
+ </dt>
+ <xsl:variable name="seckey" select="&secondarykey;"/>
+ <xsl:variable name="secterms" select="key('db.index.secondary.key', $seckey)"/>
+ <xsl:variable name="seclinks"
+ select="$secterms[not(tertiary | db:tertiary | see | db:see)]"/>
+ <xsl:for-each select="$seclinks">
+ <dd class="ixlink">
+ <xsl:call-template name="db2html.xref">
+ <xsl:with-param name="target" select="."/>
+ </xsl:call-template>
+ </dd>
+ </xsl:for-each>
+ <xsl:variable name="secsee"
+ select="$secterms[not(tertiary)]/see | $secterms[not(db:tertiary)]/db:see"/>
+ <xsl:for-each select="$secsee">
+ <dd class="ixsee">
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="'seeie.format'"/>
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="format" select="true()"/>
+ </xsl:call-template>
+ </dd>
+ </xsl:for-each>
+ <xsl:variable name="secseealso"
+ select="$secterms[not(tertiary)]/seealso | $secterms[not(db:tertiary)]/db:seealso"/>
+ <xsl:for-each select="$secseealso">
+ <dd class="ixseealso">
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="'seealsoie.format'"/>
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="format" select="true()"/>
+ </xsl:call-template>
+ </dd>
+ </xsl:for-each>
+ <xsl:if test="$secterms/tertiary or $secterms/db:tertiary">
+ <dd class="ixtertiary">
+ <dl class="ixtertiary">
+ <xsl:variable name="terfirstterms"
+ select="$secterms[count(. | key('db.index.tertiary.key',
+ &tertiarykey;)[1]) = 1]"/>
+ <xsl:for-each select="$terfirstterms">
+ <xsl:sort select="translate(&tertiarykey;, &uppercase;, &lowercase;)"/>
+ <xsl:if test="tertiary | db:tertiary">
+ <dt class="ixtertiary">
+ <xsl:value-of select="tertiary | db:tertiary"/>
+ </dt>
+ <xsl:variable name="terkey" select="&tertiarykey;"/>
+ <xsl:variable name="terterms" select="key('db.index.tertiary.key', $terkey)"/>
+ <xsl:variable name="terlinks" select="$terterms[not(see | db:see)]"/>
+ <xsl:for-each select="$terlinks">
+ <dd class="ixlink">
+ <xsl:call-template name="db2html.xref">
+ <xsl:with-param name="target" select="."/>
+ </xsl:call-template>
+ </dd>
+ </xsl:for-each>
+ <xsl:variable name="tersee"
+ select="$terterms/see | $terterms/db:see"/>
+ <xsl:for-each select="$tersee">
+ <dd class="ixsee">
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="'seeie.format'"/>
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="format" select="true()"/>
+ </xsl:call-template>
+ </dd>
+ </xsl:for-each>
+ <xsl:variable name="terseealso"
+ select="$terterms/seealso | $terterms/db:seealso"/>
+ <xsl:for-each select="$terseealso">
+ <dd class="ixseealso">
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="'seealsoie.format'"/>
+ <xsl:with-param name="node" select="."/>
+ <xsl:with-param name="format" select="true()"/>
+ </xsl:call-template>
+ </dd>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:for-each>
+ </dl>
+ </dd>
+ </xsl:if>
+ </xsl:if>
+ </xsl:for-each>
+ </dl>
+ </dd>
+ </xsl:if>
+ </xsl:if>
+ </xsl:for-each>
+ </dl>
+</xsl:template>
+
</xsl:stylesheet>
diff --git a/xslt/docbook/html/db2html-links.xsl b/xslt/docbook/html/db2html-links.xsl
index af0ebcf3..3e0e741f 100644
--- a/xslt/docbook/html/db2html-links.xsl
+++ b/xslt/docbook/html/db2html-links.xsl
@@ -135,9 +135,9 @@ and "Next", although the actual page titles are used for tooltips.
</xsl:variable>
<xsl:variable name="prev_node" select="key('db.id.key', $prev_id)"/>
<xsl:variable name="next_node" select="key('db.id.key', $next_id)"/>
- <div class="links nextlinks">
+ <nav class="prevnext pagewide"><div class="inner">
<xsl:if test="$prev_id != ''">
- <a class="nextlinks-prev">
+ <a>
<xsl:attribute name="href">
<xsl:call-template name="db.xref.target">
<xsl:with-param name="linkend" select="$prev_id"/>
@@ -156,8 +156,9 @@ and "Next", although the actual page titles are used for tooltips.
</xsl:call-template>
</a>
</xsl:if>
- <xsl:if test="$next_id != ''">
- <a class="nextlinks-next">
+ <xsl:choose>
+ <xsl:when test="$next_id != ''">
+ <a>
<xsl:attribute name="href">
<xsl:call-template name="db.xref.target">
<xsl:with-param name="linkend" select="$next_id"/>
@@ -174,8 +175,16 @@ and "Next", although the actual page titles are used for tooltips.
<xsl:with-param name="msgid" select="'Next'"/>
</xsl:call-template>
</a>
- </xsl:if>
- </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <span>
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="'Next'"/>
+ </xsl:call-template>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div></nav>
</xsl:template>
diff --git a/xslt/docbook/html/db2html-list.xsl b/xslt/docbook/html/db2html-list.xsl
index 5f3018e3..8c5c1898 100644
--- a/xslt/docbook/html/db2html-list.xsl
+++ b/xslt/docbook/html/db2html-list.xsl
@@ -18,15 +18,18 @@ along with this program; see the file COPYING.LGPL. If not, see <http://www.gnu
xmlns:db="http://docbook.org/ns/docbook"
xmlns:msg="http://projects.gnome.org/yelp/gettext/"
xmlns:str="http://exslt.org/strings"
+ xmlns:set="http://exslt.org/sets"
xmlns="http://www.w3.org/1999/xhtml"
- exclude-result-prefixes="db msg str"
+ exclude-result-prefixes="db msg str set"
version="1.0">
+
<!--!!==========================================================================
DocBook to HTML - Lists
-:Requires: db-common db2html-inline db2html-xref l10n html
+:Revision:version="3.next" date="2016-10-27" status="review"
-REMARK: Describe this module
+This stylesheet handles most list-like elements in DocBook, turning them into
+appropriate HTML tags.
-->
@@ -37,12 +40,14 @@ REMARK: Describe this module
<xsl:variable name="if"><xsl:call-template name="db.profile.test"/></xsl:variable>
<xsl:if test="$if != ''">
<div>
+ <xsl:variable name="title" select="title | blockinfo/title |
+ db:title | db:info/db:title"/>
<xsl:call-template name="html.class.attr">
<xsl:with-param name="class" select="'list glosslist'"/>
</xsl:call-template>
<xsl:call-template name="html.lang.attrs"/>
<xsl:call-template name="db2html.anchor"/>
- <xsl:apply-templates select="title | db:title | db:info/db:title"/>
+ <xsl:apply-templates select="$title[1]"/>
<dl class="glosslist">
<xsl:apply-templates select="glossentry | db:glossentry"/>
</dl>
@@ -152,14 +157,19 @@ REMARK: Describe this module
<xsl:variable name="if"><xsl:call-template name="db.profile.test"/></xsl:variable>
<xsl:if test="$if != ''">
<div>
+ <xsl:variable name="title" select="title | blockinfo/title |
+ db:title | db:info/db:title"/>
+ <xsl:variable name="items" select="listitem | db:listitem"/>
<xsl:call-template name="html.class.attr">
<xsl:with-param name="class" select="'list itemizedlist'"/>
</xsl:call-template>
<xsl:call-template name="html.lang.attrs"/>
<xsl:call-template name="db2html.anchor"/>
- <xsl:apply-templates select="db:info/db:title"/>
- <xsl:apply-templates select="*[not(self::listitem) and not(self::db:listitem)]"/>
- <ul>
+ <div class="inner">
+ <xsl:apply-templates select="$title[1]"/>
+ <div class="region"><div class="contents">
+ <xsl:apply-templates select="*[not(set:has-same-node(., $title | $items))]"/>
+ <ul>
<xsl:attribute name="class">
<xsl:text>list itemizedlist</xsl:text>
<xsl:if test="@spacing = 'compact'">
@@ -176,8 +186,10 @@ REMARK: Describe this module
</xsl:choose>
</xsl:attribute>
</xsl:if>
- <xsl:apply-templates select="listitem | db:listitem"/>
- </ul>
+ <xsl:apply-templates select="$items"/>
+ </ul>
+ </div></div>
+ </div>
</div>
</xsl:if>
</xsl:template>
@@ -227,14 +239,19 @@ REMARK: Describe this module
</xsl:variable>
<!-- FIXME: auto-numeration for nested lists -->
<div>
+ <xsl:variable name="title" select="title | blockinfo/title |
+ db:title | db:info/db:title"/>
+ <xsl:variable name="items" select="listitem | db:listitem"/>
<xsl:call-template name="html.class.attr">
<xsl:with-param name="class" select="'list orderedlist'"/>
</xsl:call-template>
<xsl:call-template name="html.lang.attrs"/>
<xsl:call-template name="db2html.anchor"/>
- <xsl:apply-templates select="db:info/db:title"/>
- <xsl:apply-templates select="*[not(self::listitem) and not(self::db:listitem)]"/>
- <ol>
+ <div class="inner">
+ <xsl:apply-templates select="$title[1]"/>
+ <div class="region"><div class="contents">
+ <xsl:apply-templates select="*[not(set:has-same-node(., $title | $items))]"/>
+ <ol>
<xsl:attribute name="class">
<xsl:text>list orderedlist</xsl:text>
<xsl:if test="@spacing = 'compact'">
@@ -260,7 +277,9 @@ REMARK: Describe this module
</xsl:if>
<!-- FIXME: @inheritnum -->
<xsl:apply-templates select="listitem | db:listitem"/>
- </ol>
+ </ol>
+ </div></div>
+ </div>
</div>
</xsl:if>
</xsl:template>
@@ -290,27 +309,33 @@ REMARK: Describe this module
<xsl:variable name="if"><xsl:call-template name="db.profile.test"/></xsl:variable>
<xsl:if test="$if != ''">
<div>
+ <xsl:variable name="title" select="title | blockinfo/title |
+ db:title | db:info/db:title"/>
+ <xsl:variable name="steps" select="step | db:step"/>
+ <xsl:variable name="result" select="db:result"/>
<xsl:call-template name="html.class.attr">
<xsl:with-param name="class" select="'steps'"/>
</xsl:call-template>
<xsl:call-template name="html.lang.attrs"/>
<xsl:call-template name="db2html.anchor"/>
<div class="inner">
- <xsl:apply-templates select="db:info/db:title"/>
- <xsl:apply-templates select="*[not(self::step) and not(self::db:step)]"/>
+ <xsl:apply-templates select="$title[1]"/>
+ <div class="region"><div class="contents">
+ <xsl:apply-templates select="*[not(set:has-same-node(., $title | $steps | $result))]"/>
<xsl:choose>
- <xsl:when test="(count(step) + count(db:step)) = 1">
+ <xsl:when test="count($steps) = 1">
<ul class="steps">
- <xsl:apply-templates select="step | db:step"/>
+ <xsl:apply-templates select="$steps"/>
</ul>
</xsl:when>
<xsl:otherwise>
<ol class="steps">
- <xsl:apply-templates select="step | db:step"/>
+ <xsl:apply-templates select="$steps"/>
</ol>
</xsl:otherwise>
</xsl:choose>
- </div>
+ <xsl:apply-templates select="$result"/>
+ </div></div></div>
</div>
</xsl:if>
</xsl:template>
@@ -550,6 +575,21 @@ REMARK: Describe this module
</xsl:if>
</xsl:template>
+<!-- = result = -->
+<xsl:template match="result | db:result">
+ <xsl:variable name="if"><xsl:call-template name="db.profile.test"/></xsl:variable>
+ <xsl:if test="$if != ''">
+ <div>
+ <xsl:call-template name="html.class.attr">
+ <xsl:with-param name="class" select="'result'"/>
+ </xsl:call-template>
+ <xsl:call-template name="html.lang.attrs"/>
+ <xsl:call-template name="db2html.anchor"/>
+ <xsl:apply-templates/>
+ </div>
+ </xsl:if>
+</xsl:template>
+
<!-- FIXME: Do something with @performance -->
<!-- = step = -->
<xsl:template match="step | db:step">
@@ -566,6 +606,24 @@ REMARK: Describe this module
</xsl:template>
<!-- FIXME: Do something with @performance -->
+<!-- = stepalternatives = -->
+<xsl:template match="stepalternatives | db:stepalternatives">
+ <xsl:variable name="if"><xsl:call-template name="db.profile.test"/></xsl:variable>
+ <xsl:if test="$if != ''">
+ <div>
+ <xsl:call-template name="html.class.attr">
+ <xsl:with-param name="class" select="'steps stepalternatives'"/>
+ </xsl:call-template>
+ <xsl:call-template name="html.lang.attrs"/>
+ <xsl:call-template name="db2html.anchor"/>
+ <ul class="steps stepalternatives">
+ <xsl:apply-templates/>
+ </ul>
+ </div>
+ </xsl:if>
+</xsl:template>
+
+<!-- FIXME: Do something with @performance -->
<!-- = substeps = -->
<xsl:template match="substeps | db:substeps">
<xsl:variable name="if"><xsl:call-template name="db.profile.test"/></xsl:variable>
@@ -617,17 +675,23 @@ REMARK: Describe this module
<xsl:variable name="if"><xsl:call-template name="db.profile.test"/></xsl:variable>
<xsl:if test="$if != ''">
<div>
+ <xsl:variable name="title" select="title | blockinfo/title |
+ db:title | db:info/db:title"/>
+ <xsl:variable name="items" select="varlistentry | db:varlistentry"/>
<xsl:call-template name="html.class.attr">
<xsl:with-param name="class" select="'terms variablelist'"/>
</xsl:call-template>
<xsl:call-template name="html.lang.attrs"/>
<xsl:call-template name="db2html.anchor"/>
- <xsl:apply-templates select="db:info/db:title"/>
- <xsl:apply-templates select="*[not(self::varlistentry) and
- not(self::db:varlistentry)]"/>
- <dl class="terms variablelist">
- <xsl:apply-templates select="varlistentry |db:varlistentry"/>
- </dl>
+ <div class="inner">
+ <xsl:apply-templates select="$title[1]"/>
+ <div class="region"><div class="contents">
+ <xsl:apply-templates select="*[not(set:has-same-node(., $title | $items))]"/>
+ <dl class="terms variablelist">
+ <xsl:apply-templates select="$items"/>
+ </dl>
+ </div></div>
+ </div>
</div>
</xsl:if>
</xsl:template>
diff --git a/xslt/docbook/html/db2html-media.xsl b/xslt/docbook/html/db2html-media.xsl
index 6af7f14f..be2f7349 100644
--- a/xslt/docbook/html/db2html-media.xsl
+++ b/xslt/docbook/html/db2html-media.xsl
@@ -50,7 +50,7 @@ calls *{db2html.mediaobject.fallback} for the contents of the #{audio} element.
$node/ancestor::db:mediaobject[1] |
$node/ancestor::db:inlinemediaobject[1]
)[last()]"/>
- <audio preload="auto" controls="controls">
+ <audio preload="auto">
<xsl:attribute name="src">
<xsl:choose>
<xsl:when test="$node/@fileref">
@@ -61,20 +61,13 @@ calls *{db2html.mediaobject.fallback} for the contents of the #{audio} element.
</xsl:when>
</xsl:choose>
</xsl:attribute>
- <xsl:attribute name="data-play-label">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Play'"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:attribute name="data-pause-label">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Pause'"/>
- </xsl:call-template>
- </xsl:attribute>
<xsl:call-template name="db2html.mediaobject.fallback">
<xsl:with-param name="node" select="$media"/>
</xsl:call-template>
</audio>
+ <xsl:call-template name="html.media.controls">
+ <xsl:with-param name="type" select="'audio'"/>
+ </xsl:call-template>
</xsl:template>
@@ -160,7 +153,7 @@ attribute on the HTML #{video} element. This template calls
$node/ancestor::db:mediaobject[1] |
$node/ancestor::db:inlinemediaobject[1]
)[last()]"/>
- <video preload="auto" controls="controls">
+ <video preload="auto">
<xsl:attribute name="src">
<xsl:choose>
<xsl:when test="$node/@fileref">
@@ -196,20 +189,13 @@ attribute on the HTML #{video} element. This template calls
</xsl:choose>
</xsl:attribute>
</xsl:if>
- <xsl:attribute name="data-play-label">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Play'"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:attribute name="data-pause-label">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Pause'"/>
- </xsl:call-template>
- </xsl:attribute>
<xsl:call-template name="db2html.mediaobject.fallback">
<xsl:with-param name="node" select="$media"/>
</xsl:call-template>
</video>
+ <xsl:call-template name="html.media.controls">
+ <xsl:with-param name="type" select="'video'"/>
+ </xsl:call-template>
</xsl:template>
@@ -372,7 +358,14 @@ elements.
<xsl:apply-templates select="mml:math"/>
</xsl:when>
<xsl:otherwise>
- <xsl:call-template name="db2html.imagedata"/>
+ <div>
+ <xsl:call-template name="html.class.attr">
+ <xsl:with-param name="class" select="'media media-image'"/>
+ </xsl:call-template>
+ <div class="inner">
+ <xsl:call-template name="db2html.imagedata"/>
+ </div>
+ </div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
diff --git a/xslt/docbook/html/db2html.xsl b/xslt/docbook/html/db2html.xsl
index 96bd4c16..d95ef9b5 100644
--- a/xslt/docbook/html/db2html.xsl
+++ b/xslt/docbook/html/db2html.xsl
@@ -17,7 +17,8 @@ along with this program; see the file COPYING.LGPL. If not, see <http://www.gnu
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:mml="http://www.w3.org/1998/Math/MathML"
- exclude-result-prefixes="html mml"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ exclude-result-prefixes="html mml svg"
version="1.0">
<!--!!==========================================================================
@@ -38,5 +39,6 @@ sets a namespace alias to output non-XML HTML. This stylesheet sets
<xsl:namespace-alias stylesheet-prefix="html" result-prefix="#default"/>
<xsl:namespace-alias stylesheet-prefix="mml" result-prefix="#default"/>
+<xsl:namespace-alias stylesheet-prefix="svg" result-prefix="#default"/>
</xsl:stylesheet>
diff --git a/xslt/mallard/cache/mal-cache.xsl b/xslt/mallard/cache/mal-cache.xsl
index a79a4aaf..3439f705 100644
--- a/xslt/mallard/cache/mal-cache.xsl
+++ b/xslt/mallard/cache/mal-cache.xsl
@@ -48,18 +48,6 @@ mal.cache.id
<!--**==========================================================================
-mal.cache.xref
--->
-<xsl:template name="mal.cache.xref">
- <xsl:param name="node" select="."/>
- <xsl:param name="node_in"/>
- <xsl:attribute name="xref">
- <xsl:value-of select="$node/@xref"/>
- </xsl:attribute>
-</xsl:template>
-
-
-<!--**==========================================================================
mal.cache.info
-->
<xsl:template name="mal.cache.info">
@@ -68,21 +56,7 @@ mal.cache.info
<xsl:param name="node_in"/>
<info>
<xsl:for-each select="$info/*">
- <xsl:choose>
- <xsl:when test="self::mal:link">
- <link>
- <xsl:call-template name="mal.cache.xref">
- <xsl:with-param name="node_in" select="$node_in"/>
- </xsl:call-template>
- <xsl:for-each select="attribute::*[not(name(.) = 'xref')] | *">
- <xsl:copy-of select="."/>
- </xsl:for-each>
- </link>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="."/>
- </xsl:otherwise>
- </xsl:choose>
+ <xsl:copy-of select="."/>
</xsl:for-each>
</info>
</xsl:template>
diff --git a/xslt/mallard/common/mal-if.xsl b/xslt/mallard/common/mal-if.xsl
index 3507f366..9a221593 100644
--- a/xslt/mallard/common/mal-if.xsl
+++ b/xslt/mallard/common/mal-if.xsl
@@ -189,7 +189,7 @@ of dynamically showing or hiding content based on those tokens.
<xsl:otherwise>
<xsl:variable name="subcond">
<xsl:for-each select="str:tokenize($subexpr, ' ')[.!='1']">
- <xsl:if test="position != 1">
+ <xsl:if test="position() != 1">
<xsl:text>__</xsl:text>
</xsl:if>
<xsl:value-of select="."/>
diff --git a/xslt/mallard/html/Makefile.am b/xslt/mallard/html/Makefile.am
index af120658..50490123 100644
--- a/xslt/mallard/html/Makefile.am
+++ b/xslt/mallard/html/Makefile.am
@@ -3,7 +3,6 @@ xsldir=$(datadir)/yelp-xsl/xslt/mallard/html
xsl_DATA = \
mal2html-api.xsl \
mal2html-block.xsl \
- mal2html-facets.xsl \
mal2html-gloss.xsl \
mal2html-inline.xsl \
mal2html-links.xsl \
diff --git a/xslt/mallard/html/mal2html-block.xsl b/xslt/mallard/html/mal2html-block.xsl
index a7032688..6c9dd19a 100644
--- a/xslt/mallard/html/mal2html-block.xsl
+++ b/xslt/mallard/html/mal2html-block.xsl
@@ -78,15 +78,14 @@ syntax highlighting support based on the #{mime} attribute of ${node}, using
<xsl:with-param name="node" select="$node"/>
</xsl:call-template></pre>
</xsl:if>
- <pre>
- <xsl:attribute name="class">
- <xsl:text>contents </xsl:text>
- <xsl:if test="$html.syntax.highlight and $node/@mime">
+ <pre class="contents"><code>
+ <xsl:if test="$html.syntax.highlight and ($node/@mime or $node/@type)">
+ <xsl:attribute name="class">
<xsl:call-template name="html.syntax.class">
<xsl:with-param name="node" select="$node"/>
</xsl:call-template>
- </xsl:if>
- </xsl:attribute>
+ </xsl:attribute>
+ </xsl:if>
<xsl:if test="$first">
<xsl:call-template name="utils.strip_newlines">
<xsl:with-param name="string" select="$first"/>
@@ -103,7 +102,7 @@ syntax highlighting support based on the #{mime} attribute of ${node}, using
<xsl:with-param name="trailing" select="true()"/>
</xsl:call-template>
</xsl:if>
- </pre>
+ </code></pre>
</div>
</xsl:if>
</xsl:template>
@@ -195,6 +194,242 @@ in accordance with the Mallard specification on fallback block content.
<xsl:call-template name="mal2html.pre"/>
</xsl:template>
+<xsl:template mode="html.syntax.class.mode" match="mal:code | mal:screen">
+ <xsl:variable name="type" select="concat(' ', translate(@type,
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYX',
+ 'abcdefghijklmnopqrstuvwxyz'),
+ ' ')"/>
+ <xsl:choose>
+ <!-- First do checks for embedded and derivative things, where people
+ might reasonably put other matched values in the type attribute. -->
+ <!-- Clojure -->
+ <xsl:when test="@mime = 'application/x-clojure' or
+ contains($type, ' clojure ') or contains($type, ' clj ')">
+ <xsl:text>clojure</xsl:text>
+ </xsl:when>
+ <!-- Django -->
+ <xsl:when test="@mime = 'application/x-django-templating' or contains($type, ' django ')">
+ <xsl:text>django</xsl:text>
+ </xsl:when>
+ <!-- Embedded Ruby -->
+ <xsl:when test="@mime = 'application/x-ruby-templating' or contains($type, ' erb ')">
+ <xsl:text>erb</xsl:text>
+ </xsl:when>
+ <!-- JSON -->
+ <xsl:when test="@mime = 'application/json' or contains($type, ' json ')">
+ <xsl:text>json</xsl:text>
+ </xsl:when>
+ <!-- PHP -->
+ <xsl:when test="@mime = 'application/x-php' or contains($type, ' php ')">
+ <xsl:text>php</xsl:text>
+ </xsl:when>
+ <!-- Scheme -->
+ <xsl:when test="@mime = 'text/x-scheme' or
+ contains($type, ' scheme ') or contains($type, ' scm ')">
+ <xsl:text>scheme</xsl:text>
+ </xsl:when>
+
+ <!-- Then do the rest of the checks. -->
+ <!-- ActionScript -->
+ <xsl:when test="@mime = 'application/x-actionscript' or contains($type, ' actionscript ')">
+ <xsl:text>actionscript</xsl:text>
+ </xsl:when>
+ <!-- Apache -->
+ <xsl:when test="@mime = 'text/x-apacheconf' or contains($type, ' apache ')">
+ <xsl:text>apache</xsl:text>
+ </xsl:when>
+ <!-- AsciiDoc -->
+ <xsl:when test="@mime = 'text/x-asciidoc' or
+ contains($type, ' asciidoc ') or contains($type, ' adoc ')">
+ <xsl:text>asciidoc</xsl:text>
+ </xsl:when>
+ <!-- Bash -->
+ <xsl:when test="@mime = 'application/x-shellscript' or
+ contains($type, ' sh ') or contains($type, ' bash ') or
+ contains($type, ' csh ')">
+ <xsl:text>bash</xsl:text>
+ </xsl:when>
+ <!-- C -->
+ <xsl:when test="@mime = 'text/x-csrc' or @mime = 'text/x-chdr' or
+ contains($type, ' c ')">
+ <xsl:text>c</xsl:text>
+ </xsl:when>
+ <!-- C# -->
+ <xsl:when test="@mime = 'text/x-csharp' or
+ contains($type, ' cs ') or contains($type, ' csharp ')">
+ <xsl:text>cs</xsl:text>
+ </xsl:when>
+ <!-- C++ -->
+ <xsl:when test="@mime = 'text/x-c++hdr' or @mime = 'text/x-c++src' or
+ contains($type, ' cpp ') or contains($type, ' c++ ')">
+ <xsl:text>cpp</xsl:text>
+ </xsl:when>
+ <!-- CMake -->
+ <xsl:when test="@mime = 'text/x-cmake' or contains($type, ' cmake ')">
+ <xsl:text>cmake</xsl:text>
+ </xsl:when>
+ <!-- CSS -->
+ <xsl:when test="@mime = 'text/css' or contains($type, ' css ')">
+ <xsl:text>css</xsl:text>
+ </xsl:when>
+ <!-- D -->
+ <xsl:when test="@mime = 'text/x-d' or contains($type, ' d ')">
+ <xsl:text>d</xsl:text>
+ </xsl:when>
+ <!-- Diff -->
+ <xsl:when test="@mime = 'text/x-diff' or @mime = 'text/x-patch' or
+ contains($type, ' diff ') or contains($type, ' patch ')">
+ <xsl:text>diff</xsl:text>
+ </xsl:when>
+ <!-- Dockerfile -->
+ <xsl:when test="contains($type, ' dockerfile ')">
+ <xsl:text>dockerfile</xsl:text>
+ </xsl:when>
+ <!-- DOS -->
+ <xsl:when test="@mime = 'application/x-dos-batch' or contains($type, ' dos ')">
+ <xsl:text>dos</xsl:text>
+ </xsl:when>
+ <!-- F# -->
+ <xsl:when test="@mime = 'text/x-fsharp' or contains($type, ' fsharp ')">
+ <xsl:text>fsharp</xsl:text>
+ </xsl:when>
+ <!-- Go -->
+ <xsl:when test="@mime = 'text/x-go' or contains($type, ' go ')">
+ <xsl:text>go</xsl:text>
+ </xsl:when>
+ <!-- Nginx -->
+ <xsl:when test="@mime = 'text/x-haml' or contains($type, ' haml ')">
+ <xsl:text>haml</xsl:text>
+ </xsl:when>
+ <!-- Haskell -->
+ <xsl:when test="@mime = 'text/x-haskell' or
+ contains($type, ' haskell ') or contains($type, ' hs ')">
+ <xsl:text>hs</xsl:text>
+ </xsl:when>
+ <!-- HTML -->
+ <xsl:when test="@mime = 'text/html' or
+ contains($type, ' html ') or contains($type, ' xhtml ')">
+ <xsl:text>html</xsl:text>
+ </xsl:when>
+ <!-- HTTP -->
+ <xsl:when test="contains($type, ' http ')">
+ <xsl:text>http</xsl:text>
+ </xsl:when>
+ <!-- INI -->
+ <xsl:when test="contains($type, ' ini ')">
+ <xsl:text>ini</xsl:text>
+ </xsl:when>
+ <!-- Java -->
+ <xsl:when test="@mime = 'text/x-java' or contains($type, ' java ')">
+ <xsl:text>java</xsl:text>
+ </xsl:when>
+ <!-- Javascript -->
+ <xsl:when test="@mime = 'application/javascript' or
+ contains($type, ' js ') or contains($type, ' javascript ')">
+ <xsl:text>javascript</xsl:text>
+ </xsl:when>
+ <!-- LISP -->
+ <xsl:when test="@mime = 'application/x-lisp' or @mime = 'text/x-emacs-lisp' or
+ contains($type, ' lisp ') or contains($type, ' el ') or
+ contains($type, ' cl ') or contains($type, ' lsp ')">
+ <xsl:text>lisp</xsl:text>
+ </xsl:when>
+ <!-- Lua -->
+ <xsl:when test="@mime = 'text/x-lua' or contains($type, ' lua ')">
+ <xsl:text>lua</xsl:text>
+ </xsl:when>
+ <!-- Makefile -->
+ <xsl:when test="@mime = 'text/x-makefile' or
+ contains($type, ' makefile ') or contains($type, ' make ')">
+ <xsl:text>makefile</xsl:text>
+ </xsl:when>
+ <!-- Markdown -->
+ <xsl:when test="@mime = 'text/x-markdown' or
+ contains($type, ' markdown ') or contains($type, ' md ')">
+ <xsl:text>markdown</xsl:text>
+ </xsl:when>
+ <!-- MATLAB/Octave -->
+ <xsl:when test="@mime = 'text/x-matlab' or @mime = 'text/x-octave' or
+ contains($type, ' matlab ') or contains($type, ' octave ')">
+ <xsl:text>matlab</xsl:text>
+ </xsl:when>
+ <!-- Nginx -->
+ <xsl:when test="@mime = 'text/x-nginx-conf' or contains($type, ' nginx ')">
+ <xsl:text>nginx</xsl:text>
+ </xsl:when>
+ <!-- Objective C -->
+ <xsl:when test="@mime = 'text/x-objcsrc' or
+ contains($type, ' objc ') or contains($type, ' m ')">
+ <xsl:text>objectivec</xsl:text>
+ </xsl:when>
+ <!-- Perl -->
+ <xsl:when test="@mime = 'application/x-perl' or contains($type, ' perl ') or
+ contains($type, ' pl ') or contains($type, ' pm ')">
+ <xsl:text>perl</xsl:text>
+ </xsl:when>
+ <!-- Python -->
+ <xsl:when test="@mime = 'text/x-python' or
+ contains($type, ' py ') or contains($type, ' python ')">
+ <xsl:text>python</xsl:text>
+ </xsl:when>
+ <!-- R/S -->
+ <xsl:when test="@mime = 'text/x-r' or @mime = 'text/x-s' or
+ contains($type, ' r ') or contains($type, ' s ')">
+ <xsl:text>r</xsl:text>
+ </xsl:when>
+ <!-- Ruby -->
+ <xsl:when test="@mime = 'application/x-ruby' or
+ contains($type, ' ruby ') or contains($type, ' rb ')">
+ <xsl:text>ruby</xsl:text>
+ </xsl:when>
+ <!-- Rust -->
+ <xsl:when test="@mime = 'text/x-rust' or contains($type, ' rust ')">
+ <xsl:text>rust</xsl:text>
+ </xsl:when>
+ <!-- Scala -->
+ <xsl:when test="@mime = 'text/x-scala' or contains($type, ' scala ')">
+ <xsl:text>scala</xsl:text>
+ </xsl:when>
+ <!-- Smalltalk -->
+ <xsl:when test="@mime = 'text/x-smalltalk' or contains($type, ' smalltalk ')">
+ <xsl:text>smalltalk</xsl:text>
+ </xsl:when>
+ <!-- SQL -->
+ <xsl:when test="@mime = 'application/sql' or contains($type, ' sql ')">
+ <xsl:text>sql</xsl:text>
+ </xsl:when>
+ <!-- TCL -->
+ <xsl:when test="@mime = 'application/x-tcl' or @mime = 'text/x-tcl' or
+ contains($type, ' tcl ')">
+ <xsl:text>tcl</xsl:text>
+ </xsl:when>
+ <!-- TeX -->
+ <xsl:when test="@mime = 'text/x-tex' or
+ contains($type, ' tex ') or contains($type, ' latex ')">
+ <xsl:text>tex</xsl:text>
+ </xsl:when>
+ <!-- Vala -->
+ <xsl:when test="@mime = 'text/x-vala' or contains($type, ' vala ')">
+ <xsl:text>vala</xsl:text>
+ </xsl:when>
+ <!-- XML -->
+ <xsl:when test="@mime = 'application/xml' or
+ substring(@mime, string-length(@mime) - 3) = '+xml'
+ or contains($type, ' xml ')">
+ <xsl:text>xml</xsl:text>
+ </xsl:when>
+ <!-- XQuery -->
+ <xsl:when test="@mime = 'application/xquery' or
+ contains($type, ' xq ') or contains($type, ' xquery ')">
+ <xsl:text>xquery</xsl:text>
+ </xsl:when>
+ <!-- YAML -->
+ <xsl:when test="@mime = 'application/x-yaml' or contains($type, ' yaml ')">
+ <xsl:text>yaml</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
<!-- = comment = -->
<xsl:template mode="mal2html.block.mode" match="mal:comment">
<xsl:variable name="if"><xsl:call-template name="mal.if.test"/></xsl:variable><xsl:if test="$if != ''">
@@ -361,7 +596,7 @@ in accordance with the Mallard specification on fallback block content.
</xsl:call-template>
<xsl:call-template name="mal2html.ui.expander.data"/>
<div class="inner">
- <a href="#" class="zoom">
+ <a href="#" class="figure-zoom">
<xsl:attribute name="data-zoom-in-title">
<xsl:call-template name="l10n.gettext">
<xsl:with-param name="msgid" select="'View images at normal size'"/>
@@ -372,6 +607,8 @@ in accordance with the Mallard specification on fallback block content.
<xsl:with-param name="msgid" select="'Scale images down'"/>
</xsl:call-template>
</xsl:attribute>
+ <xsl:call-template name="icons.svg.figure.zoom.in"/>
+ <xsl:call-template name="icons.svg.figure.zoom.out"/>
</a>
<xsl:apply-templates mode="mal2html.block.mode" select="mal:title[1]"/>
<div class="region">
@@ -423,7 +660,7 @@ in accordance with the Mallard specification on fallback block content.
<!-- = note = -->
<xsl:template mode="mal2html.block.mode" match="mal:note">
<xsl:variable name="if"><xsl:call-template name="mal.if.test"/></xsl:variable><xsl:if test="$if != ''">
- <xsl:variable name="notestyle">
+ <xsl:variable name="notetitle">
<xsl:choose>
<xsl:when test="contains(concat(' ', @style, ' '), ' advanced ')">
<xsl:text>Advanced</xsl:text>
@@ -431,9 +668,18 @@ in accordance with the Mallard specification on fallback block content.
<xsl:when test="contains(concat(' ', @style, ' '), ' bug ')">
<xsl:text>Bug</xsl:text>
</xsl:when>
+ <xsl:when test="contains(concat(' ', @style, ' '), ' caution ')">
+ <xsl:text>Caution</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains(concat(' ', @style, ' '), ' danger ')">
+ <xsl:text>Danger</xsl:text>
+ </xsl:when>
<xsl:when test="contains(concat(' ', @style, ' '), ' important ')">
<xsl:text>Important</xsl:text>
</xsl:when>
+ <xsl:when test="contains(concat(' ', @style, ' '), ' package ')">
+ <xsl:text>Package</xsl:text>
+ </xsl:when>
<xsl:when test="contains(concat(' ', @style, ' '), ' plain ')">
<xsl:text>plain</xsl:text>
</xsl:when>
@@ -451,13 +697,18 @@ in accordance with the Mallard specification on fallback block content.
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
+ <xsl:variable name="notestyle">
+ <xsl:value-of select="translate($notetitle,
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
+ 'abcdefghijklmnopqrstuvwxyz')"/>
+ </xsl:variable>
<div>
<xsl:call-template name="html.lang.attrs"/>
<xsl:call-template name="html.class.attr">
<xsl:with-param name="class">
<xsl:text>note</xsl:text>
- <xsl:if test="$notestyle != 'Note'">
- <xsl:value-of select="concat(' note-', translate($notestyle, 'ABISTW', 'abistw'))"/>
+ <xsl:if test="$notestyle != 'note'">
+ <xsl:value-of select="concat(' note-', $notestyle)"/>
</xsl:if>
<xsl:if test="mal:title and (@ui:expanded or @uix:expanded)">
<xsl:text> ui-expander</xsl:text>
@@ -471,11 +722,16 @@ in accordance with the Mallard specification on fallback block content.
<xsl:if test="$notestyle != 'plain'">
<xsl:attribute name="title">
<xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="$notestyle"/>
+ <xsl:with-param name="msgid" select="$notetitle"/>
</xsl:call-template>
</xsl:attribute>
</xsl:if>
<xsl:call-template name="mal2html.ui.expander.data"/>
+ <xsl:if test="$notestyle != 'plain' and $notestyle != 'sidebar'">
+ <xsl:call-template name="icons.svg.note">
+ <xsl:with-param name="style" select="$notestyle"/>
+ </xsl:call-template>
+ </xsl:if>
<div class="inner">
<xsl:apply-templates mode="mal2html.block.mode" select="mal:title"/>
<div class="region">
diff --git a/xslt/mallard/html/mal2html-facets.xsl b/xslt/mallard/html/mal2html-facets.xsl
deleted file mode 100644
index f86729bc..00000000
--- a/xslt/mallard/html/mal2html-facets.xsl
+++ /dev/null
@@ -1,172 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?><!-- -*- indent-tabs-mode: nil -*- -->
-<!--
-This program is free software; you can redistribute it and/or modify it under
-the terms of the GNU Lesser General Public License as published by the Free
-Software Foundation; either version 2 of the License, or (at your option) any
-later version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
-details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with this program; see the file COPYING.LGPL. If not, see <http://www.gnu.org/licenses/>.
--->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:mal="http://projectmallard.org/1.0/"
- xmlns:cache="http://projectmallard.org/cache/1.0/"
- xmlns:facet="http://projectmallard.org/facet/1.0/"
- xmlns:exsl="http://exslt.org/common"
- xmlns:str="http://exslt.org/strings"
- xmlns="http://www.w3.org/1999/xhtml"
- exclude-result-prefixes="mal cache facet exsl str"
- version="1.0">
-
-<!--!!==========================================================================
-Mallard to HTML - Facets
-Support the Mallard Facets extension.
-
-This stylesheet contains templates and supporting JavaScript for the Mallard
-Facets extension.
--->
-
-<!--**==========================================================================
-mal2html.facets.controls
-Output the controls to filter faceted links.
-$node: The facets #{page} or #{section} to generate controls for.
-
-REMARK: Describe this template
--->
-<xsl:template name="mal2html.facets.controls">
- <xsl:param name="node" select="."/>
- <xsl:variable name="choices" select="$node/mal:info/facet:choice"/>
- <xsl:if test="count($choices) &gt; 0">
- <div class="facets">
- <xsl:for-each select="$choices">
- <div class="facet">
- <div class="title">
- <xsl:apply-templates mode="mal2html.inline.mode" select="facet:title/node()"/>
- </div>
- <ul>
- <xsl:for-each select="facet:case">
- <li>
- <label>
- <input type="checkbox" checked="checked" class="facet">
- <xsl:attribute name="data-facet-key">
- <xsl:value-of select="../@key"/>
- </xsl:attribute>
- <xsl:attribute name="data-facet-values">
- <xsl:value-of select="@values"/>
- </xsl:attribute>
- </input>
- <xsl:text> </xsl:text>
- <span>
- <xsl:apply-templates mode="mal2html.inline.mode"/>
- </span>
- </label>
- </li>
- </xsl:for-each>
- </ul>
- </div>
- </xsl:for-each>
- </div>
- </xsl:if>
-</xsl:template>
-
-
-<!--**==========================================================================
-mal2html.facets.links
-Output the links for a facets node.
-:Revision:version="1.0" date="2010-12-16" status="final"
-$node: The facets #{page} or #{section} element to generate links for.
-
-This template outputs links for a facets node. It gets the links from
-*{mal.link.facetlinks}, sorts them, and outputs HTML #{a} elements for each
-link. Each #{a} element has data attribute for each facet tag in ${node} in
-the form of #{data-facet-KEY="VALUES"}, where #{KEY} is the key of the facet
-tag and VALUES is the values.
--->
-<xsl:template name="mal2html.facets.links">
- <xsl:param name="node" select="."/>
- <xsl:variable name="facetlinks">
- <xsl:call-template name="mal.link.facetlinks">
- <xsl:with-param name="node" select="$node"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="links">
- <xsl:for-each select="exsl:node-set($facetlinks)/mal:link">
- <xsl:copy>
- <xsl:copy-of select="@*"/>
- <xsl:attribute name="class">
- <xsl:value-of select="'facet-link'"/>
- </xsl:attribute>
- <xsl:for-each select="facet:tag">
- <xsl:attribute name="data-facet-{@key}">
- <xsl:value-of select="@values"/>
- </xsl:attribute>
- </xsl:for-each>
- </xsl:copy>
- </xsl:for-each>
- </xsl:variable>
- <xsl:call-template name="mal2html.links.links">
- <xsl:with-param name="node" select="($node | $node/mal:links[@type='facet'])[last()]"/>
- <xsl:with-param name="links" select="exsl:node-set($links)/mal:link"/>
- <xsl:with-param name="role" select="'facet'"/>
- <xsl:with-param name="divs" select="true()"/>
- </xsl:call-template>
-</xsl:template>
-
-
-<!--**==========================================================================
-mal2html.facets.js
-
-REMARK: FIXME
--->
-<xsl:template name="mal2html.facets.js">
-<xsl:text><![CDATA[
-$(document).ready(function () {
- $('input.facet').change(function () {
- var control = $(this);
- var content = control.closest('div.body,div.sect');
- content.find('.facet-link').each(function () {
- var link = $(this);
- var facets = link.parents('div.body,div.sect').children('div.region').children('div.contents').children('div.facets').children('div.facet');
- var visible = true;
- for (var i = 0; i < facets.length; i++) {
- var facet = facets.slice(i, i + 1);
- var facetvis = false;
- var inputs = facet.find('input.facet:checked');
- for (var j = 0; j < inputs.length; j++) {
- var input = inputs.slice(j, j + 1);
- var inputvis = false;
- var key = input.attr('data-facet-key');
- var values = input.attr('data-facet-values').split(' ');
- for (var k = 0; k < values.length; k++) {
- if (link.is('*[data-facet-' + key + ' ~= "' + values[k] + '"]')) {
- inputvis = true;
- break;
- }
- }
- if (inputvis) {
- facetvis = true;
- break;
- }
- }
- if (!facetvis) {
- visible = false;
- break;
- }
- }
- if (!visible)
- link.hide('fast');
- else
- link.show('fast');
- });
- });
-});
-]]></xsl:text>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/xslt/mallard/html/mal2html-gloss.xsl b/xslt/mallard/html/mal2html-gloss.xsl
index 230da5f0..a7bb7a28 100644
--- a/xslt/mallard/html/mal2html-gloss.xsl
+++ b/xslt/mallard/html/mal2html-gloss.xsl
@@ -134,42 +134,4 @@ include a link to their defining page.
</a>
</xsl:template>
-
-<!--**==========================================================================
-mal2html.gloss.js
-
-REMARK: FIXME
--->
-<xsl:template name="mal2html.gloss.js">
-<xsl:text><![CDATA[
-$(document).ready(function () {
- $('a.gloss-term').each(function () {
- if ($(this).attr('href') == '#') {
- $(this).click(function () { return false; });
- }
- var showtip = function () {
- var desc = $(this).children('span.gloss-desc');
- if (desc.is(':visible'))
- return;
- var top = $(this).offset().top + $(this).height() + 1;
- var left = $(this).offset().left;
- var cnt = $(this).closest('div.contents');
- var diff = cnt.offset().left + cnt.width() - desc.width() - 4;
- if (left > diff)
- left = diff;
- desc.css({'top': top + 'px', 'left': left + 'px'}).fadeIn('slow');
- };
- var hidetip = function () {
- if ($(this).is(':focus'))
- return;
- $(this).children('span.gloss-desc').fadeOut('fast');
- };
- $(this).hover(showtip, hidetip);
- $(this).focus(showtip);
- $(this).blur(hidetip);
- });
-});
-]]></xsl:text>
-</xsl:template>
-
</xsl:stylesheet>
diff --git a/xslt/mallard/html/mal2html-links.xsl b/xslt/mallard/html/mal2html-links.xsl
index af0004ee..1ec7cec1 100644
--- a/xslt/mallard/html/mal2html-links.xsl
+++ b/xslt/mallard/html/mal2html-links.xsl
@@ -153,7 +153,7 @@ parameter will be used if provided.
</xsl:call-template>
</xsl:when>
<xsl:when test="$uithumbs = 'hover'">
- <xsl:call-template name="mal2html.ui.links.hover">
+ <xsl:call-template name="_mal2html.ui.links.hover">
<xsl:with-param name="node" select="$node"/>
<xsl:with-param name="links" select="$links"/>
<xsl:with-param name="role" select="$role"/>
@@ -214,8 +214,6 @@ parameter will be used if provided.
<xsl:with-param name="nodesc" select="$nodesc"/>
<xsl:with-param name="max" select="$coltot"/>
</xsl:call-template>
- </div>
- <div class="links-twocolumn">
<xsl:call-template name="_mal2html.links.divs">
<xsl:with-param name="node" select="$node"/>
<xsl:with-param name="links" select="$links"/>
@@ -433,10 +431,9 @@ calling functions in !{mal2html-page}.
<xsl:for-each select="$mal.cache">
<xsl:variable name="prev" select="key('mal.cache.link.key', concat('next:', $linkid))"/>
<xsl:if test="$prev or $next">
- <!-- FIXME: Get prev/next links in constant position -->
- <div class="links nextlinks">
+ <nav class="prevnext pagewide"><div class="inner">
<xsl:if test="$prev">
- <a class="nextlinks-prev">
+ <a>
<xsl:attribute name="href">
<xsl:call-template name="mal.link.target">
<xsl:with-param name="node" select="$prev"/>
@@ -456,8 +453,9 @@ calling functions in !{mal2html-page}.
</xsl:for-each>
</a>
</xsl:if>
- <xsl:if test="$next">
- <a class="nextlinks-next">
+ <xsl:choose>
+ <xsl:when test="$next">
+ <a>
<xsl:attribute name="href">
<xsl:call-template name="mal.link.target">
<xsl:with-param name="node" select="$next"/>
@@ -476,8 +474,18 @@ calling functions in !{mal2html-page}.
</xsl:call-template>
</xsl:for-each>
</a>
- </xsl:if>
- </div>
+ </xsl:when>
+ <xsl:otherwise>
+ <span>
+ <xsl:for-each select="$page">
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="'Next'"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ </div></nav>
</xsl:if>
</xsl:for-each>
</xsl:template>
@@ -864,14 +872,18 @@ when determining which links to output.
<xsl:param name="node"/>
<xsl:param name="links"/>
<xsl:variable name="role" select="$node/self::mal:links/@role"/>
- <div class="mouseovers">
+ <xsl:message>
+ <xsl:text>DEPRECATION WARNING: The mouseovers style on the links element is deprecated.</xsl:text>
+ </xsl:message>
+ <div class="links-uix-hover">
+ <div class="links-uix-hover-img">
<xsl:for-each select="$node/e:mouseover[not(@match)]">
<img>
<xsl:copy-of select="@src | @width | @height"/>
</img>
</xsl:for-each>
</div>
- <ul class="mouseovers">
+ <ul class="links-uix-hover">
<xsl:for-each select="$links">
<xsl:sort data-type="number" select="@groupsort"/>
<xsl:sort select="mal:title[@type = 'sort']"/>
@@ -896,9 +908,11 @@ when determining which links to output.
</xsl:call-template>
</xsl:attribute>
<xsl:for-each select="$node/e:mouseover[@match = $xref]">
- <img>
- <xsl:copy-of select="@src | @width | @height"/>
- </img>
+ <span class="links-uix-hover-img">
+ <img>
+ <xsl:copy-of select="@src | @width | @height"/>
+ </img>
+ </span>
</xsl:for-each>
<xsl:call-template name="mal.link.content">
<xsl:with-param name="node" select="."/>
@@ -912,7 +926,7 @@ when determining which links to output.
</xsl:for-each>
</xsl:for-each>
</ul>
- <div class="clear"/>
+ </div>
</xsl:template>
@@ -921,6 +935,7 @@ when determining which links to output.
<xsl:param name="node"/>
<xsl:param name="links"/>
<xsl:param name="role"/>
+ <div class="links-grid-container">
<xsl:for-each select="$links">
<xsl:sort data-type="number" select="@groupsort"/>
<xsl:sort select="mal:title[@type = 'sort']"/>
@@ -976,6 +991,10 @@ when determining which links to output.
</xsl:for-each>
</div>
</xsl:for-each>
+ <!-- blank divs for homogeneous sizing -->
+ <div class="links-grid"></div>
+ <div class="links-grid"></div>
+ </div>
</xsl:template>
<!--#* _mal2html.links.norwich -->
@@ -1112,6 +1131,7 @@ when determining which links to output.
<xsl:param name="nodesc" select="false()"/>
<xsl:param name="min" select="-1"/>
<xsl:param name="max" select="-1"/>
+ <div class="links-divs">
<xsl:for-each select="$links">
<xsl:sort data-type="number" select="@groupsort"/>
<xsl:sort select="mal:title[@type = 'sort']"/>
@@ -1182,6 +1202,7 @@ when determining which links to output.
</xsl:for-each>
</xsl:if>
</xsl:for-each>
+ </div>
</xsl:template>
<!--#% _mal2html.links.divs.nolink.mode -->
diff --git a/xslt/mallard/html/mal2html-media.xsl b/xslt/mallard/html/mal2html-media.xsl
index 71c7a4c1..a9b0ba6f 100644
--- a/xslt/mallard/html/mal2html-media.xsl
+++ b/xslt/mallard/html/mal2html-media.xsl
@@ -47,8 +47,8 @@ If ${node} has fallback content, it is used for the #{alt} attribute.
<xsl:param name="node" select="."/>
<xsl:param name="inline" select="false()"/>
<img src="{$node/@src}">
- <xsl:copy-of select="@height"/>
- <xsl:copy-of select="@width"/>
+ <xsl:copy-of select="$node/@height"/>
+ <xsl:copy-of select="$node/@width"/>
<xsl:attribute name="class">
<xsl:text>media </xsl:text>
<xsl:choose>
@@ -108,7 +108,7 @@ HTML #{video} element.
<xsl:template name="mal2html.media.video">
<xsl:param name="node" select="."/>
<xsl:param name="inline" select="false()"/>
- <video src="{$node/@src}" preload="auto" controls="controls">
+ <video src="{$node/@src}" preload="auto">
<xsl:attribute name="class">
<xsl:text>media </xsl:text>
<xsl:choose>
@@ -129,16 +129,6 @@ HTML #{video} element.
<xsl:value-of select="$poster[1]/@src"/>
</xsl:attribute>
</xsl:if>
- <xsl:attribute name="data-play-label">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Play'"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:attribute name="data-pause-label">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Pause'"/>
- </xsl:call-template>
- </xsl:attribute>
<xsl:choose>
<xsl:when test="$inline">
<xsl:apply-templates mode="mal2html.inline.mode" select="$node/node()"/>
@@ -148,6 +138,9 @@ HTML #{video} element.
</xsl:otherwise>
</xsl:choose>
</video>
+ <xsl:call-template name="html.media.controls">
+ <xsl:with-param name="type" select="'video'"/>
+ </xsl:call-template>
<xsl:if test="not($inline)">
<xsl:apply-templates mode="mal2html.ttml.mode" select="tt:tt[1]"/>
</xsl:if>
@@ -169,7 +162,7 @@ in the source to the #{audio} element's fallback content. If ${inline} is
<xsl:template name="mal2html.media.audio">
<xsl:param name="node" select="."/>
<xsl:param name="inline" select="false()"/>
- <audio src="{$node/@src}" preload="auto" controls="controls">
+ <audio src="{$node/@src}" preload="auto">
<xsl:attribute name="class">
<xsl:text>media </xsl:text>
<xsl:choose>
@@ -181,16 +174,6 @@ in the source to the #{audio} element's fallback content. If ${inline} is
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
- <xsl:attribute name="data-play-label">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Play'"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:attribute name="data-pause-label">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Pause'"/>
- </xsl:call-template>
- </xsl:attribute>
<xsl:choose>
<xsl:when test="$inline">
<xsl:apply-templates mode="mal2html.inline.mode" select="$node/node()"/>
@@ -200,6 +183,9 @@ in the source to the #{audio} element's fallback content. If ${inline} is
</xsl:otherwise>
</xsl:choose>
</audio>
+ <xsl:call-template name="html.media.controls">
+ <xsl:with-param name="type" select="'audio'"/>
+ </xsl:call-template>
<xsl:if test="not($inline)">
<xsl:apply-templates mode="mal2html.ttml.mode" select="tt:tt[1]"/>
</xsl:if>
diff --git a/xslt/mallard/html/mal2html-page.xsl b/xslt/mallard/html/mal2html-page.xsl
index 79724aab..5639a829 100644
--- a/xslt/mallard/html/mal2html-page.xsl
+++ b/xslt/mallard/html/mal2html-page.xsl
@@ -62,7 +62,7 @@ the #{page} element. Information is extracted from the #{info} element of ${node
<xsl:template name="mal2html.page.about">
<xsl:param name="node" select="."/>
<xsl:if test="$node/mal:info/mal:credit or $node/mal:info/mal:license">
- <div class="sect about ui-expander" role="contentinfo">
+ <footer class="about ui-expander" role="contentinfo">
<div class="yelp-data yelp-data-ui-expander" data-yelp-expanded="false"/>
<div class="inner">
<div class="hgroup">
@@ -76,8 +76,10 @@ the #{page} element. Information is extracted from the #{info} element of ${node
</div>
<div class="region">
<div class="contents">
+ <xsl:variable name="credits" select="$node/mal:info/mal:credit"/>
<xsl:variable name="copyrights"
- select="$node/mal:info/mal:credit[contains(concat(' ', @type, ' '), ' copyright ')][mal:years]"/>
+ select="$credits[contains(concat(' ', @type, ' '), ' copyright ')]
+ [mal:years]"/>
<xsl:if test="$copyrights">
<div class="copyrights">
<xsl:for-each select="$copyrights">
@@ -92,128 +94,59 @@ the #{page} element. Information is extracted from the #{info} element of ${node
</div>
</xsl:if>
<xsl:variable name="authors"
- select="$node/mal:info/mal:credit[contains(concat(' ', @type, ' '), ' author ')]"/>
- <xsl:if test="$authors">
- <div class="aboutblurb authors">
- <div class="title">
- <span class="title">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Written By'"/>
- </xsl:call-template>
- </span>
- </div>
- <ul class="credits">
- <xsl:for-each select="$authors">
- <li>
- <xsl:apply-templates mode="mal2html.inline.mode" select="mal:name/node()"/>
- </li>
- </xsl:for-each>
- </ul>
- </div>
- </xsl:if>
+ select="$credits[contains(concat(' ', @type, ' '), ' author ')]"/>
<xsl:variable name="editors"
- select="$node/mal:info/mal:credit[contains(concat(' ', @type, ' '), ' editor ')]"/>
- <xsl:if test="$editors">
- <div class="aboutblurb editors">
- <div class="title">
- <span class="title">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Edited By'"/>
- </xsl:call-template>
- </span>
- </div>
- <ul class="credits">
- <xsl:for-each select="$editors">
- <li>
- <xsl:apply-templates mode="mal2html.inline.mode" select="mal:name/node()"/>
- </li>
- </xsl:for-each>
- </ul>
- </div>
- </xsl:if>
+ select="$credits[contains(concat(' ', @type, ' '), ' editor ')]"/>
<xsl:variable name="maintainers"
- select="$node/mal:info/mal:credit[contains(concat(' ', @type, ' '), ' maintainer ')]"/>
- <xsl:if test="$maintainers">
- <div class="aboutblurb maintainers">
- <div class="title">
- <span class="title">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Maintained By'"/>
- </xsl:call-template>
- </span>
- </div>
- <ul class="credits">
- <xsl:for-each select="$maintainers">
- <li>
- <xsl:apply-templates mode="mal2html.inline.mode" select="mal:name/node()"/>
- </li>
- </xsl:for-each>
- </ul>
- </div>
- </xsl:if>
+ select="$credits[contains(concat(' ', @type, ' '), ' maintainer ')]"/>
<xsl:variable name="translators"
- select="$node/mal:info/mal:credit[contains(concat(' ', @type, ' '), ' translator ')]"/>
- <xsl:if test="$translators">
- <div class="aboutblurb translators">
- <div class="title">
- <span class="title">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Translated By'"/>
- </xsl:call-template>
- </span>
- </div>
- <ul class="credits">
- <xsl:for-each select="$translators">
- <li>
- <xsl:apply-templates mode="mal2html.inline.mode" select="mal:name/node()"/>
- </li>
- </xsl:for-each>
- </ul>
- </div>
- </xsl:if>
+ select="$credits[contains(concat(' ', @type, ' '), ' translator ')]"/>
<xsl:variable name="publishers"
- select="$node/mal:info/mal:credit[contains(concat(' ', @type, ' '), ' publisher ')]"/>
- <xsl:if test="$publishers">
- <div class="aboutblurb publishers">
- <div class="title">
- <span class="title">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Published By'"/>
- </xsl:call-template>
- </span>
- </div>
- <ul class="credits">
- <xsl:for-each select="$publishers">
- <li>
- <xsl:apply-templates mode="mal2html.inline.mode" select="mal:name/node()"/>
- </li>
- </xsl:for-each>
- </ul>
- </div>
- </xsl:if>
+ select="$credits[contains(concat(' ', @type, ' '), ' publisher ')]"/>
+ <!-- others doesn't exclude all copyrights, just credits that are only copyrights -->
<xsl:variable name="others"
- select="set:difference($node/mal:info/mal:credit,
- $copyrights | $authors | $editors | $maintainers | $translators | $publishers)"/>
- <xsl:if test="$others">
- <div class="aboutblurb othercredits">
- <div class="title">
- <span class="title">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Other Credits'"/>
- </xsl:call-template>
- </span>
- </div>
- <ul class="credits">
- <xsl:for-each select="$others">
- <li>
- <xsl:apply-templates mode="mal2html.inline.mode" select="mal:name/node()"/>
- </li>
- </xsl:for-each>
- </ul>
+ select="set:difference($credits,
+ $authors | $editors | $maintainers | $translators | $publishers)
+ [not(@type = 'copyright' and mal:years)]"/>
+ <xsl:if test="$authors or $editors or $maintainers or
+ $translators or publishers or $others">
+ <div class="credits">
+ <xsl:call-template name="_mal2html.page.about.credits">
+ <xsl:with-param name="class" select="'credits-authors'"/>
+ <xsl:with-param name="title" select="'Written By'"/>
+ <xsl:with-param name="credits" select="$authors"/>
+ </xsl:call-template>
+ <xsl:call-template name="_mal2html.page.about.credits">
+ <xsl:with-param name="class" select="'credits-editors'"/>
+ <xsl:with-param name="title" select="'Edited By'"/>
+ <xsl:with-param name="credits" select="$editors"/>
+ </xsl:call-template>
+ <xsl:call-template name="_mal2html.page.about.credits">
+ <xsl:with-param name="class" select="'credits-maintainers'"/>
+ <xsl:with-param name="title" select="'Maintained By'"/>
+ <xsl:with-param name="credits" select="$maintainers"/>
+ </xsl:call-template>
+ <xsl:call-template name="_mal2html.page.about.credits">
+ <xsl:with-param name="class" select="'credits-translators'"/>
+ <xsl:with-param name="title" select="'Translated By'"/>
+ <xsl:with-param name="credits" select="$translators"/>
+ </xsl:call-template>
+ <xsl:call-template name="_mal2html.page.about.credits">
+ <xsl:with-param name="class" select="'credits-publishers'"/>
+ <xsl:with-param name="title" select="'Published By'"/>
+ <xsl:with-param name="credits" select="$publishers"/>
+ </xsl:call-template>
+ <xsl:call-template name="_mal2html.page.about.credits">
+ <xsl:with-param name="class" select="'credits-other'"/>
+ <xsl:with-param name="title" select="'Other Credits'"/>
+ <xsl:with-param name="credits" select="$others"/>
+ </xsl:call-template>
+ <div class="credits-blank"></div>
+ <div class="credits-blank"></div>
</div>
</xsl:if>
<xsl:for-each select="$node/mal:info/mal:license">
- <div class="aboutblurb license">
+ <div class="license">
<div class="title">
<span class="title">
<xsl:choose>
@@ -238,7 +171,32 @@ the #{page} element. Information is extracted from the #{info} element of ${node
</div>
</div>
</div>
- </div>
+ </footer>
+ </xsl:if>
+</xsl:template>
+
+<!--#* _mal2html.page.about.credits -->
+<xsl:template name="_mal2html.page.about.credits">
+ <xsl:param name="class"/>
+ <xsl:param name="title"/>
+ <xsl:param name="credits"/>
+ <xsl:if test="$credits">
+ <div class="{$class}">
+ <div class="title">
+ <span class="title">
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="$title"/>
+ </xsl:call-template>
+ </span>
+ </div>
+ <ul class="credits">
+ <xsl:for-each select="$credits">
+ <li>
+ <xsl:apply-templates mode="mal2html.inline.mode" select="mal:name/node()"/>
+ </li>
+ </xsl:for-each>
+ </ul>
+ </div>
</xsl:if>
</xsl:template>
@@ -646,13 +604,12 @@ templates that handle #{page} and #{section} elements.
-->
<xsl:template name="mal2html.section">
<xsl:param name="node" select="."/>
- <div id="{$node/@id}">
+ <section id="{$node/@id}">
<xsl:call-template name="html.class.attr">
<xsl:with-param name="node" select="$node"/>
<xsl:with-param name="class">
- <xsl:text>sect</xsl:text>
<xsl:if test="@ui:expanded or @uix:expanded">
- <xsl:text> ui-expander</xsl:text>
+ <xsl:text>ui-expander</xsl:text>
</xsl:if>
</xsl:with-param>
</xsl:call-template>
@@ -662,7 +619,7 @@ templates that handle #{page} and #{section} elements.
<div class="inner">
<xsl:apply-templates select="$node"/>
</div>
- </div>
+ </section>
</xsl:template>
@@ -700,15 +657,15 @@ templates that handle #{page} and #{section} elements.
</xsl:for-each>
</xsl:if>
</xsl:variable>
- <div class="hgroup">
+ <div class="hgroup pagewide">
<xsl:apply-templates mode="mal2html.title.mode" select="mal:title"/>
<xsl:apply-templates mode="mal2html.title.mode" select="mal:subtitle"/>
</div>
<div class="region">
- <div class="contents">
- <xsl:if test="$type = 'facets'">
- <xsl:call-template name="mal2html.facets.controls"/>
- </xsl:if>
+ <div class="contents pagewide">
+ <xsl:call-template name="html.content.pre">
+ <xsl:with-param name="page" select="boolean(self::mal:page)"/>
+ </xsl:call-template>
<xsl:for-each
select="*[not(self::mal:section or self::mal:title or self::mal:subtitle)]">
<xsl:choose>
@@ -754,9 +711,9 @@ templates that handle #{page} and #{section} elements.
<xsl:if test="$type = 'gloss:glossary'">
<xsl:call-template name="mal2html.gloss.terms"/>
</xsl:if>
- <xsl:if test="$type = 'facets'">
- <xsl:call-template name="mal2html.facets.links"/>
- </xsl:if>
+ <xsl:call-template name="html.content.post">
+ <xsl:with-param name="page" select="boolean(self::mal:page)"/>
+ </xsl:call-template>
</div>
<xsl:for-each select="mal:section">
<xsl:call-template name="mal2html.section"/>
@@ -778,9 +735,10 @@ templates that handle #{page} and #{section} elements.
($postlinks[self::mal:links[@type = 'seealso']] or
(mal:section and not(mal:links[@type = 'seealso']))))
">
- <div class="sect sect-links" role="navigation">
- <div class="hgroup"/>
- <div class="contents">
+ <section class="links" role="navigation">
+ <div class="inner">
+ <div class="hgroup pagewide"/>
+ <div class="contents pagewide">
<xsl:for-each select="$postlinks">
<xsl:choose>
<xsl:when test="self::mal:links[@type = 'topic']">
@@ -831,7 +789,8 @@ templates that handle #{page} and #{section} elements.
</xsl:call-template>
</xsl:if>
</div>
- </div>
+ </div>
+ </section>
</xsl:if>
</div>
</xsl:template>
@@ -887,6 +846,16 @@ are processed in %{mal2html.block.mode}.
</xsl:call-template>
</xsl:param>
<xsl:text>
+<!-- links -->
+div.links .desc a {
+ color: inherit;
+}
+div.links .desc a:hover {
+ color: </xsl:text><xsl:value-of select="$color.fg.blue"/><xsl:text>;
+}
+a.bold { font-weight: bold; }
+
+<!-- link/@style = 'button' -->
div.link-button {
font-size: 1.2em;
font-weight: bold;
@@ -894,36 +863,36 @@ div.link-button {
.link-button a {
display: inline-block;
background-color: </xsl:text>
- <xsl:value-of select="$color.blue_border"/><xsl:text>;
+ <xsl:value-of select="$color.blue"/><xsl:text>;
color: </xsl:text>
- <xsl:value-of select="$color.background"/><xsl:text>;
+ <xsl:value-of select="$color.bg"/><xsl:text>;
text-shadow: </xsl:text>
- <xsl:value-of select="$color.link"/><xsl:text> 1px 1px 0px;
+ <xsl:value-of select="$color.fg.blue"/><xsl:text> 1px 1px 0px;
border: solid 1px </xsl:text>
- <xsl:value-of select="$color.link"/><xsl:text>;
+ <xsl:value-of select="$color.fg.blue"/><xsl:text>;
padding: 0.2em 0.5em 0.2em 0.5em;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
border-radius: 2px;
}
.link-button a:visited {
color: </xsl:text>
- <xsl:value-of select="$color.background"/><xsl:text>;
+ <xsl:value-of select="$color.bg"/><xsl:text>;
}
.link-button a:hover {
text-decoration: none;
color: </xsl:text>
- <xsl:value-of select="$color.background"/><xsl:text>;
+ <xsl:value-of select="$color.bg"/><xsl:text>;
box-shadow: 1px 1px 1px </xsl:text>
- <xsl:value-of select="$color.blue_border"/><xsl:text>;
+ <xsl:value-of select="$color.blue"/><xsl:text>;
}
div.link-button a .desc {
display: block;
font-weight: normal;
font-size: 0.83em;
color: </xsl:text>
- <xsl:value-of select="$color.gray_background"/><xsl:text>;
+ <xsl:value-of select="$color.bg.gray"/><xsl:text>;
}
+
+<!-- @style = 'float*' -->
div.floatleft {
float: left;
margin-right: 1em;
@@ -941,6 +910,7 @@ div.floatend {
margin-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 1em;
}
+<!-- FIXME -->
div.title-heading h1, div.title-heading h2, div.title-heading h3,
div.title-heading h4, div.title-heading h5, div.title-heading h6 {
font-size: 1.72em;
@@ -950,67 +920,93 @@ ul.links-heading > li { margin: 2em 0 2em 0; padding: 0; }
div.links-heading > a { font-size: 1.72em; font-weight: bold; }
ul.links-heading > li > div.desc { margin-top: 0.5em; }
-div.mouseovers {
- width: 250px;
- height: 200px;
- text-align: center;
- margin: 0;
- float: </xsl:text><xsl:value-of select="$left"/><xsl:text>;
+div.links-uix-hover {
+ position: relative;
+ display: flex;
+ flex-flow: row nowrap;
+ align-items: stretch;
+ justify-content: flex-start;
}
-ul.mouseovers li { margin: 0; }
-ul.mouseovers a {
- display: inline-block;
- padding: 4px 1.2em 4px 1.2em;
+ul.links-uix-hover { flex-grow: 1; }
+ul.links-uix-hover li { margin: 0; padding: 0; }
+ul.links-uix-hover a {
+ display: block;
+ padding: 8px 1.2em;
border-bottom: none;
}
-ul.mouseovers a:hover {
- text-decoration: none;
- background: </xsl:text><xsl:value-of select="$color.blue_background"/><xsl:text>;
+ul.links-uix-hover a:hover, ul.links-uix-hover a:focus {
+ background: </xsl:text><xsl:value-of select="$color.bg.blue"/><xsl:text>;
}
-ul.mouseovers a img {
- display: none;
+ul.links-uix-hover img {
+ display: block;
position: absolute;
- margin: 0; padding: 0;
-}
-@media only screen and (max-width: 400px) {
- ul.mouseovers a {
- display: block;
- padding: 12px;
- margin-left: -12px;
- margin-right: -12px;
+ top: 0; </xsl:text><xsl:value-of select="$left"/><xsl:text>: 0;
+ visibility: hidden;
+ opacity: 0.0;
+ transition: opacity 0.6s, visibility 0.6s;
+}
+ul.links-uix-hover a:hover img, ul.links-uix-hover a:focus img {
+ visibility: visible;
+ opacity: 1.0;
+ transition: opacity 0.2s, visibility 0.2s;
+}
+@media only screen and (max-width: 480px) {
+ div.links-uix-hover-img { display: none; }
+ ul.links-uix-hover img { display: none; }
+ ul.links-uix-hover li {
+ margin-left: -10px; margin-right: -10px;
+ }
+ ul.links-uix-hover li a {
+ padding: 10px;
}
- div.mouseovers { display: none; }
}
-div.ui-screen {
- display: none;
+<!-- uix:overlay -->
+div.ui-overlay-screen {
position: fixed;
margin: 0;
left: 0; top: 0;
width: 100%; height: 100%;
- background: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
- opacity: 0.6;
+ background: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
+ animation-name: yelp-overlay-screen;
+ animation-duration: 0.8s;
+ animation-fill-mode: forwards;
+}
+@keyframes yelp-overlay-screen {
+ from { opacity: 0.0; }
+ to { opacity: 0.6; }
}
div.ui-overlay {
display: none;
position: fixed;
text-align: center;
- left: 0;
top: 20px;
- width: 100%;
+ left: 50%;
+ transform: translateX(-50%);
z-index: 10;
}
+div.ui-overlay-show {
+ animation-name: yelp-overlay-slide;
+ animation-duration: 0.8s;
+ animation-fill-mode: forwards;
+}
+@keyframes yelp-overlay-slide {
+ from { transform: translateY(-400px) translateX(-50%); }
+ to { transform: translateY(0) translateX(-50%); }
+}
div.ui-overlay > div.inner {
display: inline-block;
padding: 8px;
- background-color: </xsl:text><xsl:value-of select="$color.gray_background"/><xsl:text>;
- border: solid 1px </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
- box-shadow: 0 2px 4px </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
- -moz-border-radius: 6px;
- -webkit-border-radius: 6px;
+ background-color: </xsl:text><xsl:value-of select="$color.bg.gray"/><xsl:text>;
+ border: solid 1px </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
+ box-shadow: 0 2px 4px </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
border-radius: 6px;
text-align: </xsl:text><xsl:value-of select="$left"/><xsl:text>;
}
+div.ui-overlay img, div.ui-overlay video {
+ max-height: 80vh;
+ max-width: 90vw;
+}
div.ui-overlay > div.inner > div.title { margin-top: -4px; }
a.ui-overlay-close {
display: block;
@@ -1023,126 +1019,89 @@ a.ui-overlay-close {
padding: 1px 2px 3px 2px;
text-align: center;
border: none;
- -moz-border-radius: 50%;
- -webkit-border-radius: 50%;
border-radius: 50%;
- background-color: </xsl:text><xsl:value-of select="$color.text"/><xsl:text>;
- background-image: -moz-radial-gradient(50% 30%, circle farthest-corner, </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>, </xsl:text><xsl:value-of select="$color.text"/><xsl:text>);
- background-image: radial-gradient(50% 30%, circle farthest-corner, </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>, </xsl:text><xsl:value-of select="$color.text"/><xsl:text>);
- background-image: -webkit-radial-gradient(50% 30%, circle farthest-corner, </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>, </xsl:text><xsl:value-of select="$color.text"/><xsl:text>);
- border: 3px solid </xsl:text><xsl:value-of select="$color.background"/><xsl:text>;
- color: </xsl:text><xsl:value-of select="$color.background"/><xsl:text>;
- box-shadow: 0 2px 2px </xsl:text><xsl:value-of select="$color.text"/><xsl:text>;
- text-shadow: 0 2px 2px </xsl:text><xsl:value-of select="$color.text"/><xsl:text>;
-}
-a.ui-overlay-close:hover {
-}
-
-div.ui-tile {
- display: inline-block;
+ background-color: </xsl:text><xsl:value-of select="$color.fg"/><xsl:text>;
+ background-image: radial-gradient(circle farthest-corner at 50% 30%, </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>, </xsl:text><xsl:value-of select="$color.fg"/><xsl:text>);
+ border: 3px solid </xsl:text><xsl:value-of select="$color.bg"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.bg"/><xsl:text>;
+ box-shadow: 0 2px 2px </xsl:text><xsl:value-of select="$color.fg"/><xsl:text>;
+ text-shadow: 0 2px 2px </xsl:text><xsl:value-of select="$color.fg"/><xsl:text>;
+}
+
+<!-- links/@uix:thumbs = 'tiles' -->
+div.links-tiles {
+ display: flex;
+ flex-flow: row wrap;
+ align-items: stretch;
+ justify-content: stretch;
vertical-align: top;
- clear: both
-}
-div.region > div.ui-tile {
- margin-top: 0;
- margin-bottom: 1em;
+ clear: both;
+ margin: 0 -10px;
}
-div.ui-tile:first-child { margin-top: 1em; }
-div.ui-tile > a {
- display: inline-block;
+div.links-tile {
+ flex: 1 0 300px;
vertical-align: top;
margin: 0;
- margin-</xsl:text><xsl:value-of select="$right"/><xsl:text>: 1em;
- padding: 1em;
- -moz-border-radius: 6px;
- -webkit-border-radius: 6px;
- border-radius: 6px;
-}
-div.ui-tile > a {
- border: solid 1px </xsl:text><xsl:value-of select="$color.gray_background"/><xsl:text>;
+ padding: 10px;
}
-div.ui-tile > a:hover {
- border: solid 1px </xsl:text><xsl:value-of select="$color.blue_background"/><xsl:text>;
- box-shadow: 0 1px 2px </xsl:text><xsl:value-of select="$color.blue_border"/><xsl:text>;
-}
-div.ui-tile > a > * { display: block; }
-div.ui-tile-side > a > * {
- display: inline-block;
+div.links-tile:empty { padding: 0 10px; height: 0; }
+div.links-tile > a {
+ display: block;
vertical-align: top;
+ padding: 9px;
+ border-radius: 6px;
+ border: solid 1px </xsl:text><xsl:value-of select="$color.bg"/><xsl:text>;
}
-div.ui-tile-side > a > span.ui-tile-text {
- margin-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 1em;
-}
-div.ui-tile > a > span.ui-tile-text > span.title {
- display: block;
- margin-top: 0.5em;
- font-weight: bold;
+div.links-tile > a:hover {
+ border: solid 1px </xsl:text><xsl:value-of select="$color.bg.blue"/><xsl:text>;
+ box-shadow: 0 1px 2px </xsl:text><xsl:value-of select="$color.blue"/><xsl:text>;
}
-div.ui-tile-side > a > span.ui-tile-text > span.title { margin-top: 0; }
-div.ui-tile > a > span.ui-tile-text > span.desc {
+div.links-tile > a > span.links-tile-img {
display: block;
- margin: 0.2em 0 0 0;
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
-}
-span.ui-tile-img { text-align: center; }
-
-div.links-ui-hover {
text-align: center;
- margin: 0;
- float: </xsl:text><xsl:value-of select="$left"/><xsl:text>;
- margin-</xsl:text><xsl:value-of select="$right"/><xsl:text>: 1.2em;
- overflow: hidden;
+ max-width: 360px;
}
-ul.links-ui-hover li { margin: 0; }
-ul.links-ui-hover a {
- display: block;
- padding: 4px 1.2em 4px 1.2em;
- border-bottom: none;
+div.links-tile > a > span.links-tile-img > img {
+ width: 100%;
+ border-radius: 3px;
}
-ul.links-ui-hover a:hover {
- text-decoration: none;
- background: </xsl:text><xsl:value-of select="$color.blue_background"/><xsl:text>;
+div.links-tile > a > span.links-tile-text > span.title {
+ display: block;
+ font-weight: bold;
}
-span.links-ui-hover-img {
- display: none;
- position: absolute;
- margin: 0; padding: 0;
- overflow: hidden;
- background: </xsl:text><xsl:value-of select="$color.blue_background"/><xsl:text>;
- text-align: center;
+div.links-tile > a > span.links-tile-text > * + span.title {
+ margin-top: 0.5em;
}
-@media only screen and (max-width: 400px) {
- ul.links-ui-hover a {
- display: block;
- padding: 12px;
- margin-left: -12px;
- margin-right: -12px;
- }
- div.links-ui-hover { display: none; }
+div.links-tile > a > span.links-tile-text > span.desc {
+ display: block;
+ margin: 0.2em 0 0 0;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
}
-div.links-grid {
- display: inline-block;
- clear: both
- margin-top: 1em;
- width: 30%;
- margin-</xsl:text><xsl:value-of select="$right"/><xsl:text>: 2%;
+<!-- links/@style = 'grid' -->
+div.links-grid-container {
+ margin-left: -10px;
+ margin-right: -10px;
+ display: flex;
+ flex-flow: row wrap;
+ align-items: stretch;
+ justify-content: flex-start;
vertical-align: top;
+ clear: both
}
-div.links-grid-link {
- margin: 0;
- font-weight: bold;
+div.links-grid {
+ flex: 1 0 300px;
+ padding: 10px;
}
+div.links-grid:empty { padding: 0 10px; height: 0; }
+div.links-grid-link { font-weight: bold; }
div.links-grid > div.desc {
- margin: 0;
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
-}
-@media only screen and (max-width: 400px) {
- div.links-grid {
- width: 47%;
- }
+ margin: 0.2em 0 0 0;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
}
+<!-- FIXME -->
+<!-- links/@style = 'norwich' -->
div.links-norwich {
width: 900px;
}
@@ -1154,17 +1113,17 @@ div.links-norwich-primary {
div.links-norwich-big {
vertical-align: top;
display: inline-block;
- background: </xsl:text><xsl:value-of select="$color.blue_background"/><xsl:text>;
+ background: </xsl:text><xsl:value-of select="$color.bg.blue"/><xsl:text>;
background: radial-gradient(ellipse 800px 1200px at 100% 20px, </xsl:text>
- <xsl:value-of select="$color.blue_background"/><xsl:text>, </xsl:text>
- <xsl:value-of select="$color.blue_border"/><xsl:text>);
+ <xsl:value-of select="$color.bg.blue"/><xsl:text>, </xsl:text>
+ <xsl:value-of select="$color.blue"/><xsl:text>);
margin: 0 20px 20px 0;
}
div.links-norwich-big + div.links-norwich-big {
- background: </xsl:text><xsl:value-of select="$color.yellow_background"/><xsl:text>;
+ background: </xsl:text><xsl:value-of select="$color.bg.yellow"/><xsl:text>;
background: radial-gradient(ellipse 800px 1200px at 100% 20px, </xsl:text>
- <xsl:value-of select="$color.yellow_background"/><xsl:text>, </xsl:text>
- <xsl:value-of select="$color.yellow_border"/><xsl:text>);
+ <xsl:value-of select="$color.bg.yellow"/><xsl:text>, </xsl:text>
+ <xsl:value-of select="$color.yellow"/><xsl:text>);
}
div.links-norwich-big a {
display: block;
@@ -1173,21 +1132,21 @@ div.links-norwich-big a {
height: 320px;
padding: 9px;
font-size: 1.2em;
- color: </xsl:text><xsl:value-of select="$color.text"/><xsl:text>;
- border: solid 1px </xsl:text><xsl:value-of select="$color.blue_border"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg"/><xsl:text>;
+ border: solid 1px </xsl:text><xsl:value-of select="$color.blue"/><xsl:text>;
background-repeat: no-repeat;
background-position: right -80px bottom -80px;
}
div.links-norwich-big a:hover {
- border: solid 1px </xsl:text><xsl:value-of select="$color.blue_border"/><xsl:text>;
- box-shadow: 2px 2px 2px </xsl:text><xsl:value-of select="$color.blue_border"/><xsl:text>;
+ border: solid 1px </xsl:text><xsl:value-of select="$color.blue"/><xsl:text>;
+ box-shadow: 2px 2px 2px </xsl:text><xsl:value-of select="$color.blue"/><xsl:text>;
}
div.links-norwich-big a span.title {
font-size: 1.2em;
font-weight: bold;
}
div.links-norwich-big a .desc {
- color: </xsl:text><xsl:value-of select="$color.text"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg"/><xsl:text>;
font-weight: normal;
}
div.links-norwich-secondary {
@@ -1197,7 +1156,7 @@ div.links-norwich-secondary {
div.links-norwich-small {
display: inline-block;
vertical-align: top;
- background: </xsl:text><xsl:value-of select="$color.gray_background"/><xsl:text>;
+ background: </xsl:text><xsl:value-of select="$color.bg.gray"/><xsl:text>;
margin: 0 20px 20px 0;
}
div.links-norwich-small a {
@@ -1206,14 +1165,14 @@ div.links-norwich-small a {
height: 140px;
padding: 9px;
font-weight: bold;
- color: </xsl:text><xsl:value-of select="$color.text"/><xsl:text>;
- border: solid 1px </xsl:text><xsl:value-of select="$color.gray_border"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg"/><xsl:text>;
+ border: solid 1px </xsl:text><xsl:value-of select="$color.gray"/><xsl:text>;
background-repeat: no-repeat;
background-position: right 4px bottom 4px;
}
div.links-norwich-small a:hover {
- border: solid 1px </xsl:text><xsl:value-of select="$color.gray_border"/><xsl:text>;
- box-shadow: 2px 2px 2px </xsl:text><xsl:value-of select="$color.blue_border"/><xsl:text>;
+ border: solid 1px </xsl:text><xsl:value-of select="$color.gray"/><xsl:text>;
+ box-shadow: 2px 2px 2px </xsl:text><xsl:value-of select="$color.blue"/><xsl:text>;
}
@media only screen and (max-width: 900px) {
div.links-norwich {
@@ -1238,38 +1197,21 @@ div.links-norwich-small a:hover {
}
}
-div.links-twocolumn {
- display: inline-block;
- width: 48%;
- margin-top: 0;
- margin-</xsl:text><xsl:value-of select="$right"/><xsl:text>: 1%;
- vertical-align: top;
-}
-@media only screen and (max-width: 400px) {
- div.links-twocolumn {
- width: 100%;
- margin-</xsl:text><xsl:value-of select="$right"/><xsl:text>: 0;
- }
-}
-
-div.links .desc a {
- color: inherit;
-}
-div.links .desc a:hover {
- color: </xsl:text><xsl:value-of select="$color.link"/><xsl:text>;
+<!-- links/@type = 'topic' and @style = '2column' -->
+div.links-divs {
+ margin-left: -10px;
+ margin-right: -10px;
}
-a.bold { font-weight: bold; }
-div.linkdiv { margin: 0; padding: 0; }
a.linkdiv {
display: block;
margin: 0;
- padding: 0.5em;
+ padding: 10px;
border-bottom: none;
}
a.linkdiv:hover {
text-decoration: none;
background-color: </xsl:text>
- <xsl:value-of select="$color.blue_background"/><xsl:text>;
+ <xsl:value-of select="$color.bg.blue"/><xsl:text>;
}
a.linkdiv > span.title {
display: block;
@@ -1281,26 +1223,31 @@ a.linkdiv > span.title {
a.linkdiv > span.desc {
display: block;
margin: 0.2em 0 0 0;
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
}
span.linkdiv-dash { display: none; }
-@media only screen and (max-width: 400px) {
- div.linkdiv {
- margin-left: -12px;
- margin-right: -12px;
- }
- div.linkdiv a {
- padding-left: 12px;
- padding-right: 12px;
- }
+div.links-twocolumn {
+ display: flex;
+ flex-flow: row wrap;
+ align-items: stretch;
+ justify-content: flex-start;
+ vertical-align: top;
+ margin-left: -10px;
+ margin-right: -10px;
+}
+div.links-twocolumn > div.links-divs {
+ flex: 1 0 320px;
+ vertical-align: top;
+ margin: 0;
}
+<!-- FIXME -->
div.comment {
padding: 0.5em;
border: solid 2px </xsl:text>
- <xsl:value-of select="$color.red_border"/><xsl:text>;
+ <xsl:value-of select="$color.red"/><xsl:text>;
background-color: </xsl:text>
- <xsl:value-of select="$color.red_background"/><xsl:text>;
+ <xsl:value-of select="$color.bg.red"/><xsl:text>;
}
div.comment div.comment {
margin: 1em 1em 0 1em;
@@ -1310,6 +1257,7 @@ div.comment div.cite {
font-style: italic;
}
+<!-- FIXME -->
div.tree > div.inner > div.title { margin-bottom: 0.5em; }
ul.tree {
margin: 0; padding: 0;
@@ -1322,58 +1270,36 @@ ul.tree ul.tree {
}
div.tree-lines ul.tree { margin-left: 0; }
+<!-- FIXME -->
span.hi {
background-color: </xsl:text>
- <xsl:value-of select="$color.yellow_background"/><xsl:text>;
+ <xsl:value-of select="$color.bg.yellow"/><xsl:text>;
}
-div.facets {
- display: inline-block;
- padding: 6px;
- background-color: </xsl:text>
- <xsl:value-of select="$color.yellow_background"/><xsl:text>;
- border: solid 1px </xsl:text>
- <xsl:value-of select="$color.blue_border"/><xsl:text>;
-}
-div.facet {
- vertical-align: top;
- display: inline-block;
- margin-top: 0;
- margin-bottom: 1em;
- margin-</xsl:text><xsl:value-of select="$right"/><xsl:text>: 1em;
-}
-div.facet div.title { margin: 0; }
-div.facet li {
- margin: 0; padding: 0;
- list-style-type: none;
-}
-div.facet input {
- vertical-align: middle;
- margin: 0;
-}
+<!-- experimental/gloss -->
dt.gloss-term {
margin-top: 1.2em;
font-weight: bold;
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
}
dt.gloss-term:first-child, dt.gloss-term + dt.gloss-term { margin-top: 0; }
dt.gloss-term + dd { margin-top: 0.2em; }
dd.gloss-link {
margin: 0 0.2em 0 0.2em;
border-</xsl:text><xsl:value-of select="$left"/><xsl:text>: solid 4px </xsl:text>
- <xsl:value-of select="$color.blue_border"/><xsl:text>;
+ <xsl:value-of select="$color.blue"/><xsl:text>;
padding-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 1em;
}
dd.gloss-def {
margin: 0 0.2em 1em 0.2em;
border-</xsl:text><xsl:value-of select="$left"/><xsl:text>: solid 4px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
+ <xsl:value-of select="$color.gray"/><xsl:text>;
padding-</xsl:text><xsl:value-of select="$left"/><xsl:text>: 1em;
}
a.gloss-term {
- tabindex: 0;
+ position: relative;
border-bottom: dashed 1px </xsl:text>
- <xsl:value-of select="$color.blue_border"/><xsl:text>;
+ <xsl:value-of select="$color.blue"/><xsl:text>;
}
a.gloss-term:hover {
text-decoration: none;
@@ -1382,22 +1308,34 @@ a.gloss-term:hover {
span.gloss-desc {
display: none;
position: absolute;
+ z-index: 100;
margin: 0;
+ </xsl:text><xsl:value-of select="$left"/><xsl:text>: 0;
+ top: 1.2em;
padding: 0.2em 0.5em 0.2em 0.5em;
+ min-width: 12em;
max-width: 24em;
- color: </xsl:text><xsl:value-of select="$color.text_light"/><xsl:text>;
+ overflow: hidden;
+ color: </xsl:text><xsl:value-of select="$color.fg.dark"/><xsl:text>;
background-color: </xsl:text>
- <xsl:value-of select="$color.yellow_background"/><xsl:text>;
+ <xsl:value-of select="$color.bg.yellow"/><xsl:text>;
border: solid 1px </xsl:text>
- <xsl:value-of select="$color.yellow_border"/><xsl:text>;
- -moz-box-shadow: 2px 2px 4px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
- -webkit-box-shadow: 2px 2px 4px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
+ <xsl:value-of select="$color.yellow"/><xsl:text>;
box-shadow: 2px 2px 4px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
+ <xsl:value-of select="$color.gray"/><xsl:text>;
+}
+a.gloss-term:hover span.gloss-desc, a.gloss-term:focus span.gloss-desc {
+ display: inline-block;
+ animation-name: yelp-gloss-fade;
+ animation-duration: 1s;
+ animation-fill-mode: forwards;
+}
+@keyframes yelp-gloss-fade {
+ from { opacity: 0.0; }
+ to { opacity: 1.0; }
}
+<!-- conditional processing -->
.if-if { display: none; }
.if-choose, .if-when, .if-else { margin: 0; padding: 0; }
.if-choose > .if-when { display: none; }
@@ -1405,7 +1343,7 @@ span.gloss-desc {
.if-if.if__not-target-mobile { display: block; }
.if-choose.if__not-target-mobile > .if-when { display: block; }
.if-choose.if__not-target-mobile > .if-else { display: none; }
-@media only screen and (max-width: 400px) {
+@media only screen and (max-width: 480px) {
.if-if.if__target-mobile { display: block; }
.if-if.if__not-target-mobile { display: none; }
.if-choose.if__target-mobile > .if-when { display: block; }
@@ -1424,9 +1362,9 @@ div.version {
padding: 0.5em 1em 0.5em 1em;
max-width: 24em;
border: solid 1px </xsl:text>
- <xsl:value-of select="$color.gray_border"/><xsl:text>;
+ <xsl:value-of select="$color.gray"/><xsl:text>;
background-color: </xsl:text>
- <xsl:value-of select="$color.yellow_background"/><xsl:text>;
+ <xsl:value-of select="$color.bg.yellow"/><xsl:text>;
}
div.version:hover { opacity: 0.8; }
div.version p.version { margin-top: 0.2em; }
@@ -1436,117 +1374,73 @@ span.status {
padding-left: 0.2em;
padding-right: 0.2em;
color: </xsl:text>
- <xsl:value-of select="$color.text_light"/><xsl:text>;
+ <xsl:value-of select="$color.fg.dark"/><xsl:text>;
border: solid 1px </xsl:text>
- <xsl:value-of select="$color.red_border"/><xsl:text>;
+ <xsl:value-of select="$color.red"/><xsl:text>;
background-color: </xsl:text>
- <xsl:value-of select="$color.yellow_background"/><xsl:text>;
+ <xsl:value-of select="$color.bg.yellow"/><xsl:text>;
}
span.status-stub, span.status-draft, span.status-incomplete, span.status-outdated { background-color: </xsl:text>
- <xsl:value-of select="$color.red_background"/><xsl:text>; }
+ <xsl:value-of select="$color.bg.red"/><xsl:text>; }
</xsl:text>
</xsl:if>
</xsl:template>
<!--%# html.js.mode -->
<xsl:template mode="html.js.mode" match="mal:page">
- <xsl:call-template name="mal2html.facets.js"/>
- <xsl:call-template name="mal2html.gloss.js"/>
<xsl:text><![CDATA[
-$(document).ready(function () {
- $('div.mouseovers').each(function () {
- var contdiv = $(this);
- var width = 0;
- var height = 0;
- contdiv.find('img').each(function () {
- if ($(this).attr('data-yelp-match') == '')
- $(this).show();
- });
- contdiv.next('ul').find('a').each(function () {
- var mlink = $(this);
- mlink.hover(
- function () {
- if (contdiv.is(':visible')) {
- var offset = contdiv.offset();
- mlink.find('img').css({left: offset.left, top: offset.top, zIndex: 10});
- mlink.find('img').fadeIn('fast');
- }
- },
- function () {
- mlink.find('img').fadeOut('fast');
+document.addEventListener('DOMContentLoaded', function() {
+ var overlays = document.querySelectorAll('a.ui-overlay');
+ for (var i = 0; i < overlays.length; i++) {
+ (function (ovlink) {
+ var overlay = ovlink.parentNode.querySelector('div.ui-overlay');
+ var ui_overlay_show = function (ev) {
+ overlay.style.display = 'block';
+ overlay.classList.add('ui-overlay-show');
+ var screen = document.querySelector('div.ui-overlay-screen');
+ if (screen == null) {
+ screen = document.createElement('div');
+ screen.className = 'ui-overlay-screen';
+ document.body.appendChild(screen);
}
- );
- });
- });
- $('div.links-ui-hover').each(function () {
- var contdiv = $(this);
- var width = 0;
- var height = 0;
- contdiv.next('ul').find('a').each(function () {
- var mlink = $(this);
- mlink.hover(
- function () {
- if (contdiv.is(':visible')) {
- var offset = contdiv.offset();
- mlink.find('img').parent('span').css({left: offset.left, top: offset.top, zIndex: 10});
- mlink.find('img').parent('span').show();
+ var inner = overlay.querySelector('div.inner');
+ var close = inner.querySelector('a.ui-overlay-close');
+ var media = inner.querySelectorAll('audio, video');
+
+ var overlay_play_func = function () {
+ for (var j = 0; j < media.length; j++) {
+ media[j].play();
}
- },
- function () {
- mlink.find('img').parent('span').hide();
- }
- );
- });
- });
- $('a.ui-overlay').each(function () {
- $(this).click(function () {
- var overlay = $(this).parent('div').children('div.ui-overlay');
- var inner = overlay.children('div.inner');
- var close = inner.children('a.ui-overlay-close');
- var media = inner.find('audio, video');
- var screen = $('div.ui-screen');
- if (screen.length == 0) {
- screen = $('<div class="ui-screen"></div>');
- $('body').append(screen);
- }
- var hideoverlay = function () {
- if (media.length > 0)
- media[0].pause();
- $(document).unbind('keydown.yelp-ui-overlay');
- close.unbind('click');
- screen.unbind('click');
- screen.fadeOut('slow');
- overlay.unbind('click');
- overlay.slideUp('fast');
- return false;
- };
- screen.click(hideoverlay);
- close.click(hideoverlay);
- $(document).bind('keydown.yelp-ui-overlay', function (event) {
- if (event.which == 27) {
- hideoverlay();
- }
- });
- overlay.click(function (event) {
- var target = event.target;
- do {
- if (target == inner[0]) {
- break;
+ };
+ var overlay_play_timeout = window.setTimeout(overlay_play_func, 1000);
+
+ var ui_overlay_funcs = {};
+ ui_overlay_funcs['hide'] = function () {
+ overlay.style.display = 'none';
+ document.body.removeChild(screen);
+ document.removeEventListener('keydown', ui_overlay_funcs['keydown'], false);
+ for (var j = 0; j < media.length; j++) {
+ media[j].pause();
}
- } while (target = target.parentNode);
- if (target != inner[0]) {
- hideoverlay();
- return false;
- }
- });
- screen.fadeIn('slow');
- overlay.slideDown('fast', function () {
- if (media.length > 0)
- media[0].play();
- });
- return false;
- });
- });
+ window.clearTimeout(overlay_play_timeout);
+ };
+ ui_overlay_funcs['hideclick'] = function (uiev) {
+ ui_overlay_funcs['hide']();
+ uiev.preventDefault();
+ };
+ ui_overlay_funcs['keydown'] = function (uiev) {
+ if (uiev.keyCode == 27) {
+ ui_overlay_funcs['hide']();
+ }
+ };
+ screen.addEventListener('click', ui_overlay_funcs['hideclick'], false);
+ close.addEventListener('click', ui_overlay_funcs['hideclick'], false);
+ document.addEventListener('keydown', ui_overlay_funcs['keydown'], false);
+ ev.preventDefault();
+ };
+ ovlink.addEventListener('click', ui_overlay_show, false);
+ })(overlays[i]);
+ }
});
]]></xsl:text>
</xsl:template>
diff --git a/xslt/mallard/html/mal2html-ui.xsl b/xslt/mallard/html/mal2html-ui.xsl
index 9735df9f..f82ae156 100644
--- a/xslt/mallard/html/mal2html-ui.xsl
+++ b/xslt/mallard/html/mal2html-ui.xsl
@@ -98,16 +98,15 @@ http://projectmallard.org/ui/1.0/ui_expanded.html</xsl:text>
<!--**==========================================================================
mal2html.ui.links.tiles
Output links as thumbnail tiles.
-:Revision:version="3.8" date="2012-10-27" status="final"
+:Revision:version="3.22" date="2015-10-22" status="volatile"
$node: A #{links} element to link from.
$links: A list of links, as from a template in !{mal-link}.
$role: A link role, used to select the appropriate title and thumbnail.
-This template outputs links as thumbnail tiles, as per the UI extension.
-For each link, it outputs an inline-block #{div} element with a thumbnail,
-title, and desc (unless the #{nodesc} style hint is used). This template calls
-*{mal2html.ui.links.img} to find the best-match thumbnail and output the HTML
-#{img} element for each link.
+This template outputs links as thumbnail tiles. For each link, it outputs
+a #{div} element with a thumbnail, title, and desc (unless the #{nodesc}
+style hint is used). This template calls *{mal2html.ui.links.img} to find
+the best-match thumbnail and output the HTML #{img} element for each link.
This template handles link sorting.
-->
@@ -115,119 +114,87 @@ This template handles link sorting.
<xsl:param name="node" select="."/>
<xsl:param name="links"/>
<xsl:param name="role"/>
- <xsl:variable name="width">
- <xsl:choose>
- <xsl:when test="$node/@uix:width">
- <xsl:value-of select="$node/@uix:width"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>200</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="height">
- <xsl:choose>
- <xsl:when test="$node/@uix:height">
- <xsl:value-of select="$node/@uix:height"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>200</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="tiles-side">
- <xsl:if test="contains(concat(' ', $node/@style, ' '), ' tiles-side ')">
- <xsl:text>ui-tile-side</xsl:text>
- </xsl:if>
- </xsl:variable>
- <xsl:for-each select="$links">
- <xsl:sort data-type="number" select="@groupsort"/>
- <xsl:sort select="mal:title[@type = 'sort']"/>
- <xsl:variable name="link" select="."/>
- <xsl:for-each select="$mal.cache">
- <xsl:variable name="target" select="key('mal.cache.key', $link/@xref)"/>
- <div class="ui-tile {$link/@class} {$tiles-side}">
- <xsl:for-each select="$link/@*">
- <xsl:if test="starts-with(name(.), 'data-')">
- <xsl:copy-of select="."/>
- </xsl:if>
- </xsl:for-each>
- <xsl:variable name="infos" select="$target/mal:info | $link[@href]/mal:info"/>
- <xsl:variable name="thumbs" select="$infos/uix:thumb"/>
- <a>
- <xsl:attribute name="href">
- <xsl:call-template name="mal.link.target">
- <xsl:with-param name="node" select="$node"/>
- <xsl:with-param name="xref" select="$link/@xref"/>
- <xsl:with-param name="href" select="$link/@href"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:call-template name="mal.link.tooltip">
- <xsl:with-param name="node" select="$node"/>
- <xsl:with-param name="xref" select="$link/@xref"/>
- <xsl:with-param name="href" select="$link/@href"/>
- <xsl:with-param name="role" select="$role"/>
- <xsl:with-param name="info" select="$link[@href]/mal:info"/>
- </xsl:call-template>
- </xsl:attribute>
- <span class="ui-tile-img" style="width: {$width}px; height: {$height}px;">
- <xsl:call-template name="mal2html.ui.links.img">
- <xsl:with-param name="node" select="$node"/>
- <xsl:with-param name="thumbs" select="$thumbs"/>
- <xsl:with-param name="role" select="$role"/>
- <xsl:with-param name="width" select="$width"/>
- <xsl:with-param name="height" select="$height"/>
- </xsl:call-template>
- </span>
- <span class="ui-tile-text">
- <xsl:attribute name="style">
- <xsl:text>max-width: </xsl:text>
- <xsl:choose>
- <xsl:when test="$tiles-side != ''">
- <xsl:value-of select="2 * number($width)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$width"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>px;</xsl:text>
+ <div class="links-tiles">
+ <xsl:for-each select="$links">
+ <xsl:sort data-type="number" select="@groupsort"/>
+ <xsl:sort select="mal:title[@type = 'sort']"/>
+ <xsl:variable name="link" select="."/>
+ <xsl:for-each select="$mal.cache">
+ <xsl:variable name="target" select="key('mal.cache.key', $link/@xref)"/>
+ <div class="links-tile {$link/@class}">
+ <xsl:for-each select="$link/@*">
+ <xsl:if test="starts-with(name(.), 'data-')">
+ <xsl:copy-of select="."/>
+ </xsl:if>
+ </xsl:for-each>
+ <xsl:variable name="infos" select="$target/mal:info | $link[@href]/mal:info"/>
+ <xsl:variable name="thumbs" select="$infos/uix:thumb"/>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:call-template name="mal.link.target">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="xref" select="$link/@xref"/>
+ <xsl:with-param name="href" select="$link/@href"/>
+ </xsl:call-template>
</xsl:attribute>
- <span class="title">
- <xsl:call-template name="mal.link.content">
+ <xsl:attribute name="title">
+ <xsl:call-template name="mal.link.tooltip">
<xsl:with-param name="node" select="$node"/>
<xsl:with-param name="xref" select="$link/@xref"/>
<xsl:with-param name="href" select="$link/@href"/>
<xsl:with-param name="role" select="$role"/>
<xsl:with-param name="info" select="$link[@href]/mal:info"/>
</xsl:call-template>
+ </xsl:attribute>
+ <span class="links-tile-img">
+ <xsl:call-template name="mal2html.ui.links.img">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="thumbs" select="$thumbs"/>
+ <xsl:with-param name="role" select="$role"/>
+ </xsl:call-template>
</span>
- <xsl:if test="not(contains(concat(' ', $node/@style, ' '), ' nodesc '))">
- <xsl:variable name="desc">
- <xsl:call-template name="mal.link.desc">
+ <span class="links-tile-text">
+ <span class="title">
+ <xsl:call-template name="mal.link.content">
<xsl:with-param name="node" select="$node"/>
<xsl:with-param name="xref" select="$link/@xref"/>
<xsl:with-param name="href" select="$link/@href"/>
<xsl:with-param name="role" select="$role"/>
<xsl:with-param name="info" select="$link[@href]/mal:info"/>
</xsl:call-template>
- </xsl:variable>
- <xsl:if test="exsl:node-set($desc)/node()">
- <span class="desc">
- <xsl:copy-of select="$desc"/>
- </span>
+ </span>
+ <xsl:if test="not(contains(concat(' ', $node/@style, ' '), ' nodesc '))">
+ <xsl:variable name="desc">
+ <xsl:call-template name="mal.link.desc">
+ <xsl:with-param name="node" select="$node"/>
+ <xsl:with-param name="xref" select="$link/@xref"/>
+ <xsl:with-param name="href" select="$link/@href"/>
+ <xsl:with-param name="role" select="$role"/>
+ <xsl:with-param name="info" select="$link[@href]/mal:info"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="desc_" select="exsl:node-set($desc)/node()"/>
+ <xsl:if test="$desc_/node()">
+ <span class="desc">
+ <xsl:apply-templates mode="_mal2html.links.divs.nolink.mode"
+ select="$desc_"/>
+ </span>
+ </xsl:if>
</xsl:if>
- </xsl:if>
- </span>
- </a>
- </div>
+ </span>
+ </a>
+ </div>
+ </xsl:for-each>
</xsl:for-each>
- </xsl:for-each>
+ <!-- blank tiles for homogeneous sizing -->
+ <div class="links-tile"></div>
+ <div class="links-tile"></div>
+ </div>
</xsl:template>
-<!--**==========================================================================
-mal2html.ui.links.hover
+<!--DEPRECATED==================================================================
+_mal2html.ui.links.hover
Output links with thumbnails shown on hover.
:Revision:version="3.4" date="2012-02-26" status="final"
$node: A #{links} element to link from.
@@ -244,7 +211,8 @@ are hovered.
This template handles link sorting.
-->
-<xsl:template name="mal2html.ui.links.hover">
+<!--#* _mal2html.ui.links.hover -->
+<xsl:template name="_mal2html.ui.links.hover">
<xsl:param name="node"/>
<xsl:param name="links"/>
<xsl:param name="role"/>
@@ -268,7 +236,11 @@ This template handles link sorting.
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
- <div class="links-ui-hover" style="width: {$width}px; height: {$height}px;">
+ <xsl:message>
+ <xsl:text>DEPRECATION WARNING: The uix:thumbs attribute on the links element is deprecated.</xsl:text>
+ </xsl:message>
+ <div class="links-uix-hover">
+ <div class="links-uix-hover-img" style="width: {$width}px; height: {$height}px;">
<xsl:for-each select="$node/uix:thumb[1]">
<img>
<xsl:copy-of select="@src"/>
@@ -281,7 +253,7 @@ This template handles link sorting.
</img>
</xsl:for-each>
</div>
- <ul class="links-ui-hover">
+ <ul class="links-uix-hover">
<xsl:for-each select="$links">
<xsl:sort data-type="number" select="@groupsort"/>
<xsl:sort select="mal:title[@type = 'sort']"/>
@@ -312,7 +284,7 @@ This template handles link sorting.
<xsl:with-param name="info" select="$link[@href]/mal:info"/>
</xsl:call-template>
</xsl:attribute>
- <span class="links-ui-hover-img" style="width: {$width}px; height: {$height}px;">
+ <span class="links-uix-hover-img" style="width: {$width}px; height: {$height}px;">
<xsl:call-template name="mal2html.ui.links.img">
<xsl:with-param name="node" select="$node"/>
<xsl:with-param name="thumbs" select="$thumbs"/>
@@ -335,7 +307,7 @@ This template handles link sorting.
</xsl:for-each>
</xsl:for-each>
</ul>
- <div class="clear"/>
+ </div>
</xsl:template>
@@ -499,133 +471,109 @@ ${node} element.
<!-- = ui:overlay = -->
<xsl:template mode="mal2html.block.mode" match="uix:overlay">
- <xsl:variable name="media" select="mal:media[1]"/>
- <xsl:variable name="width">
- <xsl:choose>
- <xsl:when test="@width">
- <xsl:value-of select="@width"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>80</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="height">
- <xsl:choose>
- <xsl:when test="@height">
- <xsl:value-of select="@height"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>80</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="tiles-side">
- <xsl:if test="contains(concat(' ', @style, ' '), ' tiles-side ')">
- <xsl:text>ui-tile-side</xsl:text>
- </xsl:if>
- </xsl:variable>
- <div class="ui-tile {$tiles-side}">
- <a href="{$media/@src}" class="ui-overlay">
- <span class="ui-tile-img" style="width: {$width}px; height: {$height}px;">
- <xsl:choose>
- <xsl:when test="$media/uix:thumb">
- <img src="{$media/uix:thumb[1]/@src}">
- <xsl:call-template name="mal2html.ui.links.img.attrs">
- <xsl:with-param name="node" select="."/>
- <xsl:with-param name="thumb" select="$media/uix:thumb[1]"/>
- <xsl:with-param name="width" select="$width"/>
- <xsl:with-param name="height" select="$height"/>
- </xsl:call-template>
- </img>
- </xsl:when>
- <!-- FIXME: audio/video with image child -->
- <!--
- <xsl:when test="($media/@type = 'video' or $media/@type = 'audio') and
- $media/mal:media[not(@type) or @type = 'image']">
- </xsl:when>
- -->
- <xsl:when test="$media/@type = 'video'">
- <video src="{$media/@src}">
- <xsl:call-template name="mal2html.ui.links.img.attrs">
- <xsl:with-param name="node" select="."/>
- <xsl:with-param name="thumb" select="$media"/>
- <xsl:with-param name="width" select="$width"/>
- <xsl:with-param name="height" select="$height"/>
- </xsl:call-template>
- </video>
- </xsl:when>
- <xsl:otherwise>
- <img src="{$media/@src}">
- <xsl:call-template name="mal2html.ui.links.img.attrs">
- <xsl:with-param name="node" select="."/>
- <xsl:with-param name="thumb" select="$media"/>
- <xsl:with-param name="width" select="$width"/>
- <xsl:with-param name="height" select="$height"/>
- </xsl:call-template>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- </span>
- <xsl:if test="$media/uix:thumb/uix:caption">
- <span class="ui-tile-text">
- <xsl:attribute name="style">
- <xsl:text>max-width: </xsl:text>
- <xsl:choose>
- <xsl:when test="$tiles-side != ''">
- <xsl:value-of select="2 * number($width)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$width"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>px;</xsl:text>
- </xsl:attribute>
- <xsl:variable name="title" select="$media/uix:thumb/uix:caption/mal:title[1]"/>
- <xsl:if test="$title">
- <span>
- <xsl:attribute name="class">
- <xsl:text>title</xsl:text>
- <xsl:if test="contains(concat(' ', $title/@style, ' '), ' center ')">
- <xsl:text> center</xsl:text>
- </xsl:if>
- </xsl:attribute>
- <xsl:apply-templates mode="mal2html.inline.mode" select="$title/node()"/>
+ <!-- only process first, and handle consecutive overlays so we
+ can put them in a wrapper div for flexbox -->
+ <xsl:if test="not(preceding-sibling::*[1][self::uix:overlay])">
+ <div class="links-tiles">
+ <xsl:variable name="count" select="count(following-sibling::*[not(self::uix:overlay)])"/>
+ <xsl:for-each select="self::* |
+ following-sibling::uix:overlay
+ [count(following-sibling::*[not(self::uix:overlay)]) = $count]">
+ <xsl:variable name="media" select="mal:media[1]"/>
+ <xsl:variable name="width">
+ <xsl:choose>
+ <xsl:when test="@width">
+ <xsl:value-of select="@width"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>280</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="height">
+ <xsl:choose>
+ <xsl:when test="@height">
+ <xsl:value-of select="@height"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>280</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <div class="links-tile">
+ <a href="{$media/@src}" class="ui-overlay">
+ <span class="links-tile-img">
+ <xsl:choose>
+ <xsl:when test="$media/uix:thumb">
+ <img src="{$media/uix:thumb[1]/@src}" width="{$width}"/>
+ </xsl:when>
+ <!-- FIXME: audio/video with image child -->
+ <!--
+ <xsl:when test="($media/@type = 'video' or $media/@type = 'audio') and
+ $media/mal:media[not(@type) or @type = 'image']">
+ </xsl:when>
+ -->
+ <xsl:when test="$media/@type = 'video'">
+ <video src="{$media/@src}" width="{$width}"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <img src="{$media/@src}" width="{$width}"/>
+ </xsl:otherwise>
+ </xsl:choose>
</span>
- </xsl:if>
- <xsl:variable name="desc" select="$media/uix:thumb/uix:caption/mal:desc[1]"/>
- <xsl:if test="$desc">
- <span>
- <xsl:attribute name="class">
- <xsl:text>desc</xsl:text>
- <xsl:if test="contains(concat(' ', $desc/@style, ' '), ' center ')">
- <xsl:text> center</xsl:text>
+ <xsl:if test="$media/uix:thumb/uix:caption">
+ <span class="links-tile-text">
+ <xsl:variable name="title" select="$media/uix:thumb/uix:caption/mal:title[1]"/>
+ <xsl:if test="$title">
+ <span>
+ <xsl:attribute name="class">
+ <xsl:text>title</xsl:text>
+ <xsl:if test="contains(concat(' ', $title/@style, ' '), ' center ')">
+ <xsl:text> center</xsl:text>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:apply-templates mode="mal2html.inline.mode" select="$title/node()"/>
+ </span>
</xsl:if>
- </xsl:attribute>
- <xsl:apply-templates mode="mal2html.inline.mode" select="$desc/node()"/>
- </span>
- </xsl:if>
- </span>
- </xsl:if>
- </a>
- <div class="ui-overlay">
- <div class="inner">
- <a href="#" class="ui-overlay-close">
- <xsl:attribute name="title">
- <xsl:call-template name="l10n.gettext">
- <xsl:with-param name="msgid" select="'Close'"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:text>⨯</xsl:text>
- </a>
- <xsl:apply-templates mode="mal2html.block.mode" select="uix:caption/mal:title[1]"/>
- <div class="contents">
- <xsl:apply-templates mode="mal2html.block.mode" select="$media"/>
+ <xsl:variable name="desc" select="$media/uix:thumb/uix:caption/mal:desc[1]"/>
+ <xsl:if test="$desc">
+ <span>
+ <xsl:attribute name="class">
+ <xsl:text>desc</xsl:text>
+ <xsl:if test="contains(concat(' ', $desc/@style, ' '), ' center ')">
+ <xsl:text> center</xsl:text>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:apply-templates mode="mal2html.inline.mode" select="$desc/node()"/>
+ </span>
+ </xsl:if>
+ </span>
+ </xsl:if>
+ </a>
+ <div class="ui-overlay">
+ <div class="inner">
+ <a href="#" class="ui-overlay-close">
+ <xsl:attribute name="title">
+ <xsl:call-template name="l10n.gettext">
+ <xsl:with-param name="msgid" select="'Close'"/>
+ </xsl:call-template>
+ </xsl:attribute>
+ <xsl:text>⨯</xsl:text>
+ </a>
+ <xsl:apply-templates mode="mal2html.block.mode" select="uix:caption/mal:title[1]"/>
+ <div class="contents">
+ <xsl:apply-templates mode="mal2html.block.mode" select="$media"/>
+ </div>
+ <xsl:apply-templates mode="mal2html.block.mode" select="uix:caption/mal:desc[1]"/>
+ </div>
+ </div>
</div>
- <xsl:apply-templates mode="mal2html.block.mode" select="uix:caption/mal:desc[1]"/>
- </div>
+ </xsl:for-each>
+ <!-- blank tiles for homogeneous sizing -->
+ <div class="links-tile"></div>
+ <div class="links-tile"></div>
</div>
- </div>
+ </xsl:if>
</xsl:template>
</xsl:stylesheet>
diff --git a/xslt/mallard/html/mal2xhtml.xsl b/xslt/mallard/html/mal2xhtml.xsl
index 297939b0..3930afcd 100644
--- a/xslt/mallard/html/mal2xhtml.xsl
+++ b/xslt/mallard/html/mal2xhtml.xsl
@@ -63,7 +63,6 @@ mallard:1.0
<xsl:include href="mal2html-api.xsl"/>
<xsl:include href="mal2html-block.xsl"/>
-<xsl:include href="mal2html-facets.xsl"/>
<xsl:include href="mal2html-gloss.xsl"/>
<xsl:include href="mal2html-inline.xsl"/>
<xsl:include href="mal2html-links.xsl"/>