html_breadcrumb_insert

package module
v0.0.0-...-f73ea16 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 25, 2022 License: MIT Imports: 12 Imported by: 0

README

HTML Breadcrumbs Insert Tool

This tool inserts breadcrumbs into HTML files directly.

Install

This tool is implemented in Golang.

Install using go install
$ go install gitlab.com/tjkendev/html-breadcrumbs-insert/cmd/bcinsert@latest
Install from this source code
$ make install

Usage

Insert breadcrumbs in the target directory recursively

$ bcinsert -i <target-directory> -c <breadcrumb-config (YAML file)>

To remove breadcrumbs after insertion, use -r option.

$ bcinsert -i <target-directory> -c <breadcrumb-config (YAML file)> -r
Example
$ tree .
.
├── breadcrumb.yml
└── public
    ├── A1
    │   └── A2
    │       └── test.html
    ├── C1
    │   ├── C2
    │   │   └── test.html
    │   └── index.html
    ├── index.html
    └── sample.html

5 directories, 6 files

$ cat breadcrumb.yml
# "TargetSelector": a selector to append breadcrumbs in HTML files (In this example, breadcrumbs is inserted into the tag with "header" id attribute)
TargetSelector: "#header"
# "DefaultIndex": a default index page in parent directories
DefaultIndex: "index.html"
# "HTMLExtension": the file extension of HTML files
HTMLExtension: "html"
# "TagName": a tag name of breadcrumb's root element
TagName: "div"
# "BreadcrumbRootID": an id attribute's name contained in the breadcrumb's root element
BreadcrumbRootID: "breadcrumb"
# "BreadcrumbLinkClass": a class name contained in 'a' tags that is linked to the corresponding page in breadcrumbs
BreadcrumbLinkClass: "breadcrumb-link"
# "BreadcrumbNoLinkClass": a class name contained in 'span' tags that has no link in breadcrumbs
BreadcrumbNoLinkClass: "breadcrumb-text"
# "Separator": the breadcrumbs' hierarchy separator
Separator: '>'
# "BreadcrumbStrcut": directories information to insert breadcrumbs
BreadcrumbStruct:
  index: "home"
  A1:
    # "__index": hidden index name (no link in breadcrumbs)
    __index: "A"
    A2:
      test: "test1"
  sample: "sample"
  C1:
    index: "C"
    C2:
      test: "test2"

$ bcinsert -i ./public -c ./breadcrumb.yml

In ./A1/A2/test.html, for example, the following HTML text is inserted into the tag with header id attribute.

<div id="breadcrumb"><a href="../../index.html" class="breadcrumb-link">home</a> &gt; <span class="breadcrumb-text">A</span> &gt; <a href="./test.html" class="breadcrumb-link">test1</a></div></div>

and the breadcrumb is displayed as below. (home and test1 is linked to the corresponding page)

home > A > test1

Documentation

Index

Constants

View Source
const (
	// DefaultIndexPage is default index filename of parent directories.
	DefaultIndexPage = "index.html"

	// DefaultHomeName is default breadcrumb name of root directory.
	DefaultHomeName = "home"
	// DefaultIndexName is default breadcrumb name of index page.
	DefaultIndexName = "index"
	// DefaultHTMLExtension is default extension of HTML files.
	DefaultHTMLExtension = "html"

	// DefaultTargetSelector is default selector for specifying where you want to insert breadcrumbs in html.
	DefaultTargetSelector = "#header"
	// DefaultTagName is a default tag name of breadcrumb's root element in html.
	DefaultTagName = "div"
	// DefaultBreadcrumbID is default id attribute's value contained in breadcrumb's root element in html. (default: id="breadcrumb")
	DefaultBreadcrumbID = "breadcrumb"
	// DefaultBreadcrumbLinkClass is default class names of breadcrumb which is linked to some page.
	DefaultBreadcrumbLinkClass = "breadcrumb-link"
	// DefaultBreadcrumbNoLinkClass is default class names of breadcrumb which is not linked to any page.
	DefaultBreadcrumbNoLinkClass = "breadcrumb-text"
	// DefaultSeparator is default hierarchy separator of breadcrumbs. (default: ">")
	DefaultSeparator = "&gt;"
)

Variables

This section is empty.

Functions

func InsertBreadcrumbs

func InsertBreadcrumbs(config *BreadcrumbConfig, rootDirNode *DirNode) error

InsertBreadcrumbs inserts breadcrumbs into HTML files with specified config and directories.

Types

type BreadcrumbConfig struct {
	// BreadcrumbStruct is a tree structure which have infomation to insert breadcrumbs.
	BreadcrumbStruct BreadcrumbNode `yaml:"BreadcrumbStruct"`

	// OnlyRemove is an option. If this value is true, this tool only remove breadcrumbs already inserted.
	OnlyRemove bool `yaml:"-"`

	// DefaultIndex is a name of default index pages. (default "index.html")
	DefaultIndex string `yaml:"DefaultIndex"`

	// HTMLExtension is a file extension of HTML files.
	HTMLExtension string `yaml:"HTMLExtension"`

	// TagName is a tag name of breadcrumb's root element.
	TagName string `yaml:"TagName"`

	// BreadcrumbRootID is an id attribute's value contained in breadcrumb's root element.
	BreadcrumbRootID string `yaml:"BreadcrumbRootID"`

	// BreadcrumbLinkClass is class names contained in 'a' tags which is linked to a page in breadcrumbs.
	BreadcrumbLinkClass string `yaml:"BreadcrumbLinkClass"`

	// BreadcrumbNoLinkClass is class names contained in 'span' tags which is not linked to a page in breadcrumbs.
	BreadcrumbNoLinkClass string `yaml:"BreadcrumbNoLinkClass"`

	// Separator is a breadcrumb hierarchy separator.
	Separator string `yaml:"Separator"`

	// TargetSelector is a target selector for inserting breadcrumb.
	TargetSelector string `yaml:"TargetSelector"`
}

BreadcrumbConfig is configuration struct for this tool.

func LoadBreadcrumbConfig

func LoadBreadcrumbConfig(yamlFileName string) (*BreadcrumbConfig, error)

LoadBreadcrumbConfig loads a breadcrumb config from a specified YAML file.

type BreadcrumbNode struct {
	IndexName   string
	HiddenIndex bool
	NameMap     map[string]string
	DirMap      map[string]*BreadcrumbNode
}

BreadcrumbNode is node struct for representing breadcrumb info.

func (n *BreadcrumbNode) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML unmarshals a YAML Data to load a breadcrumb config.

type DirNode

type DirNode struct {
	PathName string
	NameMap  map[string]struct{}
	DirMap   map[string]*DirNode
}

DirNode is node struct for representing directory structure

func GetHTMLFiles

func GetHTMLFiles(directory, extension string) (*DirNode, error)

GetHTMLFiles gets all HTML files in a specified directory recursively

type EntireConfig

type EntireConfig struct {
	OnlyRemove            bool
	IndexPage             string
	Extension             string
	SelectorName          string
	BreadcrumbID          string
	BreadcrumbLinkClass   string
	BreadcrumbNoLinkClass string
	TagName               string
	Separator             string
}

EntireConfig is an injection config struct which is referred when injecting breadcrumbs

type PageInfo

type PageInfo struct {
	Level    int
	Name     string
	FileName string
	NoLink   bool
}

PageInfo is a page info of each page showed in breadcrumbs.

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL