Current section
Files
Jump to
Current section
Files
lib/makeup.ex
defmodule Makeup do
alias Makeup.Formatters.HTML.HTMLFormatter
alias Makeup.Lexers.ElixirLexer
alias Makeup.Styles.HTML.StyleMap
alias Makeup.Styles.HTML.Style
alias Makeup.Pickers
require StyleMap
@doc """
Highlights the given string using the given lexer and formatter.
By default it highlight the Elixir language using HTML
"""
def highlight(source, options \\ []) do
lexer = case options[:lexer] do
nil -> ElixirLexer
module when is_atom(module) -> module
name -> Pickers.pick_lexer!(name)
end
formatter = case options[:formatter] do
nil -> HTMLFormatter
module when is_atom(module) -> module
name -> Pickers.pick_lexer!(name)
end
tokens = apply(lexer, :lex, [source])
apply(formatter, :format, [tokens])
end
def highlight_inner_html(source, options \\ []) do
lexer = case options[:lexer] do
nil -> ElixirLexer
module when is_atom(module) -> module
name -> Pickers.pick_lexer!(name)
end
tokens = apply(lexer, :lex, [source])
apply(HTMLFormatter, :format_inner, [tokens])
end
@doc """
Generates a CSS stylesheet for highlighted code for the given style.
The `css_class` arguments is the top level class for highlighted code.
For example, if the `css_class` is `"highlight"` (the default), the stylesheet
has the form:
```css
.highlight .someclass {...}
.highlight .anotherclass {...}
```
...
"""
def stylesheet(style \\ StyleMap.default_style(), css_class \\ "highlight") do
Style.stylesheet(style, css_class)
end
end