/// <summary> /// Transforms each unit reference of the given <paramref name="unitReferenceSet"/> into a full qualified /// unit name. /// </summary> /// <param name="unitReferenceSet">Collection of unit references</param> /// <returns>Collection of full qualified unit names</returns> /// <exception cref="BuddyCompilerException">If a unit name could not be found</exception> private string[] ToQualifiedUnitNames(string[] unitReferenceSet) { if (unitReferenceSet == null) { return(new string[0]); } if (unitReferenceSet.Length == 0) { return(new string[0]); } IImportPathProvider importPathProvider = ImportPathProvider; string[] qualifiedUnitNames = new string[unitReferenceSet.Length]; for (int i = -1; ++i != unitReferenceSet.Length;) { string unitReference = unitReferenceSet[i].Replace('_', ' '); UnitName unitName = importPathProvider.GetUnitName(unitReference); if (unitName == null) { throw new BuddyCompilerException($"There is no unit registered for the given reference '{unitReference}'"); } string qualifiedUnitName = unitName.ToQualifiedString(); qualifiedUnitNames[i] = qualifiedUnitName; } return(qualifiedUnitNames); }
/// <summary> /// Creates a new instance that operates with the given <paramref name="importPathProvider"/>. /// </summary> /// <param name="importPathProvider">Import path provider</param> /// <exception cref="ArgumentNullException">If <paramref name="importPathProvider"/> is NULL</exception> public UnitBundler(IImportPathProvider importPathProvider) { if (importPathProvider == null) { throw new ArgumentNullException("importPathProvider"); } iImportPathProvider = importPathProvider; }
/// <summary> /// Creates a new instance. /// </summary> /// <exception cref="BuddyCompilerException"/> public BuddyCompiler() { try { _buddyTextProcessor = new BuddyTextProcessor(); _instructionTranslator = new InstructionTranslator(); _importPathProvider = NullImportPathProvider.Instance; } catch (Exception ex) { throw new BuddyCompilerException("Error on initializing Buddy Compiler", ex); } }