From 6dd53b55a00e5234ba5c6e3e6b2de4b45e5349ad Mon Sep 17 00:00:00 2001 From: Ferdinand Majerech Date: Tue, 29 Jul 2014 03:07:31 +0200 Subject: [PATCH] UTF-8 scanAlphaNumeric. --- source/dyaml/scanner.d | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/source/dyaml/scanner.d b/source/dyaml/scanner.d index c7052c5..7aed9f4 100644 --- a/source/dyaml/scanner.d +++ b/source/dyaml/scanner.d @@ -839,6 +839,23 @@ final class Scanner reader_.sliceBuilder.write(reader_.get(length)); } + void scanAlphaNumericToSlice8(string name)(const Mark startMark) + @system pure nothrow @nogc + { + size_t length = 0; + dchar c = reader_.peek(); + while(c.isAlphaNum || "-_"d.canFind(c)) { c = reader_.peek(++length); } + + if(length == 0) + { + enum contextMsg = "While scanning " ~ name; + error(contextMsg, startMark, expected("alphanumeric, '-' or '_'", c), + reader_.mark); + return; + } + + reader_.sliceBuilder8.write(reader_.get8(length)); + } /// Scan and throw away all characters until next line break. void scanToNextBreak() @safe pure nothrow @nogc