95 lines
2.7 KiB
C#
95 lines
2.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace SaveWizard_rewritten
|
|
{
|
|
static class RegexHandler
|
|
{
|
|
private static List<string> lines;
|
|
|
|
public static void FillLines(List<string> _lines)
|
|
{
|
|
lines = _lines;
|
|
}
|
|
|
|
public static string GetLine(int index)
|
|
{
|
|
return lines[index];
|
|
}
|
|
|
|
public static List<string> GetAllLines()
|
|
{
|
|
return lines;
|
|
}
|
|
|
|
public static int SearchLine(string term, int start = 0, string cancel = "this_string_must_not_exist")
|
|
{
|
|
if (lines[start].Contains(term))
|
|
return start;
|
|
start += 1;
|
|
while (start <= (lines.Count-1)) {
|
|
if (lines[start].Contains(term))
|
|
return start;
|
|
if (lines[start].Contains(cancel))
|
|
return 0;
|
|
start += 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
public static int SearchLineInUnit(string term, string unit)
|
|
{
|
|
return SearchLine(term, start: SearchLine(" : " + unit + " {"), cancel: "}");
|
|
}
|
|
|
|
public static List<int> SearchAllLines(string term)
|
|
{
|
|
List<int> matches = new List<int>();
|
|
int line = 0;
|
|
while (SearchLine(term, start: line + 1) != 0)
|
|
{
|
|
line = SearchLine(term, start: line + 1);
|
|
matches.Add(line);
|
|
}
|
|
if (matches.Count == 0)
|
|
return null;
|
|
return matches;
|
|
}
|
|
|
|
public static string GetValue(int line)
|
|
{
|
|
return Regex.Match(": (.+)$", lines[line]).Value;
|
|
}
|
|
|
|
public static void SetValue(int line, string value)
|
|
{
|
|
string name = Regex.Match("(.+):", lines[line]).Value;
|
|
lines[line] = $"{name}: {value}";
|
|
}
|
|
|
|
public static int GetArrayLength(int line)
|
|
{
|
|
return Convert.ToInt32(Regex.Match(": ([0-9]+)$", lines[line]).Value);
|
|
}
|
|
|
|
public static List<string> GetArrayItems(int line)
|
|
{
|
|
List<string> items = new List<string>();
|
|
for (int i = 0; i < GetArrayLength(line); i++)
|
|
items.Add(Regex.Match(": (.+)$", lines[line + i + 1]).Value);
|
|
if (items.Count == 0)
|
|
return null;
|
|
return items;
|
|
}
|
|
|
|
public static void AddArrayValue(int line, string value)
|
|
{
|
|
string name = Regex.Match("(.+):", lines[line]).Value;
|
|
int length = GetArrayLength(line);
|
|
lines[line] = $"{name}: {length + 1}";
|
|
lines.Insert(line + length + 1, $"{name}[{length}]: {value}");
|
|
}
|
|
}
|
|
}
|