private void RemoveNonAlphanumericals(bool isSource, List <string> normalizedAlphaList) { var thoAndDecSeparators = new List <string>(); if (isSource) { thoAndDecSeparators.AddRange(VerificationSettings.GetSourceThousandSeparators()); thoAndDecSeparators.AddRange(VerificationSettings.GetSourceDecimalSeparators()); } else { thoAndDecSeparators.AddRange(VerificationSettings.GetTargetThousandSeparators()); thoAndDecSeparators.AddRange(VerificationSettings.GetTargetDecimalSeparators()); } thoAndDecSeparators.RemoveAll(string.IsNullOrEmpty); var forRemoval = new List <string>(); foreach (var item in normalizedAlphaList) { var itemWoSeparators = item; thoAndDecSeparators.ForEach(sep => itemWoSeparators = itemWoSeparators.Replace(sep, "")); var unitsOfMeasurement = "(^(?![A-Za-z]))\\d+[a-z]+$"; if (Regex.Match(itemWoSeparators, unitsOfMeasurement).Success || int.TryParse(itemWoSeparators, out _)) { forRemoval.Add(item); } } forRemoval.ForEach(item => normalizedAlphaList.Remove(item)); }
public List <ErrorReporting> Verify(ISegmentPair segmentPair, List <ExcludedRange> sourceExcludedRanges = null, List <ExcludedRange> targetExcludedRanges = null) { var errors = new List <ErrorReporting>(); if (!VerificationSettings.ReportNumberFormatErrors) { return(errors); } var sourceText = TextGenerator.GetPlainText(segmentPair.Source, false); var sourceNumberTokens = GetNumbersTokens(sourceText, VerificationSettings.GetSourceDecimalSeparators(), VerificationSettings.GetSourceThousandSeparators(), sourceExcludedRanges); var targetText = TextGenerator.GetPlainText(segmentPair.Target, false); var targetNumberTokens = GetNumbersTokens(targetText, VerificationSettings.GetTargetDecimalSeparators(), VerificationSettings.GetTargetThousandSeparators(), targetExcludedRanges); foreach (var numberToken in targetNumberTokens.Where(a => !a.Valid)) { errors.AddRange(GetErrorMessages(numberToken, false)); } return(errors); }
public override void CollectTypesInto(TranslationProcess translationProcess, SemanticModel semantics) { var classSymbol = semantics.GetDeclaredSymbol(this.OriginalNode as ClassDeclarationSyntax); // Should translate at all? var attributes = classSymbol.GetAttributes(); switch (VerificationSettings.ShouldVerify(attributes, translationProcess.Configuration.VerifyUnmarkedItems)) { case VerificationSetting.DoNotVerify: return; case VerificationSetting.Contradiction: return; } this.TypeIfCollected = translationProcess.AddToCollectedTypes(this, semantics); foreach (Sharpnode node in this.children) { // Collect fields if (node is FieldDeclarationSharpnode) { FieldDeclarationSharpnode fieldDeclaration = (FieldDeclarationSharpnode)node; var fieldSymbol = fieldDeclaration.GetSymbol(semantics); if (fieldSymbol.IsConst) { continue; // Constants are inlined. } if (fieldSymbol.IsStatic) { translationProcess.AddError(new Error(Diagnostics.SSIL108_FeatureNotSupported, node.OriginalNode, "static fields")); continue; } var typeSymbol = fieldSymbol.Type; Error error; this.TypeIfCollected.InstanceFields.Add( new CollectedField( translationProcess.IdentifierTranslator.RegisterAndGetIdentifier(((FieldDeclarationSharpnode)node).GetSymbol(semantics)), TypeTranslator.TranslateType(typeSymbol, node.OriginalNode, out error) )); if (error != null) { translationProcess.AddError(error); } } } }
public void Initialize(IDocumentProperties documentInfo) { _sourceMatchingThousandSeparators = string.Concat(VerificationSettings.GetSourceThousandSeparators()); _targetMatchingThousandSeparators = string.Concat(VerificationSettings.GetTargetThousandSeparators()); _sourceMatchingDecimalSeparators = string.Concat(VerificationSettings.GetSourceDecimalSeparators()); _targetMatchingDecimalSeparators = string.Concat(VerificationSettings.GetTargetDecimalSeparators()); _targetMatchingDecimalSeparators += VerificationSettings.TargetDecimalComma ? @"\u002C" : string.Empty; _targetMatchingDecimalSeparators += VerificationSettings.TargetDecimalPeriod ? @"\u002E" : string.Empty; _targetMatchingDecimalSeparators += VerificationSettings.TargetDecimalCustomSeparator ? VerificationSettings.GetTargetDecimalCustomSeparator : string.Empty; //used in NoSeparator method, we need the character chosed not the code. _sourceThousandSeparators += VerificationSettings.SourceThousandsSpace ? " " : string.Empty; _sourceThousandSeparators += VerificationSettings.SourceThousandsNobreakSpace ? " " : string.Empty; _sourceThousandSeparators += VerificationSettings.SourceThousandsThinSpace ? " " : string.Empty; _sourceThousandSeparators += VerificationSettings.SourceThousandsNobreakThinSpace ? " " : string.Empty; _sourceThousandSeparators += VerificationSettings.SourceThousandsComma ? "," : string.Empty; _sourceThousandSeparators += VerificationSettings.SourceThousandsPeriod ? "." : string.Empty; _sourceThousandSeparators += VerificationSettings.SourceThousandsCustomSeparator ? VerificationSettings.GetSourceThousandsCustomSeparator : string.Empty; _sourceDecimalSeparators += VerificationSettings.SourceDecimalComma ? "," : string.Empty; _sourceDecimalSeparators += VerificationSettings.SourceDecimalPeriod ? "." : string.Empty; _sourceDecimalSeparators += VerificationSettings.SourceDecimalCustomSeparator ? VerificationSettings.GetSourceDecimalCustomSeparator : string.Empty; _targetThousandSeparators += VerificationSettings.TargetThousandsSpace ? " " : string.Empty; _targetThousandSeparators += VerificationSettings.TargetThousandsNobreakSpace ? " " : string.Empty; _targetThousandSeparators += VerificationSettings.TargetThousandsThinSpace ? " " : string.Empty; _targetThousandSeparators += VerificationSettings.TargetThousandsNobreakThinSpace ? " " : string.Empty; _targetThousandSeparators += VerificationSettings.TargetThousandsComma ? "," : string.Empty; _targetThousandSeparators += VerificationSettings.TargetThousandsPeriod ? "." : string.Empty; _targetThousandSeparators += VerificationSettings.TargetThousandsCustomSeparator ? VerificationSettings.GetTargetThousandsCustomSeparator : string.Empty; _targetDecimalSeparators += VerificationSettings.TargetDecimalComma ? "," : string.Empty; _targetDecimalSeparators += VerificationSettings.TargetDecimalPeriod ? "." : string.Empty; _targetDecimalSeparators += VerificationSettings.TargetDecimalCustomSeparator ? VerificationSettings.GetSourceDecimalCustomSeparator : string.Empty; }
public override TranslationResult Translate(TranslationContext context) { var classSymbol = context.Semantics.GetDeclaredSymbol(this.OriginalNode as ClassDeclarationSyntax); // Should translate at all? var attributes = classSymbol.GetAttributes(); switch (VerificationSettings.ShouldVerify(attributes, context.VerifyUnmarkedItems)) { case VerificationSetting.DoNotVerify: return(TranslationResult.FromSilvernode(new SinglelineCommentSilvernode($"Class {classSymbol.GetQualifiedName()} skipped.", this.OriginalNode))); case VerificationSetting.Contradiction: return(TranslationResult.Error(this.OriginalNode, Diagnostics.SSIL113_VerificationSettingsContradiction)); } // Combine all members return(CommonUtils.GetHighlevelSequence(this.children.Select(child => child.Translate(context)))); }