public bool TryGetSymbolDefinitionByName(string name, out IntermediateSymbolDefinition symbolDefinition) { // First, look in the built-ins. symbolDefinition = SymbolDefinitions.ByName(name); if (symbolDefinition == null) { if (this.ExtensionData == null) { this.LoadExtensionData(); } // Second, look in the extensions. foreach (var data in this.ExtensionData) { if (data.TryGetSymbolDefinitionByName(name, out symbolDefinition)) { break; } } // Finally, look in the custom symbol definitions provided during an intermediate load. if (symbolDefinition == null) { this.CustomDefinitionByName.TryGetValue(name, out symbolDefinition); } } return(symbolDefinition != null); }
public void CanCreateFileSymbolByName() { var symbol = SymbolDefinitions.ByName("File").CreateSymbol(); Assert.IsType <FileSymbol>(symbol); Assert.Same(SymbolDefinitions.File, symbol.Definition); }
public void SymbolDefinitions_CheckDigitDecodings_ShouldReturnReciprocalEntriesForAllEncodings() { var symbols = new SymbolDefinitions(); var encodeMappings = symbols.CheckDigitEncodings; var decodeMappings = symbols.CheckDigitDecodings; foreach (var encodeMapping in encodeMappings) { var encodeValue = encodeMapping.Key; var encodeChar = encodeMapping.Value; var decodeValue = decodeMappings[encodeChar]; Assert.Equal(encodeValue, decodeValue); } }
public void SymbolDefinitions_CheckDigitEncodings_ShouldReturnAllDistinctEntries() { var result = new SymbolDefinitions().CheckDigitEncodings; Assert.Equal(result.Count, result.Select(s => s.Value).Distinct().Count()); }
public void SymbolDefinitions_CheckDigitEncodings_ShouldReturn37Entries() { var result = new SymbolDefinitions().CheckDigitEncodings; Assert.Equal(37, result.Count); }
public void SymbolDefinitions_ValueEncodings_ShouldReturn32Entries() { var result = new SymbolDefinitions().ValueEncodings; Assert.Equal(32, result.Count); }
public void DefineSymbol(ISymbol symbol, Location location) { var path = SymbolPath.ForSymbol(symbol ?? throw new ArgumentNullException(nameof(symbol))); SymbolDefinitions.Add(path, new SymbolDefinitionBuilder(path, symbol, location ?? throw new ArgumentNullException(nameof(location)))); }
public IntermediateSymbol CreateSymbol(IntermediateSection section, SourceLineNumber sourceLineNumbers, SymbolDefinitionType symbolType, Identifier identifier = null) { var symbolDefinition = SymbolDefinitions.ByType(symbolType); return(this.CreateSymbol(section, sourceLineNumbers, symbolDefinition, identifier)); }