config.go (2411B)
1 // Copyright 2019 The Hugo Authors. All rights reserved. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // http://www.apache.org/licenses/LICENSE-2.0 7 // 8 // Unless required by applicable law or agreed to in writing, software 9 // distributed under the License is distributed on an "AS IS" BASIS, 10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 // Package goldmark_config holds Goldmark related configuration. 15 package goldmark_config 16 17 const ( 18 AutoHeadingIDTypeGitHub = "github" 19 AutoHeadingIDTypeGitHubAscii = "github-ascii" 20 AutoHeadingIDTypeBlackfriday = "blackfriday" 21 ) 22 23 // DefaultConfig holds the default Goldmark configuration. 24 var Default = Config{ 25 Extensions: Extensions{ 26 Typographer: true, 27 Footnote: true, 28 DefinitionList: true, 29 Table: true, 30 Strikethrough: true, 31 Linkify: true, 32 LinkifyProtocol: "https", 33 TaskList: true, 34 }, 35 Renderer: Renderer{ 36 Unsafe: false, 37 }, 38 Parser: Parser{ 39 AutoHeadingID: true, 40 AutoHeadingIDType: AutoHeadingIDTypeGitHub, 41 Attribute: ParserAttribute{ 42 Title: true, 43 Block: false, 44 }, 45 }, 46 } 47 48 // Config configures Goldmark. 49 type Config struct { 50 Renderer Renderer 51 Parser Parser 52 Extensions Extensions 53 } 54 55 type Extensions struct { 56 Typographer bool 57 Footnote bool 58 DefinitionList bool 59 60 // GitHub flavored markdown 61 Table bool 62 Strikethrough bool 63 Linkify bool 64 LinkifyProtocol string 65 TaskList bool 66 } 67 68 type Renderer struct { 69 // Whether softline breaks should be rendered as '<br>' 70 HardWraps bool 71 72 // XHTML instead of HTML5. 73 XHTML bool 74 75 // Allow raw HTML etc. 76 Unsafe bool 77 } 78 79 type Parser struct { 80 // Enables custom heading ids and 81 // auto generated heading ids. 82 AutoHeadingID bool 83 84 // The strategy to use when generating heading IDs. 85 // Available options are "github", "github-ascii". 86 // Default is "github", which will create GitHub-compatible anchor names. 87 AutoHeadingIDType string 88 89 // Enables custom attributes. 90 Attribute ParserAttribute 91 } 92 93 type ParserAttribute struct { 94 // Enables custom attributes for titles. 95 Title bool 96 // Enables custom attributeds for blocks. 97 Block bool 98 }