SectionPairIdentifierValidator.cpp 1.3 KB

123456789101112131415161718192021222324252627282930
  1. /*
  2. * Author: Patrick-Christopher Mattulat
  3. * Company: Lynar Studios
  4. * E-Mail: webmaster@lynarstudios.com
  5. * Created: 2023-02-09
  6. * Changed: 2023-02-11
  7. *
  8. * */
  9. #include <ls-std/io/section-pair/validator/SectionPairIdentifierValidator.hpp>
  10. ls::std::io::SectionPairIdentifierValidator::SectionPairIdentifierValidator(ls::std::io::section_pair_identifier _identifier) : ls::std::core::Class("SectionPairIdentifierValidator"), identifier(::std::move(_identifier))
  11. {}
  12. ls::std::io::SectionPairIdentifierValidator::~SectionPairIdentifierValidator() = default;
  13. bool ls::std::io::SectionPairIdentifierValidator::isValid()
  14. {
  15. bool startsWithValidCharacter{}, containsValidCharacters{}, doesNotExceedMaxSize{};
  16. if (!this->identifier.empty())
  17. {
  18. size_t foundPosition = this->identifier.find_first_not_of("abcdefghijklmnopqrstuvwxyz-0123456789");
  19. startsWithValidCharacter = ls::std::io::section_pair_identifier{this->identifier[0]}.find_first_not_of("abcdefghijklmnopqrstuvwxyz") == ::std::string::npos;
  20. containsValidCharacters = foundPosition == ls::std::io::section_pair_identifier::npos;
  21. doesNotExceedMaxSize = this->identifier.size() <= 16;
  22. }
  23. return startsWithValidCharacter && containsValidCharacters && doesNotExceedMaxSize;
  24. }