Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
267efd5
Prototype Scriban-based code generation
jods4 Mar 9, 2026
62fdae0
Remove #nullable enable pragma hack
jods4 Mar 9, 2026
83ee39f
Simplify XObjectsCoreGenerator
jods4 Mar 9, 2026
6736382
Cleanup before starting to work on refactoring
jods4 Mar 9, 2026
20864bb
Initiate POCO model
jods4 Mar 10, 2026
44b3dfd
XRoot and XRootNamespace should share template
jods4 Mar 10, 2026
1bb3cf2
Regen abstracttest to support diff testing
jods4 Mar 10, 2026
219f016
Merge regen'ed abstracttest reference file
jods4 Mar 10, 2026
9064133
Fully implemented TypeManager template
jods4 Mar 10, 2026
e8be1a9
Reviewed XRoot template
jods4 Mar 12, 2026
f2ad7f1
Tidy up TypeManager and XRoot templates
jods4 Mar 16, 2026
ac427cf
Upgrade Scriban
jods4 Mar 17, 2026
6d09601
Work on simple types
jods4 Mar 17, 2026
bf4acfe
Regenerate 3dps and LandXML for reference
jods4 Mar 24, 2026
0b3ce7c
Merge regen'ed 3dps and LandXML reference files
jods4 Mar 24, 2026
905f240
Remove loop limit because 1000 is not enough to render xsd code!!
jods4 Mar 24, 2026
6ca422e
Handle line breaks inside comments
jods4 Mar 24, 2026
3438682
Handle multiple namespaces
jods4 Mar 24, 2026
d05301b
Support for restriction facets
jods4 Mar 25, 2026
7fbe96d
Regenerate dtsx for reference
jods4 Mar 27, 2026
4e6b2f4
Merge regen'ed dtsx reference file
jods4 Mar 27, 2026
fc408d0
Complete work on simple types
jods4 Mar 27, 2026
8800127
Match filename with contained type
jods4 Mar 28, 2026
29fa656
Started working on elements
jods4 Mar 28, 2026
78f88fd
IXmlSerializable support
jods4 Mar 29, 2026
35c37c6
IXMetaData implementation, except content-related
jods4 Mar 29, 2026
7cbd354
Initial work on attributes
jods4 Mar 29, 2026
c19e532
Work on property getters
jods4 Mar 31, 2026
48e2e9c
Complete non-list property getter
jods4 Apr 1, 2026
ac274ec
Non-list setters (incl. validation)
jods4 Apr 4, 2026
1457738
List getter
jods4 Apr 6, 2026
00a22e2
List setter + some fixes in default values
jods4 Apr 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16,971 changes: 9,285 additions & 7,686 deletions GeneratedSchemaLibraries/3dps-1_0_0/3dps-all.xsd.cs

Large diffs are not rendered by default.

310 changes: 155 additions & 155 deletions GeneratedSchemaLibraries/AbstractTypeTest/abstracttest.xsd.cs

Large diffs are not rendered by default.

22,340 changes: 13,177 additions & 9,163 deletions GeneratedSchemaLibraries/DTSX/dtsx.xsd.cs

Large diffs are not rendered by default.

39,358 changes: 21,297 additions & 18,061 deletions GeneratedSchemaLibraries/LandXML/v1.2/LandXML-1.2.xsd.cs

Large diffs are not rendered by default.

5,733 changes: 5,733 additions & 0 deletions GeneratedSchemaLibraries/Microsoft Search/Microsoft.Search.Query.xsd.cs

Large diffs are not rendered by default.

28 changes: 13 additions & 15 deletions LinqToXsd/Program.GenerateCodeDispatcher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ internal static class GenerateCodeDispatcher
/// <summary>
/// Writes generated code for to multiple output files, inferred by <see cref="GenerateOptions.Output"/>.
/// </summary>
internal static void HandleWriteOutputToMultipleFiles(GenerateOptions options, Dictionary<string, TextWriter> textWriters)
internal static void HandleWriteOutputToMultipleFiles(GenerateOptions options, Dictionary<string, string> codeUnits)
{
var possibleOutputFolder = options.Output;

PrintLn($"Outputting {textWriters.Count} files...".Gray());
foreach (var kvp in textWriters)
PrintLn($"Outputting {codeUnits.Count} files...".Gray());
foreach (var kvp in codeUnits)
{
var outputFilename = Path.GetFileName(kvp.Key);
if (!outputFilename.EndsWith(".cs"))
Expand All @@ -44,11 +44,10 @@ internal static void HandleWriteOutputToMultipleFiles(GenerateOptions options, D

PrintLn($"{kvp.Key} => {outputFilePath}".Gray());

using (var outputFileStream = File.Open(outputFilePath, FileMode.Create, FileAccess.ReadWrite))
using (var fileWriter = new StreamWriter(outputFileStream))
{
fileWriter.Write(kvp.Value);
}
using var outputFileStream = File.Open(outputFilePath, FileMode.Create, FileAccess.ReadWrite);
using var fileWriter = new StreamWriter(outputFileStream);

fileWriter.Write(kvp.Value);
}
}

Expand All @@ -57,21 +56,20 @@ internal static void HandleWriteOutputToMultipleFiles(GenerateOptions options, D
/// </summary>
/// <param name="options"></param>
/// <param name="textWriters"></param>
internal static void HandleWriteOutputToSingleFile(GenerateOptions options, Dictionary<string, TextWriter> textWriters)
internal static void HandleWriteOutputToSingleFile(GenerateOptions options, Dictionary<string, string> codeUnits)
{
var outputFile = options.Output;
// add .cs extension to filename if it doesn't have it already.
var target = outputFile.EndsWith(".cs") ? outputFile : $"{outputFile}.cs";

var extractFileNameOnlyFunctor = new Func<string, string>(k => $"'{Path.GetFileName(k)}'");
PrintLn($"{textWriters.Keys.ToDelimitedString(extractFileNameOnlyFunctor).Yellow()}");
PrintLn($"{codeUnits.Keys.ToDelimitedString(extractFileNameOnlyFunctor).Yellow()}");
PrintLn($"\toutput to \n{target}");

using (var fileStream = File.Open(target, FileMode.Create, FileAccess.ReadWrite))
using (var fileWriter = new StreamWriter(fileStream, Encoding.UTF8))
{
foreach (var kvp in textWriters) fileWriter.Write(kvp.Value);
}
using var fileStream = File.Open(target, FileMode.Create, FileAccess.ReadWrite);
using var fileWriter = new StreamWriter(fileStream, Encoding.UTF8);

foreach (var kvp in codeUnits) fileWriter.Write(kvp.Value);
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion LinqToXsd/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ internal static void HandleGenerateCode(GenerateOptions generateOptions)

settings.EnableServiceReference = generateOptions.EnableServiceReference;

Dictionary<string, TextWriter> textWriters = generateOptions.AutoConfig
Dictionary<string, string> textWriters = generateOptions.AutoConfig
? XObjectsCoreGenerator.Generate(generateOptions.SchemaFiles, ProgramObserver)
: XObjectsCoreGenerator.Generate(generateOptions.SchemaFiles, settings, ProgramObserver);

Expand Down
24 changes: 24 additions & 0 deletions LinqToXsd/Properties/launchSettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -91,12 +91,36 @@
"workingDirectory": "..\\GeneratedSchemaLibraries\\AkomaNtoso",
"hotReloadEnabled": false
},
"3dps": {
"commandName": "Project",
"commandLineArgs": "gen \"3dps-all.xsd\" -a",
"workingDirectory": "..\\GeneratedSchemaLibraries\\3dps-1_0_0",
"hotReloadEnabled": false
},
"AbstractTypeTest": {
"commandName": "Project",
"commandLineArgs": "gen \"abstracttest.xsd\" -a",
"workingDirectory": "..\\GeneratedSchemaLibraries\\AbstractTypeTest",
"hotReloadEnabled": false
},
"DTSX": {
"commandName": "Project",
"commandLineArgs": "gen \"dtsx.xsd\" -a",
"workingDirectory": "..\\GeneratedSchemaLibraries\\DTSX",
"hotReloadEnabled": false
},
"ImportsXmlNamespace": {
"commandName": "Project",
"commandLineArgs": "gen \"ImportsXmlAttributes.xsd\" -a",
"workingDirectory": "..\\LinqToXsd.Schemas\\XsdFeatureTests\\ImportsXmlNamespace",
"hotReloadEnabled": false
},
"LandXML": {
"commandName": "Project",
"commandLineArgs": "gen \"LandXML-1.2.xsd\" -a",
"workingDirectory": "..\\GeneratedSchemaLibraries\\LandXML\\v1.2",
"hotReloadEnabled": false
},
"XQueryX": {
"commandName": "Project",
"commandLineArgs": "gen -a .\\",
Expand Down
Loading
Loading