<commit_before>package main

import (
    "archive/zip"
    "fmt"
    "os"
)

func main() {
    if len(os.Args) > 1 {
        jarFileName := os.Args[1]
        handleJar(jarFileName)
    }
}

func handleJar(jarFileName string) {
    fmt.Printf("jar: %v\n", jarFileName)

    // open jar
    r, err := zip.OpenReader(jarFileName) // func OpenReader(name string) (*ReadCloser, error)
    if err != nil {
        panic(err.Error())
    }
    defer r.Close()

    // find class
    for _, f := range r.File {
        fmt.Printf("%v\n", f.Name)
        // if f.Name == className {
        //     rc, err := f.Open() // func (f *File) Open() (rc io.ReadCloser, err error)
        //     if err != nil {
        //         return nil, err
        //     }
        //     // read class data
        //     data, err := ioutil.ReadAll(rc) // func ReadAll(r io.Reader) ([]byte, error)
        //     rc.Close()
        //     if err != nil {
        //         return nil, err
        //     }
        //     return data, nil
        // }
    }
}<commit_msg>print classes in jar..<commit_after>package main

import (
    "archive/zip"
    "fmt"
    "io/ioutil"
    "os"
    "strings"
    "jvmgo/classfile"
)

func main() {
    if len(os.Args) > 1 {
        jarFileName := os.Args[1]
        handleJar(jarFileName)
    }
}

func handleJar(jarFileName string) {
    fmt.Printf("jar: %v\n", jarFileName)

    // open jar
    r, err := zip.OpenReader(jarFileName) // func OpenReader(name string) (*ReadCloser, error)
    if err != nil {
        panic(err.Error())
    }
    defer r.Close()

    // find classes
    for _, f := range r.File {
        if strings.HasSuffix(f.Name, ".class") {
            handleClass(f)
        }
    }
}

func handleClass(f *zip.File) {
    //fmt.Printf("%v\n", f.Name)
    
    // open classfile
    rc, err := f.Open() // func (f *File) Open() (rc io.ReadCloser, err error)
    if err != nil {
        panic(err.Error())
    }

    // read class data
    data, err := ioutil.ReadAll(rc) // func ReadAll(r io.Reader) ([]byte, error)
    rc.Close()
    if err != nil {
        panic(err.Error())
    }

    // parse classfile
    cf, err := classfile.ParseClassFile(data)
    if err != nil {
        panic(err.Error())
    }

    handleClassfile(cf)
}

func handleClassfile(cf *classfile.ClassFile) {
    fmt.Printf("%v\n", cf)

}
{'fraction_non_alphanumeric': 0.15971039182282795, 'fraction_numerical': 0.0017035775127768314, 'mean_word_length': 1.7313953488372094, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1648670', 'n_tokens_mistral': 821, 'n_tokens_neox': 813, 'n_words': 190}