private string ToCaseDesc(XPathRuleItem ruleItem) { foreach (var kv in ruleItem.namePatternFormats) { if (string.IsNullOrEmpty(kv.caseformat)) { continue; } if (Regex.IsMatch(eventName, kv.pattern, RegexOptions.IgnoreCase)) { string format = kv.caseformat; if (Regex.IsMatch(format, @"\$\d+")) { format = Regex.Replace(eventName, kv.pattern, kv.caseformat); } if (format.Contains("eventname")) { return(UtilWxg.ReplaceKeyValue(kv.caseformat, "eventname", eventName)); } else { return(format); } } } return(UtilWxg.ReplaceKeyValue(ruleItem.caseDescFormat, "eventname", eventName)); }
public void Export(string resultFolder) { string caseFileName = Config.GetAppSettingValue("caseFileName"); caseFileName = UtilWxg.ReplaceKeyValue(caseFileName, "title", titleText); caseFileName = UtilWxg.ReplaceKeyValue(caseFileName, "filename", this.FileName); string[] lines = listNode.Select(ci => ci.ToStringLine()).ToArray(); string exportFolder = Config.GetAppSettingValue2("exportFolder", "exportText"); if (!exportFolder.EndsWith("\\")) { exportFolder = exportFolder + "\\"; } if (!Directory.Exists(exportFolder)) { Directory.CreateDirectory(exportFolder); } exportFolder = exportFolder + resultFolder + "\\"; if (!Directory.Exists(exportFolder)) { Directory.CreateDirectory(exportFolder); } exportFile = exportFolder + caseFileName; File.WriteAllLines(exportFile, lines); }
public void ToCaseDesc(XPathRuleItem ruleItem, HtmlNode node) { if (ruleItem.name.Contains("sortlink")) { if (node.OuterHtml.Contains("ASC")) { eventText = string.Format(ruleItem.eventText, eventName, "△"); caseDesc = ToCaseDesc(ruleItem); caseDesc = UtilWxg.ReplaceKeyValue(caseDesc, "sorttype", "昇順"); } else { eventText = string.Format(ruleItem.eventText, eventName, "▽"); caseDesc = ToCaseDesc(ruleItem); caseDesc = UtilWxg.ReplaceKeyValue(caseDesc, "sorttype", "降順"); } return; } if (ruleItem.name.Contains("calender")) { if (eventKey.EndsWith("_S")) { eventName = eventName + " 開始"; } else if (eventKey.EndsWith("_E")) { eventName = eventName + " 終了"; } this.eventText = ToEventText(ruleItem); this.caseDesc = ToCaseDesc(ruleItem); return; } if (ruleItem.name.Contains("select") || ruleItem.name.Contains("tabpage")) { //初期表示:DropList this.eventText = ToEventText(ruleItem); this.caseDesc = ToCaseDesc(ruleItem); return; } this.eventText = ToEventText(ruleItem); if (!string.IsNullOrEmpty(this.eventName) && ruleItem.caseMap.ContainsKey(this.eventName)) { this.caseDesc = ruleItem.caseMap[this.eventName]; } else { this.caseDesc = ToCaseDesc(ruleItem); } }
private void GetTitle() { if (string.IsNullOrEmpty(title)) { var ns = htmlDoc.DocumentNode.SelectNodes("//title"); if (ns != null) { title = ns.First().InnerText; title = WebUtility.HtmlDecode(title); titleText = UtilWxg.GetMatchGroup(title, @"\>(\w+)", 1); } } }
public CaseFile(string htmlPath) { this.htmlDoc = new HtmlDocument(); this.htmlDoc.Load(File.OpenRead(htmlPath), true); this.subFileName = UtilWxg.GetMatchGroup(htmlPath, subFilePathSetting, 1); FileInfo fi = new FileInfo(htmlPath); this.FileName = UtilWxg.GetMatchGroup(fi.Name, @"(.+)\.\w+$", 1); GetTitle(); }
public void refresh(XPathRuleItem ruleItem, HtmlNode node) { Console.WriteLine("ruleItem:" + ruleItem.name); setEventKeyByAttr(ruleItem, node); Console.WriteLine("eventKey:" + this.eventKey); setEventNameByAttr(ruleItem, node); if (string.IsNullOrEmpty(this.eventName) || !Regex.IsMatch(eventName, @"\w+")) { if (!string.IsNullOrEmpty(this.eventKey)) { if (ruleItem.wordMap.ContainsKey(this.eventKey)) { this.eventName = ruleItem.wordMap[this.eventKey]; } else { this.eventName = this.eventKey; } } } else if (Regex.IsMatch(this.eventName, ptwords)) { this.eventName = UtilWxg.GetMatchGroup(this.eventName, ptwords, 1); } if (string.IsNullOrEmpty(this.eventName)) { if (node.FirstChild != null) { if (node.FirstChild.Name.Contains("#text")) { this.eventName = node.FirstChild.InnerText; } } } else if (ruleItem.wordMap.ContainsKey(this.eventName)) { this.eventName = ruleItem.wordMap[this.eventName]; } if (Regex.IsMatch(this.eventName, @"\n|\r")) { this.eventName = Regex.Replace(this.eventName, @"\n|\r", ""); } this.eventName = this.eventName.Trim(); Console.WriteLine("eventName:" + this.eventName); }
private static void LoadYmlRules <T>(List <T> items, string ruleFolderPath, string cmd) { if (!Directory.Exists(ruleFolderPath)) { return; } var deserializer = new Deserializer(); foreach (var filepath in Directory.GetFiles(ruleFolderPath)) { if (!Regex.IsMatch(filepath, ".(yml|yaml)$")) { continue; } using (StreamReader reader = File.OpenText(filepath)) { string name = UtilWxg.GetMatchGroup(filepath, @"\\*(\w+)\.\w+", 1); if (string.IsNullOrEmpty(cmd) || name.Equals(cmd)) { T item = deserializer.Deserialize <T>(reader); items.Add(item); FieldInfo fi = item.GetType().GetField("name"); fi.SetValue(item, name); } } } DirectoryInfo di = new DirectoryInfo(ruleFolderPath); foreach (var sdi in di.GetDirectories()) { LoadYmlRules(items, sdi.FullName, cmd); } }
static void Main(string[] args) { //args check //============================================================== if (args.Length < 2) { Console.WriteLine("TextConv [-p PATTERN] [-r REPLACEMENT] [-d srcfolder] [-f srcfile]"); Console.WriteLine("TextConv [-c COMMAND_KEY] [-x XPATH] [-d srcfolder] [-f srcfile]"); return; } string cmd = getValue("-c", args); string srcfolder = getValue("-d", args); if (string.IsNullOrEmpty(srcfolder)) { srcfolder = Config.GetAppSettingValue("srcfolder"); } resultFolder = UtilWxg.GetMatchGroup(srcfolder, @"(\w+)\\*$", 1); string srcFile = getValue("-f", args); if (string.IsNullOrEmpty(srcfolder) && string.IsNullOrEmpty(srcFile)) { Console.WriteLine("App.config setting srcfolder is required."); return; } //============================================================== if (args.Contains("-x")) { List <XPathRuleItem> rules = new List <XPathRuleItem>(); string ruleFolderPath = Config.GetAppSettingValue("xpath.rule.yml"); LoadYmlRules(rules, ruleFolderPath, cmd); HtmlParseFolder(srcfolder, rules); HtmlParseFile(srcFile, rules); } //============================================================== if (args.Contains("-c") || args.Contains("-p")) { List <ReplaceRule> repRules = new List <ReplaceRule>(); string ruleFolderPath = Config.GetAppSettingValue("replace.rule.yml"); LoadYmlRules(repRules, ruleFolderPath, cmd); ReplaceRuleItem ri = new ReplaceRuleItem(); ri.pattern = getValue("-p", args); ri.replacement = getValue("-r", args); if (!string.IsNullOrEmpty(ri.pattern)) { string content = getValue("-input", args); if (!string.IsNullOrEmpty(content)) { Console.WriteLine(ri.replaceText(content)); } else { ReplaceRule rule = new ReplaceRule(); rule.rules.Add(ri); repRules.Add(rule); } } ReplaceFolder(srcfolder, repRules); ReplaceFile(srcfolder, repRules); } }