/// <summary> /// Parameters to inline representation /// </summary> /// <param name="format">The format.</param> /// <returns></returns> public String ToString(styleFormat format = styleFormat.notSet) { if (format == styleFormat.notSet) { format = mainFormat; } StringBuilder sb = new StringBuilder(); String formatLine = GetPairFormat(format); foreach (var pair in parameters) { sb.AppendFormat(formatLine, pair.Key, pair.Value); } return(sb.ToString()); }
/// <summary> /// Gets the entry splitter. /// </summary> /// <param name="format">The format.</param> /// <returns></returns> public static String GetEntrySplitter(styleFormat format) { switch (format) { default: case styleFormat.htmlStyleFormat: case styleFormat.mxGraphStyleFormat: return(";"); break; case styleFormat.xmlAttribute: return(""); break; } }
/// <summary> /// Gets the pair format. /// </summary> /// <param name="format">The format.</param> /// <returns></returns> public static String GetPairFormat(styleFormat format) { switch (format) { default: case styleFormat.htmlStyleFormat: return("{0}:{1};"); case styleFormat.mxGraphStyleFormat: return("{0}={1};"); break; case styleFormat.xmlAttribute: return("{0}=\"{1}\" "); break; } }
/// <summary> /// Gets the pair regex. /// </summary> /// <param name="format">The format.</param> /// <returns></returns> public static Regex GetPairRegex(styleFormat format) { switch (format) { default: case styleFormat.xmlAttribute: return(REGEX_XmlAttribute); break; case styleFormat.htmlStyleFormat: return(REGEX_HTMLSTYLE); break; case styleFormat.mxGraphStyleFormat: return(REGEX_XMGRAPH); break; } }
/// <summary> /// Populates parameters from inline string values, given in <see cref="styleFormat"/> /// </summary> /// <param name="input">The input.</param> /// <param name="format">The format.</param> public void fromString(String input, styleFormat format = styleFormat.notSet) { if (format == styleFormat.notSet) { format = mainFormat; } if (USE_REGEX_FROMSTRING) { var rx = GetPairRegex(format); MatchCollection mch = rx.Matches(input); foreach (Match m in mch) { if (m.Success) { Set(m.Groups[1].Value, m.Groups[2].Value); } } } else { var entries = input.SplitSmart(GetEntrySplitter(format), "", true, true); foreach (var n in entries) { var pair = n.SplitSmart(GetKeyValueSplitter(format), "", true, true); if (parameters.ContainsKey(pair[0])) { parameters[pair[0]] = pair[1]; } else { parameters.Add(pair[0], pair[1]); } } } }
public inlineDictionary(styleFormat format) { mainFormat = format; }