ghc-syntax-highlighter-0.0.1.0: Correct syntax highlighter for Haskell using GHC itself

Copyright© 2018 Mark Karpov
LicenseBSD 3 clause
MaintainerMark Karpov <markkarpov92@gmail.com>
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

GHC.SyntaxHighlighter

Description

The module allows you to decompose a Text stream containing Haskell source code into a stream of Text chunks tagged with Token.

This library uses GHC's lexer, so the result is guaranteed to be 100% correct, as if it was parsed by GHC itself.

Synopsis

Documentation

data Token Source #

Token types that are used as tags to mark spans of source code.

Constructors

KeywordTok

Keyword

PragmaTok

Pragmas

SymbolTok

Symbols (punctuation that is not an operator)

VariableTok

Variable name (term level)

ConstructorTok

Data/type constructor

OperatorTok

Operator

CharTok

Character

StringTok

String

IntegerTok

Integer

RationalTok

Rational number

CommentTok

Comment (including Haddocks)

SpaceTok

Space filling

OtherTok

Something else?

Instances
Bounded Token Source # 
Instance details

Defined in GHC.SyntaxHighlighter

Enum Token Source # 
Instance details

Defined in GHC.SyntaxHighlighter

Eq Token Source # 
Instance details

Defined in GHC.SyntaxHighlighter

Methods

(==) :: Token -> Token -> Bool #

(/=) :: Token -> Token -> Bool #

Ord Token Source # 
Instance details

Defined in GHC.SyntaxHighlighter

Methods

compare :: Token -> Token -> Ordering #

(<) :: Token -> Token -> Bool #

(<=) :: Token -> Token -> Bool #

(>) :: Token -> Token -> Bool #

(>=) :: Token -> Token -> Bool #

max :: Token -> Token -> Token #

min :: Token -> Token -> Token #

Show Token Source # 
Instance details

Defined in GHC.SyntaxHighlighter

Methods

showsPrec :: Int -> Token -> ShowS #

show :: Token -> String #

showList :: [Token] -> ShowS #

tokenizeHaskell :: Text -> Maybe [(Token, Text)] Source #

Tokenize Haskell source code. If the code cannot be parsed, return Nothing. Otherwise return the original input tagged by Tokens.

The parser does not require the input source code to form a valid Haskell program, so as long as the lexer can decompose your input (most of the time), it'll return something in Just.