Example #1
0
        /// <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));
                    }
                }
            }
        }
Example #2
0
        /// <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);
            }
        }