MCPcopy Create free account
hub / github.com/comaps/comaps / TransformString

Function TransformString

libs/search/house_numbers_matcher.cpp:362–401  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

360
361template <typename Fn>
362void TransformString(UniString && token, Fn && fn)
363{
364 static UniString const kLiter = MakeUniString("лит");
365
366 size_t const size = token.size();
367
368 if (IsBuildingPartSynonym(token))
369 {
370 fn(std::move(token), Token::TYPE_BUILDING_PART);
371 }
372 else if (size == 4 && StartsWith(token, kLiter))
373 {
374 fn(UniString(token.begin(), token.begin() + 3), Token::TYPE_BUILDING_PART);
375 fn(UniString(token.begin() + 3, token.end()), Token::TYPE_LETTER);
376 }
377 else if (size == 2)
378 {
379 UniString firstLetter(token.begin(), token.begin() + 1);
380 if (IsShortBuildingSynonym(firstLetter))
381 {
382 fn(std::move(firstLetter), Token::TYPE_BUILDING_PART);
383 fn(UniString(token.begin() + 1, token.end()), Token::TYPE_LETTER);
384 }
385 else
386 {
387 fn(std::move(token), Token::TYPE_STRING);
388 }
389 }
390 else if (size == 1)
391 {
392 if (IsShortBuildingSynonym(token))
393 fn(std::move(token), Token::TYPE_BUILDING_PART_OR_LETTER);
394 else
395 fn(std::move(token), Token::TYPE_LETTER);
396 }
397 else
398 {
399 fn(std::move(token), Token::TYPE_STRING);
400 }
401}
402} // namespace
403
404uint64_t ToUInt(UniString const & s)

Callers 1

TokenizeFunction · 0.85

Calls 8

MakeUniStringFunction · 0.85
IsBuildingPartSynonymFunction · 0.85
IsShortBuildingSynonymFunction · 0.85
UniStringClass · 0.70
StartsWithFunction · 0.50
sizeMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected