Example #1
0
        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);
        }
Example #4
0
        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;
        }
Example #5
0
        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);
                }
            }
        }