Skip to content

Commit 364f6ba

Browse files
Better argument splitting;
Fix a bug with re-referencing strings;
1 parent 1ea7d48 commit 364f6ba

File tree

4 files changed

+15
-4
lines changed

4 files changed

+15
-4
lines changed

XtractQuery/Parsers/Models/Argument.cs

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Diagnostics;
23
using System.Globalization;
34
using System.Linq;
45
using System.Text.RegularExpressions;

XtractQuery/Parsers/Models/Instruction.cs

+12-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace XtractQuery.Parsers.Models
99
class Instruction
1010
{
1111
private static readonly Regex ParseCheck = new Regex("\\$[pvxy]\\d+.*=.+\\(.*\\)");
12-
private static readonly Regex ArgumentSplit = new Regex(", *");
12+
private static readonly Regex ArgumentSplit = new Regex(".*?<[\\d]+>");
1313

1414
public int InstructionType { get; }
1515

@@ -96,7 +96,17 @@ private static string GetArgumentBody(string input)
9696

9797
private static IEnumerable<string> GetArguments(string argumentBody)
9898
{
99-
return ArgumentSplit.Split(argumentBody);
99+
var matches= ArgumentSplit.Matches(argumentBody);
100+
foreach (var matchValue in matches.Select(x=>x.Value))
101+
{
102+
if (matchValue.StartsWith(", "))
103+
{
104+
yield return matchValue.Substring(2);
105+
continue;
106+
}
107+
108+
yield return matchValue;
109+
}
100110
}
101111

102112
private static IDictionary<int, string> RoutineMap = new Dictionary<int, string>

XtractQuery/Parsers/StringWriter/BaseStringWriter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public long Write(string value)
4343
if (!string.IsNullOrEmpty(value) && _stringMap.Keys.Any(x => x.EndsWith(value)))
4444
{
4545
var element = _stringMap.First(x => x.Key.EndsWith(value));
46-
var internalPosition = element.Value.Item2 + element.Key.LastIndexOf(value, StringComparison.InvariantCulture);
46+
var internalPosition = element.Value.Item2 + SjisEncoding.GetByteCount(element.Key) - SjisEncoding.GetByteCount(value);
4747
_stringMap[value] = (CreateHash(value), internalPosition);
4848

4949
return internalPosition;

XtractQuery/Properties/launchSettings.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"profiles": {
33
"XtractQuery": {
44
"commandName": "Project",
5-
"commandLineArgs": "-o c -t xq32 -f D:\\Users\\Kirito\\Desktop\\party.xq.txt"
5+
"commandLineArgs": "-o e -t xq32 -f D:\\Users\\Kirito\\Desktop\\strinput.xq.txt.xq"
66
}
77
}
88
}

0 commit comments

Comments
 (0)