From 01786566750113b0ca31229eca1afd0972386f30 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Tue, 15 Nov 2022 13:58:04 +0100 Subject: [PATCH 1/4] make first code tab the default --- _plugins/jekyll-tabs-lib/jekyll-tabs-4scala.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_plugins/jekyll-tabs-lib/jekyll-tabs-4scala.rb b/_plugins/jekyll-tabs-lib/jekyll-tabs-4scala.rb index b580d2f912..856879292f 100644 --- a/_plugins/jekyll-tabs-lib/jekyll-tabs-4scala.rb +++ b/_plugins/jekyll-tabs-lib/jekyll-tabs-4scala.rb @@ -67,8 +67,8 @@ def render(context) end if !foundDefault and allTabs.length > 0 - # set last tab to default - allTabs[-1].defaultTab = true + # set first tab to default + allTabs[0].defaultTab = true end if @is_scala_tabs From 3b6acd2abb18c57e98cc42d773ca1f2b84068d46 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Tue, 15 Nov 2022 13:58:42 +0100 Subject: [PATCH 2/4] add noscript tabs notice to all overviews --- _layouts/multipage-overview.html | 6 ++++++ _layouts/singlepage-overview.html | 6 ++++++ _overviews/scala3-book/taste-hello-world.md | 3 +-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/_layouts/multipage-overview.html b/_layouts/multipage-overview.html index 5d384433e7..ca65e57101 100644 --- a/_layouts/multipage-overview.html +++ b/_layouts/multipage-overview.html @@ -17,6 +17,12 @@ {% endif %} {% include version-specific-notice.html language=versionSpecificLang %} {% endif %} + {{content}} diff --git a/_layouts/singlepage-overview.html b/_layouts/singlepage-overview.html index e698d1183c..b39eafc05e 100644 --- a/_layouts/singlepage-overview.html +++ b/_layouts/singlepage-overview.html @@ -16,6 +16,12 @@ {% endif %} {% include version-specific-notice.html language=versionSpecificLang %} {% endif %} + {{content}} diff --git a/_overviews/scala3-book/taste-hello-world.md b/_overviews/scala3-book/taste-hello-world.md index e60f2ee7be..4bdf996f08 100644 --- a/_overviews/scala3-book/taste-hello-world.md +++ b/_overviews/scala3-book/taste-hello-world.md @@ -9,7 +9,6 @@ next-page: taste-repl --- > **Hint**: in the following examples try picking your preferred Scala version. -> ## Your First Scala Program @@ -149,7 +148,7 @@ import scala.io.StdIn.readLine In this code we save the result of `readLine` to a variable called `name`, we then -use the `+` operator on strings to join `"Hello, "` with `name` and `"!"`, making one single string value. +use the `+` operator on strings to join `"Hello, "` with `name` and `"!"`, making one single string value. > You can learn more about using `val` by reading [Variables and Data Types](/scala3/book/taste-vars-data-types.html). From 1d828f7136392fbb91007693b82cc2f9368976e3 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Tue, 15 Nov 2022 15:08:02 +0100 Subject: [PATCH 3/4] further validate scala version tabs --- .../jekyll-tabs-lib/jekyll-tabs-4scala.rb | 51 ++++++++++++++----- 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/_plugins/jekyll-tabs-lib/jekyll-tabs-4scala.rb b/_plugins/jekyll-tabs-lib/jekyll-tabs-4scala.rb index 856879292f..6f716e13dc 100644 --- a/_plugins/jekyll-tabs-lib/jekyll-tabs-4scala.rb +++ b/_plugins/jekyll-tabs-lib/jekyll-tabs-4scala.rb @@ -3,7 +3,7 @@ module Jekyll module Tabs - ScalaVersions = Set.new ['Scala 2', 'Scala 3'] + ScalaVersions = ['Scala 2', 'Scala 3'] def self.unquote(string) string.gsub(/^['"]|['"]$/, '') @@ -54,16 +54,50 @@ def render(context) allTabs = environment["tabs-#{@name}"] - seenTabs = Set.new + seenTabs = [] + + def joinScalaVersions() + Tabs::ScalaVersions.to_a.map{|item| "'#{item}'"}.join(", ") + end + + def errorNonScalaVersion(tab) + SyntaxError.new( + "Scala version tab label '#{tab.label}' is not valid for tabs '#{@name}' with " + + "class=tabs-scala-version. Valid tab labels are: #{joinScalaVersions()}") + end + + def errorScalaVersionWithoutClass(tab) + SyntaxError.new( + "Scala version tab label '#{tab.label}' is not valid for tabs '#{@name}' without " + + "class=tabs-scala-version") + end + + def errorMissingScalaVersion() + SyntaxError.new( + "Tabs '#{@name}' with class=tabs-scala-version must have exactly the following " + + "tab labels: #{joinScalaVersions()}") + end allTabs.each do | tab | if seenTabs.include? tab.label raise SyntaxError.new("Duplicate tab label '#{tab.label}' in tabs '#{@name}'") end - seenTabs.add tab.label + seenTabs.push tab.label if tab.defaultTab foundDefault = true end + + isScalaTab = Tabs::ScalaVersions.include? tab.label + + if @is_scala_tabs and !isScalaTab + raise errorNonScalaVersion(tab) + elsif !@is_scala_tabs and isScalaTab + raise errorScalaVersionWithoutClass(tab) + end + end + + if @is_scala_tabs and seenTabs != Tabs::ScalaVersions + raise errorMissingScalaVersion() end if !foundDefault and allTabs.length > 0 @@ -71,17 +105,6 @@ def render(context) allTabs[0].defaultTab = true end - if @is_scala_tabs - allTabs.each do | tab | - if !Tabs::ScalaVersions.include?(tab.label) - joined_versions = Tabs::ScalaVersions.to_a.map{|item| "'#{item}'"}.join(", ") - raise SyntaxError.new( - "Scala version tab label '#{tab.label}' is not valid for tabs '#{@name}' with " + - "class=tabs-scala-version. Valid tab labels are: #{joined_versions}") - end - end - end - currentDirectory = File.dirname(__FILE__) templateFile = File.read(currentDirectory + '/template.erb') template = ERB.new(templateFile) From 456b180a31c088dd2da4dfc9aa8d1c6e6c288552 Mon Sep 17 00:00:00 2001 From: Jamie Thompson Date: Tue, 15 Nov 2022 15:29:20 +0100 Subject: [PATCH 4/4] set scala 3 tab to be default --- .../jekyll-tabs-lib/jekyll-tabs-4scala.rb | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/_plugins/jekyll-tabs-lib/jekyll-tabs-4scala.rb b/_plugins/jekyll-tabs-lib/jekyll-tabs-4scala.rb index 6f716e13dc..eee013d138 100644 --- a/_plugins/jekyll-tabs-lib/jekyll-tabs-4scala.rb +++ b/_plugins/jekyll-tabs-lib/jekyll-tabs-4scala.rb @@ -78,9 +78,19 @@ def errorMissingScalaVersion() "tab labels: #{joinScalaVersions()}") end + def errorDuplicateTab(tab) + SyntaxError.new("Duplicate tab label '#{tab.label}' in tabs '#{@name}'") + end + + def errorScalaVersionDefault(tab) + SyntaxError.new( + "Scala version tab label '#{tab.label}' should not be default for tabs '#{@name}' " + + "with class=tabs-scala-version") + end + allTabs.each do | tab | if seenTabs.include? tab.label - raise SyntaxError.new("Duplicate tab label '#{tab.label}' in tabs '#{@name}'") + raise errorDuplicateTab(tab) end seenTabs.push tab.label if tab.defaultTab @@ -89,8 +99,12 @@ def errorMissingScalaVersion() isScalaTab = Tabs::ScalaVersions.include? tab.label - if @is_scala_tabs and !isScalaTab - raise errorNonScalaVersion(tab) + if @is_scala_tabs + if !isScalaTab + raise errorNonScalaVersion(tab) + elsif tab.defaultTab + raise errorScalaVersionDefault(tab) + end elsif !@is_scala_tabs and isScalaTab raise errorScalaVersionWithoutClass(tab) end @@ -101,8 +115,13 @@ def errorMissingScalaVersion() end if !foundDefault and allTabs.length > 0 - # set first tab to default - allTabs[0].defaultTab = true + if @is_scala_tabs + # set last tab to default ('Scala 3') + allTabs[-1].defaultTab = true + else + # set first tab to default + allTabs[0].defaultTab = true + end end currentDirectory = File.dirname(__FILE__)