MarkdownToHtml.psd1

#
# Module manifest for module 'MarkDownToHTML'
#
# Generated by: WetHat
#
# Generated on: 11/7/2017 7:57:32 AM
#

@{
# Script module or binary module file associated with this manifest.
RootModule = 'MarkdownToHtml.psm1'

# Version number of this module.
ModuleVersion = '2.5.0'

# Supported PSEditions
CompatiblePSEditions = 'Desktop'

# ID used to uniquely identify this module
GUID = 'ac6c6204-4097-4693-ba7e-3e0167383c24'

# Author of this module
Author = 'WetHat'

# Company or vendor of this module
CompanyName = 'WetHat Lab'

# Copyright statement for this module
Copyright = '(c) 2018-2021 WetHat Lab. All rights reserved.'

# Description of the functionality provided by this module
Description = @'
A collection of PowerShell commands to convert Markdown files to static
HTML sites in various ways.
 
## Components packaged with this module:
 
| Component |Version | Description
|-------------------------------------------------|--------|-----------------------------------
| [Markdig](https://github.com/lunet-io/markdig) | 0.25.0 | Fast Markdown processor for .NET
| [highlight.js](https://highlightjs.org/) | 9.17.1 | Code syntax highlighter
| [KaTeX](https://katex.org/) | 0.13.11| Math typesetting
| [Mermaid](http://mermaid-js.github.io/mermaid/) | 8.10.1 | Diagramming
| [Svgbob](https://lib.rs/crates/svgbob_cli) | 0.5.0 | Text based diagrammimg
 
# Known Incompatibilities
 
If you have have conversion projects which use the _mathematics_ extensions and
were created with versions of this module older than 2.0.0 (i.e. 1.* or 0.*).
See [version 2.0.0](MarkdownToHTML.md#2.0.0) release notes for upgrade instructions.
'@


# Minimum version of the Windows PowerShell engine required by this module
PowerShellVersion = '5.1'

# Name of the Windows PowerShell host required by this module
# PowerShellHostName = ''

# Minimum version of the Windows PowerShell host required by this module
# PowerShellHostVersion = ''

# Minimum version of Microsoft .NET Framework required by this module
# DotNetFrameworkVersion = ''

# Minimum version of the common language runtime (CLR) required by this module
# CLRVersion = ''

# Processor architecture (None, X86, Amd64) required by this module
# ProcessorArchitecture = ''

# Modules that must be imported into the global environment prior to importing this module
# RequiredModules = @()

# Assemblies that must be loaded prior to importing this module
RequiredAssemblies = @('Markdig.dll')

# Script files (.ps1) that are run in the caller's environment prior to importing this module.
# ScriptsToProcess = @()

# Type files (.ps1xml) to be loaded when importing this module
# TypesToProcess = @()

# Format files (.ps1xml) to be loaded when importing this module
# FormatsToProcess = @()

# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
NestedModules = @('HtmlFragments.psm1')

# Functions to export from this module
FunctionsToExport = @(
                        'Convert-MarkdownToHTML'
                        'Convert-MarkdownToHTMLFragment'
                        'Convert-SvgbobToSvg'
                        'ConvertTo-NavigationItem'
                        'Expand-HtmlTemplate'
                        'Find-MarkdownFiles'
                        'New-PageHeadingNavigation'
                        'New-SiteNavigation'
                        'New-StaticHTMLSiteProject'
                        'New-HTMLTemplate'
                        'Publish-StaticHtmlSite'
                        'Update-ResourceLinks'
                     )

# Cmdlets to export from this module
CmdletsToExport = '*'

# Variables to export from this module
VariablesToExport = '*'

# Aliases to export from this module
AliasesToExport = '*'

# List of all modules packaged with this module
ModuleList = @()

# List of all files packaged with this module
FileList = @(
                'MarkdownToHtml.psm1'
                'HtmlFragments.psm1'
                'Markdig.dll'
                'svgbob.exe'
                'System.Memory.dll'
                'System.Runtime.CompilerServices.Unsafe.dll'
                'System.Numerics.Vectors.dll'
            )

# Private data to pass to the module specified in RootModule/ModuleToProcess
PrivateData = @{
    PSData = @{
        # Tags applied to this module. These help with module discovery in online galleries.
        Tags = @(
                    'Markdown'
                    'HTML'
                    'Converter'
                )

        # A URL to the license for this module.
        LicenseUri = 'https://github.com/WetHat/MarkdownToHtml/blob/master/LICENSE'

        # A URL to the main website for this project.
        ProjectUri = 'https://github.com/WetHat/MarkdownToHtml'

        # A URL to an icon representing this module.
        IconUri = 'https://upload.wikimedia.org/wikipedia/commons/2/2f/PowerShell_5.0_icon.png'

        # ReleaseNotes of this module
        ReleaseNotes = @'
## 2.5.0 {#2.5.0}
 
* [Markdig](https://github.com/lunet-io/markdig) update to version 0.25.0
* Support for publishing static websites to
  [GitHub Pages](https://docs.github.com/en/pages/getting-started-with-github-pages).
 
  This new feature is backwards compatible with existing static site projects.
  However, if you want to use this new feature in existing site projects
  following changes must be applied:
 
  `Build.json` project configuration file
  : The `site_dir` option needs to be changed and a new option `github_pages`
      must be added as shown below:
 
      ~~~ json
      {
         ...
 
         "site_dir": "docs",
         ...
         "github_pages": false,
         ...
      }
      ~~~
 
      Using the name `docs` for the site directory makes it possible to check-in
      the entire conversion project as-is. As soon as _GitHub Pages_ are
      enabled and configured to publish the static site from the `docs`
      directory, the site is accessible on the web through its canonical
      _GitHub Pages_ url.
 
  `Build.ps1` project build file
  : Add a statement to disable the GitHub publishing process (jekyll) which
      is not necessary for static sites created by this module. Add
      following code to the end of the build file:
 
      ~~~ PowerShell
      ...
      if ($config.github_pages) {
          # Switch off Jekyll publishing when building for GitHub pages
          New-Item -Path $staticSite -Name .nojekyll -ItemType File
      }
      ~~~
* Added a Html fragment post-processing step to the conversion pipeline.
 
  The default post-processing function `Convert-SvgbobToSvg`
  converts [Svgbob](https://ivanceras.github.io/content/Svgbob.html)
  ASCII art diagrams to svg images. See the
  [feature showcase](../index.html#svgbob-plain-text-diagrams)
  for an example.
 
  This new feature is backwards compatible with existing static site projects.
  However, if you want to use `Svgbob` diagrams in existing site projects
  following changes must be made:
 
  `Build.json` project configuration file
  : A new option `svgbob` option needs to be added to for configuration
      of the svg conversion.
 
      ~~~ json
      {
         ...
         "svgbob": {
            "background": "white",
            "fill_color": "black",
            "font_size": 14,
            "font_family": "Monospace",
            "scale": 1,
            "stroke_width": 2
        }
      }
      ~~~
 
      See [Static Site Project Customization](about_MarkdownToHTML.md#static-site-project-customization)
      for more details.
 
    `Build.json` project configuration file
    : A postprocessing stage needs to be inserted into to the conversion pipeline by
        adding a `-Split` switch to `Convert-MarkdownToHTMLFragment` and then piping
        its output to `Convert-SvgbobToSvg` like so:
 
        ~~~ PowerShell
        # Conversion pipeline
        $SCRIPT:markdown = Join-Path $projectDir $config.markdown_dir
        Find-MarkdownFiles $markdown -Exclude $config.Exclude `
        | Convert-MarkdownToHTMLFragment -IncludeExtension $config.markdown_extensions -Split `
        | Convert-SvgbobToSvg -SiteDirectory $staticSite -Options $SCRIPT:config.svgbob `
        | Publish-StaticHTMLSite -Template (Join-Path $projectDir $config.HTML_Template) `
                                 -ContentMap $contentMap `
                                 -MediaDirectory $markdown `
                                 -SiteDirectory $staticSite
        ~~~
 
## 2.4.0 {#2.4.0}
 
* Navigation bar improvements (Static HTML site projects):
 
  * scrollbar added to long navbars.
  * `md-styles.css` overhauled for static site template to make navbar usable
    for overflowing navitems
  * HTML fragments with resource links supported in navitem names.
    Example from a `Build.json` which displays a navigatable image:
    ~~~Json
    "site_navigation": [
        { "<img width='90%' src='site_logo.png'/>": "README.md" },
        { "Home": "README.md" },
        { "---": "" }
    ]
    ~~~
  * New commands implemented to remove code duplication and make the `Build.ps1`
    file more consistent.
    Upgrade of the `Build.ps1` file of existing projects is optional. All changes
    are backeard compatible. If you want to upgrade anyways change the content
    map section of`Build.ps1` file like so:
    ~~~ PowerShell
    $SCRIPT:contentMap = @{
        # Add additional mappings here...
        '{{footer}}' = $config.Footer # Footer text from configuration
        '{{nav}}' = {
            param($fragment) # the html fragment created from a markdown file
            $navcfg = $config.navigation_bar # navigation bar configuration
            # Create the navigation items configured in 'Build.json'
            New-SiteNavigation -NavitemSpecs $config.site_navigation `
                               -RelativePath $fragment.RelativePath `
                               -NavTemplate $navcfg.templates
            # Create navigation items to headings on the local page.
            # This requires the `autoidentifiers` extension to be enabled.
            New-PageHeadingNavigation -HTMLfragment $fragment.HTMLFragment `
                                      -NavTemplate $navcfg.templates `
                                      -HeadingLevels $navcfg.capture_page_headings
        }
    }
    ~~~
 
* Module Documentation
  * Code and conceptial documentation improved
  * Documentation generated with this module and published to
    [GitHub Pages](https://wethat.github.io/MarkdownToHtml)
 
## 2.3.1 {#2.3.1}
 
* Navigation bar improvements (Static HTML site projects):
    * default navigation menu changed to a static vertical sidebar.
    * navigation items pop out dynamically on mouse hover.
    * auto-added navigation items for page headings indented according to heading
    level.
    * navbar formatting made more consistent.
    * navbar small screen support
 
## 2.3.0
 
* Page navigation bar made customizable. To take advantage of this feature
    in existing projects following files need to be updated:
    * `Build.ps1`: A `-NavTemplate` parameter needs to be added to the invokation of `ConvertTo-NavigationItem`.
    A `-NavTemplate` and a `-HeadingLevels` parameter needs to be added to
    the invokation of`ConvertTo-PageHeadingNavigation`.
    For example:
 
    ~~~ PowerShell
    # Set-up the content mapping rules for replacing the templace placeholders
    $SCRIPT:contentMap = @{
        # Add additional mappings here...
        '{{footer}}' = $config.Footer # Footer text from configuration
        '{{nav}}' = {
            param($fragment) # the html fragment created from a markdown file
            $navcfg = $config.navigation_bar # navigation bar configuration
            # Create the navigation items configured in 'Build.json'
            $config.site_navigation | ConvertTo-NavigationItem -RelativePath $fragment.RelativePath `
                                                                -NavTemplate $navcfg.templates
            # Create navigation items to headings on the local page.
            # This requires the `autoidentifiers` extension to be enabled.
            ConvertTo-PageHeadingNavigation $fragment.HTMLFragment -NavTemplate $navcfg.templates `
                                                                    -HeadingLevels $navcfg.capture_page_headings
        }
    }
    ~~~
 
    * `Build.json`: a navigation bar configuration section needs to be added:
 
    ~~~ json
    ...
    "navigation_bar": {
        "capture_page_headings": "123456",
        "templates": {
            "navitem": "<button class='navitem'><a href='{{navurl}}'>{{navtext}}</a></button>",
            "navlabel": "<div class='navitem'>{{navtext}}</div>",
            "navseparator": "<hr class='navitem'/>",
            "navheading": "<span class='navitem{{level}}'>{{navtext}}</span>"
        }
    },
    ...
    ~~~
 
* Component updates:
    * `Markdig` update to version 0.24
    * `KateX` update to version 0.13.11
    * `Mermaid` update to version 8.10.1
 
## 2.2.2
 
* added referenced .net assemblies which may not be guaranteed to be present
 
## 2.2.1
 
* Katex Updated to version 0.12.0
* Mermaid updated to version 8.8.2
* Markdig updated to version 0.22.0
* Code signed With long term self signed certificate
 
## 2.2.0
 
* Fixed issue with `ConvertTo-NavigationItem` not understanding hyperlinks
    with `#` fragments.
* Added `autoidentifiers` to the `Build.json` in the project template so that
    headings get `id` attributes.
* Added navigation items for headings on the current page to the navbar.
 
## 2.1.1
 
* Bugfix: Site assets not copied in build script
 
## 2.1.0
 
#### Enhancements
 
* `Publish-StaticHtmlSite` now accepts definition of custom placeholder
    mappins for expansion of `md-template.html`.
* Default template placeholder delimiters changed to `{{` and `}}`.
* Static HTML site projects added: See `New-StaticHTMLSiteProject`.
* Documentation made more `Get-Help` friendly.
* _Mermaid_ assets updated to version 8.5.0
 
#### Maintenance
 
* Minimum required Powershell version now 5.1 (Desktop)
'@

    } # End of PSData hashtable
} # End of PrivateData hashtable

# HelpInfo URI of this module
HelpInfoURI = 'https://github.com/WetHat/MarkdownToHtml/blob/master/Documentation/MarkdownToHTML.md'

# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
# DefaultCommandPrefix = ''
}