/*
* Copyright (c) Huawei Technologies Co., Ltd. 2024-2025. All rights reserved.
*/
package magic.rag.splitter
import magic.core.rag.Document
import std.fs.{File, OpenOption}
import std.io.StringReader
import std.collection.{ArrayList, HashMap}
public class DocumentLoader {
public DocumentLoader(
private let filePath: String
) { }
public func load(): Array<Document> {
try (file = File(this.filePath, OpenOption.Open(true, false))) {
let reader = StringReader(file)
let content = reader.readToEnd()
let metadata = HashMap<String, String>([("source", filePath)])
return [ Document(content, metadata: metadata) ]
}
throw UnsupportedException()
}
public func loadSplit(splitter: Splitter): Array<Document> {
let allDocs = ArrayList<Document>()
for (doc in this.load()) {
allDocs.appendAll(
splitter.split(doc.content)
)
}
return allDocs.toArray()
}
}