ux-compiler 0.1.0

UX Framework Complier
Documentation
package main

import (
	"fmt"
	"os"
	"path/filepath"
	"regexp"
	"strings"
)

var header = `use pest::Parser;
use std::fs;

use ux_compiler::{Rule, UxParser};
`
var template = `
#[test]
fn %s() {
    let input = fs::read_to_string("%s").expect("cannot read file");
    assert!(UxParser::parse(Rule::file, &input).is_ok());
}
`

func main() {
	var items = []string{header}
	directory := "../tests/data"
	var idx = 0
	if err := filepath.Walk(directory, func(path string, f os.FileInfo, err error) error {
		if !f.IsDir() && filepath.Ext(path) == ".html" {
			path = strings.Replace(path, "../", "", 1)
			re, _ := regexp.Compile(`[A-Z.-]`)
			newfname := re.ReplaceAllStringFunc(f.Name(), func(s string) string {
				if s != "." && s != "-" {
					return "_" + strings.ToLower(s)
				}
				return "_"
			})
			if strings.HasPrefix(newfname, "_") {
				newfname = newfname[1:]
			}
			idx++
			procname := fmt.Sprintf("parse_%.3d_%s", idx, newfname)
			record := fmt.Sprintf(template, procname, path)
			items = append(items, record)
		}
		return nil
	}); err != nil {
		fmt.Println(err.Error())
	}
	fmt.Println(strings.Join(items, ""))
}