// License: Modified MIT (NON-AI) // See the LICENSE file in the root directory for license information. // Copyright 2025 Timothy Prepscius #pragma once namespace tjp::core { template std::vector split(const T &s, const T &delimiter) { std::vector result; size_t last = 0; size_t next = 0; while ((next = s.find(delimiter, last)) != T::npos) { if (last < next) result.push_back(s.substr(last, next-last)); last = next + std::max(delimiter.size(), (size_t)1); } if (last < s.size()) result.push_back(s.substr(last)); return result; } template std::vector split(const T &s, char delimiter) { std::vector result; size_t last = 0; size_t next = 0; while ((next = s.find(delimiter, last)) != T::npos) { if (last < next) result.push_back(s.substr(last, next-last)); last = next + 1; } if (last < s.size()) result.push_back(s.substr(last)); return result; } } // namespace