本文整理汇总了C++中StringBuilder::append方法的典型用法代码示例。如果您正苦于以下问题:C++ StringBuilder::append方法的具体用法?C++ StringBuilder::append怎么用?C++ StringBuilder::append使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StringBuilder
的用法示例。
在下文中一共展示了StringBuilder::append方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: appendProxyServerString
static void appendProxyServerString(StringBuilder& builder, const ProxyServer& proxyServer)
{
switch (proxyServer.type()) {
case ProxyServer::Direct:
builder.append("DIRECT");
return;
case ProxyServer::HTTP:
case ProxyServer::HTTPS:
builder.append("PROXY");
break;
case ProxyServer::SOCKS:
builder.append("SOCKS");
break;
}
builder.append(' ');
ASSERT(!proxyServer.hostName().isNull());
builder.append(proxyServer.hostName());
builder.append(':');
ASSERT(proxyServer.port() != -1);
builder.appendNumber(proxyServer.port());
}
示例2: appendAttribute
void MarkupAccumulator::appendAttribute(StringBuilder& result, const Element& element, const Attribute& attribute, Namespaces* namespaces)
{
bool documentIsHTML = serializeAsHTMLDocument(element);
result.append(' ');
QualifiedName prefixedName = attribute.name();
if (documentIsHTML && !attributeIsInSerializedNamespace(attribute)) {
result.append(attribute.name().localName());
} else {
if (attribute.namespaceURI() == XLinkNames::xlinkNamespaceURI) {
if (!attribute.prefix())
prefixedName.setPrefix(xlinkAtom);
} else if (attribute.namespaceURI() == XMLNames::xmlNamespaceURI) {
if (!attribute.prefix())
prefixedName.setPrefix(xmlAtom);
} else if (attribute.namespaceURI() == XMLNSNames::xmlnsNamespaceURI) {
if (attribute.name() != XMLNSNames::xmlnsAttr && !attribute.prefix())
prefixedName.setPrefix(xmlnsAtom);
}
result.append(prefixedName.toString());
}
result.append('=');
if (element.isURLAttribute(attribute)) {
appendQuotedURLAttributeValue(result, element, attribute);
} else {
result.append('"');
appendAttributeValue(result, attribute.value(), documentIsHTML);
result.append('"');
}
if (!documentIsHTML && namespaces && shouldAddNamespaceAttribute(attribute, *namespaces))
appendNamespace(result, prefixedName.prefix(), prefixedName.namespaceURI(), *namespaces);
}
示例3:
String ViewGestureController::SnapshotRemovalTracker::eventsDescription(Events event)
{
StringBuilder description;
if (event & ViewGestureController::SnapshotRemovalTracker::VisuallyNonEmptyLayout)
description.append("VisuallyNonEmptyLayout ");
if (event & ViewGestureController::SnapshotRemovalTracker::RenderTreeSizeThreshold)
description.append("RenderTreeSizeThreshold ");
if (event & ViewGestureController::SnapshotRemovalTracker::RepaintAfterNavigation)
description.append("RepaintAfterNavigation ");
if (event & ViewGestureController::SnapshotRemovalTracker::MainFrameLoad)
description.append("MainFrameLoad ");
if (event & ViewGestureController::SnapshotRemovalTracker::SubresourceLoads)
description.append("SubresourceLoads ");
if (event & ViewGestureController::SnapshotRemovalTracker::ScrollPositionRestoration)
description.append("ScrollPositionRestoration ");
return description.toString();
}
示例4: createFileSystemURL
KURL DOMFileSystemBase::createFileSystemURL(const String& fullPath) const
{
ASSERT(DOMFilePath::isAbsolute(fullPath));
if (type() == FileSystemTypeExternal) {
// For external filesystem originString could be different from what we have in m_filesystemRootURL.
StringBuilder result;
result.append("filesystem:");
result.append(securityOrigin()->toString());
result.append("/");
result.append(externalPathPrefix);
result.append(m_filesystemRootURL.path());
// Remove the extra leading slash.
result.append(encodeWithURLEscapeSequences(fullPath.substring(1)));
return KURL(ParsedURLString, result.toString());
}
// For regular types we can just append the entry's fullPath to the m_filesystemRootURL that should look like 'filesystem:<origin>/<typePrefix>'.
ASSERT(!m_filesystemRootURL.isEmpty());
KURL url = m_filesystemRootURL;
// Remove the extra leading slash.
url.setPath(url.path() + encodeWithURLEscapeSequences(fullPath.substring(1)));
return url;
}
示例5: fromUChar32
String fromUChar32(UChar32 c)
{
StringBuilder input;
input.append(c);
return input.toString();
}
示例6: appendDocumentType
void MarkupAccumulator::appendDocumentType(StringBuilder& result, const DocumentType* n)
{
if (n->name().isEmpty())
return;
result.append("<!DOCTYPE ");
result.append(n->name());
if (!n->publicId().isEmpty()) {
result.append(" PUBLIC \"");
result.append(n->publicId());
result.append("\"");
if (!n->systemId().isEmpty()) {
result.append(" \"");
result.append(n->systemId());
result.append("\"");
}
} else if (!n->systemId().isEmpty()) {
result.append(" SYSTEM \"");
result.append(n->systemId());
result.append("\"");
}
if (!n->internalSubset().isEmpty()) {
result.append(" [");
result.append(n->internalSubset());
result.append("]");
}
result.append(">");
}
示例7: testExecutionTimeLimit
int testExecutionTimeLimit()
{
static const TierOptions tierOptionsList[] = {
{ "LLINT", 0, "--useConcurrentJIT=false --useLLInt=true --useJIT=false" },
{ "Baseline", 0, "--useConcurrentJIT=false --useLLInt=true --useJIT=true --useDFGJIT=false" },
{ "DFG", 0, "--useConcurrentJIT=false --useLLInt=true --useJIT=true --useDFGJIT=true --useFTLJIT=false" },
{ "FTL", 200, "--useConcurrentJIT=false --useLLInt=true --useJIT=true --useDFGJIT=true --useFTLJIT=true" },
};
bool failed = false;
JSC::initializeThreading();
Options::initialize(); // Ensure options is initialized first.
for (auto tierOptions : tierOptionsList) {
StringBuilder savedOptionsBuilder;
Options::dumpAllOptionsInALine(savedOptionsBuilder);
Options::setOptions(tierOptions.optionsStr);
unsigned tierAdjustmentMillis = tierOptions.timeLimitAdjustmentMillis;
double timeLimit;
context = JSGlobalContextCreateInGroup(nullptr, nullptr);
JSContextGroupRef contextGroup = JSContextGetGroup(context);
JSObjectRef globalObject = JSContextGetGlobalObject(context);
ASSERT(JSValueIsObject(context, globalObject));
JSValueRef exception = nullptr;
JSStringRef currentCPUTimeStr = JSStringCreateWithUTF8CString("currentCPUTime");
JSObjectRef currentCPUTimeFunction = JSObjectMakeFunctionWithCallback(context, currentCPUTimeStr, currentCPUTimeAsJSFunctionCallback);
JSObjectSetProperty(context, globalObject, currentCPUTimeStr, currentCPUTimeFunction, kJSPropertyAttributeNone, nullptr);
JSStringRelease(currentCPUTimeStr);
/* Test script timeout: */
timeLimit = (100 + tierAdjustmentMillis) / 1000.0;
JSContextGroupSetExecutionTimeLimit(contextGroup, timeLimit, shouldTerminateCallback, 0);
{
unsigned timeAfterWatchdogShouldHaveFired = 300 + tierAdjustmentMillis;
StringBuilder scriptBuilder;
scriptBuilder.append("function foo() { var startTime = currentCPUTime(); while (true) { for (var i = 0; i < 1000; i++); if (currentCPUTime() - startTime > ");
scriptBuilder.appendNumber(timeAfterWatchdogShouldHaveFired / 1000.0);
scriptBuilder.append(") break; } } foo();");
JSStringRef script = JSStringCreateWithUTF8CString(scriptBuilder.toString().utf8().data());
exception = nullptr;
shouldTerminateCallbackWasCalled = false;
auto startTime = currentCPUTime();
JSEvaluateScript(context, script, nullptr, nullptr, 1, &exception);
auto endTime = currentCPUTime();
if (((endTime - startTime) < milliseconds(timeAfterWatchdogShouldHaveFired)) && shouldTerminateCallbackWasCalled)
printf("PASS: %s script timed out as expected.\n", tierOptions.tier);
else {
if ((endTime - startTime) >= milliseconds(timeAfterWatchdogShouldHaveFired))
printf("FAIL: %s script did not time out as expected.\n", tierOptions.tier);
if (!shouldTerminateCallbackWasCalled)
printf("FAIL: %s script timeout callback was not called.\n", tierOptions.tier);
failed = true;
}
if (!exception) {
printf("FAIL: %s TerminatedExecutionException was not thrown.\n", tierOptions.tier);
failed = true;
}
testResetAfterTimeout(failed);
}
/* Test script timeout with tail calls: */
timeLimit = (100 + tierAdjustmentMillis) / 1000.0;
JSContextGroupSetExecutionTimeLimit(contextGroup, timeLimit, shouldTerminateCallback, 0);
{
unsigned timeAfterWatchdogShouldHaveFired = 300 + tierAdjustmentMillis;
StringBuilder scriptBuilder;
scriptBuilder.append("var startTime = currentCPUTime();"
"function recurse(i) {"
"'use strict';"
"if (i % 1000 === 0) {"
"if (currentCPUTime() - startTime >");
scriptBuilder.appendNumber(timeAfterWatchdogShouldHaveFired / 1000.0);
scriptBuilder.append(" ) { return; }");
scriptBuilder.append(" }");
scriptBuilder.append(" return recurse(i + 1); }");
scriptBuilder.append("recurse(0);");
JSStringRef script = JSStringCreateWithUTF8CString(scriptBuilder.toString().utf8().data());
exception = nullptr;
shouldTerminateCallbackWasCalled = false;
auto startTime = currentCPUTime();
JSEvaluateScript(context, script, nullptr, nullptr, 1, &exception);
auto endTime = currentCPUTime();
if (((endTime - startTime) < milliseconds(timeAfterWatchdogShouldHaveFired)) && shouldTerminateCallbackWasCalled)
printf("PASS: %s script with infinite tail calls timed out as expected .\n", tierOptions.tier);
else {
//.........这里部分代码省略.........
示例8: specialDrawingTypeAsDebugString
static WTF::String specialDrawingTypeAsDebugString(DisplayItem::Type type)
{
if (type >= DisplayItem::TableCollapsedBorderUnalignedBase) {
if (type <= DisplayItem::TableCollapsedBorderBase)
return "TableCollapsedBorderAlignment";
if (type <= DisplayItem::TableCollapsedBorderLast) {
StringBuilder sb;
sb.append("TableCollapsedBorder");
if (type & DisplayItem::TableCollapsedBorderTop)
sb.append("Top");
if (type & DisplayItem::TableCollapsedBorderRight)
sb.append("Right");
if (type & DisplayItem::TableCollapsedBorderBottom)
sb.append("Bottom");
if (type & DisplayItem::TableCollapsedBorderLeft)
sb.append("Left");
return sb.toString();
}
}
switch (type) {
DEBUG_STRING_CASE(BoxDecorationBackground);
DEBUG_STRING_CASE(Caret);
DEBUG_STRING_CASE(ColumnRules);
DEBUG_STRING_CASE(DebugRedFill);
DEBUG_STRING_CASE(DragImage);
DEBUG_STRING_CASE(SVGImage);
DEBUG_STRING_CASE(LinkHighlight);
DEBUG_STRING_CASE(PageOverlay);
DEBUG_STRING_CASE(PageWidgetDelegateBackgroundFallback);
DEBUG_STRING_CASE(PopupContainerBorder);
DEBUG_STRING_CASE(PopupListBoxBackground);
DEBUG_STRING_CASE(PopupListBoxRow);
DEBUG_STRING_CASE(PrintedContentBackground);
DEBUG_STRING_CASE(PrintedContentDestinationLocations);
DEBUG_STRING_CASE(PrintedContentLineBoundary);
DEBUG_STRING_CASE(PrintedContentPDFURLRect);
DEBUG_STRING_CASE(Resizer);
DEBUG_STRING_CASE(SVGClip);
DEBUG_STRING_CASE(SVGFilter);
DEBUG_STRING_CASE(SVGMask);
DEBUG_STRING_CASE(ScrollbarBackButtonEnd);
DEBUG_STRING_CASE(ScrollbarBackButtonStart);
DEBUG_STRING_CASE(ScrollbarBackground);
DEBUG_STRING_CASE(ScrollbarBackTrack);
DEBUG_STRING_CASE(ScrollbarCorner);
DEBUG_STRING_CASE(ScrollbarForwardButtonEnd);
DEBUG_STRING_CASE(ScrollbarForwardButtonStart);
DEBUG_STRING_CASE(ScrollbarForwardTrack);
DEBUG_STRING_CASE(ScrollbarHorizontal);
DEBUG_STRING_CASE(ScrollbarThumb);
DEBUG_STRING_CASE(ScrollbarTickmarks);
DEBUG_STRING_CASE(ScrollbarTrackBackground);
DEBUG_STRING_CASE(ScrollbarVertical);
DEBUG_STRING_CASE(SelectionGap);
DEBUG_STRING_CASE(SelectionTint);
DEBUG_STRING_CASE(TableCellBackgroundFromColumnGroup);
DEBUG_STRING_CASE(TableCellBackgroundFromColumn);
DEBUG_STRING_CASE(TableCellBackgroundFromSection);
DEBUG_STRING_CASE(TableCellBackgroundFromRow);
DEBUG_STRING_CASE(VideoBitmap);
DEBUG_STRING_CASE(WebPlugin);
DEBUG_STRING_CASE(WebFont);
DEFAULT_CASE;
}
}
示例9: appendBackgroundPropertyAsText
void StylePropertySerializer::appendBackgroundPropertyAsText(StringBuilder& result, unsigned& numDecls) const
{
if (isPropertyShorthandAvailable(backgroundShorthand())) {
String backgroundValue = getPropertyValue(CSSPropertyBackground);
bool isImportant = m_propertySet.propertyIsImportant(CSSPropertyBackgroundImage);
result.append(getPropertyText(CSSPropertyBackground, backgroundValue, isImportant, numDecls++));
return;
}
if (shorthandHasOnlyInitialOrInheritedValue(backgroundShorthand())) {
RefPtrWillBeRawPtr<CSSValue> value = m_propertySet.getPropertyCSSValue(CSSPropertyBackgroundImage);
bool isImportant = m_propertySet.propertyIsImportant(CSSPropertyBackgroundImage);
result.append(getPropertyText(CSSPropertyBackground, value->cssText(), isImportant, numDecls++));
return;
}
// backgroundShorthandProperty without layered shorhand properties
const CSSPropertyID backgroundPropertyIds[] = {
CSSPropertyBackgroundImage,
CSSPropertyBackgroundAttachment,
CSSPropertyBackgroundColor,
CSSPropertyBackgroundSize,
CSSPropertyBackgroundOrigin,
CSSPropertyBackgroundClip
};
for (unsigned i = 0; i < WTF_ARRAY_LENGTH(backgroundPropertyIds); ++i) {
CSSPropertyID propertyID = backgroundPropertyIds[i];
RefPtrWillBeRawPtr<CSSValue> value = m_propertySet.getPropertyCSSValue(propertyID);
if (!value)
continue;
result.append(getPropertyText(propertyID, value->cssText(), m_propertySet.propertyIsImportant(propertyID), numDecls++));
}
// FIXME: This is a not-so-nice way to turn x/y positions into single background-position in output.
// It is required because background-position-x/y are non-standard properties and WebKit generated output
// would not work in Firefox (<rdar://problem/5143183>)
// It would be a better solution if background-position was CSS_PAIR.
if (shorthandHasOnlyInitialOrInheritedValue(backgroundPositionShorthand())) {
RefPtrWillBeRawPtr<CSSValue> value = m_propertySet.getPropertyCSSValue(CSSPropertyBackgroundPositionX);
bool isImportant = m_propertySet.propertyIsImportant(CSSPropertyBackgroundPositionX);
result.append(getPropertyText(CSSPropertyBackgroundPosition, value->cssText(), isImportant, numDecls++));
} else if (isPropertyShorthandAvailable(backgroundPositionShorthand())) {
String positionValue = m_propertySet.getPropertyValue(CSSPropertyBackgroundPosition);
bool isImportant = m_propertySet.propertyIsImportant(CSSPropertyBackgroundPositionX);
if (!positionValue.isNull())
result.append(getPropertyText(CSSPropertyBackgroundPosition, positionValue, isImportant, numDecls++));
} else {
// should check background-position-x or background-position-y.
if (RefPtrWillBeRawPtr<CSSValue> value = m_propertySet.getPropertyCSSValue(CSSPropertyBackgroundPositionX)) {
if (!value->isImplicitInitialValue()) {
bool isImportant = m_propertySet.propertyIsImportant(CSSPropertyBackgroundPositionX);
result.append(getPropertyText(CSSPropertyBackgroundPositionX, value->cssText(), isImportant, numDecls++));
}
}
if (RefPtrWillBeRawPtr<CSSValue> value = m_propertySet.getPropertyCSSValue(CSSPropertyBackgroundPositionY)) {
if (!value->isImplicitInitialValue()) {
bool isImportant = m_propertySet.propertyIsImportant(CSSPropertyBackgroundPositionY);
result.append(getPropertyText(CSSPropertyBackgroundPositionY, value->cssText(), isImportant, numDecls++));
}
}
}
String repeatValue = m_propertySet.getPropertyValue(CSSPropertyBackgroundRepeat);
if (!repeatValue.isNull())
result.append(getPropertyText(CSSPropertyBackgroundRepeat, repeatValue, m_propertySet.propertyIsImportant(CSSPropertyBackgroundRepeatX), numDecls++));
}
示例10: while
// "inline" is required here to help WINSCW compiler resolve specialized argument in templated functions.
template <LiteralParser::ParserMode mode> inline LiteralParser::TokenType LiteralParser::Lexer::lexString(LiteralParserToken& token)
{
++m_ptr;
const UChar* runStart;
StringBuilder builder;
do {
runStart = m_ptr;
while (m_ptr < m_end && isSafeStringCharacter<mode>(*m_ptr))
++m_ptr;
if (runStart < m_ptr)
builder.append(runStart, m_ptr - runStart);
if ((mode == StrictJSON) && m_ptr < m_end && *m_ptr == '\\') {
++m_ptr;
if (m_ptr >= m_end)
return TokError;
switch (*m_ptr) {
case '"':
builder.append('"');
m_ptr++;
break;
case '\\':
builder.append('\\');
m_ptr++;
break;
case '/':
builder.append('/');
m_ptr++;
break;
case 'b':
builder.append('\b');
m_ptr++;
break;
case 'f':
builder.append('\f');
m_ptr++;
break;
case 'n':
builder.append('\n');
m_ptr++;
break;
case 'r':
builder.append('\r');
m_ptr++;
break;
case 't':
builder.append('\t');
m_ptr++;
break;
case 'u':
if ((m_end - m_ptr) < 5) // uNNNN == 5 characters
return TokError;
for (int i = 1; i < 5; i++) {
if (!isASCIIHexDigit(m_ptr[i]))
return TokError;
}
builder.append(AJ::Lexer::convertUnicode(m_ptr[1], m_ptr[2], m_ptr[3], m_ptr[4]));
m_ptr += 5;
break;
default:
return TokError;
}
}
} while ((mode == StrictJSON) && m_ptr != runStart && (m_ptr < m_end) && *m_ptr != '"');
if (m_ptr >= m_end || *m_ptr != '"')
return TokError;
token.stringToken = builder.build();
token.type = TokString;
token.end = ++m_ptr;
return TokString;
}
示例11: buildObjectForElementInfo
static PassRefPtr<InspectorObject> buildObjectForElementInfo(Node* node)
{
if (!node->isElementNode() || !node->document().frame())
return nullptr;
RefPtr<InspectorObject> elementInfo = InspectorObject::create();
Element* element = toElement(node);
bool isXHTML = element->document().isXHTMLDocument();
elementInfo->setString("tagName", isXHTML ? element->nodeName() : element->nodeName().lower());
elementInfo->setString("idValue", element->getIdAttribute());
HashSet<AtomicString> usedClassNames;
if (element->hasClass() && element->isStyledElement()) {
StringBuilder classNames;
const SpaceSplitString& classNamesString = toStyledElement(element)->classNames();
size_t classNameCount = classNamesString.size();
for (size_t i = 0; i < classNameCount; ++i) {
const AtomicString& className = classNamesString[i];
if (usedClassNames.contains(className))
continue;
usedClassNames.add(className);
classNames.append('.');
classNames.append(className);
}
elementInfo->setString("className", classNames.toString());
}
RenderElement* renderer = element->renderer();
Frame* containingFrame = node->document().frame();
FrameView* containingView = containingFrame->view();
IntRect boundingBox = pixelSnappedIntRect(containingView->contentsToRootView(renderer->absoluteBoundingBoxRect()));
RenderBoxModelObject* modelObject = renderer->isBoxModelObject() ? toRenderBoxModelObject(renderer) : nullptr;
elementInfo->setString("nodeWidth", String::number(modelObject ? adjustForAbsoluteZoom(modelObject->pixelSnappedOffsetWidth(), *modelObject) : boundingBox.width()));
elementInfo->setString("nodeHeight", String::number(modelObject ? adjustForAbsoluteZoom(modelObject->pixelSnappedOffsetHeight(), *modelObject) : boundingBox.height()));
if (renderer->isRenderNamedFlowFragmentContainer()) {
RenderNamedFlowFragment* region = toRenderBlockFlow(renderer)->renderNamedFlowFragment();
if (region->isValid()) {
RenderFlowThread* flowThread = region->flowThread();
ASSERT(flowThread && flowThread->isRenderNamedFlowThread());
RefPtr<InspectorObject> regionFlowInfo = InspectorObject::create();
regionFlowInfo->setString("name", toRenderNamedFlowThread(flowThread)->flowThreadName());
regionFlowInfo->setArray("regions", buildObjectForCSSRegionsHighlight(region, flowThread));
elementInfo->setObject("regionFlowInfo", regionFlowInfo.release());
}
}
RenderFlowThread* containingFlowThread = renderer->flowThreadContainingBlock();
if (containingFlowThread && containingFlowThread->isRenderNamedFlowThread()) {
RefPtr<InspectorObject> contentFlowInfo = InspectorObject::create();
contentFlowInfo->setString("name", toRenderNamedFlowThread(containingFlowThread)->flowThreadName());
elementInfo->setObject("contentFlowInfo", contentFlowInfo.release());
}
#if ENABLE(CSS_SHAPES)
if (renderer->isBox()) {
RenderBox* renderBox = toRenderBox(renderer);
if (RefPtr<InspectorObject> shapeObject = buildObjectForShapeOutside(containingFrame, renderBox))
elementInfo->setObject("shapeOutsideInfo", shapeObject.release());
}
#endif
// Need to enable AX to get the computed role.
if (!WebCore::AXObjectCache::accessibilityEnabled())
WebCore::AXObjectCache::enableAccessibility();
if (AXObjectCache* axObjectCache = node->document().axObjectCache()) {
if (AccessibilityObject* axObject = axObjectCache->getOrCreate(node))
elementInfo->setString("role", axObject->computedRoleString());
}
return elementInfo.release();
}
示例12: convertHTMLTextToInterchangeFormat
String convertHTMLTextToInterchangeFormat(const String& in, const Text& node)
{
// Assume all the text comes from node.
if (node.layoutObject() && node.layoutObject()->style()->preserveNewline())
return in;
const char convertedSpaceString[] = "<span class=\"" AppleConvertedSpace "\">\xA0</span>";
static_assert((static_cast<unsigned char>('\xA0') == noBreakSpaceCharacter), "\\xA0 should be non-breaking space");
StringBuilder s;
unsigned i = 0;
unsigned consumed = 0;
while (i < in.length()) {
consumed = 1;
if (isCollapsibleWhitespace(in[i])) {
// count number of adjoining spaces
unsigned j = i + 1;
while (j < in.length() && isCollapsibleWhitespace(in[j]))
j++;
unsigned count = j - i;
consumed = count;
while (count) {
unsigned add = count % 3;
switch (add) {
case 0:
s.append(convertedSpaceString);
s.append(' ');
s.append(convertedSpaceString);
add = 3;
break;
case 1:
if (i == 0 || i + 1 == in.length()) // at start or end of string
s.append(convertedSpaceString);
else
s.append(' ');
break;
case 2:
if (i == 0) {
// at start of string
s.append(convertedSpaceString);
s.append(' ');
} else if (i + 2 == in.length()) {
// at end of string
s.append(convertedSpaceString);
s.append(convertedSpaceString);
} else {
s.append(convertedSpaceString);
s.append(' ');
}
break;
}
count -= add;
}
} else {
s.append(in[i]);
}
i += consumed;
}
return s.toString();
}
示例13: appendMessagePrefix
static void appendMessagePrefix(StringBuilder& builder, MessageSource source, MessageType type, MessageLevel level)
{
const char* sourceString;
switch (source) {
case MessageSource::XML:
sourceString = "XML";
break;
case MessageSource::JS:
sourceString = "JS";
break;
case MessageSource::Network:
sourceString = "NETWORK";
break;
case MessageSource::ConsoleAPI:
sourceString = "CONSOLE";
break;
case MessageSource::Storage:
sourceString = "STORAGE";
break;
case MessageSource::AppCache:
sourceString = "APPCACHE";
break;
case MessageSource::Rendering:
sourceString = "RENDERING";
break;
case MessageSource::CSS:
sourceString = "CSS";
break;
case MessageSource::Security:
sourceString = "SECURITY";
break;
case MessageSource::Other:
sourceString = "OTHER";
break;
default:
ASSERT_NOT_REACHED();
sourceString = "UNKNOWN";
break;
}
const char* levelString;
switch (level) {
case MessageLevel::Debug:
levelString = "DEBUG";
break;
case MessageLevel::Log:
levelString = "LOG";
break;
case MessageLevel::Info:
levelString = "INFO";
break;
case MessageLevel::Warning:
levelString = "WARN";
break;
case MessageLevel::Error:
levelString = "ERROR";
break;
default:
ASSERT_NOT_REACHED();
levelString = "UNKNOWN";
break;
}
if (type == MessageType::Trace)
levelString = "TRACE";
else if (type == MessageType::Table)
levelString = "TABLE";
builder.append(sourceString);
builder.append(' ');
builder.append(levelString);
}
示例14: makeRFC2822DateString
// See http://tools.ietf.org/html/rfc2822#section-3.3 for more information.
String makeRFC2822DateString(unsigned dayOfWeek, unsigned day, unsigned month, unsigned year, unsigned hours, unsigned minutes, unsigned seconds, int utcOffset)
{
StringBuilder stringBuilder;
stringBuilder.append(weekdayName[dayOfWeek]);
stringBuilder.appendLiteral(", ");
stringBuilder.appendNumber(day);
stringBuilder.append(' ');
stringBuilder.append(monthName[month]);
stringBuilder.append(' ');
stringBuilder.appendNumber(year);
stringBuilder.append(' ');
stringBuilder.append(twoDigitStringFromNumber(hours));
stringBuilder.append(':');
stringBuilder.append(twoDigitStringFromNumber(minutes));
stringBuilder.append(':');
stringBuilder.append(twoDigitStringFromNumber(seconds));
stringBuilder.append(' ');
stringBuilder.append(utcOffset > 0 ? '+' : '-');
int absoluteUTCOffset = abs(utcOffset);
stringBuilder.append(twoDigitStringFromNumber(absoluteUTCOffset / 60));
stringBuilder.append(twoDigitStringFromNumber(absoluteUTCOffset % 60));
return stringBuilder.toString();
}
开发者ID:IllusionRom-deprecated,项目名称:android_platform_external_chromium_org_third_party_WebKit,代码行数:27,代码来源:DateMath.cpp
示例15: serialize
void CSSParserToken::serialize(StringBuilder& builder) const
{
// This is currently only used for @supports CSSOM. To keep our implementation
// simple we handle some of the edge cases incorrectly (see comments below).
switch (type()) {
case IdentToken:
serializeIdentifier(value(), builder);
break;
case FunctionToken:
serializeIdentifier(value(), builder);
return builder.append('(');
case AtKeywordToken:
builder.append('@');
serializeIdentifier(value(), builder);
break;
case HashToken:
// This will always serialize as a hash-token with 'id' type instead of
// preserving the type of the input.
builder.append('#');
serializeIdentifier(value(), builder);
break;
case UrlToken:
builder.append("url(");
serializeIdentifier(value(), builder);
return builder.append(")");
case DelimiterToken:
if (delimiter() == '\\')
return builder.append("\\\n");
return builder.append(delimiter());
case NumberToken:
// These won't properly preserve the NumericValueType flag
return builder.appendNumber(numericValue());
case PercentageToken:
builder.appendNumber(numericValue());
return builder.append('%');
case DimensionToken:
// This will incorrectly serialize e.g. 4e3e2 as 4000e2
builder.appendNumber(numericValue());
serializeIdentifier(value(), builder);
break;
case UnicodeRangeToken:
return builder.append(String::format("U+%X-%X", unicodeRangeStart(), unicodeRangeEnd()));
case StringToken:
return serializeString(value(), builder);
case IncludeMatchToken:
return builder.append("~=");
case DashMatchToken:
return builder.append("|=");
case PrefixMatchToken:
return builder.append("^=");
case SuffixMatchToken:
return builder.append("$=");
case SubstringMatchToken:
return builder.append("*=");
case ColumnToken:
return builder.append("||");
case CDOToken:
return builder.append("<!--");
case CDCToken:
return builder.append("-->");
case BadStringToken:
return builder.append("'\n");
case BadUrlToken:
return builder.append("url(()");
case WhitespaceToken:
return builder.append(' ');
case ColonToken:
return builder.append(':');
case SemicolonToken:
return builder.append(';');
case CommaToken:
return builder.append(',');
case LeftParenthesisToken:
return builder.append('(');
case RightParenthesisToken:
return builder.append(')');
case LeftBracketToken:
return builder.append('[');
case RightBracketToken:
return builder.append(']');
case LeftBraceToken:
return builder.append('{');
case RightBraceToken:
return builder.append('}');
case EOFToken:
case CommentToken:
ASSERT_NOT_REACHED();
return;
}
}