defmodule Paleta.Components.SyntaxHighlighter do
use Phoenix.Component
import Phoenix.HTML
attr(:code, :string, default: nil)
attr(:style, :atom, default: :default, values: [:default, :diff])
def syntax_highlight(assigns) do
~H"""
<%= raw(highlight(@code)) %>
"""
end
defp highlight(code) do
Makeup.highlight(code)
end
def syntax_highlight_css(), do: syntax_highlight_css(:default)
def syntax_highlight_css(:default) do
Makeup.Styles.HTML.StyleMap.default_style()
|> Makeup.stylesheet()
end
def syntax_highlight_css(:diff) do
Makeup.Styles.HTML.StyleMap.abap_style()
|> Makeup.stylesheet()
end
end