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