Documentation ¶
Overview ¶
Package syntaxhighlight provides syntax highlighting for code. It currently uses a language-independent lexer and performs decently on JavaScript, Java, Ruby, Python, Go, and C.
Example ¶
package main import ( "fmt" "os" "github.com/sourcegraph/syntaxhighlight" ) func main() { src := []byte(` /* hello, world! */ var a = 3; // b is a cool function function b() { return 7; }`) highlighted, err := syntaxhighlight.AsHTML(src) if err != nil { fmt.Println(err) os.Exit(1) } fmt.Println(string(highlighted)) }
Output: <span class="com">/* hello, world! */</span> <span class="kwd">var</span> <span class="pln">a</span> <span class="pun">=</span> <span class="dec">3</span><span class="pun">;</span> <span class="com">// b is a cool function</span> <span class="kwd">function</span> <span class="pln">b</span><span class="pun">(</span><span class="pun">)</span> <span class="pun">{</span> <span class="kwd">return</span> <span class="dec">7</span><span class="pun">;</span> <span class="pun">}</span>
Index ¶
- Variables
- func Annotate(src []byte, a Annotator) (annotate.Annotations, error)
- func AsHTML(src []byte, options ...Option) ([]byte, error)
- func NewScanner(src []byte) *scanner.Scanner
- func NewScannerReader(src io.Reader) *scanner.Scanner
- func Print(s *scanner.Scanner, w io.Writer, p Printer) error
- type Annotator
- type HTMLAnnotator
- type HTMLConfig
- type HTMLPrinter
- type Kind
- type Option
- type Printer
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var DefaultHTMLConfig = HTMLConfig{ String: "str", Keyword: "kwd", Comment: "com", Type: "typ", Literal: "lit", Punctuation: "pun", Plaintext: "pln", Tag: "tag", HTMLTag: "htm", HTMLAttrName: "atn", HTMLAttrValue: "atv", Decimal: "dec", Whitespace: "", }
DefaultHTMLConfig provides class names that match those of google-code-prettify (https://code.google.com/p/google-code-prettify/).
Functions ¶
func AsHTML ¶
AsHTML converts source code into an HTML-highlighted version; It accepts optional configuration parameters to control rendering (see OrderedList as one example)
func NewScanner ¶
NewScanner is a helper that takes a []byte src, wraps it in a reader and creates a Scanner.
func NewScannerReader ¶
NewScannerReader takes a reader src and creates a Scanner.
Types ¶
type HTMLAnnotator ¶
type HTMLAnnotator HTMLConfig
func (HTMLAnnotator) Annotate ¶
func (a HTMLAnnotator) Annotate(start int, kind Kind, tokText string) (*annotate.Annotation, error)
type HTMLConfig ¶
type HTMLConfig struct { String string Keyword string Comment string Type string Literal string Punctuation string Plaintext string Tag string HTMLTag string HTMLAttrName string HTMLAttrValue string Decimal string Whitespace string AsOrderedList bool }
HTMLConfig holds the HTML class configuration to be used by annotators when highlighting code.
func (HTMLConfig) Class ¶
func (c HTMLConfig) Class(kind Kind) string
Class returns the set class for a given token Kind.
type HTMLPrinter ¶
type HTMLPrinter HTMLConfig
HTMLPrinter implements Printer interface and is used to produce HTML-based highligher
type Kind ¶
type Kind uint8
Kind represents a syntax highlighting kind (class) which will be assigned to tokens. A syntax highlighting scheme (style) maps text style properties to each token kind.
type Option ¶
type Option func(options *HTMLConfig)
Option is a type of the function that can modify one or more of the options in the HTMLConfig structure.
func OrderedList ¶
func OrderedList() Option
OrderedList allows you to format the output as an ordered list to have line numbers in the output.
Example: AsHTML(input, OrderedList())