okami.mom/glamour
git clone https://git.nkp.pet/okami.mom/glamour
c293649
main
1// Package styles provides default styles for the glamour package. 2package styles 3 4//go:generate go run ../internal/generate-style-json 5 6import ( 7"charm.land/glamour/v2/ansi" 8) 9 10const ( 11defaultListIndent = 2 12defaultListLevelIndent = 4 13defaultMargin = 2 14 15defaultHeadingPrefixH2 = "## " 16defaultHeadingPrefixH3 = "### " 17defaultHeadingPrefixH4 = "#### " 18defaultHeadingPrefixH5 = "##### " 19defaultHeadingPrefixH6 = "###### " 20defaultTaskTickedPrefix = "[ā] " 21defaultTaskUntickedPrefix = "[ ] " 22defaultImageFormat = "Image: {{.text}} ā" 23defaultHorizontalRule = "\n--------\n" 24defaultArrowBlockPrefix = "\nš ¶ " 25) 26 27// Default styles. 28const ( 29AsciiStyle = "ascii" //nolint: revive 30DarkStyle = "dark" 31DraculaStyle = "dracula" 32TokyoNightStyle = "tokyo-night" 33LightStyle = "light" 34NoTTYStyle = "notty" 35PinkStyle = "pink" 36) 37 38var ( 39// ASCIIStyleConfig uses only ASCII characters. 40ASCIIStyleConfig = ansi.StyleConfig { 41Document : ansi.StyleBlock { 42StylePrimitive : ansi.StylePrimitive { 43BlockPrefix :"\n" , 44BlockSuffix :"\n" , 45 }, 46Margin :uintPtr (defaultMargin ), 47 }, 48BlockQuote : ansi.StyleBlock { 49StylePrimitive : ansi.StylePrimitive {}, 50Indent :uintPtr (1 ), 51IndentToken :stringPtr ("| " ), 52 }, 53Paragraph : ansi.StyleBlock { 54StylePrimitive : ansi.StylePrimitive {}, 55 }, 56List : ansi.StyleList { 57StyleBlock : ansi.StyleBlock { 58StylePrimitive : ansi.StylePrimitive {}, 59 }, 60LevelIndent :defaultListLevelIndent , 61 }, 62Heading : ansi.StyleBlock { 63StylePrimitive : ansi.StylePrimitive { 64BlockSuffix :"\n" , 65 }, 66 }, 67H1 : ansi.StyleBlock { 68StylePrimitive : ansi.StylePrimitive { 69Prefix :"# " , 70 }, 71 }, 72H2 : ansi.StyleBlock { 73StylePrimitive : ansi.StylePrimitive { 74Prefix :defaultHeadingPrefixH2 , 75 }, 76 }, 77H3 : ansi.StyleBlock { 78StylePrimitive : ansi.StylePrimitive { 79Prefix :defaultHeadingPrefixH3 , 80 }, 81 }, 82H4 : ansi.StyleBlock { 83StylePrimitive : ansi.StylePrimitive { 84Prefix :defaultHeadingPrefixH4 , 85 }, 86 }, 87H5 : ansi.StyleBlock { 88StylePrimitive : ansi.StylePrimitive { 89Prefix :defaultHeadingPrefixH5 , 90 }, 91 }, 92H6 : ansi.StyleBlock { 93StylePrimitive : ansi.StylePrimitive { 94Prefix :defaultHeadingPrefixH6 , 95 }, 96 }, 97Strikethrough : ansi.StylePrimitive { 98BlockPrefix :"~~" , 99BlockSuffix :"~~" , 100 }, 101Emph : ansi.StylePrimitive { 102BlockPrefix :"*" , 103BlockSuffix :"*" , 104 }, 105Strong : ansi.StylePrimitive { 106BlockPrefix :"**" , 107BlockSuffix :"**" , 108 }, 109HorizontalRule : ansi.StylePrimitive { 110Format :defaultHorizontalRule , 111 }, 112Item : ansi.StylePrimitive { 113BlockPrefix :"⢠" , 114 }, 115Enumeration : ansi.StylePrimitive { 116BlockPrefix :". " , 117 }, 118Task : ansi.StyleTask { 119Ticked :"[x] " , 120Unticked :defaultTaskUntickedPrefix , 121 }, 122ImageText : ansi.StylePrimitive { 123Format :defaultImageFormat , 124 }, 125Code : ansi.StyleBlock { 126StylePrimitive : ansi.StylePrimitive { 127BlockPrefix :"`" , 128BlockSuffix :"`" , 129 }, 130 }, 131CodeBlock : ansi.StyleCodeBlock { 132StyleBlock : ansi.StyleBlock { 133Margin :uintPtr (defaultMargin ), 134 }, 135 }, 136Table : ansi.StyleTable { 137CenterSeparator :stringPtr ("|" ), 138ColumnSeparator :stringPtr ("|" ), 139RowSeparator :stringPtr ("-" ), 140 }, 141DefinitionDescription : ansi.StylePrimitive { 142BlockPrefix :"\n* " , 143 }, 144 } 145 146// DarkStyleConfig is the default dark style. 147DarkStyleConfig = ansi.StyleConfig { 148Document : ansi.StyleBlock { 149StylePrimitive : ansi.StylePrimitive { 150BlockPrefix :"\n" , 151BlockSuffix :"\n" , 152Color :stringPtr ("252" ), 153 }, 154Margin :uintPtr (defaultMargin ), 155 }, 156BlockQuote : ansi.StyleBlock { 157StylePrimitive : ansi.StylePrimitive {}, 158Indent :uintPtr (1 ), 159IndentToken :stringPtr ("ā " ), 160 }, 161List : ansi.StyleList { 162LevelIndent :defaultListIndent , 163 }, 164Heading : ansi.StyleBlock { 165StylePrimitive : ansi.StylePrimitive { 166BlockSuffix :"\n" , 167Color :stringPtr ("39" ), 168Bold :boolPtr (true ), 169 }, 170 }, 171H1 : ansi.StyleBlock { 172StylePrimitive : ansi.StylePrimitive { 173Prefix :" " , 174Suffix :" " , 175Color :stringPtr ("228" ), 176BackgroundColor :stringPtr ("63" ), 177Bold :boolPtr (true ), 178 }, 179 }, 180H2 : ansi.StyleBlock { 181StylePrimitive : ansi.StylePrimitive { 182Prefix :defaultHeadingPrefixH2 , 183 }, 184 }, 185H3 : ansi.StyleBlock { 186StylePrimitive : ansi.StylePrimitive { 187Prefix :defaultHeadingPrefixH3 , 188 }, 189 }, 190H4 : ansi.StyleBlock { 191StylePrimitive : ansi.StylePrimitive { 192Prefix :defaultHeadingPrefixH4 , 193 }, 194 }, 195H5 : ansi.StyleBlock { 196StylePrimitive : ansi.StylePrimitive { 197Prefix :defaultHeadingPrefixH5 , 198 }, 199 }, 200H6 : ansi.StyleBlock { 201StylePrimitive : ansi.StylePrimitive { 202Prefix :defaultHeadingPrefixH6 , 203Color :stringPtr ("35" ), 204Bold :boolPtr (false ), 205 }, 206 }, 207Strikethrough : ansi.StylePrimitive { 208CrossedOut :boolPtr (true ), 209 }, 210Emph : ansi.StylePrimitive { 211Italic :boolPtr (true ), 212 }, 213Strong : ansi.StylePrimitive { 214Bold :boolPtr (true ), 215 }, 216HorizontalRule : ansi.StylePrimitive { 217Color :stringPtr ("240" ), 218Format :defaultHorizontalRule , 219 }, 220Item : ansi.StylePrimitive { 221BlockPrefix :"⢠" , 222 }, 223Enumeration : ansi.StylePrimitive { 224BlockPrefix :". " , 225 }, 226Task : ansi.StyleTask { 227StylePrimitive : ansi.StylePrimitive {}, 228Ticked :defaultTaskTickedPrefix , 229Unticked :defaultTaskUntickedPrefix , 230 }, 231Link : ansi.StylePrimitive { 232Color :stringPtr ("30" ), 233Underline :boolPtr (true ), 234 }, 235LinkText : ansi.StylePrimitive { 236Color :stringPtr ("35" ), 237Bold :boolPtr (true ), 238 }, 239Image : ansi.StylePrimitive { 240Color :stringPtr ("212" ), 241Underline :boolPtr (true ), 242 }, 243ImageText : ansi.StylePrimitive { 244Color :stringPtr ("243" ), 245Format :defaultImageFormat , 246 }, 247Code : ansi.StyleBlock { 248StylePrimitive : ansi.StylePrimitive { 249Prefix :"\u00a0" ,// Use non-breaking space to prevent hard breaks 250Suffix :"\u00a0" ,// Use non-breaking space to prevent hard breaks 251Color :stringPtr ("203" ), 252BackgroundColor :stringPtr ("236" ), 253 }, 254 }, 255CodeBlock : ansi.StyleCodeBlock { 256StyleBlock : ansi.StyleBlock { 257StylePrimitive : ansi.StylePrimitive { 258Color :stringPtr ("244" ), 259 }, 260Margin :uintPtr (defaultMargin ), 261 }, 262Chroma :& ansi.Chroma { 263Text : ansi.StylePrimitive { 264Color :stringPtr ("#C4C4C4" ), 265 }, 266Error : ansi.StylePrimitive { 267Color :stringPtr ("#F1F1F1" ), 268BackgroundColor :stringPtr ("#F05B5B" ), 269 }, 270Comment : ansi.StylePrimitive { 271Color :stringPtr ("#676767" ), 272 }, 273CommentPreproc : ansi.StylePrimitive { 274Color :stringPtr ("#FF875F" ), 275 }, 276Keyword : ansi.StylePrimitive { 277Color :stringPtr ("#00AAFF" ), 278 }, 279KeywordReserved : ansi.StylePrimitive { 280Color :stringPtr ("#FF5FD2" ), 281 }, 282KeywordNamespace : ansi.StylePrimitive { 283Color :stringPtr ("#FF5F87" ), 284 }, 285KeywordType : ansi.StylePrimitive { 286Color :stringPtr ("#6E6ED8" ), 287 }, 288Operator : ansi.StylePrimitive { 289Color :stringPtr ("#EF8080" ), 290 }, 291Punctuation : ansi.StylePrimitive { 292Color :stringPtr ("#E8E8A8" ), 293 }, 294Name : ansi.StylePrimitive { 295Color :stringPtr ("#C4C4C4" ), 296 }, 297NameBuiltin : ansi.StylePrimitive { 298Color :stringPtr ("#FF8EC7" ), 299 }, 300NameTag : ansi.StylePrimitive { 301Color :stringPtr ("#B083EA" ), 302 }, 303NameAttribute : ansi.StylePrimitive { 304Color :stringPtr ("#7A7AE6" ), 305 }, 306NameClass : ansi.StylePrimitive { 307Color :stringPtr ("#F1F1F1" ), 308Underline :boolPtr (true ), 309Bold :boolPtr (true ), 310 }, 311NameDecorator : ansi.StylePrimitive { 312Color :stringPtr ("#FFFF87" ), 313 }, 314NameFunction : ansi.StylePrimitive { 315Color :stringPtr ("#00D787" ), 316 }, 317LiteralNumber : ansi.StylePrimitive { 318Color :stringPtr ("#6EEFC0" ), 319 }, 320LiteralString : ansi.StylePrimitive { 321Color :stringPtr ("#C69669" ), 322 }, 323LiteralStringEscape : ansi.StylePrimitive { 324Color :stringPtr ("#AFFFD7" ), 325 }, 326GenericDeleted : ansi.StylePrimitive { 327Color :stringPtr ("#FD5B5B" ), 328 }, 329GenericEmph : ansi.StylePrimitive { 330Italic :boolPtr (true ), 331 }, 332GenericInserted : ansi.StylePrimitive { 333Color :stringPtr ("#00D787" ), 334 }, 335GenericStrong : ansi.StylePrimitive { 336Bold :boolPtr (true ), 337 }, 338GenericSubheading : ansi.StylePrimitive { 339Color :stringPtr ("#777777" ), 340 }, 341Background : ansi.StylePrimitive { 342BackgroundColor :stringPtr ("#373737" ), 343 }, 344 }, 345 }, 346Table : ansi.StyleTable { 347StyleBlock : ansi.StyleBlock { 348StylePrimitive : ansi.StylePrimitive {}, 349 }, 350 }, 351DefinitionDescription : ansi.StylePrimitive { 352BlockPrefix :defaultArrowBlockPrefix , 353 }, 354 } 355 356// LightStyleConfig is the default light style. 357LightStyleConfig = ansi.StyleConfig { 358Document : ansi.StyleBlock { 359StylePrimitive : ansi.StylePrimitive { 360BlockPrefix :"\n" , 361BlockSuffix :"\n" , 362Color :stringPtr ("234" ), 363 }, 364Margin :uintPtr (defaultMargin ), 365 }, 366BlockQuote : ansi.StyleBlock { 367StylePrimitive : ansi.StylePrimitive {}, 368Indent :uintPtr (1 ), 369IndentToken :stringPtr ("ā " ), 370 }, 371List : ansi.StyleList { 372LevelIndent :defaultListIndent , 373 }, 374Heading : ansi.StyleBlock { 375StylePrimitive : ansi.StylePrimitive { 376BlockSuffix :"\n" , 377Color :stringPtr ("27" ), 378Bold :boolPtr (true ), 379 }, 380 }, 381H1 : ansi.StyleBlock { 382StylePrimitive : ansi.StylePrimitive { 383Prefix :" " , 384Suffix :" " , 385Color :stringPtr ("228" ), 386BackgroundColor :stringPtr ("63" ), 387Bold :boolPtr (true ), 388 }, 389 }, 390H2 : ansi.StyleBlock { 391StylePrimitive : ansi.StylePrimitive { 392Prefix :defaultHeadingPrefixH2 , 393 }, 394 }, 395H3 : ansi.StyleBlock { 396StylePrimitive : ansi.StylePrimitive { 397Prefix :defaultHeadingPrefixH3 , 398 }, 399 }, 400H4 : ansi.StyleBlock { 401StylePrimitive : ansi.StylePrimitive { 402Prefix :defaultHeadingPrefixH4 , 403 }, 404 }, 405H5 : ansi.StyleBlock { 406StylePrimitive : ansi.StylePrimitive { 407Prefix :defaultHeadingPrefixH5 , 408 }, 409 }, 410H6 : ansi.StyleBlock { 411StylePrimitive : ansi.StylePrimitive { 412Prefix :defaultHeadingPrefixH6 , 413Bold :boolPtr (false ), 414 }, 415 }, 416Strikethrough : ansi.StylePrimitive { 417CrossedOut :boolPtr (true ), 418 }, 419Emph : ansi.StylePrimitive { 420Italic :boolPtr (true ), 421 }, 422Strong : ansi.StylePrimitive { 423Bold :boolPtr (true ), 424 }, 425HorizontalRule : ansi.StylePrimitive { 426Color :stringPtr ("249" ), 427Format :defaultHorizontalRule , 428 }, 429Item : ansi.StylePrimitive { 430BlockPrefix :"⢠" , 431 }, 432Enumeration : ansi.StylePrimitive { 433BlockPrefix :". " , 434 }, 435Task : ansi.StyleTask { 436StylePrimitive : ansi.StylePrimitive {}, 437Ticked :defaultTaskTickedPrefix , 438Unticked :defaultTaskUntickedPrefix , 439 }, 440Link : ansi.StylePrimitive { 441Color :stringPtr ("36" ), 442Underline :boolPtr (true ), 443 }, 444LinkText : ansi.StylePrimitive { 445Color :stringPtr ("29" ), 446Bold :boolPtr (true ), 447 }, 448Image : ansi.StylePrimitive { 449Color :stringPtr ("205" ), 450Underline :boolPtr (true ), 451 }, 452ImageText : ansi.StylePrimitive { 453Color :stringPtr ("243" ), 454Format :defaultImageFormat , 455 }, 456Code : ansi.StyleBlock { 457StylePrimitive : ansi.StylePrimitive { 458Prefix :"\u00a0" ,// Use non-breaking space to prevent hard breaks 459Suffix :"\u00a0" ,// Use non-breaking space to prevent hard breaks 460Color :stringPtr ("203" ), 461BackgroundColor :stringPtr ("254" ), 462 }, 463 }, 464CodeBlock : ansi.StyleCodeBlock { 465StyleBlock : ansi.StyleBlock { 466StylePrimitive : ansi.StylePrimitive { 467Color :stringPtr ("242" ), 468 }, 469Margin :uintPtr (defaultMargin ), 470 }, 471Chroma :& ansi.Chroma { 472Text : ansi.StylePrimitive { 473Color :stringPtr ("#2A2A2A" ), 474 }, 475Error : ansi.StylePrimitive { 476Color :stringPtr ("#F1F1F1" ), 477BackgroundColor :stringPtr ("#FF5555" ), 478 }, 479Comment : ansi.StylePrimitive { 480Color :stringPtr ("#8D8D8D" ), 481 }, 482CommentPreproc : ansi.StylePrimitive { 483Color :stringPtr ("#FF875F" ), 484 }, 485Keyword : ansi.StylePrimitive { 486Color :stringPtr ("#279EFC" ), 487 }, 488KeywordReserved : ansi.StylePrimitive { 489Color :stringPtr ("#FF5FD2" ), 490 }, 491KeywordNamespace : ansi.StylePrimitive { 492Color :stringPtr ("#FB406F" ), 493 }, 494KeywordType : ansi.StylePrimitive { 495Color :stringPtr ("#7049C2" ), 496 }, 497Operator : ansi.StylePrimitive { 498Color :stringPtr ("#FF2626" ), 499 }, 500Punctuation : ansi.StylePrimitive { 501Color :stringPtr ("#FA7878" ), 502 }, 503NameBuiltin : ansi.StylePrimitive { 504Color :stringPtr ("#0A1BB1" ), 505 }, 506NameTag : ansi.StylePrimitive { 507Color :stringPtr ("#581290" ), 508 }, 509NameAttribute : ansi.StylePrimitive { 510Color :stringPtr ("#8362CB" ), 511 }, 512NameClass : ansi.StylePrimitive { 513Color :stringPtr ("#212121" ), 514Underline :boolPtr (true ), 515Bold :boolPtr (true ), 516 }, 517NameConstant : ansi.StylePrimitive { 518Color :stringPtr ("#581290" ), 519 }, 520NameDecorator : ansi.StylePrimitive { 521Color :stringPtr ("#A3A322" ), 522 }, 523NameFunction : ansi.StylePrimitive { 524Color :stringPtr ("#019F57" ), 525 }, 526LiteralNumber : ansi.StylePrimitive { 527Color :stringPtr ("#22CCAE" ), 528 }, 529LiteralString : ansi.StylePrimitive { 530Color :stringPtr ("#7E5B38" ), 531 }, 532LiteralStringEscape : ansi.StylePrimitive { 533Color :stringPtr ("#00AEAE" ), 534 }, 535GenericDeleted : ansi.StylePrimitive { 536Color :stringPtr ("#FD5B5B" ), 537 }, 538GenericEmph : ansi.StylePrimitive { 539Italic :boolPtr (true ), 540 }, 541GenericInserted : ansi.StylePrimitive { 542Color :stringPtr ("#00D787" ), 543 }, 544GenericStrong : ansi.StylePrimitive { 545Bold :boolPtr (true ), 546 }, 547GenericSubheading : ansi.StylePrimitive { 548Color :stringPtr ("#777777" ), 549 }, 550Background : ansi.StylePrimitive { 551BackgroundColor :stringPtr ("#373737" ), 552 }, 553 }, 554 }, 555Table : ansi.StyleTable { 556StyleBlock : ansi.StyleBlock { 557StylePrimitive : ansi.StylePrimitive {}, 558 }, 559 }, 560DefinitionDescription : ansi.StylePrimitive { 561BlockPrefix :defaultArrowBlockPrefix , 562 }, 563 } 564 565// PinkStyleConfig is the default pink style. 566PinkStyleConfig = ansi.StyleConfig { 567Document : ansi.StyleBlock { 568Margin :uintPtr (defaultMargin ), 569 }, 570BlockQuote : ansi.StyleBlock { 571Indent :uintPtr (1 ), 572IndentToken :stringPtr ("ā " ), 573 }, 574List : ansi.StyleList { 575LevelIndent :defaultListIndent , 576 }, 577Heading : ansi.StyleBlock { 578StylePrimitive : ansi.StylePrimitive { 579BlockSuffix :"\n" , 580Color :stringPtr ("212" ), 581Bold :boolPtr (true ), 582 }, 583 }, 584H1 : ansi.StyleBlock { 585StylePrimitive : ansi.StylePrimitive { 586BlockSuffix :"\n" , 587BlockPrefix :"\n" , 588Prefix :"" , 589 }, 590 }, 591H2 : ansi.StyleBlock { 592StylePrimitive : ansi.StylePrimitive { 593Prefix :"ā " , 594 }, 595 }, 596H3 : ansi.StyleBlock { 597StylePrimitive : ansi.StylePrimitive { 598Prefix :"ā " , 599 }, 600 }, 601H4 : ansi.StyleBlock { 602StylePrimitive : ansi.StylePrimitive { 603Prefix :"ā " , 604 }, 605 }, 606H5 : ansi.StyleBlock { 607StylePrimitive : ansi.StylePrimitive { 608Prefix :"ā " , 609 }, 610 }, 611H6 : ansi.StyleBlock { 612StylePrimitive : ansi.StylePrimitive { 613Prefix :"ā " , 614Bold :boolPtr (false ), 615 }, 616 }, 617Text : ansi.StylePrimitive {}, 618Strikethrough : ansi.StylePrimitive { 619CrossedOut :boolPtr (true ), 620 }, 621Emph : ansi.StylePrimitive { 622Italic :boolPtr (true ), 623 }, 624Strong : ansi.StylePrimitive { 625Bold :boolPtr (true ), 626 }, 627HorizontalRule : ansi.StylePrimitive { 628Color :stringPtr ("212" ), 629Format :"\nāāāāāā\n" , 630 }, 631Item : ansi.StylePrimitive { 632BlockPrefix :"⢠" , 633 }, 634Enumeration : ansi.StylePrimitive { 635BlockPrefix :". " , 636 }, 637Task : ansi.StyleTask { 638Ticked :defaultTaskTickedPrefix , 639Unticked :defaultTaskUntickedPrefix , 640 }, 641Link : ansi.StylePrimitive { 642Color :stringPtr ("99" ), 643Underline :boolPtr (true ), 644 }, 645LinkText : ansi.StylePrimitive { 646Bold :boolPtr (true ), 647 }, 648Image : ansi.StylePrimitive { 649Underline :boolPtr (true ), 650 }, 651ImageText : ansi.StylePrimitive { 652Format :"Image: {{.text}}" , 653 }, 654Code : ansi.StyleBlock { 655StylePrimitive : ansi.StylePrimitive { 656Color :stringPtr ("212" ), 657BackgroundColor :stringPtr ("236" ), 658Prefix :"\u00a0" ,// Use non-breaking space to prevent hard breaks 659Suffix :"\u00a0" ,// Use non-breaking space to prevent hard breaks 660 }, 661 }, 662Table : ansi.StyleTable {}, 663DefinitionList : ansi.StyleBlock {}, 664DefinitionTerm : ansi.StylePrimitive {}, 665DefinitionDescription : ansi.StylePrimitive { 666BlockPrefix :defaultArrowBlockPrefix , 667 }, 668HTMLBlock : ansi.StyleBlock {}, 669HTMLSpan : ansi.StyleBlock {}, 670 } 671 672// NoTTYStyleConfig is the default notty style. 673NoTTYStyleConfig = ASCIIStyleConfig 674 675// DefaultStyles are the default styles. 676DefaultStyles = map [string ]* ansi.StyleConfig { 677AsciiStyle :& ASCIIStyleConfig , 678DarkStyle :& DarkStyleConfig , 679LightStyle :& LightStyleConfig , 680NoTTYStyle :& NoTTYStyleConfig , 681PinkStyle :& PinkStyleConfig , 682 683// Popular themes 684DraculaStyle :& DraculaStyleConfig , 685TokyoNightStyle :& TokyoNightStyleConfig , 686 } 687) 688 689func boolPtr (b bool )* bool {return & b } 690func stringPtr (s string )* string {return & s } 691func uintPtr (u uint )* uint {return & u }