1/*
2 * Copyright 2008-2013, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
4 */
5
6#include "TerminalCharClassifier.h"
7
8#include <ctype.h>
9
10#include <algorithm>
11
12
13// #pragma mark - TerminalCharClassifier
14
15
16TerminalCharClassifier::~TerminalCharClassifier()
17{
18}
19
20
21// #pragma mark - DefaultCharClassifier
22
23
24DefaultCharClassifier::DefaultCharClassifier(const char* additionalWordChars)
25{
26	const char* p = additionalWordChars;
27	while (p != NULL && *p != '\0') {
28		int count = UTF8Char::ByteCount(*p);
29		if (count <= 0 || count > 4)
30			break;
31		fAdditionalWordChars.push_back(UTF8Char(p, count));
32		p += count;
33	}
34}
35
36
37int
38DefaultCharClassifier::Classify(const UTF8Char& character)
39{
40	if (character.IsSpace())
41		return CHAR_TYPE_SPACE;
42
43	if (character.IsAlNum())
44		return CHAR_TYPE_WORD_CHAR;
45
46	if (std::find(fAdditionalWordChars.begin(), fAdditionalWordChars.end(),
47			character) != fAdditionalWordChars.end()) {
48		return CHAR_TYPE_WORD_CHAR;
49	}
50
51	return CHAR_TYPE_WORD_DELIMITER;
52}
53