Skip to content

Commit 3990848

Browse files
committed
use raw strings instead of addressables
1 parent 2e64c87 commit 3990848

File tree

3 files changed

+43
-67
lines changed

3 files changed

+43
-67
lines changed

Runtime/SassyPatching/Execution/AddressablesPatchLibrary.cs

Lines changed: 0 additions & 62 deletions
This file was deleted.

Runtime/SassyPatching/Execution/AddressablesPatchLibrary.cs.meta

Lines changed: 0 additions & 3 deletions
This file was deleted.

Runtime/SassyPatching/Execution/Universe.cs

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ public class Universe
3232
/// </summary>
3333
public static readonly Dictionary<string, PatchLibrary> AllManagedLibraries;
3434

35+
36+
/// <summary>
37+
/// This contains all the constant text based libraries that have been registered
38+
/// </summary>
39+
public static readonly Dictionary<string, string> AllRawLibraries = new();
40+
3541
private static List<string> _preloadedLabels;
3642

3743
static Universe()
@@ -141,6 +147,7 @@ public Universe(Action<ITextPatcher> registerPatcher, Action<string> errorLogger
141147
AllMods = allMods;
142148
MessageLogger("Setup universe!");
143149
SetupBasePriorities(allMods);
150+
LoadAllRawPatches();
144151
}
145152

146153
// TODO: Fix this so that other mods stages get their guids working
@@ -195,6 +202,40 @@ public void SyntaxError(TextWriter output, IRecognizer recognizer, int offending
195202
ErrorLogger.Invoke($"error lexing {File} - {line}:{charPositionInLine}: {msg}");
196203
}
197204
}
205+
206+
private void LoadAllRawPatches()
207+
{
208+
var tokenTransformer = new Transformer(msg => throw new LoadException(msg));
209+
foreach (var (id, raw) in AllRawLibraries)
210+
{
211+
try
212+
{
213+
MessageLogger.Invoke($"Loading library {id}");
214+
var charStream = CharStreams.fromString(raw);
215+
var lexerErrorGenerator = new LexerListener(id, ErrorLogger);
216+
var lexer = new sassy_lexer(charStream);
217+
lexer.AddErrorListener(lexerErrorGenerator);
218+
if (lexerErrorGenerator.Errored)
219+
throw new LoadException("lexer errors detected");
220+
var tokenStream = new CommonTokenStream(lexer);
221+
var parser = new sassy_parser(tokenStream);
222+
var parserErrorGenerator = new ParserListener(id, ErrorLogger);
223+
parser.AddErrorListener(parserErrorGenerator);
224+
if (parserErrorGenerator.Errored)
225+
throw new LoadException("parser errors detected");
226+
var patchContext = parser.patch();
227+
tokenTransformer.Errored = false;
228+
var patch = tokenTransformer.Visit(patchContext) as SassyPatch;
229+
var lib = new SassyPatchLibrary(patch);
230+
AllLibraries[id] = lib;
231+
}
232+
catch (Exception e)
233+
{
234+
ErrorLogger($"Could not load library: {id} due to: {e.Message}");
235+
}
236+
}
237+
}
238+
198239
/// <summary>
199240
/// Loads all patches from a directory
200241
/// </summary>
@@ -471,9 +512,9 @@ private void SetupBasePriorities(List<string> modLoadOrder)
471512
MessageLogger($"Last implicit global: {lastPost}");
472513
}
473514

474-
public static void RegisterAddressablesLibrary(string modId, string name, string key)
515+
public static void RegisterRawLibrary(string modId, string name, string raw)
475516
{
476-
AllManagedLibraries.Add($"{modId}:{name}", new AddressablesPatchLibrary(key));
517+
AllRawLibraries.Add($"{modId}:{name}", raw);
477518
}
478519
}
479520
}

0 commit comments

Comments
 (0)