Fixed all issues found in spec so far

parse has got quite complex might look to simplify
This commit is contained in:
Adam Fowler
2021-03-17 17:02:59 +00:00
parent 753079fa9d
commit b4d6a518c7
4 changed files with 129 additions and 21 deletions

View File

@@ -15,6 +15,7 @@ struct HBParser {
case unexpected
case emptyString
case invalidUTF8
case invalidPosition
}
/// Create a Parser object
@@ -282,6 +283,9 @@ extension HBParser {
{
unsafeAdvance()
}
if startIndex == index {
return subParser(startIndex..<startIndex)
}
return subParser(startIndex ..< index)
}
@@ -396,6 +400,15 @@ extension HBParser {
amount -= 1
}
}
func getPosition() -> Int {
return index
}
mutating func setPosition(_ index: Int) throws {
guard range.contains(index) else { throw Error.invalidPosition }
guard validateUTF8Character(at: index).0 != nil else { throw Error.invalidPosition }
_setPosition(index)
}
}
/// extend Parser to conform to Sequence