From e365555eda2a020601648ed355fa4323434b8752 Mon Sep 17 00:00:00 2001
From: Frank Steinberg <steinberg@ibr.cs.tu-bs.de>
Date: Thu, 24 Oct 2019 14:21:01 +0200
Subject: [PATCH] Fixed some rare cases.

---
 README.md                              |  2 ++
 de/21B.xml                             |  1 +
 de/23A.xml                             | 16 -----------
 de/23B.xml                             | 18 -------------
 de/23C.xml                             | 17 ------------
 de/33A.xml                             |  8 ++++++
 de/33B.xml                             |  8 ++++++
 web/edit.css                           |  5 +++-
 web/edit.html                          | 29 ++++++++++----------
 web/edit.js                            |  5 +++-
 web/show.css                           | 37 ++++++++++----------------
 xsl/bjcp-2015-styleguide-translate.xsl |  5 +++-
 12 files changed, 60 insertions(+), 91 deletions(-)
 create mode 100644 de/33A.xml
 create mode 100644 de/33B.xml

diff --git a/README.md b/README.md
index 07c6296..0a8284e 100644
--- a/README.md
+++ b/README.md
@@ -128,3 +128,5 @@ See the LICENSE file. Note that this license relates only to the content of this
 - Fix ID display in front of style names. Make them searchable.
 - Maybe, some keyboard control?
 - Support editing "p" (not only in "description"), "li", "td".
+- Better rendering of specs with text content, e.g. 33A.
+- navigate by tags?
diff --git a/de/21B.xml b/de/21B.xml
index f3b2418..1c93910 100644
--- a/de/21B.xml
+++ b/de/21B.xml
@@ -10,6 +10,7 @@
       <flavor date="2019-10-13 14:19:54" author="T3K" addr="2001:16b8:24af:b700:992d:dd12:7ef8:47a8">Der Hopfengeschmack ist in der Regel mittel bis hoch, wobei die Qualität von den typischen Sorten abhängt, die in der spezifischen Version des <i>Specialty IPA</i> verwendet werden. Die Hopfenbitterkeit ist in der Regel mittelhoch bis sehr hoch, wobei die Qualität von den typischen Sorten abhängt, die in der Version des <i>Specialty IPA</i> verwendet werden. Malzgeschmack im Allgemeinen niedrig bis mittelschwer, mit Eigenschaften, die von den typischen Sorten abhängen, die in der Version des <i>Specialty IPA </i>verwendet werden. Normalerweise hat es ein mitteltrockenes bis trockenes Finish. Etwas sauberes Alkoholaroma kann in stärkeren Versionen bemerkt werden. Verschiedene Arten von <i>Specialty IPAs</i> können je nach Typ zusätzliche Malz- und Hefeeigenschaften aufweisen.</flavor>
       <mouthfeel date="2019-10-13 14:22:14" author="T3K" addr="2001:16b8:24af:b700:992d:dd12:7ef8:47a8">Geschmeidiges, mittelschweres bis mittelschweres Mundgefühl. Mittlere Kohlensäure. Eine leichte alkoholische Wärme ist in stärkeren Versionen zu spüren.</mouthfeel>
       <entry-instructions date="2019-10-13 14:28:06" author="T3K" addr="2001:16b8:24af:b700:992d:dd12:7ef8:47a8">Der Teilnehmer <u>muss</u> eine <b>Stärke</b> angeben (<i>session</i>, <i>standard</i>, <i>double</i>). Wenn keine Stärke angegeben ist, wird <i>standard</i> angenommen. Der Teilnehmer <u>muss</u> einen bestimmten <b>Typ</b> von Specialty IPA aus der Bibliothek bekannter Typen angeben, die in den Style-Richtlinien aufgeführt sind, oder auf der BJCP-Website ergänzt wurden. Oder der Teilnehmer muss die Art des <i>Specialty IPA</i> und ihre wichtigsten Merkmale in Form von Kommentaren beschreiben, damit die Juroren wissen, was sie zu erwarten haben. Die Teilnehmer <u>können</u> die spezifischen verwendeten <b>Hopfensorten</b> angeben, wenn sie der Ansicht sind, dass die Juroren die Sortenmerkmale neuerer Hopfensorten möglicherweise nicht erkennen. <i>Die Teilnehmer können eine Kombination definierter IPA-Typen (z. B. Black Rye IPA) angeben, ohne zusätzliche Beschreibungen bereitzustellen</i>. Teilnehmer können diese Kategorie für eine andere Stärke-Version eines IPA verwenden, die durch ihre eigene BJCP-Unterkategorie definiert ist (z. B. session Stärke-Amerikanisches oder Englisches-IPA) - es sei denn, für diesen Stil existiert bereits eine vorhandene BJCP-Unterkategorie (z. B. <i>double</i> [American] IPA) ).</entry-instructions>
+      <specs>Abhängig vom Typ.</specs>
     </subcategory>
   </category>
 </styleguide>
diff --git a/de/23A.xml b/de/23A.xml
index c12137b..440fec8 100644
--- a/de/23A.xml
+++ b/de/23A.xml
@@ -15,22 +15,6 @@
       <characteristic-ingredients>Der Gehalt an Weizenmalz beträgt in der Regel 50% der Schüttung (wie es bei allen deutschen Weizenbieren Tradition ist), der Rest ist in der Regel Pilsner-Malz. Eine Mischgärung mit obergäriger Hefe und Lactobacillus (verschiedene Stämme) liefert die scharfe Säure, die durch blenden von Bieren unterschiedlichen Alters während der Gärung und durch verlängertes Kaltreifung verstärkt werden kann. Hopfenbitterkeit gibt es nicht. Eine Dekoktion mit Maischehopfung stellt das traditonelle Verfahren dar. Deutsche Brauwissenschaftler glauben, dass <i> Brettanomyces </i> für das richtige Geschmacksprofil unerlässlich ist, aber dieser Charakter ist niemals stark.</characteristic-ingredients>
       <style-comparison>Im Vergleich zu einem Lambic ist es im Allgemeinen nicht so sauer und hat eine saubere Milchsäure mit einem bis unter der sensorischen Schwelle liegendem Funk. Auch niedriger im Alkoholgehalt.</style-comparison>
       <commercial-examples>Bayerischer Bahnhof Berliner Style Weisse, Berliner Kindl Weisse, Nodding Head Berliner Weisse, The Bruery Hottenroth</commercial-examples>
-      <tags>
-        <tag>session-strength</tag>
-        <tag>pale-color</tag>
-        <tag>top-fermented</tag>
-        <tag>central-europe</tag>
-        <tag>traditional-style</tag>
-        <tag>wheat-beer-family</tag>
-        <tag>sour</tag>
-      </tags>
-      <specs>
-        <ibu min="3" max="8"/>
-        <srm min="2" max="3" ebc-min="4" ebc-max="6"/>
-        <og min="1.028" max="1.032" plato-min="7.1" plato-max="8"/>
-        <fg min="1.003" max="1.006" plato-min="0.8" plato-max="1.5"/>
-        <abv min="2.8" max="3.8"/>
-      </specs>
     </subcategory>
   </category>
 </styleguide>
diff --git a/de/23B.xml b/de/23B.xml
index 248bf12..418c1b0 100644
--- a/de/23B.xml
+++ b/de/23B.xml
@@ -13,24 +13,6 @@
       <characteristic-ingredients>: Eine Basis von Wiener und / oder Münchner Malzen, leichten bis mittleren Karamalzen und eine kleine Menge Special B werden mit bis zu 20% Mais verwendet. Kontinentalhopfen mit niedrigem Alphasäuregehalt wird häufig verwendet (vermeiden Sie Hopfen mit hohem Alphasäuregehalt oder unverwechselbaren amerikanischen Hopfen). Saccharomyces, Lactobacillus und Brettanomyces (und Acetobacter) tragen zur Fermentation und zum späteren Geschmack bei.</characteristic-ingredients>
       <style-comparison>Weniger malzig als ein Oud Bruin, oft mit einem eher fruchtig-säuerlichen Profil.</style-comparison>
       <commercial-examples>Cuvée des Jacobins Rouge, Duchesse de Bourgogne, Rodenbach Grand Cru, Rodenbach Klassiek, Vichtenaar Flemish Ale</commercial-examples>
-      <tags>
-        <tag>standard-strength</tag>
-        <tag>amber-color</tag>
-        <tag>top-fermented</tag>
-        <tag>western-europe</tag>
-        <tag>traditional-style</tag>
-        <tag>sour</tag>
-        <tag>balanced</tag>
-        <tag>sour</tag>
-        <tag>wood</tag>
-      </tags>
-      <specs>
-        <ibu min="10" max="25"/>
-        <srm min="10" max="16" ebc-min="20" ebc-max="31"/>
-        <og min="1.048" max="1.057" plato-min="11.9" plato-max="14"/>
-        <fg min="1.002" max="1.012" plato-min="0.5" plato-max="3.1"/>
-        <abv min="4.6" max="6.5"/>
-      </specs>
     </subcategory>
   </category>
 </styleguide>
diff --git a/de/23C.xml b/de/23C.xml
index 5ec76a9..dfdf8c4 100644
--- a/de/23C.xml
+++ b/de/23C.xml
@@ -18,23 +18,6 @@
 			</characteristic-ingredients>
       <style-comparison>Ein tieferer Malzcharakter unterscheidet diese Biere von flämischen Rotbieren. Der Oud Bruin ist weniger sauer und malziger als ein Flanders Red, und die fruchtigen Aromen sind mehr auf Malz ausgerichtet.</style-comparison>
       <commercial-examples>Ichtegem Oud Bruin, Liefmans Goudenband, Liefmans Liefmans Oud Bruin, Petrus Oud Bruin, Riva Vondel, Vanderghinste Bellegems Bruin</commercial-examples>
-      <tags>
-        <tag>standard-strength</tag>
-        <tag>dark-color</tag>
-        <tag>top-fermented</tag>
-        <tag>western-europe</tag>
-        <tag>traditional-style</tag>
-        <tag>sour</tag>
-        <tag>malty</tag>
-        <tag>sour</tag>
-      </tags>
-      <specs>
-        <ibu min="20" max="25"/>
-        <srm min="15" max="22" ebc-min="30" ebc-max="43"/>
-        <og min="1.040" max="1.074" plato-min="10" plato-max="18"/>
-        <fg min="1.008" max="1.012" plato-min="2.1" plato-max="3.1"/>
-        <abv min="4.0" max="8.0"/>
-      </specs>
     </subcategory>
   </category>
 </styleguide>
diff --git a/de/33A.xml b/de/33A.xml
new file mode 100644
index 0000000..842e069
--- /dev/null
+++ b/de/33A.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
+  <category id="33">
+    <subcategory id="33A">
+      <specs>Abhängig vom Basisstil. Stammwürze und Alkohol meist überdurchschnittlich. Farbe meist dunkler als beim Basisstil.</specs>
+    </subcategory>
+  </category>
+</styleguide>
diff --git a/de/33B.xml b/de/33B.xml
new file mode 100644
index 0000000..32bd6ff
--- /dev/null
+++ b/de/33B.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
+  <category id="33">
+    <subcategory id="33B">
+      <specs>Abhängig vom Basisstil. Stammwürze und Alkohol meist überdurchschnittlich. Farbe meist dunkler als beim Basisstil.</specs>
+    </subcategory>
+  </category>
+</styleguide>
diff --git a/web/edit.css b/web/edit.css
index 909b566..29bb69a 100644
--- a/web/edit.css
+++ b/web/edit.css
@@ -79,6 +79,10 @@ div#editor-inner {
     height: 95%;
 }
 
+styleguide *[source] {
+  cursor: pointer;
+}
+
 styleguide[orig="true"] * {
   display:none;
 }
@@ -98,4 +102,3 @@ styleguide nav:not([todo="0"]) {
 styleguide nav:not([todo]) {
     background-color: white;
 }
-
diff --git a/web/edit.html b/web/edit.html
index c4fbbe2..fea164d 100644
--- a/web/edit.html
+++ b/web/edit.html
@@ -19,7 +19,7 @@
 	2015</a> in einer Form der fortlaufenden Übersetzung ins
 	Deutsche. Ziel des Projektes ist ein akkurater, vollständiger
 	und sprachlich ausgereifter Stand des Styleguide in deutscher
-	Sprache.  Dieses Übersetzungsprojekt wurde von der Community
+	Sprache. Dieses Übersetzungsprojekt wurde von der Community
 	des Forums <a
 	href="https://www.hobbybrauer.de">hobbybrauer.de</a> und des
 	Orga-Teams der <a
@@ -44,16 +44,17 @@
 	der aktuellen Session übersetzt. (Ein Browser-Reload bewirkt
 	bereits eine neue Session.)</li>
 	<li>Reine Textkapitel können hier leider nicht bearbeitet
-	werden, nur Bierstil-Kapitel (Kategorien und Unterkategorien).</li>
-	<li>"Tags" und "Technische Daten" werden nicht übersetzt. Ein
+	werden, nur Bierstil-Kapitel (Kategorien,
+	Unterkategorien(Stile) und Stilalternativen).</li>
+	<li>"Tags" und "Eckdaten" werden nicht übersetzt. Ein
 	"Übersetzen" von Werten in andere Einheiten, beispielsweise OG
 	in °P Stammwürze, erfolgt an anderer Stelle automatisiert.</li>
 	<li>Es ist auf einen einheitlichen Gebrauch von Worten und
-	Phrasen über das gesamte Dokument hinweg zu achten. Wir sind für
-	jede Mithilfe dankbar, aber es wäre ratsam, erst mit dem
-	Editieren zu beginnen, wenn man sich durch das Lesen einiger
-	anderer Abschnitte und der Einleitungen einen hinreichenden
-	Eindruck verschafft hat.</li>
+	Phrasen über das gesamte Dokument hinweg zu achten. Wir sind
+	für jede Mithilfe dankbar, aber es wäre ratsam, erst mit dem
+	Editieren zu beginnen, wenn man sich durch das Lesen der
+	Einleitungen und einiger anderer Abschnitte einen
+	hinreichenden Eindruck verschafft hat.</li>
 	<li>Bitte bedenke, dass es sich wirklich um eine
 	<strong>Übersetzung</strong> handeln soll. Auch wenn Du meinst,
 	dass zusätzliche Worte die Dinge klarer darstellen können oder
@@ -71,13 +72,13 @@
 	und erweitert).</li>
 	<li>Bitte lest Eure Absätze noch einmal aufmerksam, bevor Ihr
 	auf "save" klickt. Änderungen landen umgehend in dieser
-	Online-Version und werden in aller Regel in unregelmäßigen
-	Abständen später ins Haupt-Repository übernommen.</li>
+	Online-Version und im zentralen Repository.</li>
 	<li>Bitte verseht Eure Textblöcke vor dem Speichern mit einem
-	"short name", gut wäre hier beispielsweise Euer Benutzername aus
-	dem hobbybrauer.de Forum. Dies soll dazu dienen, ggf. mit Euch
-	über Details der Übersetzung zu diskutieren, falls das
-	vielleicht zu einem späteren Zeitpunkt sinnvoll erscheint.</li>
+	"short name", gut wäre hier beispielsweise Euer Benutzername
+	aus dem hobbybrauer.de Forum. Dies soll dazu dienen, ggf. im
+	Forum oder an anderer Stelle mit Euch über Details der
+	Übersetzung zu diskutieren, falls das vielleicht zu einem
+	späteren Zeitpunkt sinnvoll erscheint.</li>
       </ul>
       <div>Bisher wurden <span id="translated">?</span> von <span id="total">?</span> Textblöcken (mindestens anfänglich) übersetzt.</div>
     </div>
diff --git a/web/edit.js b/web/edit.js
index 0c57a45..40f46ac 100644
--- a/web/edit.js
+++ b/web/edit.js
@@ -189,8 +189,11 @@ function renderStyleguide(styleguide) {
     var editor = document.querySelector("div[id='editor']");
     editor.parentNode.insertBefore(styleguide_node, editor);
 
-    var parts = styleguide_node.querySelectorAll("name, description, overall-impression, aroma, appearance, flavor, mouthfeel, comments, history, characteristic-ingredients, style-comparison, entry-instructions, commercial-examples");
+    var parts = styleguide_node.querySelectorAll("name, description, overall-impression, aroma, appearance, flavor, mouthfeel, comments, history, characteristic-ingredients, style-comparison, entry-instructions, commercial-examples, specs");
     for (var i = 0; i < parts.length; i++) {
+	if ((parts[i].tagName == "specs") && (parts[i].querySelectorAll("ibu, og, fg, srm, abv").length >= 1)) {
+	    continue;
+	}
 	parts[i].addEventListener("click", function() {
 	    edit_element = this;
 	    edit_id = edit_element.parentNode.getAttribute("id");
diff --git a/web/show.css b/web/show.css
index 55dee9a..d25c552 100644
--- a/web/show.css
+++ b/web/show.css
@@ -211,17 +211,23 @@ styleguide[lang="de"] tags:before {
   content: "Tags: ";
 }
 styleguide[lang="de"] strength-classifications:before {
-  content: "Stärkeklassifikation: ";
+  content: "Stärkeklassifikationen: ";
 }
 
 styleguide[lang="de"] category > name:after {
   content: " (Stilkategorie)";
+  font-weight: normal;
+  font-size: 0.6em;
 }
 styleguide[lang="de"] subcategory > name:after {
   content: " (Bierstil)";
+  font-weight: normal;
+  font-size: 0.6em;
 }
 styleguide[lang="de"] subcategory[id*="-"] > name:after {
   content: " (Bierstilalternative)";
+  font-weight: normal;
+  font-size: 0.6em;
 }
 
 styleguide overall-impression,
@@ -259,10 +265,6 @@ styleguide strength-classifications:before {
   font-weight: bold;
 }
 
-styleguide specs {
-    display: block;
-    padding: 1px;
-}
 styleguide specs * {
     font-size: 0.8em;
     width: 100px;
@@ -289,23 +291,10 @@ styleguide specs ibu, styleguide specs srm, styleguide specs og, styleguide spec
   padding: 1px;
   display: inline-block;
 }
-/*
-styleguide specs div {
-  display: inline-block;
-}
-styleguide specs div * {
-  padding: 1px 4px;
-  border: 1px solid;
-  display: inline-block;
-  width: 9em;
-}
-*/
-
 
 /* navigation */
 
-styleguide nav,
-styleguide *[source] {
+styleguide nav {
   cursor: pointer;
 }
 
@@ -350,14 +339,16 @@ styleguide *.collapsed name {
     display:block !important;
 }
 
-styleguide * *:nth-child(3) {
-    /* after "name" and "nav" */
+styleguide category > *:nth-child(3),
+styleguide subcategory > *:nth-child(3) {
+    /* spacing after "name" and "nav" */
     margin-block-start: 1em;
 }
 styleguide * *:last-child {
     margin-block-end: 1em;
 }
-styleguide subcategory[id="7C"] entry-instructions {
-    /* layout hack for this one occurance */
+styleguide subcategory[id="7C"] entry-instructions,
+styleguide subcategory[id="21B"] strength-classifications {
+    /* layout hack for these single occurances */
     margin-block-end: 1em;
 }
diff --git a/xsl/bjcp-2015-styleguide-translate.xsl b/xsl/bjcp-2015-styleguide-translate.xsl
index f5f35ac..5365d68 100644
--- a/xsl/bjcp-2015-styleguide-translate.xsl
+++ b/xsl/bjcp-2015-styleguide-translate.xsl
@@ -153,7 +153,7 @@
 
 
 
-  <xsl:template match="bjcp:name|bjcp:description|bjcp:overall-impression|bjcp:aroma|bjcp:appearance|bjcp:flavor|bjcp:mouthfeel|bjcp:comments|bjcp:history|bjcp:characteristic-ingredients|bjcp:style-comparison|bjcp:entry-instructions|bjcp:commercial-examples">
+  <xsl:template match="bjcp:name|bjcp:description|bjcp:overall-impression|bjcp:aroma|bjcp:appearance|bjcp:flavor|bjcp:mouthfeel|bjcp:comments|bjcp:history|bjcp:characteristic-ingredients|bjcp:style-comparison|bjcp:entry-instructions|bjcp:commercial-examples|bjcp:specs">
     <xsl:param name="t"/>
     <xsl:variable name="p">
       <xsl:value-of select="$t"/>
@@ -162,6 +162,9 @@
     </xsl:variable>
     <xsl:element name="{local-name(.)}">
       <xsl:choose>
+	<xsl:when test="bjcp:ibu/@min">
+	  <xsl:apply-templates/>
+	</xsl:when>
 	<xsl:when test="dyn:evaluate($p)">
 	  <xsl:attribute name="source">lang-file</xsl:attribute>
 	  <xsl:apply-templates select="dyn:evaluate($p)/@*"/>
-- 
GitLab