/// <summary> /// TikZのdraw文を読み込みTikZArrowを生成する。射が存在しない場合は空コレクションを返す /// </summary> /// <param name="text">draw文</param> /// <returns></returns> public static IEnumerable <TikZArrow> Create(string text) { var m = Construct.Match(text); if (m.Success && !m.Groups["arrow"].Value.Contains("|->") && !m.Groups["arrow"].Value.Contains("<-|") && !m.Groups["math"].Value.IsNullOrWhiteSpace()) { var math = m.Groups["math"].Value; var source = m.Groups["source"].Value; var target = m.Groups["target"].Value; foreach (var item in new MathObjectFactory(math).Create()) { if (m.Groups[1].Value.Contains("<-")) { yield return(new TikZArrow(item, target, source)); } else { yield return(new TikZArrow(item, source, target)); } } } }
/// <summary> /// TikZのnode文を読み込みTikZNodeを生成する。対象が存在しない場合はnullを返す /// </summary> /// <param name="text">node文</param> /// <returns></returns> public static TikZNode?Create(string text) { var m = Construct.Match(text); if (m.Success) { var name = m.Groups["name"].Value; var math = m.Groups["math"].Value; return(new TikZNode(name, new MathObjectFactory(math).CreateSingle())); } else { return(null); } }