using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Text;
using System.Diagnostics;
using System.Linq;

namespace X03.PageElements.Notations.NotNestables
{

	public class Lf : PageElements.Notations.NotNestable, Plugin.PageElement, Plugin.Findable
	{
		override public void Accept(PageElementVisitor visitor)
		{
			visitor.Visit(this);
		}
		public override string ToHtml()
		{
			//TODO:ここでの置き換えは正しい?
			var str = String.Join("", this.Children.ConvertAll<string>(x => x.ToHtml()).ToArray());
			return Regex.Replace(str, Lf.Pattern, "<br />\n", RegexOptions.Singleline);
		}
		public override void InAction()
		{
			foreach (var child in this.Children)
				child.InAction();
		}
		override public string CreateTag()
		{
			return this.GetType().Name + ":" + "";
		}
		public float SimilarityTo(PageElement that)
		{
			return 1F;
		}
		static public void Merge(PageElement parent, List<PageElements.Plains.Plaintext> children, PageElements.Notations.NotNestables.Lf target)
		{
			target.Children.AddRange(children.Cast<PageElement>().ToList());
		}
		new public static string Pattern = @"\r\n|\r|\n";
		//override public Pattern? Pattern
		//{
		//    get { return new Pattern("", Lf._pattern + "+", ""); }
		//}
		public Lf(PageElement parent, List<PageElements.Plains.Plaintext> children)
			: base(parent, children)
		{
		}
	}

}