compro-library

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub ningenMe/compro-library

:warning: snippet/main.go

Depends on

Required by

Code

package main
import (
    "bufio"
    "fmt"
	"github.com/ningenMe/compro-library/snippet/model"
    "io/ioutil"
    "log"
    "os"
    "path/filepath"
    "strings"
)
func main() {
	fmt.Println("start making snippet")

    //ファイルの一覧を取得
	fileNode := GetFileNode("../lib","./")

    //ログ用にtree出力
    for _, value := range fileNode.GetTreeStrings() {
        fmt.Println(value)
    }

    pwd, err := os.Getwd()
    if err != nil {
        log.Fatalln(err)
    }
    pwd = pwd + "/"
    for _, path := range fileNode.GetPathStrings() {
        fmt.Println(path)

        //  ファイルの中身を取得
        libraryFile, err := os.Open(pwd+path)
        if err != nil {
            log.Fatalln(err)
        }

        scanner := bufio.NewScanner(libraryFile)

        var texts []string
        for scanner.Scan() {
            texts = append(texts, scanner.Text())
        }

        fileName := GetLastString(strings.Split(path,"/"))
        fileNameWithoutExtension := strings.Split(fileName,".")[0]

        snippetFile, err := os.Create(pwd+"/tmp/"+fileNameWithoutExtension+".code-snippets")
        if err != nil {
            log.Fatalln(err)
        }
        snippetTextPrefix := []string{
            "{",
            "\t\""+ fileNameWithoutExtension +"\": {",
            "\t\t\"scope\": \"cpp\",",
            "\t\t\"prefix\": \""+fileNameWithoutExtension+"\",",
            "\t\t\"body\": [",
        }
        for _, text := range snippetTextPrefix {
            _, err := snippetFile.WriteString(text+"\n")
            if err != nil {
                log.Fatalln(err)
            }
        }

        for _, text := range texts {
            text = strings.ReplaceAll(text,"\"","\\\"")
            _, err := snippetFile.WriteString("\t\t\t\""+text+"\",\n")
            if err != nil {
                log.Fatalln(err)
            }
        }

        snippetTextSuffix := []string{
            "\t\t],",
            "\t}",
            "}",
        }
        for _, text := range snippetTextSuffix {
            _, err := snippetFile.WriteString(text+"\n")
            if err != nil {
                log.Fatalln(err)
            }
        }
    }

	//for {

	//  スニペットを作成
	//}
	//
	fmt.Println("end making snippet")
}

func GetLastString(strings []string) string {
    sz := len(strings)
    return strings[sz-1]
}


func GetFileNode(path string, directoryName string) model.FileNode {
	files, err := ioutil.ReadDir(path)
	if err != nil {
        log.Fatalln(err)
	}

	fileNode := model.FileNode{
		Path:          path,
		DirectoryName: directoryName,
		Files:         []string{},
		FileNodes:     []model.FileNode{},
	}

	for _, file := range files {
		fileName := file.Name()

		nextPath := filepath.Join(path, fileName)
		if file.IsDir() {
			childFileNode := GetFileNode(nextPath, fileName)
			fileNode.FileNodes = append(fileNode.FileNodes, childFileNode)
		} else {
			fileNode.Files = append(fileNode.Files, fileName)
		}
	}
	return fileNode
}
Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.10.12/x64/lib/python3.10/site-packages/onlinejudge_verify/documentation/build.py", line 71, in _render_source_code_stat
    bundled_code = language.bundle(stat.path, basedir=basedir, options={'include_paths': [basedir]}).decode()
  File "/opt/hostedtoolcache/Python/3.10.12/x64/lib/python3.10/site-packages/onlinejudge_verify/languages/user_defined.py", line 68, in bundle
    raise RuntimeError('bundler is not specified: {}'.format(str(path)))
RuntimeError: bundler is not specified: snippet/main.go
Back to top page