clark

package module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 12, 2021 License: Apache-2.0 Imports: 2 Imported by: 0

README

clark



What is clark?

Clark is a simple command-lexing package designed for chat systems such as Discord, Teamspeak, or Telegram. It is therefore intended to facilitate the handling of user input and the parsing processes that follow.


Prerequisites

To use a Go package such as clark, you must of course have Go installed on your system.

It is assumed that you have already worked with the Go environment. If this is not the case, see this page first.


Installation

Install the package

To use clark as a Go package, you must have it installed on your current system. If this is not the case, run the command below.

go get -u github.com/lukasl-dev/clark
Install the CLI

Otherwise, if you want to use clark inside your terminal, you need to have it installed as well. If this is not the case, run the command below.

If you have no experience in this section, read this.

go get -u github.com/lukasl-dev/clark/cmd/clark

Getting started

Create a Reader

As an example, we create a strings.Reader here.

reader := strings.NewReader("!help")
Create a Lexer
lex, err := clark.NewLexer(reader)

You can configure the lexer using the variadic options.

See available Options.

lex, err := clark.NewLexer(
  reader,
  lexing.Prefixes("!"), lexing.Labels("help", "play", "help me"),
)

// handle error
Available Options
Function Description
lexing.Prefixes Prefixes defines the prefixes used by the lexer.
lexing.Labels Labels defines the labels used by the lexer.
lexing.PrefixIgnoreCase PrefixIgnoreCase defines the prefixes case sensitivity.
lexing.LabelIgnoreCase LabelIgnoreCase defines the labels case sensitivity.
lexing.SkipPrefix SkipPrefix defines whether the prefix should be skipped.
lexing.SkipLabel SkipLabel defines whether the label should be skipped.
Start the lexing progress

To execute the Lexer , lex.Lex() is executed as a goroutine. lex.Lex() reads the passed reader lexicographically until io.EOF and returns the lexed tokens.

go lex.Lex()
Collect the lexed Tokens

During reading tokens are sent to the token channel. This channel can be accessed via lex.Chan().

for token := range lex.Chan() {
// handle token
}

A Token has a Type and an optional value.

See supported types.


Usage of the CLI

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewLexer

func NewLexer(reader io.Reader, options ...lexing.Option) (*lexing.Lexer, error)

Types

This section is empty.

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL