public bool HasFile(RefFilename file) { var f = new RefFilename(file.ToRelativeFilename(), this == Core.Instance.BaseCK3Library); if (FileMap.ContainsKey(f)) { return(true); } return(false); }
public ScriptContext GetContextFromDirectory(RefFilename dir) { var res = BaseCK3Library.ContextData .Where(a => a.Value.Directory != null && dir.ToRelativeFilename().StartsWith(a.Value.Directory)) .ToList(); if (res.Any()) { return(res[0].Key); } return(ScriptContext.Event); }
public ScriptFile GetFile(RefFilename file) { var f = new RefFilename(file.ToRelativeFilename(), this == Core.Instance.BaseCK3Library); if (FileMap.ContainsKey(f)) { return(FileMap[f]); } if (Parent != null) { return(Parent.GetFile(file)); } return(null); }
public bool AddFile(RefFilename file) { var f = new ScriptFile(); f.Filename = new RefFilename(file.ToRelativeFilename(), this == Core.Instance.BaseCK3Library); var l = Core.Instance.BaseCK3Library.ContextData.Where(a => a.Value.Directory != null && f.Filename.ToRelativeDirectoryOfFile().Contains(a.Value.Directory)); if (l.Count() == 0) { return(false); } f.Context = l.First().Key; FileMap[file] = f; return(true); }
public List <ScriptObject> LoadText(string text, RefFilename filename, ScriptContext context, bool save = false) { ScriptNamespace = ""; var results = new List <ScriptObject>(); file = Core.Instance.LoadingCK3Library.EnsureFile(filename, context); var lines = text.Split('\n'); var lineNumbers = new List <int>(); var tokens = new List <string>(); var index = 0; for (var i = 0; i < lines.Length; i++) { var line = lines[i]; line = line.Trim(); index++; if (line.Contains("debug_log")) { continue; } if (line.Trim().StartsWith("#")) { continue; } var line2 = line; if (line.Length == 0) { continue; } if (line2 == "name = \"Abdallah\" #ibn Muhammad\"") { } if (line2.Contains("\"") && (line2.IndexOf("\"") < line2.IndexOf("#") || line2.IndexOf("#") == -1)) { var ll = line2; var after = ""; while (ll.Contains("\"")) { if (ll.Contains("\"") && (ll.IndexOf("\"") < ll.IndexOf("#") || ll.IndexOf("#") == -1)) { var s = ll.IndexOf("\""); var e = ll.IndexOf("\"", s + 1); var l = e - s; var before = ll.Substring(0, s); var str = ll.Substring(s + 1, l - 1); after = ll.Substring(e + 1); TokenizeLine(before.Trim(), tokens); tokens.Add("\"" + str + "\""); lineNumbers.Add(index); ll = after; } else { ll = ll.Substring(0, ll.IndexOf("#")).Trim(); } } TokenizeLine(after.Trim(), tokens); while (lineNumbers.Count < tokens.Count) { lineNumbers.Add(index); } } else { TokenizeLine(line2, tokens); while (lineNumbers.Count < tokens.Count) { lineNumbers.Add(index); } } } if (tokens.Count == 0) { return(results); } var parsableResults = ParseTokens(tokens, lineNumbers, filename); if (save) { SaveBinary(parsableResults, context, filename.ToRelativeFilename()); } ParseResults(null, parsableResults, context, results); return(results); }