QString QsCodeMarker::markedUpName( const Node *node ) { QString name = linkTag( node, taggedNode(node) ); if ( node->type() == Node::Function ) name += "()"; return name; }
QString QmlCodeMarker::markedUpName(const Node *node) { QString name = linkTag(node, taggedNode(node)); if (node->type() == Node::QmlMethod) name += "()"; return name; }
shared_ptr<HtmlLinkTag> HtmlLinkTag::create(const String &rel, const String &href) { shared_ptr<HtmlLinkTag> linkTag(OS_NEW HtmlLinkTag()); linkTag->setRel(rel); linkTag->setHref(href); return linkTag; }
QString JavaCodeMarker::markedUpName( const Node *node ) { return linkTag(node, taggedNode(node)); }
QString QsCodeMarker::markedUpSynopsis( const Node *node, const Node * /* relative */, SynopsisStyle style ) { QString synopsis; QStringList extras; QString name; name = taggedNode( node ); if ( style != Detailed ) name = linkTag( node, name ); name = "<@name>" + name + "</@name>"; if ( style == Detailed && !node->parent()->name().isEmpty() && node->type() != Node::Enum ) name.prepend( taggedNode(node->parent()) + "." ); switch ( node->type() ) { case Node::Class: synopsis = "class " + name; break; case Node::Function: { const FunctionNode *func = (const FunctionNode *) node; synopsis = name; if ( style == SeparateList ) { synopsis += "()"; } else { synopsis += " ("; if ( !func->parameters().isEmpty() ) { synopsis += " "; int numOptional = 0; QList<Parameter>::ConstIterator p = func->parameters().begin(); while ( p != func->parameters().end() ) { if ( !(*p).defaultValue().isEmpty() ) { if ( p == func->parameters().begin() ) { synopsis += "[ "; } else { synopsis += " [ , "; } numOptional++; } else { if ( p != func->parameters().begin() ) synopsis += ", "; } if ( !(*p).name().isEmpty() ) synopsis += "<@param>" + protect( (*p).name() ) + "</@param> : "; synopsis += protect( (*p).leftType() ); ++p; } for ( int i = 0; i < numOptional; i++ ) synopsis += " ]"; synopsis += " "; } synopsis += ")"; } if ( style != SeparateList && !func->returnType().isEmpty() ) synopsis += " : " + protect( func->returnType() ); if ( style == Detailed && func->metaness() == FunctionNode::Signal ) extras << "[signal]"; } break; case Node::Property: { const PropertyNode *property = (const PropertyNode *) node; synopsis = name; if ( style != SeparateList ) synopsis += " : " + property->dataType(); if ( style == Detailed && property->setters().isEmpty() ) extras << "[read only]"; } break; case Node::Enum: { /* The letters A to F and X (upper- and lower-case) can appear in a hexadecimal constant (e.g. 0x3F). */ QRegExp letterRegExp( "[G-WYZg-wyz_]" ); const EnumNode *enume = (const EnumNode *) node; synopsis = name; if ( style == Summary && !enume->items().isEmpty() ) { synopsis += " : "; QString comma; QList<EnumItem>::ConstIterator it = enume->items().begin(); while ( it != enume->items().end() ) { if ( enume->itemAccess((*it).name()) == Node::Public ) { synopsis += comma; synopsis += (*it).name(); if ( (*it).value().indexOf(letterRegExp) != -1 ) synopsis += " = " + (*it).value(); comma = ", "; } ++it; } } } break; case Node::Namespace: case Node::Typedef: default: synopsis = name; } if ( style == Summary ) { if ( node->status() == Node::Preliminary ) { extras << "(preliminary)"; } else if ( node->status() == Node::Deprecated ) { extras << "(deprecated)"; } else if ( node->status() == Node::Obsolete ) { extras << "(obsolete)"; } } QString extra; if ( !extras.isEmpty() ) extra = "<@extra>" + extras.join(" ") + "</@extra>"; return synopsis + extra; }
string CHtml::cssFile(const string & url, const string & media) { return linkTag("stylesheet", "text/css", url, media); }
QString CppCodeMarker::markedUpSynopsis(const Node *node, const Node * /* relative */, SynopsisStyle style) { const int MaxEnumValues = 6; const FunctionNode *func; const PropertyNode *property; const VariableNode *variable; const EnumNode *enume; const TypedefNode *typedeff; QString synopsis; QString extra; QString name; name = taggedNode(node); if (style != Detailed) name = linkTag(node, name); name = "<@name>" + name + "</@name>"; if (style == Detailed && !node->parent()->name().isEmpty() && node->type() != Node::Property) name.prepend(taggedNode(node->parent()) + "::"); switch (node->type()) { case Node::Namespace: synopsis = "namespace " + name; break; case Node::Class: synopsis = "class " + name; break; case Node::Function: func = (const FunctionNode *) node; if (style != SeparateList && !func->returnType().isEmpty()) synopsis = typified(func->returnType()) + " "; synopsis += name; if (func->metaness() != FunctionNode::MacroWithoutParams) { synopsis += " ("; if (!func->parameters().isEmpty()) { synopsis += " "; QList<Parameter>::ConstIterator p = func->parameters().begin(); while (p != func->parameters().end()) { if (p != func->parameters().begin()) synopsis += ", "; synopsis += typified((*p).leftType()); if (style != SeparateList && !(*p).name().isEmpty()) synopsis += " <@param>" + protect((*p).name()) + "</@param>"; synopsis += protect((*p).rightType()); if (style != SeparateList && !(*p).defaultValue().isEmpty()) synopsis += " = " + protect((*p).defaultValue()); ++p; } synopsis += " "; } synopsis += ")"; } if (func->isConst()) synopsis += " const"; if (style == Summary || style == Accessors) { if (func->virtualness() != FunctionNode::NonVirtual) synopsis.prepend("virtual "); if (func->virtualness() == FunctionNode::PureVirtual) synopsis.append(" = 0"); } else if (style == SeparateList) { if (!func->returnType().isEmpty() && func->returnType() != "void") synopsis += " : " + typified(func->returnType()); } else { QStringList bracketed; if (func->isStatic()) { bracketed += "static"; } else if (func->virtualness() != FunctionNode::NonVirtual) { if (func->virtualness() == FunctionNode::PureVirtual) bracketed += "pure"; bracketed += "virtual"; } if (func->access() == Node::Protected) { bracketed += "protected"; } else if (func->access() == Node::Private) { bracketed += "private"; } if (func->metaness() == FunctionNode::Signal) { bracketed += "signal"; } else if (func->metaness() == FunctionNode::Slot) { bracketed += "slot"; } if (!bracketed.isEmpty()) extra += " [" + bracketed.join(" ") + "]"; } break; case Node::Enum: enume = static_cast<const EnumNode *>(node); synopsis = "enum " + name; if (style == Summary) { synopsis += " { "; QStringList documentedItems = enume->doc().enumItemNames(); if (documentedItems.isEmpty()) { foreach (const EnumItem &item, enume->items()) documentedItems << item.name(); } QStringList omitItems = enume->doc().omitEnumItemNames(); foreach (const QString &item, omitItems) documentedItems.removeAll(item); if (documentedItems.size() <= MaxEnumValues) { for (int i = 0; i < documentedItems.size(); ++i) { if (i != 0) synopsis += ", "; synopsis += documentedItems.at(i); } } else { for (int i = 0; i < documentedItems.size(); ++i) { if (i < MaxEnumValues - 2 || i == documentedItems.size() - 1) { if (i != 0) synopsis += ", "; synopsis += documentedItems.at(i); } else if (i == MaxEnumValues - 1) { synopsis += ", ..."; } } } if (!documentedItems.isEmpty()) synopsis += " "; synopsis += "}"; }