Skip to content

Commit

Permalink
Add support for additional highlighted languages
Browse files Browse the repository at this point in the history
  • Loading branch information
thesamet committed Aug 18, 2018
1 parent 0f701bb commit bb35805
Show file tree
Hide file tree
Showing 7 changed files with 46 additions and 8 deletions.
18 changes: 18 additions & 0 deletions docs/src/main/tut/docs/settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,24 @@ micrositeHighlightTheme := "monokai"
```
[Available themes: https://cdnjs.com/libraries/highlight.js/](https://cdnjs.com/libraries/highlight.js/)

- `micrositeHighlightLanguages`: by default, Highlight.js is configured to support syntax highlighting for `java`, `scala` and `bash`. You can add additional languages:

```
micrositeHighlightTheme ++= Seq("protobuf", "thrift")
```

Then, use it as follows:

~~~
```protobuf
message MyMessage {
optional int32 i = 1;
}
```
~~~

[Available languages: https://cdnjs.com/libraries/highlight.js/](https://cdnjs.com/libraries/highlight.js/)

- `micrositeImgDirectory`: the plugin provides some basic images, but you can add new images to personalize the microsite. This is the property where you can specify where they will be placed. The images in this folder will be automatically copied by the plugin, and they will be placed together with the rest of the Jekyll resources. By default, its value is `(resourceDirectory in Compile).value / "microsite" / "img"` but you can override it, for instance:

```
Expand Down
3 changes: 3 additions & 0 deletions src/main/scala/microsites/MicrositeKeys.scala
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ trait MicrositeKeys {
val micrositeDocumentationLabelDescription: SettingKey[String] =
settingKey[String]("Microsite site documentation Label Description")
val micrositeHighlightTheme: SettingKey[String] = settingKey[String]("Microsite Highlight Theme")
val micrositeHighlightLanguages: SettingKey[Seq[String]] =
settingKey[Seq[String]]("Microsite Highlight Languages")
val micrositeConfigYaml: SettingKey[ConfigYml] =
settingKey[ConfigYml]("Microsite _config.yml file configuration.")
val micrositeImgDirectory: SettingKey[File] = settingKey[File](
Expand Down Expand Up @@ -193,6 +195,7 @@ trait MicrositeAutoImportSettings extends MicrositeKeys {
),
visualSettings = MicrositeVisualSettings(
highlightTheme = micrositeHighlightTheme.value,
highlightLanguages = micrositeHighlightLanguages.value,
palette = micrositePalette.value,
favicons = micrositeFavicons.value,
shareOnSocial = micrositeShareOnSocial.value
Expand Down
1 change: 1 addition & 0 deletions src/main/scala/microsites/MicrositesPlugin.scala
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ object MicrositesPlugin extends AutoPlugin {
micrositeTwitterCreator := "",
micrositeShareOnSocial := true,
micrositeHighlightTheme := "default",
micrositeHighlightLanguages := Seq("scala", "java", "bash"),
micrositeConfigYaml := ConfigYml(
yamlPath = Some((resourceDirectory in Compile).value / "microsite" / "_config.yml")),
micrositeImgDirectory := (resourceDirectory in Compile).value / "microsite" / "img",
Expand Down
22 changes: 15 additions & 7 deletions src/main/scala/microsites/layouts/Layout.scala
Original file line number Diff line number Diff line change
Expand Up @@ -205,17 +205,25 @@ abstract class Layout(config: MicrositeSettings) {
)
} else Nil

val BuiltinLanguages = Set("scala", "java", "bash")

val languages =
config.visualSettings.highlightLanguages.map(lang => s"'$lang'").mkString("[", ",", "]")

val languageScripts =
config.visualSettings.highlightLanguages.filterNot(BuiltinLanguages.contains).map { lang =>
script(
src := s"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/${lang}.min.js")
}

List(
script(src := "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"),
script(
src := "https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"),
script(src := "{{site.url}}{{site.baseurl}}/highlight/highlight.pack.js"),
script("""hljs.configure({
|languages:['scala','java','bash']
|});
|hljs.initHighlighting();
""".stripMargin)
) ++ customJsList ++ customCDNList ++ gitSidecar
script(src := "{{site.url}}{{site.baseurl}}/highlight/highlight.pack.js")
) ++ languageScripts ++ List(script(s"""hljs.configure({languages:${languages}});
|hljs.initHighlighting();
""".stripMargin)) ++ customJsList ++ customCDNList ++ gitSidecar
}

def kazariEnableScript: TypedTag[String] = script(s"""
Expand Down
1 change: 1 addition & 0 deletions src/main/scala/microsites/microsites.scala
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ case class MicrositeFavicon(filename: String, sizeDescription: String)

case class MicrositeVisualSettings(
highlightTheme: String,
highlightLanguages: Seq[String],
palette: Map[String, String],
favicons: Seq[MicrositeFavicon],
shareOnSocial: Boolean)
Expand Down
1 change: 1 addition & 0 deletions src/sbt-test/microsites/microsites-config-keys/build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ micrositeTwitter := "@47deg"
micrositeBaseUrl := "/test-microsite"
micrositeDocumentationUrl := "/api"
micrositeHighlightTheme := "just-another-theme"
micrositeHighlightLanguages := Seq("scala", "bash", "protobuf")
micrositeGithubOwner := "47deg"
micrositeGithubRepo := "sbt-microsites"
micrositePalette := Map(
Expand Down
8 changes: 7 additions & 1 deletion src/test/scala/microsites/util/Arbitraries.scala
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ trait Arbitraries {
twitterCreator Arbitrary.arbitrary[String]
analytics Arbitrary.arbitrary[String]
highlightTheme Arbitrary.arbitrary[String]
highlightLanguages Arbitrary.arbitrary[Seq[String]]
micrositeConfigYaml configYamlArbitrary.arbitrary
micrositeImgDirectory Arbitrary.arbitrary[File]
micrositeCssDirectory Arbitrary.arbitrary[File]
Expand Down Expand Up @@ -158,7 +159,12 @@ trait Arbitraries {
twitter,
twitterCreator,
analytics),
MicrositeVisualSettings(highlightTheme, palette, favicon, shareOnSocial),
MicrositeVisualSettings(
highlightTheme,
highlightLanguages,
palette,
favicon,
shareOnSocial),
MicrositeTemplateTexts(micrositeFooterText),
micrositeConfigYaml,
MicrositeFileLocations(
Expand Down

0 comments on commit bb35805

Please sign in to comment.