public bool TryGetReference(string uid, out ReferenceViewModel vm) { ReferenceViewModel result = null; ReferenceViewModelCacheItem ci; if (_cache.TryFind(x => x.Block.TryGetValue(uid, out result), out ci)) { vm = result; return(true); } foreach (var reader in Readers) { var entries = reader.GetInternal(uid); if (entries == null) { continue; } foreach (var entry in entries) { ci = new ReferenceViewModelCacheItem(entry.PackageFile, entry.EntryName, entry.Content); _cache.Access(ci); if (ci.Block.TryGetValue(uid, out vm)) { return(true); } } } vm = null; return(false); }
public bool TryGetReference(string uid, out ReferenceViewModel vm) { vm = null; var entries = GetInternal(uid); if (entries == null) { return false; } vm = (from entry in entries from item in entry.Content where item.Uid == uid select item).FirstOrDefault(); return vm != null; }
public bool TryGetReference(string uid, out ReferenceViewModel vm) { vm = null; var entries = GetInternal(uid); if (entries == null) { return(false); } vm = (from entry in entries from item in entry.Content where item.Uid == uid select item).FirstOrDefault(); return(vm != null); }
public static ApiReferenceBuildOutput FromModel(ReferenceViewModel vm, string[] supportedLanguages) { if (vm == null) return null; // TODO: may lead to potential problems with have vm.Additional["syntax"] as SyntaxDetailViewModel // It is now working as syntax is set only in FillReferenceInformation and not from YAML deserialization var result = new ApiReferenceBuildOutput { Uid = vm.Uid, Id = Utility.GetHtmlId(vm.Uid), Parent = vm.Parent, Definition = vm.Definition, IsExternal = vm.IsExternal, Href = vm.Href, Name = ApiBuildOutputUtility.TransformToLanguagePairList(vm.Name, vm.NameInDevLangs, supportedLanguages), NameWithType = ApiBuildOutputUtility.TransformToLanguagePairList(vm.NameWithType, vm.NameWithTypeInDevLangs, supportedLanguages), FullName = ApiBuildOutputUtility.TransformToLanguagePairList(vm.FullName, vm.FullNameInDevLangs, supportedLanguages), Spec = GetSpecNames(ApiBuildOutputUtility.GetXref(vm.Uid, vm.Name, vm.FullName), supportedLanguages, vm.Specs), Metadata = vm.Additional, }; object syntax; if (result.Metadata.TryGetValue("syntax", out syntax)) { result.Syntax = ApiSyntaxBuildOutput.FromModel(syntax as SyntaxDetailViewModel, supportedLanguages); result.Metadata.Remove("syntax"); } return result; }
private void RebuildReference() { var references = GetReferences(); foreach (var model in GetViewModels()) { bool dirty = false; // Add references for exceptions var types = from i in model.Item2.Items where i.Exceptions != null from e in i.Exceptions select e.Type; HashSet<string> set = new HashSet<string>(model.Item2.References.Select(r => r.Uid)); foreach (var type in types) { if (set.Add(type)) { ReferenceViewModel reference; if (!references.TryGetValue(type, out reference)) { reference = references[type] = new ReferenceViewModel() { Uid = type }; } model.Item2.References.Add(reference); dirty = true; } } if (dirty) { Console.WriteLine($"Rebuilding references: {model.Item1}"); YamlUtility.Serialize(model.Item1, model.Item2, YamlMime.ManagedReference); } } }