blob: b71d611510a7f03d0cebd508538cf019879112a0 [file] [log] [blame]
library graphlib.layout.charted.label.add_text_label;
import "../util.dart" as util;
/// Attaches a text label to the specified root. Handles escape sequences.
addTextLabel(root, node) {
var domNode = root.append("text");
var lines = processEscapeSequences(node.label).split("\n");
for (var i = 0; i < lines.length; i++) {
domNode
.append("tspan")
.attr("xml:space", "preserve")
.attr("dy", "1em")
.attr("x", "1")
.text(lines[i]);
}
util.applyStyle(domNode, node.labelStyle);
return domNode;
}
processEscapeSequences(text) {
var newText = "",
escaped = false,
ch;
for (var i = 0; i < text.length; ++i) {
ch = text[i];
if (escaped) {
switch(ch) {
case "n": newText += "\n"; break;
default: newText += ch;
}
escaped = false;
} else if (ch == "\\") {
escaped = true;
} else {
newText += ch;
}
}
return newText;
}