From c337672e978dbc688e961c9236be7f2b355fea04 Mon Sep 17 00:00:00 2001 From: Julien Richard-Foy Date: Wed, 21 Jul 2021 15:52:16 +0200 Subject: [PATCH 1/2] Move scaladoc documentation from dotty.epfl.ch to a guide Content was taken from commit c8894a0168061ddb1369a426e9bde8d9972c893b --- _config.yml | 9 + _overviews/scala3-scaladoc/blog.md | 42 ++++ _overviews/scala3-scaladoc/docstrings.md | 198 ++++++++++++++++++ _overviews/scala3-scaladoc/index.md | 11 + _overviews/scala3-scaladoc/linking.md | 99 +++++++++ _overviews/scala3-scaladoc/settings.md | 138 ++++++++++++ _overviews/scala3-scaladoc/site-versioning.md | 39 ++++ _overviews/scala3-scaladoc/static-site.md | 158 ++++++++++++++ resources/images/scala3/scaladoc/logo.svg | 1 + resources/images/scala3/scaladoc/nightly.gif | Bin 0 -> 71759 bytes scala3/guides.md | 5 + 11 files changed, 700 insertions(+) create mode 100644 _overviews/scala3-scaladoc/blog.md create mode 100644 _overviews/scala3-scaladoc/docstrings.md create mode 100644 _overviews/scala3-scaladoc/index.md create mode 100644 _overviews/scala3-scaladoc/linking.md create mode 100644 _overviews/scala3-scaladoc/settings.md create mode 100644 _overviews/scala3-scaladoc/site-versioning.md create mode 100644 _overviews/scala3-scaladoc/static-site.md create mode 100644 resources/images/scala3/scaladoc/logo.svg create mode 100644 resources/images/scala3/scaladoc/nightly.gif diff --git a/_config.yml b/_config.yml index 64f78bc718..fa2723f7df 100644 --- a/_config.yml +++ b/_config.yml @@ -125,6 +125,15 @@ defaults: overview-name: "Macros in Scala 3" layout: multipage-overview permalink: "/scala3/guides/macros/:title.html" + - + scope: + path: "_overviews/scala3-scaladoc" + values: + scala3: true + partof: scala3-scaladoc + overview-name: "Scaladoc" + layout: multipage-overview + permalink: "/scala3/guides/scaladoc/:title.html" - scope: path: "_scala3-reference" diff --git a/_overviews/scala3-scaladoc/blog.md b/_overviews/scala3-scaladoc/blog.md new file mode 100644 index 0000000000..1e3c371c8e --- /dev/null +++ b/_overviews/scala3-scaladoc/blog.md @@ -0,0 +1,42 @@ +--- +layout: multipage-overview +title: Built-in blog +partof: scala3-scaladoc +num: 5 +previous-page: static-site +next-page: site-versioning +--- + +Scaladoc allows you to include a simple blog in your documentation. For now, it +provides only basic features. In the future, we plan to include more advanced +features like tagging or author pages. + +Blog is treated a little differently than regular static sites. This article will help you set up your own blog. + +## Proper directory setup + +All your blogposts must be put under `blog/_posts` directory. + + +``` +├── blog +│ ├── _posts +│ │ └── 2016-12-05-implicit-function-types.md +│ └── index.html +``` + +If you are using yaml [sidebar]({% link _overviews/scala3-scaladoc/static-site.md %}#sidebar) don't forget to place + +``` +sidebar: + - title: Blog +``` + +somewhere inside the `yaml` tree representing the sidebar sections. Scaladoc will attach under that section all of your blogposts. + +## Naming convention + +All the blogpost filenames should start with date in numeric format matching `YYYY-MM-DD`. +Example name is `2015-10-23-dotty-compiler-bootstraps.md`. + + diff --git a/_overviews/scala3-scaladoc/docstrings.md b/_overviews/scala3-scaladoc/docstrings.md new file mode 100644 index 0000000000..5efb8b5f38 --- /dev/null +++ b/_overviews/scala3-scaladoc/docstrings.md @@ -0,0 +1,198 @@ +--- +layout: multipage-overview +title: Docstrings - specific Tags and Features +partof: scala3-scaladoc +num: 2 +previous-page: index +next-page: linking +--- + +This chapter describes how to correctly write docstrings and how to use all the available features of scaladoc. +Since many things are the same as in the old scaladoc, some parts are reused from this [article](https://docs.scala-lang.org/overviews/scaladoc/for-library-authors.html) + + +Scaladoc extends Markdown with additional features, such as linking +to API definitions. This can be used from within static documentation and blog +posts to provide blend-in content. + + +## Where to put docstrings + +Scaladoc comments go before the items they pertain to in a special comment block that starts with a /** and ends with a */, like this: + +```scala +/** Start the comment here + * and use the left star followed by a + * white space on every line. + * + * Even on empty paragraph-break lines. + * + * Note that the * on each line is aligned + * with the second * in /** so that the + * left margin is on the same column on the + * first line and on subsequent ones. + * + * Close the comment with *\/ + * + * If you use Scaladoc tags (@param, @group, etc.), + * remember to put them at separate lines with nothing preceding. + * + * For example: + * + * Calculate the square of the given number + * + * @param d the Double to square + * @return the result of squaring d + */ + def square(d: Double): Double = d * d +``` + +In the example above, this Scaladoc comment is associated with the method square since it is right before it in the source code. + +Scaladoc comments can go before fields, methods, classes, traits, objects. +For now, scaladoc doesn't support straightforward solution to document packages. There is a dedicated github +[issue](https://github.com/lampepfl/dotty/issues/11284), where you can check the current status of the problem. + +For class primary constructors which in Scala coincide with the definition of the class itself, a @constructor tag is used to target a comment to be put on the primary constructor documentation rather than the class overview. + +## Tags + +Scaladoc uses `@` tags to provide specific detail fields in the comments. These include: + +### Class specific tags + +- `@constructor` placed in the class comment will describe the primary constructor. + +### Method specific tags + +- `@return` detail the return value from a method (one per method). + +### Method, Constructor and/or Class tags + +- `@throws` what exceptions (if any) the method or constructor may throw. +- `@param` detail a value parameter for a method or constructor, provide one per parameter to the method/constructor. +- `@tparam` detail a type parameter for a method, constructor or class. Provide one per type parameter. + +### Usage tags + +- `@see` reference other sources of information like external document links or related entities in the documentation. +- `@note` add a note for pre or post conditions, or any other notable restrictions or expectations. +- `@example` for providing example code or related example documentation. + + +### Member grouping tags + +These tags are well-suited to larger types or packages, with many members. They allow you to organize the Scaladoc page into distinct sections, with each one shown separately, in the order that you choose. + +These tags are not enabled by default! You must pass the -groups flag to Scaladoc in order to turn them on. Typically the sbt for this will look something like: + +```scala +Compile / doc / scalacOptions ++= Seq( + "-groups" +) +``` +Each section should have a single-word identifier that is used in all of these tags, shown as `group` below. By default, that identifier is shown as the title of that documentation section, but you can use @groupname to provide a longer title. + +Typically, you should put @groupprio (and optionally @groupname and @groupdesc) in the Scaladoc for the package/trait/class/object itself, describing what all the groups are, and their order. Then put @group in the Scaladoc for each member, saying which group it is in. + +Members that do not have a `@group` tag will be listed as “Ungrouped” in the resulting documentation. + +- `@group ` - mark the entity as a member of the `` group. +- `@groupname ` - provide an optional name for the group. `` is displayed as the group header before the group description. +- `@groupdesc ` - add optional descriptive text to display under the group name. Supports multiline formatted text. +- `@groupprio ` - control the order of the group on the page. Defaults to 0. Ungrouped elements have an implicit priority of 1000. Use a value between 0 and 999 to set a relative position to other groups. Low values will appear before high values. + +### Other tags + +- `@author` provide author information for the following entity +- `@version` the version of the system or API that this entity is a part of. +- `@since` like `@version` but defines the system or API that this entity was first defined in. +- `@deprecated` marks the entity as deprecated, providing both the replacement implementation that should be used and the version/date at which this entity was deprecated. +- `@syntax ` let you change the parser for docstring. The default syntax is markdown, however you can change it using this directive. Currently available syntaxes are `markdown` or `wiki`, e. g. `@syntax wiki` + +### Macros + +- `@define ` allows use of $name in other Scaladoc comments within the same source file which will be expanded to the contents of ``. + +If a comment is not provided for an entity at the current inheritance level, but is supplied for the overridden entity at a higher level in the inheritance hierarchy, the comment from the super-class will be used. + +Likewise if `@param`, `@tparam`, `@return` and other entity tags are omitted but available from a superclass, those comments will be used. + +### Explicit + +For explicit comment inheritance, use the @inheritdoc tag. + +### Markup + +Scaladoc provides two syntax parsers: `markdown` (default) or `wikidoc`. +It is still possible to embed HTML tags in Scaladoc (like with Javadoc), but not necessary most of the time as markup may be used instead. + +#### Markdown + +Markdown uses [commonmark flavour](https://spec.commonmark.org/current/) with two custom extensions: +- `wikidoc` links for referencing convenience +- `wikidoc` codeblocks with curly braces syntax + + +#### Wikidoc + +Wikidoc is syntax used for scala2 scaladoc. It is supported because of many existing source code, however it is **not** recommended to use it in new projects. +Wikisyntax can be toggled on with flag `-comment-syntax wiki` globally, or with `@syntax wiki` directive in docstring. + +Some of the standard markup available: + +``` +`monospace` +''italic text'' +'''bold text''' +__underline__ +^superscript^ +,,subscript,, +[[entity link]], e.g. [[scala.collection.Seq]] +[[https://external.link External Link]], e.g. [[https://scala-lang.org Scala Language Site]] +``` + +For more info about wiki links look at this [chapter](#linking-to-api) + +Other formatting notes + +- Paragraphs are started with one (or more) blank lines. `*` in the margin for the comment is valid (and should be included) but the line should be blank otherwise. +- Headings are defined with surrounding `=` characters, with more `=` denoting subheadings. E.g. `=Heading=`, `==Sub-Heading==`, etc. +- List blocks are a sequence of list items with the same style and level, with no interruptions from other block styles. Unordered lists can be bulleted using `-`, numbered lists can be denoted using `1.`, `i.`, `I.`, or `a.` for the various numbering styles. In both cases, you must have extra space in front, and more space makes a sub-level. + +The markup for list blocks looks like: + +``` +/** Here is an unordered list: + * + * - First item + * - Second item + * - Sub-item to the second + * - Another sub-item + * - Third item + * + * Here is an ordered list: + * + * 1. First numbered item + * 1. Second numbered item + * i. Sub-item to the second + * i. Another sub-item + * 1. Third item + */ +``` + +### General Notes for Writing Scaladoc Comments + +Concise is nice! Get to the point quickly, people have limited time to spend on your documentation, use it wisely. +Omit unnecessary words. Prefer returns X rather than this method returns X, and does X,Y & Z rather than this method does X, Y and Z. +DRY - don’t repeat yourself. Resist duplicating the method description in the @return tag and other forms of repetitive commenting. + +More details on writing Scaladoc + +Further information on the formatting and style recommendations can be found in Scala-lang scaladoc style guide. + +## Linking to API + +Scaladoc allows linking to API documentation with Wiki-style links. Linking to +`scala.collection.immutable.List` is as simple as +`[[scala.collection.immutable.List]]`. For more information on the exact syntax, see [doc comment documentation]({% link _overviews/scala3-scaladoc/linking.md %}#definition-links). diff --git a/_overviews/scala3-scaladoc/index.md b/_overviews/scala3-scaladoc/index.md new file mode 100644 index 0000000000..b158e9d89e --- /dev/null +++ b/_overviews/scala3-scaladoc/index.md @@ -0,0 +1,11 @@ +--- +layout: multipage-overview +title: Scaladoc +partof: scala3-scaladoc +num: 1 +next-page: docstrings +--- + +![scaladoc logo]({{ site.baseurl }}/resources/images/scala3/scaladoc/logo.svg) + +scaladoc is a tool to generate the API documentation of your Scala 3 projects. It provides similar features to `javadoc` as well as `jekyll` or `docusaurus`. diff --git a/_overviews/scala3-scaladoc/linking.md b/_overviews/scala3-scaladoc/linking.md new file mode 100644 index 0000000000..635c461abd --- /dev/null +++ b/_overviews/scala3-scaladoc/linking.md @@ -0,0 +1,99 @@ +--- +layout: multipage-overview +title: Linking documentation +partof: scala3-scaladoc +num: 3 +previous-page: docstrings +next-page: static-site +--- + +Scaladoc's main feature is creating API documentation from code comments. + +By default, the code comments are understood as Markdown, though we also support +Scaladoc's old [Wiki syntax](https://docs.scala-lang.org/style/scaladoc.html). + +## Syntax + +### Definition links + +Our definition link syntax is quite close to Scaladoc's syntax, though we have made some +quality-of-life improvements. + +#### Basic syntax + +A definition link looks as follows: `[[scala.collection.immutable.List]]`. + +Which is to say, a definition link is a sequence of identifiers separated by +`.`. The identifiers can be separated with `#` as well for Scaladoc compatibility. + +By default, an identifier `id` references the first (in source order) entity +named `id`. An identifier can end with `$`, which forces it to refer to a value +(an object, a value, a given); an identifier can also end with `!`, which forces +it to refer to a type (a class, a type alias, a type member). + +The links are resolved relative to the current location in source. That is, when +documenting a class, the links are relative to the entity enclosing the class (a +package, a class, an object); the same applies to documenting definitions. + +Special characters in links can be backslash-escaped, which makes them part of +identifiers instead. For example, `` [[scala.collection.immutable\.List]] `` +references the class named `` `immutable.List` `` in package `scala.collection`. + +#### New syntax + +We have extended Scaladoc definition links to make them a bit more pleasant to +write and read in source. The aim was also to bring the link and Scala syntax +closer together. The new features are: + +1. `package` can be used as a prefix to reference the enclosing package + Example: + ``` + package utils + class C { + def foo = "foo". + } + /** See also [[package.C]]. */ + class D { + def bar = "bar". + } + ``` + The `package` keyword helps make links to the enclosing package shorter + and a bit more resistant to name refactorings. +1. `this` can be used as a prefix to reference the enclosing classlike + Example: + ``` + class C { + def foo = "foo" + /** This is not [[this.foo]], this is bar. */ + def bar = "bar" + } + ``` + Using a Scala keyword here helps make the links more familiar, as well as + helps the links survive class name changes. +1. Backticks can be used to escape identifiers + Example: + ``` + def `([.abusive.])` = ??? + /** TODO: Figure out what [[`([.abusive.])`]] is. */ + def foo = `([.abusive.])` + ``` + Previously (versions 2.x), Scaladoc required backslash-escaping to reference such identifiers. Now (3.x versions), + Scaladoc allows using the familiar Scala backtick quotation. + +#### Why keep the Wiki syntax for links? + +There are a few reasons why we've kept the Wiki syntax for documentation links +instead of reusing the Markdown syntax. Those are: + +1. Nameless links in Markdown are ugly: `[](definition)` vs `[[definition]]` + By far, most links in documentation are nameless. It should be obvious how to + write them. +2. Local member lookup collides with URL fragments: `[](#field)` vs `[[#field]]` +3. Overload resolution collides with MD syntax: `[](meth(Int))` vs `[[meth(Int)]]` +4. Now that we have a parser for the link syntax, we can allow spaces inside (in + Scaladoc one needed to slash-escape those), but that doesn't get recognized + as a link in Markdown: `[](meth(Int, Float))` vs `[[meth(Int, Float)]]` + +None of these make it completely impossible to use the standard Markdown link +syntax, but they make it much more awkward and ugly than it needs to be. On top +of that, Markdown link syntax doesn't even save any characters. diff --git a/_overviews/scala3-scaladoc/settings.md b/_overviews/scala3-scaladoc/settings.md new file mode 100644 index 0000000000..88272e80ab --- /dev/null +++ b/_overviews/scala3-scaladoc/settings.md @@ -0,0 +1,138 @@ +--- +layout: multipage-overview +title: Settings +partof: scala3-scaladoc +num: 7 +previous-page: site-versioning +--- + +This chapter lists the configuration options that can be used when calling scaladoc. Some of the information shown here can be found by calling scaladoc with the `-help` flag. + +## Parity with scaladoc for Scala 2 + +Scaladoc has been rewritten from scratch and some of the features turned out to be useless in the new context. +If you want to know what is current state of compatibility with scaladoc old flags, you can visit this issue for tracking [progress](https://github.com/lampepfl/dotty/issues/11907). + +## Providing settings + +Supply scaladoc settings as command-line arguments, e.g., `scaladoc -d output -project my-project target/scala-3.0.0-RC2/classes`. If called from sbt, +update the value of `Compile / doc / scalacOptions`, e. g. `Compile / doc / scalacOptions ++= Seq("-d", "output", "-project", "my-project")` + +## Overview of all available settings + +##### -project +The name of the project. To provide compatibility with Scala2 aliases with `-doc-title` + +##### -project-version +The current version of your project that appears in a top left corner. To provide compatibility with Scala2 aliases with `-doc-version` + +##### -project-logo +The logo of your project that appears in a top left corner. To provide compatibility with Scala2 aliases with `-doc-logo` + +##### -project-footer +The string message that appears in a footer section. To provide compatibility with Scala2 aliases with `-doc-footer` + +##### -comment-syntax +The styling language used for parsing comments. +Currently we support two syntaxes: `markdown` or `wiki` +If setting is not present, scaladoc defaults `markdown` + +##### -revision +Revision (branch or ref) used to build project project. Useful with sourcelinks to prevent them from pointing always to the newest master that is subject to changes. + +##### -source-links +Source links provide a mapping between file in documentation and code repository. + +Example source links is: +`-source-links:docs=github://lampepfl/dotty/master#docs` + +Accepted formats: + +\=\ +\ + +where \ is one of following: + - `github:///[/revision][#subpath]` + will match https://github.com/$organization/$repository/\[blob|edit]/$revision\[/$subpath]/$filePath\[$lineNumber] + when revision is not provided then requires revision to be specified as argument for scaladoc + - `gitlab:///` + will match https://gitlab.com/$organization/$repository/-/\[blob|edit]/$revision\[/$subpath]/$filePath\[$lineNumber] + when revision is not provided then requires revision to be specified as argument for scaladoc + - \ + +\ is a format for `doc-source-url` parameter from old scaladoc. +NOTE: We only supports `€{FILE_PATH_EXT}`, `€{TPL_NAME}`, `€{FILE_EXT}`, + €{FILE_PATH}, and €{FILE_LINE} patterns. + + +Template can defined only by subset of sources defined by path prefix represented by ``. +In such case paths used in templates will be relativized against `` + + + +##### -external-mappings + +Mapping between regexes matching classpath entries and external documentation. + +Example external mapping is: +`-external-mappings:.*scala.*::scaladoc3::https://scala-lang.org/api/3.x/,.*java.*::javadoc::https://docs.oracle.com/javase/8/docs/api/` + +A mapping is of the form '\::\[scaladoc3|scaladoc|javadoc]::\'. You can supply several mappings, separated by commas, as shown in the example. + +##### -social-links + +Links to social sites. For example: + +`-social-links:github::https://github.com/lampepfl/dotty,gitter::https://gitter.im/scala/scala,twitter::https://twitter.com/scala_lang` + +Valid values are of the form: '\[github|twitter|gitter|discord]::link'. Scaladoc also supports 'custom::link::white_icon_name::black_icon_name'. In this case icons must be present in 'images/' directory. + +##### -skip-by-id + +Identifiers of packages or top-level classes to skip when generating documentation. + +##### -skip-by-regex + +Regexes that match fully qualified names of packages or top-level classes to skip when generating documentation. + +##### -doc-root-content + +The file from which the root package documentation should be imported. + +##### -author + +Adding authors in docstring with `@author Name Surname` by default won't be included in generated html documentation. +If you would like to label classes with authors explicitly, run scaladoc with this flag. + +##### -groups + +Group similar functions together (based on the @group annotation) + +##### -private + +Show all types and members. Unless specified, show only public and protected types and members. + +##### -doc-canonical-base-url + +A base URL to use as prefix and add `canonical` URLs to all pages. The canonical URL may be used by search engines to choose the URL that you want people to see in search results. If unset no canonical URLs are generated. + +##### -siteroot + +A directory containing static files from which to generate documentation. Default directory is `./docs` + +##### -versions-dictionary-url + +A URL pointing to a JSON document containing a dictionary: `version label -> documentation location`. +The JSON file has single property `versions` that holds the dictionary associating the labels of specific versions of the documentation to the URLs pointing to their index.html +Useful for libraries that maintain different versions of their documentation. + +Example JSON file: +``` +{ + "versions": { + "3.0.x": "https://dotty.epfl.ch/3.0.x/docs/index.html", + "Nightly": "https://dotty.epfl.ch/docs/index.html" + } +} +``` + diff --git a/_overviews/scala3-scaladoc/site-versioning.md b/_overviews/scala3-scaladoc/site-versioning.md new file mode 100644 index 0000000000..e48907d11e --- /dev/null +++ b/_overviews/scala3-scaladoc/site-versioning.md @@ -0,0 +1,39 @@ +--- +layout: multipage-overview +title: Site versioning +partof: scala3-scaladoc +num: 6 +previous-page: blog +next-page: settings +--- + +Scaladoc provides a convenient way to switch between different versions of the documentation. The feature is useful if we want to expose older docs for users that didn't migrate to the new version of our library. + +### How to setup it + +The feature was designed for easy scalability with no need to regenerate all scaladocs after adding a new version. To do so a new setting is introduced: `-versions-dictionary-url`. Its argument must be a URL to a JSON document holding information about the locations of specific versions. The JSON file has single property `versions` that holds the dictionary associating the labels of specific versions of the documentation to the URLs pointing to their index.html + +Example JSON file: +``` +{ + "versions": { + "3.0.x": "https://dotty.epfl.ch/3.0.x/docs/index.html", + "Nightly": "https://dotty.epfl.ch/docs/index.html" + } +} +``` + +This enforce us to provide the setting while generating docs for each of the versions, however it gives us more flexibility later. If you want to add a version of the API docs next to the previous 5 versions that you have already published, then you only need to upload the new docs to a web server and add a new entry to the JSON file. All versions of the site will now become aware of the new site version. + +The important thing to note is that there is only one JSON file to avoid redundancy and each scaladoc must set up its URL location beforehand, for example, in sbt: + +``` +doc / scalacOptions ++= Seq("-versions-dictionary-url", "https://dotty.epfl.ch/versions.json") +``` + + +### How does it look from user perspective + +Providing a JSON file via `-versions-dictionary-url` enables scaladoc to link between versions. It is also convenient to be able to change the revision label in the drop-down menu. Everything will change automatically. + +![]({{ site.baseurl }}/resources/images/scala3/scaladoc/nightly.gif) diff --git a/_overviews/scala3-scaladoc/static-site.md b/_overviews/scala3-scaladoc/static-site.md new file mode 100644 index 0000000000..36a3bc11d2 --- /dev/null +++ b/_overviews/scala3-scaladoc/static-site.md @@ -0,0 +1,158 @@ +--- +layout: multipage-overview +title: Static documentation +partof: scala3-scaladoc +num: 4 +previous-page: linking +next-page: blog +--- + +Scaladoc is able to generate static sites, known from [Jekyll](http://jekyllrb.com/) or [Docusaurus](https://docusaurus.io/). +Having a combined tool allows to provide interaction between static documentation and API, thus allowing the two to blend naturally. + +Creating a site is just as simple as in Jekyll. The site root contains the +layout of the site and all files placed there will be either considered static, +or processed for template expansion. + +The files that are considered for template expansion must end in `*.{html,md}` +and will from here on be referred to as "template files" or "templates". + +A simple "hello world" site could look something like this: + +``` +├── docs +│ └── getting-started.md +└── index.html +``` + +This will give you a site with the following files in generated documentation: + +``` +index.html +docs/getting-started.html +``` + +Scaladoc can transform both files and directories (to organize your documentation into tree-like structure). By default directories has title based on file name and has empty content. There is an option to include `index.html` or `index.md` (not both) to provide both content and properties like title (see [Properties](#properties)). + +## Properties + +Scaladoc uses the [Liquid](https://shopify.github.io/liquid/) templating engine +and provides a number of custom filters and tags specific to Scala +documentation. + +In Scaladoc, all templates can contain YAML front-matter. The front-matter +is parsed and put into the `page` variable available in templates via Liquid. + +Scaladoc uses some predefined properties to controls some aspect of page. + +Predefined properties: + + - **title** provide page title that will be used in navigation and html metadata. + - **extraCss** additional `.css` files that will be included in this page. Paths should be relative to documentation root. **This setting is not exported to template engine.** + - **extraJs** additional `.js` files that will be included in this page. Paths should be relative to documentation root. **This setting is not exported to template engine.** + - **hasFrame** when set to `false` page will not include default layout (navigation, breadcrumbs etc.) but only token html wrapper to provide metadata and resources (js and css files). **This setting is not exported to template engine.** +- **layout** - predefined layout to use, see below. **This setting is not exported to template engine.** + + +## Using existing Templates and Layouts + +To perform template expansion, Dottydoc looks at the `layout` field in the front-matter. +Here's a simple example of the templating system in action, `index.html`: + +```html +--- +layout: main +--- + +

Hello world!

+``` + +With a simple main template like this: + +{% raw %} +```html + + + Hello, world! + + + {{ content }} + + +``` + +Would result in `{{ content }}` being replaced by `

Hello world!

` from +the `index.html` file. +{% endraw %} + +Layouts must be placed in a `_layouts` directory in the site root: + +``` +├── _layouts +│ └── main.html +├── docs +│ └── getting-started.md +└── index.html +``` + +## Sidebar + +Scaladoc by default uses layout of files in `docs` directory to create table of content. There is also ability to override it by providing a `sidebar.yml` file in the site root: + +```yaml +sidebar: + - title: Blog + - title: Docs + url: docs/index.html + - title: Usage + subsection: + - title: Dottydoc + url: docs/usage/dottydoc.html + - title: sbt-projects + url: docs/usage/sbt-projects.html +``` + +The `sidebar` key is mandatory, as well as `title` for each element. The +default table of contents allows you to have subsections - albeit the current +depth limit is 2 however it accepts both files and directories and latter can be used to provide deeper structures. + +The items must provide either `subsection` or `url` but not both at once! +The only exception is `Blog` which is only a `title` and behaves differently. +You can read more about blog [here]({% link _overviews/scala3-scaladoc/blog.md %}). + +``` +├── blog +│ ├── _posts +│ │ └── 2016-12-05-implicit-function-types.md +│ └── index.html +├── index.html +└── sidebar.yml +``` + +## Static resources + +You can attach static resources (pdf, images) to your documentation by using two dedicated directories: +`resources` and `images`. When you upload your assests under any of these directories you can reference them in markdown +as if they were relatively at the same level. + +For example, consider the following situation: + +``` +├── blog +│ ├── _posts +│ │ └── 2016-12-05-implicit-function-types.md +│ └── index.html +├── index.html +├── resources +│ └── my_file.pdf +├── images +│ └── my_image.png +└── sidebar.yml + +``` + +You can refer to the assets from within any of the files using markdown links: + +``` +This is my blogpost. Here is the image ![](my_image.png) and here is my [pdf](my_file.pdf) +``` diff --git a/resources/images/scala3/scaladoc/logo.svg b/resources/images/scala3/scaladoc/logo.svg new file mode 100644 index 0000000000..1774519639 --- /dev/null +++ b/resources/images/scala3/scaladoc/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/scala3/scaladoc/nightly.gif b/resources/images/scala3/scaladoc/nightly.gif new file mode 100644 index 0000000000000000000000000000000000000000..d6e764a032d56271c74ba93b183501dd51724275 GIT binary patch literal 71759 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 DYJ~BT literal 0 HcmV?d00001 diff --git a/scala3/guides.md b/scala3/guides.md index 45587d280f..028858ab27 100644 --- a/scala3/guides.md +++ b/scala3/guides.md @@ -18,6 +18,11 @@ guides: icon: birthday-cake url: "/scala3/guides/tasty-overview.html" description: "An overview over the TASTy format aimed at end-users of the Scala language." + - title: Scaladoc + by: Krzysztof Romanowski, Aleksander Boruch-Gruszecki, Andrzej Ratajczak + icon: book + url: "/scala3/guides/scaladoc" + description: "Scala’s API documentation generation tool." ---

From 37abc5486391a9259a1207d6614168c9c80bd1c1 Mon Sep 17 00:00:00 2001 From: Julien Richard-Foy Date: Fri, 23 Jul 2021 10:50:10 +0200 Subject: [PATCH 2/2] Change style of h4 and h5 content --- _sass/layout/type-md.scss | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/_sass/layout/type-md.scss b/_sass/layout/type-md.scss index ccaed1bb9e..0696bee09f 100755 --- a/_sass/layout/type-md.scss +++ b/_sass/layout/type-md.scss @@ -45,8 +45,7 @@ h5 { font-size: 1.0rem; font-family: $base-font-family; - text-transform: uppercase; - font-weight: $font-regular; + font-weight: $font-bold; } }