#include "PipelineConverter.hpp"
using namespace opencc;
std::string PipelineConverter::Convert(std::string_view text) const {
if (stages.empty()) {
return std::string(text);
}
auto it = stages.begin();
std::string result = (*it)->Convert(text);
for (++it; it != stages.end(); ++it) {
result = (*it)->Convert(result);
}
return result;
}
ConversionInspectionResult
PipelineConverter::Inspect(std::string_view text) const {
ConversionInspectionResult result;
result.input = text;
std::string current(text);
result.pipelineStages.reserve(stages.size());
for (const ConverterPtr& stage : stages) {
ConversionInspectionResult stageResult = stage->Inspect(current);
current = stageResult.output;
result.pipelineStages.push_back(std::move(stageResult));
}
result.output = current;
return result;
}
SegmentationPtr PipelineConverter::GetSegmentation() const {
return stages.empty() ? nullptr : stages.back()->GetSegmentation();
}