diff options
| author | Curtis McEnroe | 2018-09-14 18:48:03 -0400 | 
|---|---|---|
| committer | Curtis McEnroe | 2018-09-14 18:48:03 -0400 | 
| commit | 6aa42b852bc569f7baedc85b74037588777ccbb4 (patch) | |
| tree | b97b6f760d1f33f4459fb2fcf54d39ef52cea574 | |
| parent | b22e008d68e36719f3c6a808f8d8adc905da7250 (diff) | |
Remove word handling from formatParse
| -rw-r--r-- | format.c | 13 | ||||
| -rw-r--r-- | ui.c | 8 | 
2 files changed, 10 insertions, 11 deletions
| @@ -79,10 +79,8 @@ static void parseColor(struct Format *format) {  	format->str = &format->str[1 + len];  } -static const wchar_t Stops[] = { -	L' ', -	IRCBold, IRCColor, IRCReverse, IRCReset, IRCItalic, IRCUnderline, -	L'\0', +static const wchar_t Codes[] = { +	IRCBold, IRCColor, IRCReverse, IRCReset, IRCItalic, IRCUnderline, L'\0',  };  bool formatParse(struct Format *format, const wchar_t *split) { @@ -110,11 +108,7 @@ bool formatParse(struct Format *format, const wchar_t *split) {  	}  	format->split = (split >= init && split <= format->str); -	if (format->str[0] == L' ') { -		format->len = 1 + wcscspn(&format->str[1], Stops); -	} else { -		format->len = wcscspn(format->str, Stops); -	} +	format->len = wcscspn(format->str, Codes);  	if (split > format->str && split < &format->str[format->len]) {  		format->len = split - format->str;  	} @@ -172,6 +166,7 @@ int main() {  	assert(testColor(L"\00316,16a", IRCDefault, IRCDefault, 6));  	assert(testColor(L"\00399,99a", IRCDefault, IRCDefault, 6)); +	assert(testSplits(L""));  	assert(testSplits(L"ab"));  	assert(testSplits(L"\002"));  	assert(testSplits(L"\002ab")); @@ -194,11 +194,14 @@ static void addFormat(WINDOW *win, const struct Format *format) {  }  static int addWrap(WINDOW *win, const wchar_t *str) { +	int lines = 0; +  	struct Format format = { .str = str };  	formatReset(&format); - -	int lines = 0;  	while (formatParse(&format, NULL)) { +		size_t word = 1 + wcscspn(&format.str[1], L" "); +		if (word < format.len) format.len = word; +  		int _, x, xMax;  		getyx(win, _, x);  		getmaxyx(win, _, xMax); @@ -210,6 +213,7 @@ static int addWrap(WINDOW *win, const wchar_t *str) {  			waddch(win, '\n');  			lines++;  		} +  		addFormat(win, &format);  	}  	return lines; | 
