Skip to content

Latest commit

 

History

History
32 lines (27 loc) · 806 Bytes

File metadata and controls

32 lines (27 loc) · 806 Bytes

Transform

package lit

import (
	"bytes"
)

The core of the lit tool is the Transform function. At this function we process the given source and comment out all non code lines by the given commentStyle.

func Transform(code []byte, commentStyle []byte, noDocs bool) []byte {
	tokens := Scanner(code)
	transformed := make([][]byte, 0)
	for i := 0; i < len(tokens); i++ {
		switch tokens[i].Type {
		case TYPE_DOC, TYPE_CODESIGN:
			if len(tokens[i].Value) == 0 {
				transformed = append(transformed, []byte(""))
			} else {
				if !noDocs {
					transformed = append(transformed, append(commentStyle, tokens[i].Value...))
				}
			}
			break

		case TYPE_CODE:
			transformed = append(transformed, tokens[i].Value)
			break
		}
	}
	return bytes.Join(transformed, NEWLINE)
}