public XHtmlConverter(string srcFile, string templateFile, ConvertOptions opt) : base(srcFile, templateFile, opt) { var doc = XDocument.Load(srcFile); var headerNodes = doc.Descendants().Where(e => (e.Name.LocalName == "h1") || (e.Name.LocalName == "h2")); var h1Cnt = 0; //h1の個数・Identifierに使用する var h2Cnt = 0; //h2の個数・Identifierに使用する foreach (var header in headerNodes) { var ha = new HeaderAnchor(); var id = ""; if (header.Name.LocalName == "h1") //h1なら { //ヘッダ情報を作成する h1Cnt++; id = "h1-" + h1Cnt.ToString(); ha = new HeaderAnchor(1, id, header.Value); } else //h2なら { //ヘッダ情報を作成する h2Cnt++; id = "h2-" + h2Cnt.ToString(); ha = new HeaderAnchor(2, id, header.Value); } headerAnchors.Add(ha); //アンカーをリストに追加する header.SetAttributeValue("id", id); //ノードにidを設定する } doc.Save(templateFile); //テンプレートファイルに上書きする }
//hタグ/pタグ処理を行う public override void Process() { var outLines = new List <string>(); var h1Cnt = 0; //h1の個数・Identifierに使用する var h2Cnt = 0; //h2の個数・Identifierに使用する foreach (var line in lines) { //見出しか if (line.StartsWith("**") == true) //H2 { var str = line.TrimStart('*'); //行頭の*を削除する //ヘッダ情報を作成する var id = "h2-" + h2Cnt.ToString(); //id=h2-* var ha = new HeaderAnchor(2, id, str); headerAnchors.Add(ha); //タグをつけて帰す var outline = "<h2 id=\"" + id + "\">" + str + "</h2>"; //<h2 id="h2-3">string</h2> outLines.Add(outline); h2Cnt++; } else if (line.StartsWith("*") == true) //H1 { var str = line.TrimStart('*'); //行頭の*を削除する //ヘッダ情報を作成する var id = "h1-" + h1Cnt.ToString(); //id=h2-* var ha = new HeaderAnchor(1, id, str); headerAnchors.Add(ha); //タグをつけて帰す var outline = "<h1 id=\"" + id + "\">" + str + "</h1>"; //<h1 id="h1-3">string</h1> outLines.Add(outline); h1Cnt++; } else //pタグ { outLines.Add(AddPTagtoLine(line)); } } lines = outLines; }
//hタグ/pタグ処理を行う public override void Process() { var outLines = new List<string>(); var h1Cnt = 0; //h1の個数・Identifierに使用する var h2Cnt = 0; //h2の個数・Identifierに使用する foreach (var line in lines) { //見出しか if (line.StartsWith("**") == true) //H2 { var str = line.TrimStart('*'); //行頭の*を削除する //ヘッダ情報を作成する var id = "h2-" + h2Cnt.ToString(); //id=h2-* var ha = new HeaderAnchor(2, id, str); headerAnchors.Add(ha); //タグをつけて帰す var outline = "<h2 id=\""+id+"\">"+str+"</h2>"; //<h2 id="h2-3">string</h2> outLines.Add(outline); h2Cnt++; } else if (line.StartsWith("*") == true) //H1 { var str = line.TrimStart('*'); //行頭の*を削除する //ヘッダ情報を作成する var id = "h1-" + h1Cnt.ToString(); //id=h2-* var ha = new HeaderAnchor(1,id,str); headerAnchors.Add(ha); //タグをつけて帰す var outline = "<h1 id=\"" + id + "\">" + str + "</h1>"; //<h1 id="h1-3">string</h1> outLines.Add(outline); h1Cnt++; } else //pタグ { outLines.Add(AddPTagtoLine(line)); } } lines = outLines; }