static bool parseParameterValue(CharType*& position, CharType* end, String& value)
{
    CharType* valueStart = position;
    CharType* valueEnd = position;
    bool completeQuotes;
    bool hasQuotes = skipQuotesIfNeeded(position, end, completeQuotes);
    if (!hasQuotes) {
        skipWhile<CharType, isValidParameterValueChar>(position, end);
    }
    valueEnd = position;
    skipWhile<CharType, isWhitespace>(position, end);
    if ((!completeQuotes && valueStart == valueEnd) || (position != end && !isValidParameterValueEnd(*position))) {
        value = String("");
        return false;
    }
    if (hasQuotes)
        ++valueStart;
    if (completeQuotes)
        --valueEnd;
    value = String(valueStart, valueEnd - valueStart);
    return !hasQuotes || completeQuotes;
}
Esempio n. 2
0
static bool parseParameterValue(CharacterType*& position, CharacterType* const end, String& value)
{
    ASSERT(position <= end);
    CharacterType* valueStart = position;
    CharacterType* valueEnd = position;
    bool completeQuotes = false;
    bool hasQuotes = skipQuotesIfNeeded(position, end, completeQuotes);
    if (!hasQuotes)
        skipWhile<CharacterType, isParameterValueChar>(position, end);
    valueEnd = position;
    skipWhile<CharacterType, isSpaceOrTab>(position, end);
    if ((!completeQuotes && valueStart == valueEnd) || (position != end && !isParameterValueEnd(*position))) {
        value = String("");
        return false;
    }
    if (hasQuotes)
        ++valueStart;
    if (completeQuotes)
        --valueEnd;
    ASSERT(valueEnd >= valueStart);
    value = String(valueStart, valueEnd - valueStart);
    return !hasQuotes || completeQuotes;
}