public SecondlifeWikiLibraryData(IDocumentationProvider documentationProvider, IEnumerable <string> subsets) { _client = new CachedWebDownloader(WebCacheFileDirectory); _subsets = subsets.ToList(); Log.WriteLine("============================"); Log.WriteLine("Starting scrape of " + SecondlifeWikiDomain + " ... "); Log.WriteLine("============================"); foreach (var lslLibraryConstantSignature in GetLSLConstants()) { lslLibraryConstantSignature.DocumentationString = documentationProvider.DocumentConstant(lslLibraryConstantSignature); _constants.Add(lslLibraryConstantSignature.Name, lslLibraryConstantSignature); } foreach (var lslLibraryFunctionSignature in GetLSLFunctions()) { lslLibraryFunctionSignature.DocumentationString = documentationProvider.DocumentFunction(lslLibraryFunctionSignature); if (_functions.ContainsKey(lslLibraryFunctionSignature.Name)) { _functions[lslLibraryFunctionSignature.Name].Add(lslLibraryFunctionSignature); } else { _functions.Add(lslLibraryFunctionSignature.Name, new GenericArray <LSLLibraryFunctionSignature> { lslLibraryFunctionSignature }); } } foreach (var lslLibraryEventSignature in GetLSLEvents()) { lslLibraryEventSignature.DocumentationString = documentationProvider.DocumentEvent(lslLibraryEventSignature); _events.Add(lslLibraryEventSignature.Name, lslLibraryEventSignature); } Log.WriteLine("============================"); Log.WriteLine("Finished scrape of " + SecondlifeWikiDomain); Log.WriteLine("============================"); }
public LSLLibraryConstantSignature LSLConstant(string name) { if (!IncludeConstants) { return(null); } const BindingFlags bindingFlags = BindingFlags.Default | BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic; if (name == "GCDummy") { return(null); } foreach (var constantContrainerType in _scriptConstantContainerClasses) { var subsets = _subsetsMap[constantContrainerType]; var constant = constantContrainerType.GetField(name, bindingFlags); if (constant != null) { var type = LslTypeFromCsharpType(constant.FieldType); if (type != null) { var con = new LSLLibraryConstantSignature(type.Value, constant.Name, constant.GetValue(null).ToString()); con.DocumentationString = _documentationProvider.DocumentConstant(con); con.Subsets.SetSubsets(subsets); return(con); } Log.WriteLineWithHeader("[OpenSimLibraryDataReflector]: ", "constant {0} of {1}, type is an un-recognized data type ({2})", name, constantContrainerType.FullName, constant.Name); return(null); } Log.WriteLineWithHeader("[OpenSimLibraryDataReflector]: ", "constant {0} does not exist in {1}", name, constantContrainerType.FullName); } foreach (var constantContrainerType in _attributedScriptModuleClasses) { var subsets = _subsetsMap[constantContrainerType]; var constant = constantContrainerType.GetField(name, bindingFlags); if (constant == null) { Log.WriteLineWithHeader("[OpenSimLibraryDataReflector]: ", "constant {0} does not exist in {1}", name, constantContrainerType.FullName); return(null); } if (constant.GetCustomAttributes(ScriptModuleConstantAttribute, true).Any()) { continue; } var type = LslTypeFromCsharpType(constant.FieldType); if (type != null) { var con = new LSLLibraryConstantSignature(type.Value, constant.Name, constant.GetValue(null).ToString()); con.Expand = true; con.DocumentationString = _documentationProvider.DocumentConstant(con); con.Subsets.SetSubsets(subsets); return(con); } Log.WriteLineWithHeader("[OpenSimLibraryDataReflector]: ", "constant {0} of {1}, type is an un-recognized data type ({2})", name, constantContrainerType.FullName, constant.Name); return(null); } return(null); }