Enhanced C#
Language of your choice: library documentation
|
A variant of Les3Printer that adds syntax highlighting in one of three ways: as console output, as HTML output, or as LesColorCode control codes. More...
A variant of Les3Printer that adds syntax highlighting in one of three ways: as console output, as HTML output, or as LesColorCode control codes.
Create an instance by invoking the constructor, then call PrintToConsole for console output, PrintToHtml for HTML output, or Les3Printer.Print(IEnumerable<ILNode>) for just control codes.
Properties | |
string[] | ColorCodesToCssClasses [get, set] |
The lookup table of strings for control codes (LesColorCode values) to HTML classes, used by PrintToHtml(IEnumerable<ILNode>, StringBuilder, bool). More... | |
Properties inherited from Loyc.Syntax.Les.Les3Printer | |
StringBuilder | SB [get, set] |
IMessageSink?? | MessageSink [get, set] |
Target for warning messages. More... | |
Les3PrinterOptions | Options [get] |
Public Member Functions | |
Les3PrettyPrinter (IMessageSink sink=null, ILNodePrinterOptions options=null) | |
Creates an instance of this class, which produces plain LES augmented with control codes. More... | |
Les3PrettyPrinter (StringBuilder target, IMessageSink sink, ILNodePrinterOptions options) | |
Creates an instance of this class, which produces plain LES augmented with control codes. More... | |
void | PrintToConsole (ILNode node, bool endWithNewline=true) |
void | PrintToConsole (IEnumerable< ILNode > nodes, bool endWithNewline=true) |
StringBuilder | PrintToHtml (IEnumerable< ILNode > nodes, StringBuilder output=null, bool addPreCode=true) |
StringBuilder | PrintToHtml (ILNode node, StringBuilder output=null, bool addPreCode=true) |
Public Member Functions inherited from Loyc.Syntax.Les.Les3Printer | |
void | SetOptions (ILNodePrinterOptions options) |
StringBuilder | Print (ILNode node, string suffix=null) |
override string | ToString () |
void | VisitId (ILNode node) |
void | PrintIdCore (UString name, bool startToken, bool forceQuote=false) |
void | VisitLiteral (ILNode node) |
void | VisitCall (ILNode node) |
Static Public Member Functions | |
static void | PrintToConsoleCore (StringBuilder input, bool endWithNewline=true) |
static string[] | GetDefaultCssClassTable () |
The lookup table of strings for control codes (LesColorCode values) to HTML classes. More... | |
static StringBuilder | PrintToHtml (IEnumerable< ILNode > nodes, StringBuilder output=null, bool addPreCode=true, IMessageSink sink=null, ILNodePrinterOptions options=null) |
Prints an LNode as LESv3 with HTML syntax highlighting elements. More... | |
static StringBuilder | PrintToHtmlCore (StringBuilder input, StringBuilder output=null, bool addPreCode=true, string newline="\n", string[] colorCodesToCssClasses=null) |
Converts a StringBuilder with LesColorCode control codes to HTML with Pygments CSS class codes. More... | |
Static Public Member Functions inherited from Loyc.Syntax.Les.Les3Printer | |
static bool | IsNormalIdentifier (UString name) |
static bool | IsComboOpPrefixChar (char c) |
static bool | CanPrintAsNumber (UString textValue, Symbol typeMarker) |
Protected Member Functions | |
override void | StartToken (LesColorCode kind) |
override LesColorCode | ColorCodeForId (UString name) |
Protected Member Functions inherited from Loyc.Syntax.Les.Les3Printer | |
void | Print (ILNode node, Precedence context, string suffix=null, NewlineContext nlContext=NewlineContext.AutoDetect) |
void | PrintCore (ILNode node, string suffix, bool avoidKwExprBraceAmbiguity=false) |
void | StartToken (LesColorCode kind, Chars charSet) |
void | StartToken (LesColorCode kind, Chars startSet, Chars endSet) |
void | WriteToken (char firstChar, LesColorCode kind, Chars tokenSet) |
void | WriteToken (string text, LesColorCode kind, Chars tokenSet) |
void | WriteToken (string text, LesColorCode kind, Chars startSet, Chars endSet) |
void | WriteOutsideToken (char space) |
void | Newline (bool avoidExtraNewline=false) |
void | Space (bool condition=true) |
Additional Inherited Members | |
Protected Types inherited from Loyc.Syntax.Les.Les3Printer | |
enum | Chars { Delimiter = 0, IdStart = 1, SingleQuote = 2, Id = IdStart | SingleQuote, Punc = 4, Dot = 16, NumberStart = IdStart | Dot, NumberEnd = Id | Dot, DoubleQuote = 32, BQId = 64, StringStart = DoubleQuote | Id | BQId, At = 128, Space = 256, SLComment = 512 } |
Based on these flags, StartToken() and WriteToken() ensure that two adjacent tokens aren't treated like a single token when reparsed, by printing a space between them if necessary. More... | |
enum | NewlineContext { NewlineUnsafe = 0, NewlineSafeAfter = 1, NewlineSafeBefore = 2, NewlineSensitive = 4, StatementLevel = NewlineSafeBefore | NewlineSafeAfter | NewlineSensitive, AutoDetect = 8 } |
Used to help keep track of where newline trivia (and single- line comments ending in a newline) are permitted, to avoid printing newline trivia where it would count as "end of expression". More... | |
Protected fields inherited from Loyc.Syntax.Les.Les3Printer | |
PrinterState | PS |
ILNode | _n |
Precedence | _context = Precedence.MinValue |
NewlineContext | _nlContext = NewlineContext.NewlineUnsafe |
bool | _inParensOrBracks = false |
Chars | _curSet = 0 |
|
inline |
Creates an instance of this class, which produces plain LES augmented with control codes.
Referenced by Loyc.Syntax.Les.Les3PrettyPrinter.PrintToHtml().
|
inline |
Creates an instance of this class, which produces plain LES augmented with control codes.
|
inlinestatic |
The lookup table of strings for control codes (LesColorCode values) to HTML classes.
For example, GetDefaultCssClassTable()[(int)LesColorCode.Number]
indicates the default CSS class to use for numbers.
If the entry for a given code is null, no span element is emitted, which shortens the output.
The default class names are shared with the Pygments syntax highlighting system. A list of the CSS classes available in Pygments is available at this link. Only a small subset of these classes are used in this table.
Here is some suitable CSS:
.highlight { background-color: #f8f8f8; color: #111; } .highlight .c { color: #5A5; } /* Comment */ .highlight .n { color: #111; } /* Name (omitted by default) */ .highlight .m { color: #909; } /* Number */ .highlight .s { color: #B44; } /* String */ .highlight .l { color: #B04; } /* Literal (other) */ .highlight .kc { color: #41F; } /* Keyword.Constant */ .highlight .o { color: #940; } /* Operator */ .highlight .p { color: #111; } /* Punctuation (omitted by default) */ .highlight .kp { color: #33A; } /* Keyword.Pseudo (@attribute) */ .highlight .nb { color: #007; } /* Name.Builtin (#specialId) */ .highlight .k { color: #11F; } /* Keyword (.dotId) */ .highlight .x { color: #D00; } /* Other */ .highlight .pi { color: #B50; } /* Parenthesis Inner (()) */
Note: LesTokenCode.Opener and LesTokenCode.Closer are handled specially. An opener and its matching closer (e.g. '(' and ')') are always given the same color, but nested parens/brackets are given alternating colors (CSS classes), with the entry for LesTokenCode.Opener used for outer parens and the entry for LesTokenCode.Closer used for inner parens. The default class name is "pi" for inner parentheses; no class name is used for outer parens. "pi" is not a standard name, so if you're using a standard Pygment stylesheet you should add an extra line, e.g.
.highlight .p { color: #111; } /* Punctuation (includes , ; { }) */ .highlight .pi { color: #B50; } /* Parenthesis Inner */
|
inlinestatic |
Prints an LNode as LESv3 with HTML syntax highlighting elements.
nodes | Syntax trees to print. |
output | Output StringBuilder for HTML code. |
addPreCode | Whether to wrap the output in "<pre class='highlight'><code>" tags. |
options | Options to control the style for code printing. |
References Loyc.Syntax.Les.Les3PrettyPrinter.Les3PrettyPrinter().
|
inlinestatic |
Converts a StringBuilder with LesColorCode control codes to HTML with Pygments CSS class codes.
input | Input containing LesColorCode control characters. |
output | Output StringBuilder for HTML code. If null, a new one is created. |
addPreCode | Whether to wrap the output in "<pre class='highlight'><code>" tags. |
newline | What to write to output when '' is encountered. |
colorCodesToCssClasses | CSS class table for span tags, see GetDefaultCssClassTable. |
Referenced by Loyc.Syntax.Les.Les3PrettyPrinter.PrintToHtml().
|
getset |
The lookup table of strings for control codes (LesColorCode values) to HTML classes, used by PrintToHtml(IEnumerable<ILNode>, StringBuilder, bool).
This property is null by default, which causes the default table to be used. See GetDefaultCssClassTable() for more information.
Referenced by Loyc.Syntax.Les.Les3PrettyPrinter.PrintToHtml().