package paperformatter_test import ( "fmt" "log" "os" "gitea.r8z.us/stwhite/paperformatter" ) func ExampleFormatPapers() { // Create a sample input file input := `[ { "paper": { "title": "Example Research Paper", "abstract": "This is a sample abstract for the example paper.", "arxiv_id": "2301.0001" }, "decision": "accept", "explanation": "Well-written paper with novel contributions." } ]` inputFile := "example_input.json" outputFile := "example_output.md" // Write sample input if err := os.WriteFile(inputFile, []byte(input), 0644); err != nil { log.Fatal(err) } defer os.Remove(inputFile) defer os.Remove(outputFile) // Format the papers if err := paperformatter.FormatPapers(inputFile, outputFile); err != nil { log.Fatal(err) } // Read and print the output output, err := os.ReadFile(outputFile) if err != nil { log.Fatal(err) } fmt.Println(string(output)) // Output: // # Accepted Papers // // ## Example Research Paper // // [arXiv:2301.0001](https://arxiv.org/abs/2301.0001) // // > This is a sample abstract for the example paper. // // **Decision:** accept // // **Explanation:** Well-written paper with novel contributions. // // # Rejected Papers } func ExampleFormatPapers_multipleEntries() { // Create a sample input file with multiple entries input := `[ { "paper": { "title": "First Paper", "abstract": "Abstract for the first paper.", "arxiv_id": "2301.0001" }, "decision": "accept", "explanation": "Good contribution." }, { "paper": { "title": "Second Paper", "abstract": "Abstract for the second paper.", "arxiv_id": "2301.0002" }, "decision": "reject", "explanation": "Needs more work." } ]` inputFile := "example_multi_input.json" outputFile := "example_multi_output.md" if err := os.WriteFile(inputFile, []byte(input), 0644); err != nil { log.Fatal(err) } defer os.Remove(inputFile) defer os.Remove(outputFile) if err := paperformatter.FormatPapers(inputFile, outputFile); err != nil { log.Fatal(err) } output, err := os.ReadFile(outputFile) if err != nil { log.Fatal(err) } fmt.Println(string(output)) // Output: // # Accepted Papers // // ## First Paper // // [arXiv:2301.0001](https://arxiv.org/abs/2301.0001) // // > Abstract for the first paper. // // **Decision:** accept // // **Explanation:** Good contribution. // // # Rejected Papers // // ## Second Paper // // [arXiv:2301.0002](https://arxiv.org/abs/2301.0002) // // > Abstract for the second paper. // // **Decision:** reject // // **Explanation:** Needs more work. } func ExampleFormatPapers_errorHandling() { // Example of handling different error types input := `[ { "paper": { "title": "", "abstract": "Abstract", "arxiv_id": "2301.0001" }, "decision": "accept", "explanation": "Good paper" } ]` inputFile := "example_error_input.json" outputFile := "example_error_output.md" if err := os.WriteFile(inputFile, []byte(input), 0644); err != nil { log.Fatal(err) } defer os.Remove(inputFile) defer os.Remove(outputFile) err := paperformatter.FormatPapers(inputFile, outputFile) if err != nil { switch e := err.(type) { case *paperformatter.ValidationError: fmt.Printf("Validation error: %v\n", e) case *paperformatter.FileError: fmt.Printf("File error: %v\n", e) case *paperformatter.JSONError: fmt.Printf("JSON error: %v\n", e) default: fmt.Printf("Error: %v\n", err) } } // Output: Error: entry 1: validation error for title: title cannot be empty }