diff --git a/src/AXSharp.compiler/src/ixr/Program.cs b/src/AXSharp.compiler/src/ixr/Program.cs index a0129977..c01e2824 100644 --- a/src/AXSharp.compiler/src/ixr/Program.cs +++ b/src/AXSharp.compiler/src/ixr/Program.cs @@ -83,7 +83,6 @@ void Generate(Options o) foreach (var syntaxTree in syntaxTrees) { IterateSyntaxTreeForStringLiterals(syntaxTree.GetRoot(),lw, Path.GetRelativePath(axProjectFolder, syntaxTree.Filename)); - IterateSyntaxTreeForPragmas(syntaxTree.GetRoot(), lw, Path.GetRelativePath(axProjectFolder, syntaxTree.Filename)); } @@ -93,12 +92,11 @@ void Generate(Options o) void IterateSyntaxTreeForStringLiterals(ISyntaxNode root, LocalizedStringWrapper lw, string fileName) { - //foreach (var literalSyntax in GetChildNodesRecursive(root).OfType()) - //{ - // var token = literalSyntax.Tokens.First(); - // //literalSyntax.Location - // AddToDictionaryIfLocalizedString(token,lw,fileName); - //} + foreach (var literalSyntax in GetChildNodesRecursive(root).OfType()) + { + var token = literalSyntax.Tokens.First(); + AddToDictionaryIfLocalizedStringInLiterals(literalSyntax, lw, fileName); + } } @@ -147,6 +145,44 @@ void AddToDictionaryIfLocalizedString(PragmaSyntax token, LocalizedStringWrapper } } } + +void AddToDictionaryIfLocalizedStringInLiterals(ILiteralSyntax literal, LocalizedStringWrapper lw, string fileName) +{ + // if is valid token + // if (IsStringLiteral(literal) || true) + { + foreach (var token in literal.Tokens) + { + + + // try to acquire localized string + var localizedStringList = lw.TryToGetLocalizedStrings(token.FullText); + + if (localizedStringList == null) + { + return; + } + + foreach (string localizedString in localizedStringList) + { + //get raw text from localized string + var rawText = lw.GetRawTextFromLocalizedString(localizedString); + + //create id + var id = AXSharp.Connector.Localizations.LocalizationHelper.CreateId(rawText); + + //check if identifier is valid + if (lw.IsValidId(id)) + { + var pos = token.Location.GetLineSpan().StartLinePosition; + var wrapper = new StringValueWrapper(rawText, fileName, pos.Line); + // add id and wrapper to dictionary + lw.LocalizedStringsDictionary.TryAdd(id, wrapper); + } + } + } + } +} bool IsPragmaToken(PragmaSyntax token) { //if(token.SyntaxKind == SyntaxKind.PragmaToken) @@ -168,6 +204,19 @@ bool IsStringToken(PragmaSyntax token) return false; } + +bool IsStringLiteral(ILiteralSyntax literal) +{ + if (literal.SyntaxKind == SyntaxKind.TypedStringDToken || + literal.SyntaxKind == SyntaxKind.TypedStringSToken || + literal.SyntaxKind == SyntaxKind.UntypedStringDToken || + literal.SyntaxKind == SyntaxKind.UntypedStringSToken) + { + return true; + } + return false; +} + IEnumerable GetChildNodesRecursive(ISyntaxNode syntaxNode) { yield return syntaxNode; diff --git a/src/AXSharp.compiler/src/ixr/Properties/launchSettings.json b/src/AXSharp.compiler/src/ixr/Properties/launchSettings.json index 2e3b1ae4..ede5cf37 100644 --- a/src/AXSharp.compiler/src/ixr/Properties/launchSettings.json +++ b/src/AXSharp.compiler/src/ixr/Properties/launchSettings.json @@ -9,7 +9,7 @@ }, "app-withref": { "commandName": "Project", - "workingDirectory": "c:\\W\\Develop\\gh\\inxton\\axopen.templates\\templates.simple\\app\\" + "workingDirectory": "c:\\W\\Develop\\gh\\inxton\\simatic-ax\\axopen.templates\\axopen.template.simple\\ax\\" } } } \ No newline at end of file