__init__.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. """
  2. pygments.styles
  3. ~~~~~~~~~~~~~~~
  4. Contains built-in styles.
  5. :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
  6. :license: BSD, see LICENSE for details.
  7. """
  8. from pygments.plugin import find_plugin_styles
  9. from pygments.util import ClassNotFound
  10. #: A dictionary of built-in styles, mapping style names to
  11. #: ``'submodule::classname'`` strings.
  12. STYLE_MAP = {
  13. 'abap': 'abap::AbapStyle',
  14. 'algol_nu': 'algol_nu::Algol_NuStyle',
  15. 'algol': 'algol::AlgolStyle',
  16. 'arduino': 'arduino::ArduinoStyle',
  17. 'autumn': 'autumn::AutumnStyle',
  18. 'borland': 'borland::BorlandStyle',
  19. 'bw': 'bw::BlackWhiteStyle',
  20. 'colorful': 'colorful::ColorfulStyle',
  21. 'default': 'default::DefaultStyle',
  22. 'dracula': 'dracula::DraculaStyle',
  23. 'emacs': 'emacs::EmacsStyle',
  24. 'friendly_grayscale': 'friendly_grayscale::FriendlyGrayscaleStyle',
  25. 'friendly': 'friendly::FriendlyStyle',
  26. 'fruity': 'fruity::FruityStyle',
  27. 'github-dark': 'gh_dark::GhDarkStyle',
  28. 'gruvbox-dark': 'gruvbox::GruvboxDarkStyle',
  29. 'gruvbox-light': 'gruvbox::GruvboxLightStyle',
  30. 'igor': 'igor::IgorStyle',
  31. 'inkpot': 'inkpot::InkPotStyle',
  32. 'lightbulb': 'lightbulb::LightbulbStyle',
  33. 'lilypond': 'lilypond::LilyPondStyle',
  34. 'lovelace': 'lovelace::LovelaceStyle',
  35. 'manni': 'manni::ManniStyle',
  36. 'material': 'material::MaterialStyle',
  37. 'monokai': 'monokai::MonokaiStyle',
  38. 'murphy': 'murphy::MurphyStyle',
  39. 'native': 'native::NativeStyle',
  40. 'nord-darker': 'nord::NordDarkerStyle',
  41. 'nord': 'nord::NordStyle',
  42. 'one-dark': 'onedark::OneDarkStyle',
  43. 'paraiso-dark': 'paraiso_dark::ParaisoDarkStyle',
  44. 'paraiso-light': 'paraiso_light::ParaisoLightStyle',
  45. 'pastie': 'pastie::PastieStyle',
  46. 'perldoc': 'perldoc::PerldocStyle',
  47. 'rainbow_dash': 'rainbow_dash::RainbowDashStyle',
  48. 'rrt': 'rrt::RrtStyle',
  49. 'sas': 'sas::SasStyle',
  50. 'solarized-dark': 'solarized::SolarizedDarkStyle',
  51. 'solarized-light': 'solarized::SolarizedLightStyle',
  52. 'staroffice': 'staroffice::StarofficeStyle',
  53. 'stata-dark': 'stata_dark::StataDarkStyle',
  54. 'stata-light': 'stata_light::StataLightStyle',
  55. 'stata': 'stata_light::StataLightStyle',
  56. 'tango': 'tango::TangoStyle',
  57. 'trac': 'trac::TracStyle',
  58. 'vim': 'vim::VimStyle',
  59. 'vs': 'vs::VisualStudioStyle',
  60. 'xcode': 'xcode::XcodeStyle',
  61. 'zenburn': 'zenburn::ZenburnStyle'
  62. }
  63. def get_style_by_name(name):
  64. """
  65. Return a style class by its short name. The names of the builtin styles
  66. are listed in :data:`pygments.styles.STYLE_MAP`.
  67. Will raise :exc:`pygments.util.ClassNotFound` if no style of that name is
  68. found.
  69. """
  70. if name in STYLE_MAP:
  71. mod, cls = STYLE_MAP[name].split('::')
  72. builtin = "yes"
  73. else:
  74. for found_name, style in find_plugin_styles():
  75. if name == found_name:
  76. return style
  77. # perhaps it got dropped into our styles package
  78. builtin = ""
  79. mod = name
  80. cls = name.title() + "Style"
  81. try:
  82. mod = __import__('pygments.styles.' + mod, None, None, [cls])
  83. except ImportError:
  84. raise ClassNotFound("Could not find style module %r" % mod +
  85. (builtin and ", though it should be builtin") + ".")
  86. try:
  87. return getattr(mod, cls)
  88. except AttributeError:
  89. raise ClassNotFound("Could not find style class %r in style module." % cls)
  90. def get_all_styles():
  91. """Return a generator for all styles by name, both builtin and plugin."""
  92. yield from STYLE_MAP
  93. for name, _ in find_plugin_styles():
  94. yield name