From 01fe15d7727a5f3b5a51023309fafd2ba0141d3c Mon Sep 17 00:00:00 2001 From: "Dylan R. E. Moonfire" Date: Fri, 8 Jul 2022 23:52:10 -0500 Subject: [PATCH] refactor: code cleanup --- .editorconfig | 36 +++++++++- Nitride.sln.DotSettings | 6 +- examples/CopyFiles/CopyFilesModule.cs | 7 +- examples/CopyFiles/CopyFilesPipeline.cs | 6 +- examples/CopyFiles/CopyFilesTest.cs | 11 ++- lefthook.yml | 3 - .../CreateCalendarValidator.cs | 11 ++- src/Nitride.Calendar/CreateCalender.cs | 12 +++- src/Nitride.Calendar/Nitride.Calendar.csproj | 2 +- .../NitrideCalendarBuilderExtensions.cs | 3 +- src/Nitride.Feeds/CreateAtomFeed.cs | 8 ++- src/Nitride.Feeds/CreateAtomFeedValidator.cs | 11 ++- src/Nitride.Feeds/Nitride.Feeds.csproj | 2 +- .../NitrideFeedsBuilderExtensions.cs | 3 +- src/Nitride.Feeds/Structure/AtomHelper.cs | 9 ++- .../Nitride.Generators.csproj | 2 +- .../WithPropertySourceGenerator.cs | 8 ++- .../WithPropertySyntaxReceiver.cs | 4 ++ src/Nitride.Handlebars/ApplyStyleTemplate.cs | 9 ++- .../ApplyStyleTemplateValidator.cs | 11 ++- ...dentifyHandlebarsFromComponentValidator.cs | 3 +- .../IdentifyHandlebarsFromContent.cs | 6 +- .../Nitride.Handlebars.csproj | 2 +- .../NitrideHandlebarsModule.cs | 12 +++- .../RenderContentTemplate.cs | 11 ++- .../RenderContentTemplateValidator.cs | 3 +- .../ConvertHtmlEntitiesToUnicode.cs | 6 +- src/Nitride.Html/Nitride.Html.csproj | 2 +- src/Nitride.IO/Contents/ReadFiles.cs | 10 ++- src/Nitride.IO/Contents/ReadFilesValidator.cs | 7 +- src/Nitride.IO/Contents/WriteFiles.cs | 30 ++++++-- .../Contents/WriteFilesValidator.cs | 15 ++-- src/Nitride.IO/Directories/ClearDirectory.cs | 6 +- .../Directories/ClearDirectoryValidator.cs | 11 ++- src/Nitride.IO/Nitride.IO.csproj | 14 ++-- src/Nitride.IO/Paths/AddPathPrefix.cs | 15 ++-- .../Paths/AddPathPrefixValidator.cs | 3 +- src/Nitride.IO/Paths/ChangePathExtension.cs | 11 ++- .../Paths/ChangePathExtensionValidator.cs | 3 +- src/Nitride.IO/Paths/LinkDirectChildren.cs | 16 +++-- src/Nitride.IO/Paths/MoveToIndexPath.cs | 11 ++- .../Paths/MoveToIndexPathValidator.cs | 3 +- src/Nitride.IO/Paths/RemovePathPrefix.cs | 14 ++-- .../Paths/RemovePathPrefixValidator.cs | 3 +- src/Nitride.IO/Paths/ReplacePath.cs | 6 +- src/Nitride.IO/Paths/ReplacePathValidator.cs | 3 +- src/Nitride.IO/Paths/UPathExtensions.cs | 9 ++- src/Nitride.IO/README.md | 6 +- src/Nitride.Markdown/ConvertMarkdownToBase.cs | 12 +++- .../ConvertMarkdownToBaseValidator.cs | 3 +- .../ConvertMarkdownToGemtext.cs | 10 ++- src/Nitride.Markdown/ConvertMarkdownToHtml.cs | 10 ++- src/Nitride.Markdown/IdentifyMarkdown.cs | 17 +++-- .../IdentifyMarkdownFromPath.cs | 4 +- .../IdentifyMarkdownValidator.cs | 3 +- src/Nitride.Markdown/Nitride.Markdown.csproj | 2 +- .../NitrideSlugsBuilderExtensions.cs | 9 ++- src/Nitride.Slugs/SimpleSlugConverter.cs | 3 +- .../UnicodeNormalizingSlugConverter.cs | 5 +- .../Cli/DatePipelineCommandOption.cs | 5 +- .../Cli/ExpiresPipelineCommandOption.cs | 7 +- src/Nitride.Temporal/CreateDateIndexes.cs | 46 ++++++++---- src/Nitride.Temporal/DateIndex.cs | 6 +- .../FilterOutExpiredInstant.cs | 15 ++-- .../FilterOutExpiredInstantValidator.cs | 3 +- .../FilterOutFutureInstant.cs | 5 +- .../FilterOutFutureInstantValidator.cs | 3 +- src/Nitride.Temporal/Nitride.Temporal.csproj | 18 ++--- .../NitrideTemporalBuilderExtensions.cs | 7 +- .../NitrideTemporalConfiguration.cs | 1 + src/Nitride.Temporal/NitrideTemporalModule.cs | 9 ++- .../SetInstantFromComponent.cs | 14 +++- .../SetInstantFromComponentValidator.cs | 3 +- src/Nitride.Temporal/SetInstantFromPath.cs | 22 ++++-- .../SetInstantFromPathValidator.cs | 3 +- src/Nitride.Temporal/Timekeeper.cs | 12 +++- src/Nitride.Yaml/Nitride.Yaml.csproj | 2 +- src/Nitride.Yaml/NitrideYamlModule.cs | 4 +- src/Nitride.Yaml/ParseYamlHeader.cs | 17 ++++- src/Nitride/Commands/BuildCommand.cs | 5 +- .../Contents/EntityBinaryContentExtensions.cs | 4 +- .../Contents/EntityContentExtensions.cs | 13 ++-- .../Contents/EntityTextContentExtensions.cs | 8 ++- src/Nitride/Entities/CreateOrUpdateIndex.cs | 7 +- .../Entities/CreateOrUpdateIndexValidator.cs | 11 ++- src/Nitride/Entities/EntityScanner.cs | 6 +- .../Entities/EntityScannerValidator.cs | 3 +- src/Nitride/Entities/EntitySequence.cs | 4 +- src/Nitride/Entities/LinkEntitySequence.cs | 10 ++- .../Entities/LinkEntitySequenceValidator.cs | 7 +- src/Nitride/Nitride.csproj | 30 ++++---- src/Nitride/NitrideBuilder.cs | 19 ++++- src/Nitride/NitrideModule.cs | 14 ++-- src/Nitride/NitrideModuleExtensions.cs | 19 +++-- src/Nitride/NitrideOperationExtensions.cs | 4 +- src/Nitride/Pipelines/PipelineBase.cs | 4 +- src/Nitride/Pipelines/PipelineManager.cs | 24 +++++-- src/Nitride/Pipelines/PipelineRunner.cs | 11 ++- src/Nitride/ROADMAP.md | 10 +-- .../Nitride.IO.Tests/Nitride.IO.Tests.csproj | 18 ++--- tests/Nitride.IO.Tests/NitrideIOTestBase.cs | 8 --- .../Nitride.IO.Tests/NitrideIOTestContext.cs | 6 +- .../Paths/AddPathPrefixTest.cs | 8 ++- .../Paths/DirectChildPathScannerTests.cs | 13 +++- .../Paths/LinkDirectChildrenTests.cs | 11 ++- .../Paths/MoveToIndexPathsTest.cs | 13 +++- .../Paths/RemovePathPrefixTest.cs | 8 ++- tests/Nitride.IO.Tests/ReadFilesTest.cs | 14 ++-- tests/Nitride.IO.Tests/WriteFilesTest.cs | 4 +- .../Nitride.Slugs.Tests.csproj | 16 ++--- .../UnicodeNormalizingSlugConverterTest.cs | 8 ++- .../CreateDateIndexesTests.cs | 68 +++++++++++++----- .../Nitride.Temporal.Tests.csproj | 16 ++--- .../Entities/CreateOrUpdateIndexTests.cs | 70 ++++++++++++++----- .../Entities/LinkEntitySequenceTests.cs | 15 ++-- tests/Nitride.Tests/EntityContentTest.cs | 8 ++- tests/Nitride.Tests/Nitride.Tests.csproj | 16 ++--- tests/Nitride.Tests/TestHelper.cs | 5 +- .../Nitride.Yaml.Tests.csproj | 2 +- .../Nitride.Yaml.Tests/ParseYamlHeaderTest.cs | 44 +++++++++--- 120 files changed, 910 insertions(+), 359 deletions(-) diff --git a/.editorconfig b/.editorconfig index d75a7f0..fccb81d 100644 --- a/.editorconfig +++ b/.editorconfig @@ -31,11 +31,22 @@ dotnet_naming_rule.private_instance_fields_rule.import_to_resharper = as_predefi dotnet_naming_rule.private_instance_fields_rule.severity = warning dotnet_naming_rule.private_instance_fields_rule.style = lower_camel_case_style dotnet_naming_rule.private_instance_fields_rule.symbols = private_instance_fields_symbols +dotnet_naming_rule.private_static_fields_override_rule.import_to_resharper = False +dotnet_naming_rule.private_static_fields_override_rule.severity = warning +dotnet_naming_rule.private_static_fields_override_rule.style = upper_camel_case_style +dotnet_naming_rule.private_static_fields_override_rule.symbols = private_static_fields_override_symbols dotnet_naming_rule.private_static_fields_rule.import_to_resharper = as_predefined dotnet_naming_rule.private_static_fields_rule.resharper_style = AaBb, aaBb dotnet_naming_rule.private_static_fields_rule.severity = warning dotnet_naming_rule.private_static_fields_rule.style = upper_camel_case_style dotnet_naming_rule.private_static_fields_rule.symbols = private_static_fields_symbols +dotnet_naming_rule.private_static_fields_rule_1.import_to_resharper = True +dotnet_naming_rule.private_static_fields_rule_1.resharper_description = PrivateStaticFields +dotnet_naming_rule.private_static_fields_rule_1.resharper_guid = 2ec29786-2764-45cc-849e-7a476ce55db8 +dotnet_naming_rule.private_static_fields_rule_1.resharper_style = AaBb, aaBb +dotnet_naming_rule.private_static_fields_rule_1.severity = warning +dotnet_naming_rule.private_static_fields_rule_1.style = upper_camel_case_style +dotnet_naming_rule.private_static_fields_rule_1.symbols = private_static_fields_symbols_1 dotnet_naming_rule.private_static_readonly_rule.import_to_resharper = as_predefined dotnet_naming_rule.private_static_readonly_rule.severity = warning dotnet_naming_rule.private_static_readonly_rule.style = upper_camel_case_style @@ -54,9 +65,17 @@ dotnet_naming_symbols.private_constants_symbols.applicable_kinds = field dotnet_naming_symbols.private_constants_symbols.required_modifiers = const dotnet_naming_symbols.private_instance_fields_symbols.applicable_accessibilities = private dotnet_naming_symbols.private_instance_fields_symbols.applicable_kinds = field +dotnet_naming_symbols.private_static_fields_override_symbols.applicable_accessibilities = local, private +dotnet_naming_symbols.private_static_fields_override_symbols.applicable_kinds = field +dotnet_naming_symbols.private_static_fields_override_symbols.required_modifiers = const, static dotnet_naming_symbols.private_static_fields_symbols.applicable_accessibilities = private dotnet_naming_symbols.private_static_fields_symbols.applicable_kinds = field dotnet_naming_symbols.private_static_fields_symbols.required_modifiers = static +dotnet_naming_symbols.private_static_fields_symbols_1.applicable_accessibilities = local, private +dotnet_naming_symbols.private_static_fields_symbols_1.applicable_kinds = field +dotnet_naming_symbols.private_static_fields_symbols_1.required_modifiers = static +dotnet_naming_symbols.private_static_fields_symbols_1.resharper_applicable_kinds = field +dotnet_naming_symbols.private_static_fields_symbols_1.resharper_required_modifiers = static dotnet_naming_symbols.private_static_readonly_symbols.applicable_accessibilities = private dotnet_naming_symbols.private_static_readonly_symbols.applicable_kinds = field dotnet_naming_symbols.private_static_readonly_symbols.required_modifiers = static, readonly @@ -75,11 +94,14 @@ dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggest # ReSharper properties resharper_alignment_tab_fill_style = optimal_fill resharper_align_multiline_binary_expressions_chain = false +resharper_align_multiline_statement_conditions = false resharper_apply_on_completion = true -resharper_autodetect_indent_settings = true resharper_blank_lines_after_control_transfer_statements = 1 +resharper_blank_lines_after_multiline_statements = 1 resharper_blank_lines_around_single_line_auto_property = 1 resharper_blank_lines_around_single_line_property = 1 +resharper_blank_lines_before_control_transfer_statements = 1 +resharper_blank_lines_before_multiline_statements = 1 resharper_blank_lines_before_single_line_comment = 1 resharper_braces_for_for = required resharper_braces_for_foreach = required @@ -124,6 +146,8 @@ resharper_keep_existing_declaration_block_arrangement = true resharper_keep_existing_declaration_parens_arrangement = false resharper_keep_existing_embedded_block_arrangement = true resharper_keep_existing_enum_arrangement = true +resharper_keep_existing_linebreaks = true +resharper_keep_user_linebreaks = true resharper_min_blank_lines_after_imports = 1 resharper_nested_ternary_style = expanded resharper_new_line_before_while = true @@ -133,7 +157,7 @@ resharper_place_type_constraints_on_same_line = false resharper_protobuf_insert_final_newline = true resharper_qualified_using_at_nested_scope = true resharper_resx_alignment_tab_fill_style = optimal_fill -resharper_T4_alignment_tab_fill_style = optimal_fill +resharper_t4_alignment_tab_fill_style = optimal_fill resharper_t4_insert_final_newline = true resharper_use_continuous_indent_inside_initializer_braces = false resharper_use_indents_from_main_language_in_file = false @@ -146,7 +170,7 @@ resharper_wrap_before_extends_colon = true resharper_wrap_before_first_type_parameter_constraint = true resharper_wrap_before_type_parameter_langle = true resharper_wrap_chained_binary_expressions = chop_if_long -resharper_wrap_chained_method_calls = chop_if_long +resharper_wrap_chained_method_calls = chop_always resharper_wrap_object_and_collection_initializer_style = chop_always resharper_xmldoc_alignment_tab_fill_style = optimal_fill resharper_xmldoc_indent_child_elements = ZeroIndent @@ -162,6 +186,7 @@ resharper_arrange_type_modifiers_highlighting = hint resharper_built_in_type_reference_style_for_member_access_highlighting = hint resharper_built_in_type_reference_style_highlighting = hint resharper_check_namespace_highlighting = none +resharper_class_never_instantiated_global_highlighting = none resharper_convert_to_auto_property_highlighting = none resharper_localizable_element_highlighting = none resharper_redundant_comma_in_attribute_list_highlighting = none @@ -205,3 +230,8 @@ tab_width = 4 indent_style = space indent_size = 4 tab_width = 4 + +[*.{appxmanifest,asax,ascx,aspx,axaml,build,c,c++,cc,cginc,compute,cp,cpp,cs,cshtml,cu,cuh,cxx,dtd,fx,fxh,h,hh,hlsl,hlsli,hlslinc,hpp,hxx,inc,inl,ino,ipp,master,mpp,mq4,mq5,mqh,nuspec,paml,razor,resw,resx,skin,tpp,usf,ush,vb,xaml,xamlx,xoml,xsd}] +indent_style = space +indent_size = 4 +tab_width = 4 \ No newline at end of file diff --git a/Nitride.sln.DotSettings b/Nitride.sln.DotSettings index bd0fdf7..094c9a3 100644 --- a/Nitride.sln.DotSettings +++ b/Nitride.sln.DotSettings @@ -85,7 +85,10 @@ 1 1 False + False True + 1 + 1 EXPANDED NEVER NEVER @@ -115,7 +118,9 @@ CHOP_IF_LONG CHOP_IF_LONG 80 + CHOP_ALWAYS CHOP_IF_LONG + CHOP_IF_LONG OPTIMAL_FILL OPTIMAL_FILL OPTIMAL_FILL @@ -1366,6 +1371,5 @@ using(DataAccessAdapter dataAccessAdapter = new DataAccessAdapter(ConnectionStri True 2.0 InCSharpStatement - True True diff --git a/examples/CopyFiles/CopyFilesModule.cs b/examples/CopyFiles/CopyFilesModule.cs index b1aba44..823a60e 100644 --- a/examples/CopyFiles/CopyFilesModule.cs +++ b/examples/CopyFiles/CopyFilesModule.cs @@ -10,6 +10,11 @@ public class CopyFilesModule : Module // This just registers all the non-static classes as singletons // within the system. We use lifetimes in other components depending // on how they are used, but in this case, we don't need it. - builder.RegisterAssemblyTypes(this.GetType().Assembly).AsSelf().AsImplementedInterfaces().SingleInstance(); + builder.RegisterAssemblyTypes( + this.GetType() + .Assembly) + .AsSelf() + .AsImplementedInterfaces() + .SingleInstance(); } } diff --git a/examples/CopyFiles/CopyFilesPipeline.cs b/examples/CopyFiles/CopyFilesPipeline.cs index ffe3f59..7ca4434 100644 --- a/examples/CopyFiles/CopyFilesPipeline.cs +++ b/examples/CopyFiles/CopyFilesPipeline.cs @@ -74,7 +74,8 @@ public class CopyFilesPipeline : PipelineBase // read. Coming out of this, we will have one entity that fulfills: // // entity.Get == "/output/a.txt" - entities = entities.Run(this.removePathPrefix).Run(this.addPathPrefix); + entities = entities.Run(this.removePathPrefix) + .Run(this.addPathPrefix); // Then we write out the files to the output. First we make sure we // clear out the output. This operation performs an action when it @@ -95,7 +96,8 @@ public class CopyFilesPipeline : PipelineBase // The third way is to use an extension on entities which lets us // chain calls, ala Gulp's pipelines. The below code does this along // with writing the files to the output. - entities = entities.Run(this.clearDirectory).Run(this.writeFiles); + entities = entities.Run(this.clearDirectory) + .Run(this.writeFiles); // If we are chaining this pipeline into another, we return the // entities. Otherwise, we can just return an empty list. The diff --git a/examples/CopyFiles/CopyFilesTest.cs b/examples/CopyFiles/CopyFilesTest.cs index 07bf867..2c0101f 100644 --- a/examples/CopyFiles/CopyFilesTest.cs +++ b/examples/CopyFiles/CopyFilesTest.cs @@ -28,6 +28,7 @@ public class CopyFilesTest : NitrideTestBase // Figure out the paths for this test. DirectoryInfo rootDir = typeof(CopyFilesProgram).GetDirectory()!.FindGitRoot()!.GetDirectory("examples/CopyFiles"); + DirectoryInfo outputDir = rootDir.GetDirectory("output"); FileInfo projectFile = rootDir.GetFile("CopyFiles.csproj"); @@ -41,7 +42,12 @@ public class CopyFilesTest : NitrideTestBase // Execute the generator. This will throw if there is an exception. await Cli.Wrap("dotnet") - .WithArguments(x => x.Add("run").Add("--project").Add(projectFile.FullName).Add("--").Add("build")) + .WithArguments( + x => x.Add("run") + .Add("--project") + .Add(projectFile.FullName) + .Add("--") + .Add("build")) .ExecuteAsync(); // Make sure we have our output. @@ -49,7 +55,8 @@ public class CopyFilesTest : NitrideTestBase Assert.True(aFile.Exists); - string aText = aFile.ReadAllText().Trim(); + string aText = aFile.ReadAllText() + .Trim(); Assert.Equal("This is the 'A' file.", aText); } diff --git a/lefthook.yml b/lefthook.yml index bf398e4..dbc1c63 100644 --- a/lefthook.yml +++ b/lefthook.yml @@ -7,9 +7,6 @@ pre-push: pre-commit: parallel: true commands: - dotnet-format-style: - glob: "*.cs" - run: dotnet format prettier: run: prettier . --write --loglevel warn nixfmt: diff --git a/src/Nitride.Calendar/CreateCalendarValidator.cs b/src/Nitride.Calendar/CreateCalendarValidator.cs index e75e9e6..1e0bf07 100644 --- a/src/Nitride.Calendar/CreateCalendarValidator.cs +++ b/src/Nitride.Calendar/CreateCalendarValidator.cs @@ -6,8 +6,13 @@ public class CreateCalendarValidator : AbstractValidator { public CreateCalendarValidator() { - this.RuleFor(x => x.Path).NotNull(); - this.RuleFor(x => x.GetEventSummary).NotNull(); - this.RuleFor(x => x.GetEventUrl).NotNull(); + this.RuleFor(x => x.Path) + .NotNull(); + + this.RuleFor(x => x.GetEventSummary) + .NotNull(); + + this.RuleFor(x => x.GetEventUrl) + .NotNull(); } } diff --git a/src/Nitride.Calendar/CreateCalender.cs b/src/Nitride.Calendar/CreateCalender.cs index eedae3b..545743d 100644 --- a/src/Nitride.Calendar/CreateCalender.cs +++ b/src/Nitride.Calendar/CreateCalender.cs @@ -31,7 +31,9 @@ public partial class CreateCalender : OperationBase private readonly IValidator validator; - public CreateCalender(IValidator validator, Timekeeper clock) + public CreateCalender( + IValidator validator, + Timekeeper clock) { this.validator = validator; this.clock = clock; @@ -59,9 +61,12 @@ public partial class CreateCalender : OperationBase { this.validator.ValidateAndThrow(this); - IEnumerable output = input.ForEntities(this.CreateCalendarEntity); + input = input.ToList(); + IEnumerable dated = input.WhereAllComponents(); + IEnumerable others = input.WhereNotComponent(); + IEnumerable datedAndCalendars = this.CreateCalendarEntity(dated); - return output; + return datedAndCalendars.Union(others); } private IEnumerable CreateCalendarEntity(IEnumerable entities) @@ -96,6 +101,7 @@ public partial class CreateCalender : OperationBase var when = this.clock.ToDateTime(instant); string summary = this.GetEventSummary!(entity); Uri? url = this.GetEventUrl?.Invoke(entity); + var calendarEvent = new CalendarEvent { Summary = summary, diff --git a/src/Nitride.Calendar/Nitride.Calendar.csproj b/src/Nitride.Calendar/Nitride.Calendar.csproj index ab1146f..9aaf7b9 100644 --- a/src/Nitride.Calendar/Nitride.Calendar.csproj +++ b/src/Nitride.Calendar/Nitride.Calendar.csproj @@ -16,7 +16,7 @@ - + diff --git a/src/Nitride.Calendar/NitrideCalendarBuilderExtensions.cs b/src/Nitride.Calendar/NitrideCalendarBuilderExtensions.cs index a361c7d..614bfdb 100644 --- a/src/Nitride.Calendar/NitrideCalendarBuilderExtensions.cs +++ b/src/Nitride.Calendar/NitrideCalendarBuilderExtensions.cs @@ -8,6 +8,7 @@ public static class NitrideCalendarBuilderExtensions { public static NitrideBuilder UseCalendar(this NitrideBuilder builder) { - return builder.UseTemporal().ConfigureContainer(x => x.RegisterModule()); + return builder.UseTemporal() + .ConfigureContainer(x => x.RegisterModule()); } } diff --git a/src/Nitride.Feeds/CreateAtomFeed.cs b/src/Nitride.Feeds/CreateAtomFeed.cs index 828e609..60e7f9e 100644 --- a/src/Nitride.Feeds/CreateAtomFeed.cs +++ b/src/Nitride.Feeds/CreateAtomFeed.cs @@ -27,7 +27,9 @@ public partial class CreateAtomFeed : OperationBase private readonly IValidator validator; - public CreateAtomFeed(ILogger logger, IValidator validator) + public CreateAtomFeed( + ILogger logger, + IValidator validator) { this.logger = logger; this.validator = validator; @@ -121,7 +123,9 @@ public partial class CreateAtomFeed : OperationBase } // Create the feed entity and return both objects. - Entity feedEntity = new Entity().Set(IsFeed.Instance).Set(this.GetPath!(entity)).SetTextContent(feed + "\n"); + Entity feedEntity = new Entity().Set(IsFeed.Instance) + .Set(this.GetPath!(entity)) + .SetTextContent(feed + "\n"); return new[] { entity, feedEntity }; } diff --git a/src/Nitride.Feeds/CreateAtomFeedValidator.cs b/src/Nitride.Feeds/CreateAtomFeedValidator.cs index 4f1c43f..348dbee 100644 --- a/src/Nitride.Feeds/CreateAtomFeedValidator.cs +++ b/src/Nitride.Feeds/CreateAtomFeedValidator.cs @@ -6,8 +6,13 @@ public class CreateAtomFeedValidator : AbstractValidator { public CreateAtomFeedValidator() { - this.RuleFor(x => x.GetEntries).NotNull(); - this.RuleFor(x => x.GetPath).NotNull(); - this.RuleFor(x => x.GetTitle).NotNull(); + this.RuleFor(x => x.GetEntries) + .NotNull(); + + this.RuleFor(x => x.GetPath) + .NotNull(); + + this.RuleFor(x => x.GetTitle) + .NotNull(); } } diff --git a/src/Nitride.Feeds/Nitride.Feeds.csproj b/src/Nitride.Feeds/Nitride.Feeds.csproj index 9c7215a..9f70903 100644 --- a/src/Nitride.Feeds/Nitride.Feeds.csproj +++ b/src/Nitride.Feeds/Nitride.Feeds.csproj @@ -16,7 +16,7 @@ - + diff --git a/src/Nitride.Feeds/NitrideFeedsBuilderExtensions.cs b/src/Nitride.Feeds/NitrideFeedsBuilderExtensions.cs index 1795c54..349c37e 100644 --- a/src/Nitride.Feeds/NitrideFeedsBuilderExtensions.cs +++ b/src/Nitride.Feeds/NitrideFeedsBuilderExtensions.cs @@ -8,6 +8,7 @@ public static class NitrideFeedsBuilderExtensions { public static NitrideBuilder UseFeeds(this NitrideBuilder builder) { - return builder.UseTemporal().ConfigureContainer(x => x.RegisterModule()); + return builder.UseTemporal() + .ConfigureContainer(x => x.RegisterModule()); } } diff --git a/src/Nitride.Feeds/Structure/AtomHelper.cs b/src/Nitride.Feeds/Structure/AtomHelper.cs index 1a3f751..274b61f 100644 --- a/src/Nitride.Feeds/Structure/AtomHelper.cs +++ b/src/Nitride.Feeds/Structure/AtomHelper.cs @@ -7,7 +7,9 @@ namespace Nitride.Feeds.Structure; /// public static class AtomHelper { - public static void AddIfSet(XElement root, XElement? elem) + public static void AddIfSet( + XElement root, + XElement? elem) { if (elem != null) { @@ -15,7 +17,10 @@ public static class AtomHelper } } - public static void AddIfSet(XElement elem, string name, string? text) + public static void AddIfSet( + XElement elem, + string name, + string? text) { if (!string.IsNullOrWhiteSpace(text)) { diff --git a/src/Nitride.Generators/Nitride.Generators.csproj b/src/Nitride.Generators/Nitride.Generators.csproj index c1d185a..c437ae7 100644 --- a/src/Nitride.Generators/Nitride.Generators.csproj +++ b/src/Nitride.Generators/Nitride.Generators.csproj @@ -10,7 +10,7 @@ - + diff --git a/src/Nitride.Generators/WithPropertySourceGenerator.cs b/src/Nitride.Generators/WithPropertySourceGenerator.cs index 7e3e239..e02c79a 100644 --- a/src/Nitride.Generators/WithPropertySourceGenerator.cs +++ b/src/Nitride.Generators/WithPropertySourceGenerator.cs @@ -61,7 +61,9 @@ public class WithPropertySourceGenerator : ISourceGenerator context.RegisterForSyntaxNotifications(() => new WithPropertySyntaxReceiver(context)); } - private void GenerateClassFile(GeneratorExecutionContext context, WithPropertyClass unit) + private void GenerateClassFile( + GeneratorExecutionContext context, + WithPropertyClass unit) { // Pull out some fields. ClassDeclarationSyntax? cds = unit.ClassDeclaration; @@ -88,6 +90,7 @@ public class WithPropertySourceGenerator : ISourceGenerator IEnumerable properties = cds.Members .Where(m => m.Kind() == SyntaxKind.PropertyDeclaration) .Cast(); + bool first = true; foreach (PropertyDeclarationSyntax pds in properties) @@ -112,10 +115,12 @@ public class WithPropertySourceGenerator : ISourceGenerator // Write some documentation. buffer.AppendLine(" /// "); + buffer.AppendLine( string.Format( " /// Sets the {0} value and returns the operation for chaining.", pds.Identifier.ToString())); + buffer.AppendLine(" /// "); // We have the components for writing out a setter. @@ -125,6 +130,7 @@ public class WithPropertySourceGenerator : ISourceGenerator cds.Identifier, pds.Identifier, pds.Type)); + buffer.AppendLine(" {"); buffer.AppendLine(string.Format(" this.{0} = value;", pds.Identifier)); buffer.AppendLine(" return this;"); diff --git a/src/Nitride.Generators/WithPropertySyntaxReceiver.cs b/src/Nitride.Generators/WithPropertySyntaxReceiver.cs index 90135ed..da3a438 100644 --- a/src/Nitride.Generators/WithPropertySyntaxReceiver.cs +++ b/src/Nitride.Generators/WithPropertySyntaxReceiver.cs @@ -37,15 +37,19 @@ internal class WithPropertySyntaxReceiver : ISyntaxReceiver // Reset everything. this.Namespace = null!; this.UsingDirectiveList = new List(); + break; case NamespaceDeclarationSyntax syntax: this.Namespace = syntax.Name.ToString(); + return; case FileScopedNamespaceDeclarationSyntax syntax: this.Namespace = syntax.Name.ToString(); + return; case UsingDirectiveSyntax syntax: this.UsingDirectiveList.Add(syntax); + return; case ClassDeclarationSyntax: break; diff --git a/src/Nitride.Handlebars/ApplyStyleTemplate.cs b/src/Nitride.Handlebars/ApplyStyleTemplate.cs index 88ee269..9f86737 100644 --- a/src/Nitride.Handlebars/ApplyStyleTemplate.cs +++ b/src/Nitride.Handlebars/ApplyStyleTemplate.cs @@ -52,7 +52,7 @@ public class ApplyStyleTemplate : OperationBase this.validator.ValidateAndThrow(this); // Create and set up the Handlebars. - return input.ForEachEntity(this.Apply); + return input.SelectEntity(this.Apply); } /// @@ -64,22 +64,27 @@ public class ApplyStyleTemplate : OperationBase public ApplyStyleTemplate WithCreateModelCallback(Func? callback) { this.CreateModelCallback = callback; + return this; } public ApplyStyleTemplate WithGetTemplateName(Func? callback) { this.GetTemplateName = callback; + return this; } public ApplyStyleTemplate WithHandlebars(IHandlebars? handlebars) { this.Handlebars = handlebars; + return this; } - private Entity Apply(Entity entity, ITextContent content) + private Entity Apply( + Entity entity, + ITextContent content) { TModel model = this.CreateModelCallback!(entity); string name = this.GetTemplateName!(entity); diff --git a/src/Nitride.Handlebars/ApplyStyleTemplateValidator.cs b/src/Nitride.Handlebars/ApplyStyleTemplateValidator.cs index 3c52757..c755fcb 100644 --- a/src/Nitride.Handlebars/ApplyStyleTemplateValidator.cs +++ b/src/Nitride.Handlebars/ApplyStyleTemplateValidator.cs @@ -6,8 +6,13 @@ public class ApplyStyleTemplateValidator : AbstractValidator x.Handlebars).NotNull(); - this.RuleFor(x => x.GetTemplateName).NotNull(); - this.RuleFor(x => x.CreateModelCallback).NotNull(); + this.RuleFor(x => x.Handlebars) + .NotNull(); + + this.RuleFor(x => x.GetTemplateName) + .NotNull(); + + this.RuleFor(x => x.CreateModelCallback) + .NotNull(); } } diff --git a/src/Nitride.Handlebars/IdentifyHandlebarsFromComponentValidator.cs b/src/Nitride.Handlebars/IdentifyHandlebarsFromComponentValidator.cs index 4adf49a..7730cc8 100644 --- a/src/Nitride.Handlebars/IdentifyHandlebarsFromComponentValidator.cs +++ b/src/Nitride.Handlebars/IdentifyHandlebarsFromComponentValidator.cs @@ -6,6 +6,7 @@ public class IdentifyHandlebarsFromComponentValidator : AbstractValidator x.HasHandlebarsTest).NotNull(); + this.RuleFor(x => x.HasHandlebarsTest) + .NotNull(); } } diff --git a/src/Nitride.Handlebars/IdentifyHandlebarsFromContent.cs b/src/Nitride.Handlebars/IdentifyHandlebarsFromContent.cs index 5ff423a..aabe787 100644 --- a/src/Nitride.Handlebars/IdentifyHandlebarsFromContent.cs +++ b/src/Nitride.Handlebars/IdentifyHandlebarsFromContent.cs @@ -15,10 +15,12 @@ public class IdentifyHandlebarsFromContent : IOperation /// public IEnumerable Run(IEnumerable input) { - return input.ForEachEntity(this.ScanContent); + return input.SelectEntity(this.ScanContent); } - private Entity ScanContent(Entity entity, ITextContent content) + private Entity ScanContent( + Entity entity, + ITextContent content) { string text = content.GetText(); diff --git a/src/Nitride.Handlebars/Nitride.Handlebars.csproj b/src/Nitride.Handlebars/Nitride.Handlebars.csproj index 0192711..553f538 100644 --- a/src/Nitride.Handlebars/Nitride.Handlebars.csproj +++ b/src/Nitride.Handlebars/Nitride.Handlebars.csproj @@ -11,7 +11,7 @@ - + diff --git a/src/Nitride.Handlebars/NitrideHandlebarsModule.cs b/src/Nitride.Handlebars/NitrideHandlebarsModule.cs index ce69d2e..1004f25 100644 --- a/src/Nitride.Handlebars/NitrideHandlebarsModule.cs +++ b/src/Nitride.Handlebars/NitrideHandlebarsModule.cs @@ -10,8 +10,14 @@ public class NitrideHandlebarsModule : Module builder.RegisterOperators(this); builder.RegisterValidators(this); - builder.RegisterType().AsSelf().SingleInstance(); - builder.RegisterGeneric(typeof(RenderContentTemplate<>)).As(typeof(RenderContentTemplate<>)); - builder.RegisterGeneric(typeof(ApplyStyleTemplate<>)).As(typeof(ApplyStyleTemplate<>)); + builder.RegisterType() + .AsSelf() + .SingleInstance(); + + builder.RegisterGeneric(typeof(RenderContentTemplate<>)) + .As(typeof(RenderContentTemplate<>)); + + builder.RegisterGeneric(typeof(ApplyStyleTemplate<>)) + .As(typeof(ApplyStyleTemplate<>)); } } diff --git a/src/Nitride.Handlebars/RenderContentTemplate.cs b/src/Nitride.Handlebars/RenderContentTemplate.cs index 95905b9..9bca3a4 100644 --- a/src/Nitride.Handlebars/RenderContentTemplate.cs +++ b/src/Nitride.Handlebars/RenderContentTemplate.cs @@ -43,7 +43,7 @@ public class RenderContentTemplate : OperationBase { this.validator.ValidateAndThrow(this); - return input.ForEachEntity(this.Apply); + return input.SelectEntity(this.Apply); } /// @@ -55,10 +55,14 @@ public class RenderContentTemplate : OperationBase public RenderContentTemplate WithCreateModelCallback(Func? callback) { this.CreateModelCallback = callback; + return this; } - private Entity Apply(Entity entity, HasHandlebarsTemplate _, ITextContent content) + private Entity Apply( + Entity entity, + HasHandlebarsTemplate _, + ITextContent content) { // Create the model using the callback. TModel model = this.CreateModelCallback!(entity); @@ -71,6 +75,7 @@ public class RenderContentTemplate : OperationBase // text. string result = template(model!); - return entity.Remove().SetTextContent(new StringTextContent(result)); + return entity.Remove() + .SetTextContent(new StringTextContent(result)); } } diff --git a/src/Nitride.Handlebars/RenderContentTemplateValidator.cs b/src/Nitride.Handlebars/RenderContentTemplateValidator.cs index 27fa53a..c9fbe8f 100644 --- a/src/Nitride.Handlebars/RenderContentTemplateValidator.cs +++ b/src/Nitride.Handlebars/RenderContentTemplateValidator.cs @@ -6,6 +6,7 @@ public class RenderContentTemplateValidator : AbstractValidator x.CreateModelCallback).NotNull(); + this.RuleFor(x => x.CreateModelCallback) + .NotNull(); } } diff --git a/src/Nitride.Html/ConvertHtmlEntitiesToUnicode.cs b/src/Nitride.Html/ConvertHtmlEntitiesToUnicode.cs index aeaabc1..2f8bfc2 100644 --- a/src/Nitride.Html/ConvertHtmlEntitiesToUnicode.cs +++ b/src/Nitride.Html/ConvertHtmlEntitiesToUnicode.cs @@ -16,10 +16,12 @@ public class ConvertHtmlEntitiesToUnicode : OperationBase /// public override IEnumerable Run(IEnumerable input) { - return input.ForEachEntity(this.ResolveHtmlEntities); + return input.SelectEntity(this.ResolveHtmlEntities); } - private Entity ResolveHtmlEntities(Entity entity, ITextContent content) + private Entity ResolveHtmlEntities( + Entity entity, + ITextContent content) { string text = content.GetText(); string resolved = WebUtility.HtmlDecode(text); diff --git a/src/Nitride.Html/Nitride.Html.csproj b/src/Nitride.Html/Nitride.Html.csproj index e9fcfc7..ac4800b 100644 --- a/src/Nitride.Html/Nitride.Html.csproj +++ b/src/Nitride.Html/Nitride.Html.csproj @@ -25,7 +25,7 @@ - + diff --git a/src/Nitride.IO/Contents/ReadFiles.cs b/src/Nitride.IO/Contents/ReadFiles.cs index 6c9165e..d49687a 100644 --- a/src/Nitride.IO/Contents/ReadFiles.cs +++ b/src/Nitride.IO/Contents/ReadFiles.cs @@ -24,7 +24,9 @@ public partial class ReadFiles : FileSystemOperationBase { private readonly IValidator validator; - public ReadFiles(IValidator validator, IFileSystem fileSystem) + public ReadFiles( + IValidator validator, + IFileSystem fileSystem) : base(fileSystem) { this.validator = validator; @@ -56,8 +58,10 @@ public partial class ReadFiles : FileSystemOperationBase this.validator.ValidateAndThrow(this); var glob = Glob.Parse(this.Pattern); + IEnumerable files = this.FileSystem.EnumerateFileEntries("/", "*", SearchOption.AllDirectories) .Where(x => glob.IsMatch(x.Path.ToString())); + IEnumerable entities = files.Select(this.ToEntity); return entities; @@ -66,6 +70,7 @@ public partial class ReadFiles : FileSystemOperationBase public ReadFiles WithFileSystem(IFileSystem value) { this.FileSystem = value; + return this; } @@ -78,7 +83,8 @@ public partial class ReadFiles : FileSystemOperationBase /// An Entity with appropriate content. private Entity ToEntity(FileEntry file) { - Entity entity = new Entity().Set(file.Path).SetBinaryContent(new FileEntryBinaryContent(file)); + Entity entity = new Entity().Set(file.Path) + .SetBinaryContent(new FileEntryBinaryContent(file)); return entity; } diff --git a/src/Nitride.IO/Contents/ReadFilesValidator.cs b/src/Nitride.IO/Contents/ReadFilesValidator.cs index 9358db2..cb5e0b6 100644 --- a/src/Nitride.IO/Contents/ReadFilesValidator.cs +++ b/src/Nitride.IO/Contents/ReadFilesValidator.cs @@ -6,7 +6,10 @@ public class ReadFilesValidator : AbstractValidator { public ReadFilesValidator() { - this.RuleFor(x => x.Pattern).NotNull(); - this.RuleFor(x => x.FileSystem).NotNull(); + this.RuleFor(x => x.Pattern) + .NotNull(); + + this.RuleFor(x => x.FileSystem) + .NotNull(); } } diff --git a/src/Nitride.IO/Contents/WriteFiles.cs b/src/Nitride.IO/Contents/WriteFiles.cs index 28b51b0..daeda1f 100644 --- a/src/Nitride.IO/Contents/WriteFiles.cs +++ b/src/Nitride.IO/Contents/WriteFiles.cs @@ -26,12 +26,16 @@ public partial class WriteFiles : FileSystemOperationBase, IOperation private Dictionary> factories; - public WriteFiles(IValidator validator, ILogger logger, IFileSystem fileSystem) + public WriteFiles( + IValidator validator, + ILogger logger, + IFileSystem fileSystem) : base(fileSystem) { this.Logger = logger; this.validator = validator; this.TextEncoding = Encoding.UTF8; + this.factories = new Dictionary> { [typeof(IBinaryContent)] = GetBinaryStream, @@ -63,7 +67,8 @@ public partial class WriteFiles : FileSystemOperationBase, IOperation { this.validator.ValidateAndThrow(this); - IEnumerable results = entities.ForEachEntity(this.Process).ToList(); + IEnumerable results = entities.SelectEntity(this.Process) + .ToList(); return results; } @@ -71,6 +76,7 @@ public partial class WriteFiles : FileSystemOperationBase, IOperation public WriteFiles WithFileSystem(IFileSystem fileSystem) { this.FileSystem = fileSystem; + return this; } @@ -85,12 +91,16 @@ public partial class WriteFiles : FileSystemOperationBase, IOperation // we don't have to load it entirely in memory. if (content is IBinaryContentConvertable convertable) { - return convertable.ToBinaryContent().GetStream(); + return convertable.ToBinaryContent() + .GetStream(); } // We have the load the text into memory and convert it. var textContent = (ITextContent)content; - string text = textContent.GetReader().ReadToEnd(); + + string text = textContent.GetReader() + .ReadToEnd(); + var stream = new MemoryStream(); var writer = new StreamWriter(stream, this.TextEncoding ?? Encoding.UTF8); @@ -109,7 +119,9 @@ public partial class WriteFiles : FileSystemOperationBase, IOperation /// The entity to write out. /// The path of the entity. /// The entity passed in. - private Entity Process(Entity entity, UPath path) + private Entity Process( + Entity entity, + UPath path) { // See if we have any content. If we don't, then there is nothing // to do. @@ -178,7 +190,8 @@ public partial class WriteFiles : FileSystemOperationBase, IOperation "Cannot write out entity " + path + " because cannot determine how to get a stream out content type " - + content.GetType().FullName + + content.GetType() + .FullName + ". To resolve, register a function to this.StreamFactories."); } @@ -189,7 +202,10 @@ public partial class WriteFiles : FileSystemOperationBase, IOperation /// The path to write out, directories will be created. /// The stream to write out. /// The entity passed in. - private Entity Process(Entity entity, UPath path, Stream stream) + private Entity Process( + Entity entity, + UPath path, + Stream stream) { // Make sure we have the directory structure. UPath directory = path.GetDirectory(); diff --git a/src/Nitride.IO/Contents/WriteFilesValidator.cs b/src/Nitride.IO/Contents/WriteFilesValidator.cs index 53568e8..a9612b5 100644 --- a/src/Nitride.IO/Contents/WriteFilesValidator.cs +++ b/src/Nitride.IO/Contents/WriteFilesValidator.cs @@ -6,9 +6,16 @@ public class WriteFilesValidator : AbstractValidator { public WriteFilesValidator() { - this.RuleFor(x => x.StreamFactories).NotNull(); - this.RuleFor(x => x.TextEncoding).NotNull(); - this.RuleFor(x => x.FileSystem).NotNull(); - this.RuleFor(x => x.Logger).NotNull(); + this.RuleFor(x => x.StreamFactories) + .NotNull(); + + this.RuleFor(x => x.TextEncoding) + .NotNull(); + + this.RuleFor(x => x.FileSystem) + .NotNull(); + + this.RuleFor(x => x.Logger) + .NotNull(); } } diff --git a/src/Nitride.IO/Directories/ClearDirectory.cs b/src/Nitride.IO/Directories/ClearDirectory.cs index f9bc3cc..19c6c90 100644 --- a/src/Nitride.IO/Directories/ClearDirectory.cs +++ b/src/Nitride.IO/Directories/ClearDirectory.cs @@ -22,7 +22,10 @@ public partial class ClearDirectory : FileSystemOperationBase, IOperation { private readonly IValidator validator; - public ClearDirectory(IValidator validator, IFileSystem fileSystem, ILogger logger) + public ClearDirectory( + IValidator validator, + IFileSystem fileSystem, + ILogger logger) : base(fileSystem) { this.Logger = logger; @@ -87,6 +90,7 @@ public partial class ClearDirectory : FileSystemOperationBase, IOperation public ClearDirectory WithFileSystem(IFileSystem value) { this.FileSystem = value; + return this; } } diff --git a/src/Nitride.IO/Directories/ClearDirectoryValidator.cs b/src/Nitride.IO/Directories/ClearDirectoryValidator.cs index 38e8ebb..1a32434 100644 --- a/src/Nitride.IO/Directories/ClearDirectoryValidator.cs +++ b/src/Nitride.IO/Directories/ClearDirectoryValidator.cs @@ -6,8 +6,13 @@ public class ClearDirectoryValidator : AbstractValidator { public ClearDirectoryValidator() { - this.RuleFor(x => x.Path).NotNull(); - this.RuleFor(x => x.FileSystem).NotNull(); - this.RuleFor(x => x.Logger).NotNull(); + this.RuleFor(x => x.Path) + .NotNull(); + + this.RuleFor(x => x.FileSystem) + .NotNull(); + + this.RuleFor(x => x.Logger) + .NotNull(); } } diff --git a/src/Nitride.IO/Nitride.IO.csproj b/src/Nitride.IO/Nitride.IO.csproj index 901c920..ed32ef4 100644 --- a/src/Nitride.IO/Nitride.IO.csproj +++ b/src/Nitride.IO/Nitride.IO.csproj @@ -8,16 +8,16 @@ - - - - - - + + + + + + - + diff --git a/src/Nitride.IO/Paths/AddPathPrefix.cs b/src/Nitride.IO/Paths/AddPathPrefix.cs index 717a532..9fc4df8 100644 --- a/src/Nitride.IO/Paths/AddPathPrefix.cs +++ b/src/Nitride.IO/Paths/AddPathPrefix.cs @@ -15,7 +15,9 @@ public partial class AddPathPrefix : OperationBase private readonly IValidator validator; - public AddPathPrefix(IValidator validator, ReplacePath replacePath) + public AddPathPrefix( + IValidator validator, + ReplacePath replacePath) { this.validator = validator; this.replacePath = replacePath; @@ -30,12 +32,17 @@ public partial class AddPathPrefix : OperationBase { this.validator.ValidateAndThrow(this); - return this.replacePath.WithReplacement(this.RunReplacement).Run(input); + return this.replacePath.WithReplacement(this.RunReplacement) + .Run(input); } - private UPath RunReplacement(Entity _, UPath path) + private UPath RunReplacement( + Entity _, + UPath path) { - string innerRelativePath = path.ToString().TrimStart('/'); + string innerRelativePath = path.ToString() + .TrimStart('/'); + return this.PathPrefix!.Value / innerRelativePath; } } diff --git a/src/Nitride.IO/Paths/AddPathPrefixValidator.cs b/src/Nitride.IO/Paths/AddPathPrefixValidator.cs index 75ca8b6..8511e40 100644 --- a/src/Nitride.IO/Paths/AddPathPrefixValidator.cs +++ b/src/Nitride.IO/Paths/AddPathPrefixValidator.cs @@ -6,6 +6,7 @@ public class AddPathPrefixValidator : AbstractValidator { public AddPathPrefixValidator() { - this.RuleFor(x => x.PathPrefix).NotNull(); + this.RuleFor(x => x.PathPrefix) + .NotNull(); } } diff --git a/src/Nitride.IO/Paths/ChangePathExtension.cs b/src/Nitride.IO/Paths/ChangePathExtension.cs index 7b8cfb7..df8e4d0 100644 --- a/src/Nitride.IO/Paths/ChangePathExtension.cs +++ b/src/Nitride.IO/Paths/ChangePathExtension.cs @@ -18,7 +18,9 @@ public partial class ChangePathExtension : IOperation private readonly IValidator validator; - public ChangePathExtension(IValidator validator, ReplacePath replacePath) + public ChangePathExtension( + IValidator validator, + ReplacePath replacePath) { this.validator = validator; this.replacePath = replacePath; @@ -33,10 +35,13 @@ public partial class ChangePathExtension : IOperation { this.validator.ValidateAndThrow(this); - return this.replacePath.WithReplacement(this.RunReplacement).Run(input); + return this.replacePath.WithReplacement(this.RunReplacement) + .Run(input); } - private UPath RunReplacement(Entity _, UPath path) + private UPath RunReplacement( + Entity _, + UPath path) { return path.ChangeExtension(this.Extension!); } diff --git a/src/Nitride.IO/Paths/ChangePathExtensionValidator.cs b/src/Nitride.IO/Paths/ChangePathExtensionValidator.cs index 0575c51..c20bd7f 100644 --- a/src/Nitride.IO/Paths/ChangePathExtensionValidator.cs +++ b/src/Nitride.IO/Paths/ChangePathExtensionValidator.cs @@ -6,6 +6,7 @@ public class ChangePathExtensionValidator : AbstractValidator x.Extension).NotNull(); + this.RuleFor(x => x.Extension) + .NotNull(); } } diff --git a/src/Nitride.IO/Paths/LinkDirectChildren.cs b/src/Nitride.IO/Paths/LinkDirectChildren.cs index fe3dabe..23ab20e 100644 --- a/src/Nitride.IO/Paths/LinkDirectChildren.cs +++ b/src/Nitride.IO/Paths/LinkDirectChildren.cs @@ -17,11 +17,15 @@ namespace Nitride.IO.Paths; public partial class LinkDirectChildren : CreateOrUpdateIndex { /// - public LinkDirectChildren(ILogger logger, IValidator validator) + public LinkDirectChildren( + ILogger logger, + IValidator validator) : base(logger, validator) { this.UpdateIndex = this.InternalUpdateIndex; - this.GetIndexKey = e => e.Get().GetDirectoryIndexPath(); + + this.GetIndexKey = e => e.Get() + .GetDirectoryIndexPath(); } /// @@ -34,12 +38,16 @@ public partial class LinkDirectChildren : CreateOrUpdateIndex this.Scanner = new DirectChildPathScanner(new EntityScannerValidator()); - input = this.Scanner.Run(input).ToList(); + input = this.Scanner.Run(input) + .ToList(); return base.Run(input); } - private Entity InternalUpdateIndex(Entity entity, string _, IEnumerable list) + private Entity InternalUpdateIndex( + Entity entity, + string _, + IEnumerable list) { return entity.Add(new DirectChildEntityList(list)); } diff --git a/src/Nitride.IO/Paths/MoveToIndexPath.cs b/src/Nitride.IO/Paths/MoveToIndexPath.cs index 442e611..ebb8f84 100644 --- a/src/Nitride.IO/Paths/MoveToIndexPath.cs +++ b/src/Nitride.IO/Paths/MoveToIndexPath.cs @@ -19,7 +19,9 @@ public partial class MoveToIndexPath : OperationBase private readonly IValidator validator; - public MoveToIndexPath(IValidator validator, ReplacePath replacePath) + public MoveToIndexPath( + IValidator validator, + ReplacePath replacePath) { this.validator = validator; this.replacePath = replacePath; @@ -54,10 +56,13 @@ public partial class MoveToIndexPath : OperationBase { this.validator.ValidateAndThrow(this); - return this.replacePath.WithReplacement(this.RunReplacement).Run(input); + return this.replacePath.WithReplacement(this.RunReplacement) + .Run(input); } - private UPath RunReplacement(Entity _, UPath path) + private UPath RunReplacement( + Entity _, + UPath path) { // See if we are already an index. If that is true, then we don't // have to move any further. diff --git a/src/Nitride.IO/Paths/MoveToIndexPathValidator.cs b/src/Nitride.IO/Paths/MoveToIndexPathValidator.cs index 6e51b90..845abe5 100644 --- a/src/Nitride.IO/Paths/MoveToIndexPathValidator.cs +++ b/src/Nitride.IO/Paths/MoveToIndexPathValidator.cs @@ -6,6 +6,7 @@ public class MoveToIndexPathValidator : AbstractValidator { public MoveToIndexPathValidator() { - this.RuleFor(x => x.CanMoveCallback).NotNull(); + this.RuleFor(x => x.CanMoveCallback) + .NotNull(); } } diff --git a/src/Nitride.IO/Paths/RemovePathPrefix.cs b/src/Nitride.IO/Paths/RemovePathPrefix.cs index cb9402a..3afe23a 100644 --- a/src/Nitride.IO/Paths/RemovePathPrefix.cs +++ b/src/Nitride.IO/Paths/RemovePathPrefix.cs @@ -18,7 +18,9 @@ public partial class RemovePathPrefix : IOperation private readonly IValidator validator; - public RemovePathPrefix(IValidator validator, ReplacePath replacePath) + public RemovePathPrefix( + IValidator validator, + ReplacePath replacePath) { this.validator = validator; this.replacePath = replacePath; @@ -33,17 +35,21 @@ public partial class RemovePathPrefix : IOperation { this.validator.ValidateAndThrow(this); - return this.replacePath.WithReplacement(this.RunReplacement).Run(input); + return this.replacePath.WithReplacement(this.RunReplacement) + .Run(input); } - private UPath RunReplacement(Entity _, UPath path) + private UPath RunReplacement( + Entity _, + UPath path) { string normalized = path.ToString(); string prefix = this.PathPrefix.ToString()!; if (normalized.StartsWith(prefix)) { - return (UPath)path.ToString().Substring(prefix.Length); + return (UPath)path.ToString() + .Substring(prefix.Length); } return path; diff --git a/src/Nitride.IO/Paths/RemovePathPrefixValidator.cs b/src/Nitride.IO/Paths/RemovePathPrefixValidator.cs index 056454e..9beebc5 100644 --- a/src/Nitride.IO/Paths/RemovePathPrefixValidator.cs +++ b/src/Nitride.IO/Paths/RemovePathPrefixValidator.cs @@ -6,6 +6,7 @@ public class RemovePathPrefixValidator : AbstractValidator { public RemovePathPrefixValidator() { - this.RuleFor(x => x.PathPrefix).NotNull(); + this.RuleFor(x => x.PathPrefix) + .NotNull(); } } diff --git a/src/Nitride.IO/Paths/ReplacePath.cs b/src/Nitride.IO/Paths/ReplacePath.cs index 911becf..ea2b21d 100644 --- a/src/Nitride.IO/Paths/ReplacePath.cs +++ b/src/Nitride.IO/Paths/ReplacePath.cs @@ -40,8 +40,10 @@ public partial class ReplacePath : IOperation { this.validator.ValidateAndThrow(this); - return input.ForEachEntity( - (entity, oldPath) => + return input.SelectEntity( + ( + entity, + oldPath) => { UPath newPath = this.Replacement(entity, oldPath); diff --git a/src/Nitride.IO/Paths/ReplacePathValidator.cs b/src/Nitride.IO/Paths/ReplacePathValidator.cs index 0fa727d..51329da 100644 --- a/src/Nitride.IO/Paths/ReplacePathValidator.cs +++ b/src/Nitride.IO/Paths/ReplacePathValidator.cs @@ -6,6 +6,7 @@ public class ReplacePathValidator : AbstractValidator { public ReplacePathValidator() { - this.RuleFor(x => x.Replacement).NotNull(); + this.RuleFor(x => x.Replacement) + .NotNull(); } } diff --git a/src/Nitride.IO/Paths/UPathExtensions.cs b/src/Nitride.IO/Paths/UPathExtensions.cs index d97b781..c8a4ff5 100644 --- a/src/Nitride.IO/Paths/UPathExtensions.cs +++ b/src/Nitride.IO/Paths/UPathExtensions.cs @@ -17,7 +17,10 @@ public static class UPathExtensions { if (path.GetNameWithoutExtension() == "index") { - return path.GetDirectory().ToString().TrimEnd('/') + "/"; + return path.GetDirectory() + .ToString() + .TrimEnd('/') + + "/"; } return path.ToString(); @@ -33,7 +36,9 @@ public static class UPathExtensions parent = "/"; } - string parentPath = parent.ToString().TrimEnd('/') + "/"; + string parentPath = parent.ToString() + .TrimEnd('/') + + "/"; return parentPath; } diff --git a/src/Nitride.IO/README.md b/src/Nitride.IO/README.md index 2b62695..6ef044f 100644 --- a/src/Nitride.IO/README.md +++ b/src/Nitride.IO/README.md @@ -4,9 +4,9 @@ This assembly contains the primary system for reading and writing from the disk, along with various processes to manipulate paths. It contains three primary components: -- File System I/O -- Path Normalization -- Disk-Based Content +- File System I/O +- Path Normalization +- Disk-Based Content ## File System I/O diff --git a/src/Nitride.Markdown/ConvertMarkdownToBase.cs b/src/Nitride.Markdown/ConvertMarkdownToBase.cs index 815b941..a63f76b 100644 --- a/src/Nitride.Markdown/ConvertMarkdownToBase.cs +++ b/src/Nitride.Markdown/ConvertMarkdownToBase.cs @@ -41,8 +41,11 @@ public abstract partial class ConvertMarkdownToBase : IOperation MarkdownPipeline options = builder.Build(); // Process the Markdown files (while passing everything on). - return input.ForEachEntity( - (entity, _, content) => this.Convert(entity, content, options)); + return input.SelectEntity( + ( + entity, + _, + content) => this.Convert(entity, content, options)); } /// @@ -52,5 +55,8 @@ public abstract partial class ConvertMarkdownToBase : IOperation /// The content for this entity. /// The markdown pipeline. /// A converted entity. - protected abstract Entity Convert(Entity entity, ITextContent markdownContent, MarkdownPipeline options); + protected abstract Entity Convert( + Entity entity, + ITextContent markdownContent, + MarkdownPipeline options); } diff --git a/src/Nitride.Markdown/ConvertMarkdownToBaseValidator.cs b/src/Nitride.Markdown/ConvertMarkdownToBaseValidator.cs index 6e06006..eed965c 100644 --- a/src/Nitride.Markdown/ConvertMarkdownToBaseValidator.cs +++ b/src/Nitride.Markdown/ConvertMarkdownToBaseValidator.cs @@ -6,6 +6,7 @@ public class ConvertMarkdownToBaseValidator : AbstractValidator x.ConfigureMarkdown).NotNull(); + this.RuleFor(x => x.ConfigureMarkdown) + .NotNull(); } } diff --git a/src/Nitride.Markdown/ConvertMarkdownToGemtext.cs b/src/Nitride.Markdown/ConvertMarkdownToGemtext.cs index a388eec..abbac04 100644 --- a/src/Nitride.Markdown/ConvertMarkdownToGemtext.cs +++ b/src/Nitride.Markdown/ConvertMarkdownToGemtext.cs @@ -29,6 +29,7 @@ public class ConvertMarkdownToGemtext : ConvertMarkdownToBase public override ConvertMarkdownToGemtext WithConfigureMarkdown(Action? value) { base.WithConfigureMarkdown(value); + return this; } @@ -39,13 +40,18 @@ public class ConvertMarkdownToGemtext : ConvertMarkdownToBase /// The content for this entity. /// The markdown pipeline. /// A converted entity. - protected override Entity Convert(Entity entity, ITextContent markdownContent, MarkdownPipeline options) + protected override Entity Convert( + Entity entity, + ITextContent markdownContent, + MarkdownPipeline options) { string markdown = markdownContent.GetText(); string gemtext = MarkdownGemtext.ToGemtext(markdown, options); var content = new StringTextContent(gemtext); - entity = entity.SetTextContent(content).Remove().Set(IsGemtext.Instance); + entity = entity.SetTextContent(content) + .Remove() + .Set(IsGemtext.Instance); return entity; } diff --git a/src/Nitride.Markdown/ConvertMarkdownToHtml.cs b/src/Nitride.Markdown/ConvertMarkdownToHtml.cs index a411f32..c595ebb 100644 --- a/src/Nitride.Markdown/ConvertMarkdownToHtml.cs +++ b/src/Nitride.Markdown/ConvertMarkdownToHtml.cs @@ -26,6 +26,7 @@ public class ConvertMarkdownToHtml : ConvertMarkdownToBase public override ConvertMarkdownToHtml WithConfigureMarkdown(Action? value) { base.WithConfigureMarkdown(value); + return this; } @@ -36,14 +37,19 @@ public class ConvertMarkdownToHtml : ConvertMarkdownToBase /// The content for this entity. /// The markdown pipeline. /// A converted entity. - protected override Entity Convert(Entity entity, ITextContent markdownContent, MarkdownPipeline options) + protected override Entity Convert( + Entity entity, + ITextContent markdownContent, + MarkdownPipeline options) { // Convert the entity to Html. string markdown = markdownContent.GetText(); string html = Markdig.Markdown.ToHtml(markdown, options); var htmlContent = new StringTextContent(html); - entity = entity.SetTextContent(htmlContent).Remove().Set(IsHtml.Instance); + entity = entity.SetTextContent(htmlContent) + .Remove() + .Set(IsHtml.Instance); // Return the resulting entity. return entity; diff --git a/src/Nitride.Markdown/IdentifyMarkdown.cs b/src/Nitride.Markdown/IdentifyMarkdown.cs index edeedb1..6fc295c 100644 --- a/src/Nitride.Markdown/IdentifyMarkdown.cs +++ b/src/Nitride.Markdown/IdentifyMarkdown.cs @@ -33,11 +33,14 @@ public partial class IdentifyMarkdown : IOperation { this.validator.ValidateAndThrow(this); - return input.ForEachEntity(this.MarkTextEntities) - .ForEachEntity(this.MarkBinaryEntities); + return input.SelectEntity(this.MarkTextEntities) + .SelectEntity(this.MarkBinaryEntities); } - private Entity MarkBinaryEntities(Entity entity, UPath path, IBinaryContent binary) + private Entity MarkBinaryEntities( + Entity entity, + UPath path, + IBinaryContent binary) { // If we aren't a Markdown file, then there is nothing we can do about that. if (!this.IsMarkdownTest(entity, path)) @@ -48,7 +51,8 @@ public partial class IdentifyMarkdown : IOperation // Convert the file as a binary. if (binary is ITextContentConvertable textConvertable) { - entity = entity.SetTextContent(textConvertable.ToTextContent()).Set(IsMarkdown.Instance); + entity = entity.SetTextContent(textConvertable.ToTextContent()) + .Set(IsMarkdown.Instance); } else { @@ -59,7 +63,10 @@ public partial class IdentifyMarkdown : IOperation return entity; } - private Entity MarkTextEntities(Entity entity, UPath path, ITextContent _) + private Entity MarkTextEntities( + Entity entity, + UPath path, + ITextContent _) { // If we aren't a Markdown file, then there is nothing // we can do about that. diff --git a/src/Nitride.Markdown/IdentifyMarkdownFromPath.cs b/src/Nitride.Markdown/IdentifyMarkdownFromPath.cs index 20435dc..60dc853 100644 --- a/src/Nitride.Markdown/IdentifyMarkdownFromPath.cs +++ b/src/Nitride.Markdown/IdentifyMarkdownFromPath.cs @@ -14,7 +14,9 @@ public class IdentifyMarkdownFromPath : IdentifyMarkdown this.IsMarkdownTest = DefaultIsMarkdown; } - private static bool DefaultIsMarkdown(Entity entity, UPath path) + private static bool DefaultIsMarkdown( + Entity entity, + UPath path) { return (path.GetExtensionWithDot() ?? string.Empty).ToLowerInvariant() switch { diff --git a/src/Nitride.Markdown/IdentifyMarkdownValidator.cs b/src/Nitride.Markdown/IdentifyMarkdownValidator.cs index 2419d88..cb6d430 100644 --- a/src/Nitride.Markdown/IdentifyMarkdownValidator.cs +++ b/src/Nitride.Markdown/IdentifyMarkdownValidator.cs @@ -6,6 +6,7 @@ public class IdentifyMarkdownValidator : AbstractValidator { public IdentifyMarkdownValidator() { - this.RuleFor(x => x.IsMarkdownTest).NotNull(); + this.RuleFor(x => x.IsMarkdownTest) + .NotNull(); } } diff --git a/src/Nitride.Markdown/Nitride.Markdown.csproj b/src/Nitride.Markdown/Nitride.Markdown.csproj index 0a403b3..2627d93 100644 --- a/src/Nitride.Markdown/Nitride.Markdown.csproj +++ b/src/Nitride.Markdown/Nitride.Markdown.csproj @@ -16,7 +16,7 @@ - + diff --git a/src/Nitride.Slugs/NitrideSlugsBuilderExtensions.cs b/src/Nitride.Slugs/NitrideSlugsBuilderExtensions.cs index 9ba0abd..c4edad2 100644 --- a/src/Nitride.Slugs/NitrideSlugsBuilderExtensions.cs +++ b/src/Nitride.Slugs/NitrideSlugsBuilderExtensions.cs @@ -6,7 +6,9 @@ namespace Nitride.Slugs; public static class NitrideSlugsBuilderExtensions { - public static NitrideBuilder UseSlugs(this NitrideBuilder builder, ISlugConverter slugs) + public static NitrideBuilder UseSlugs( + this NitrideBuilder builder, + ISlugConverter slugs) { if (slugs == null) { @@ -16,7 +18,10 @@ public static class NitrideSlugsBuilderExtensions return builder.ConfigureContainer( x => { - x.RegisterInstance(slugs).As().SingleInstance(); + x.RegisterInstance(slugs) + .As() + .SingleInstance(); + x.RegisterModule(); }); } diff --git a/src/Nitride.Slugs/SimpleSlugConverter.cs b/src/Nitride.Slugs/SimpleSlugConverter.cs index 11cd35f..cfdc37e 100644 --- a/src/Nitride.Slugs/SimpleSlugConverter.cs +++ b/src/Nitride.Slugs/SimpleSlugConverter.cs @@ -52,7 +52,8 @@ public class SimpleSlugConverter : ISlugConverter, IEnumerable /// public IEnumerator GetEnumerator() { - return this.replacements.Select(x => x.Item1).GetEnumerator(); + return this.replacements.Select(x => x.Item1) + .GetEnumerator(); } /// diff --git a/src/Nitride.Slugs/UnicodeNormalizingSlugConverter.cs b/src/Nitride.Slugs/UnicodeNormalizingSlugConverter.cs index dde34ec..412edf0 100644 --- a/src/Nitride.Slugs/UnicodeNormalizingSlugConverter.cs +++ b/src/Nitride.Slugs/UnicodeNormalizingSlugConverter.cs @@ -34,7 +34,10 @@ public class UnicodeNormalizingSlugConverter : SimpleSlugConverter // Normalize the Unicode objects. // Strip out the accents. This is a cheesy way of doing so. - char[] chars = input.Normalize(NormalizationForm.FormD).Where(this.IsNonSpacingMark).ToArray(); + char[] chars = input.Normalize(NormalizationForm.FormD) + .Where(this.IsNonSpacingMark) + .ToArray(); + string normalized = new string(chars).Normalize(NormalizationForm.FormC); // Return the base implementation. diff --git a/src/Nitride.Temporal/Cli/DatePipelineCommandOption.cs b/src/Nitride.Temporal/Cli/DatePipelineCommandOption.cs index fe8e024..2e4c385 100644 --- a/src/Nitride.Temporal/Cli/DatePipelineCommandOption.cs +++ b/src/Nitride.Temporal/Cli/DatePipelineCommandOption.cs @@ -22,10 +22,13 @@ public class DatePipelineCommandOption : IPipelineCommandOption private readonly Timekeeper timekeeper; - public DatePipelineCommandOption(ILogger logger, Timekeeper timekeeper) + public DatePipelineCommandOption( + ILogger logger, + Timekeeper timekeeper) { this.logger = logger.ForContext(); this.timekeeper = timekeeper; + this.Option = new Option("--date") { Description = "Sets the date to something other than now", diff --git a/src/Nitride.Temporal/Cli/ExpiresPipelineCommandOption.cs b/src/Nitride.Temporal/Cli/ExpiresPipelineCommandOption.cs index 561ff3e..987e99e 100644 --- a/src/Nitride.Temporal/Cli/ExpiresPipelineCommandOption.cs +++ b/src/Nitride.Temporal/Cli/ExpiresPipelineCommandOption.cs @@ -22,10 +22,14 @@ public class ExpiresPipelineCommandOption : IPipelineCommandOption private readonly ILogger logger; - public ExpiresPipelineCommandOption(ILogger logger, Timekeeper clock, string? defaultValue = null) + public ExpiresPipelineCommandOption( + ILogger logger, + Timekeeper clock, + string? defaultValue = null) { this.logger = logger.ForContext(); this.clock = clock; + this.Option = new Option("--expires", () => defaultValue) { Description = "Sets the expiration time as time before the current date", @@ -54,6 +58,7 @@ public class ExpiresPipelineCommandOption : IPipelineCommandOption if (this.clock.Expiration == null) { this.logger.Information("No entities will be expired"); + return; } diff --git a/src/Nitride.Temporal/CreateDateIndexes.cs b/src/Nitride.Temporal/CreateDateIndexes.cs index ceb9b30..02966e3 100644 --- a/src/Nitride.Temporal/CreateDateIndexes.cs +++ b/src/Nitride.Temporal/CreateDateIndexes.cs @@ -14,9 +14,14 @@ public class CreateDateIndexesValidator : AbstractValidator { public CreateDateIndexesValidator() { - this.RuleFor(a => a.Timekeeper).NotNull(); - this.RuleFor(a => a.CreateIndex).NotNull(); - this.RuleFor(a => a.Formats).NotNull(); + this.RuleFor(a => a.Timekeeper) + .NotNull(); + + this.RuleFor(a => a.CreateIndex) + .NotNull(); + + this.RuleFor(a => a.Formats) + .NotNull(); } } @@ -31,7 +36,9 @@ public partial class CreateDateIndexes : OperationBase, IResolvingOperation { private readonly IValidator validator; - public CreateDateIndexes(IValidator validator, Timekeeper timekeeper) + public CreateDateIndexes( + IValidator validator, + Timekeeper timekeeper) { this.validator = validator; this.Timekeeper = timekeeper; @@ -77,7 +84,10 @@ public partial class CreateDateIndexes : OperationBase, IResolvingOperation // Go through the inputs and group each one. We also use `ToList` to force the enumeration to completely // resolve and we can get everything we need. We will append the created indexes to the end of this list. - var output = input.ForEachEntity((entity, instant) => this.GroupOnFormats(instant, entries, entity)) + var output = input.SelectEntity( + ( + entity, + instant) => this.GroupOnFormats(instant, entries, entity)) .ToList(); // Going in reverse order (most precise to less precise), we create the various indexes. @@ -96,8 +106,11 @@ public partial class CreateDateIndexes : OperationBase, IResolvingOperation // Get all the entities at this level and split them into ones we've seen (at a lower level) and which // ones are new (these always go on the index). - var seenEntities = pair.Value.Where(a => seen.Contains(a)).ToList(); - var newEntities = pair.Value.Where(a => !seen.Contains(a)).ToList(); + var seenEntities = pair.Value.Where(a => seen.Contains(a)) + .ToList(); + + var newEntities = pair.Value.Where(a => !seen.Contains(a)) + .ToList(); seen.AddRange(newEntities); @@ -126,14 +139,17 @@ public partial class CreateDateIndexes : OperationBase, IResolvingOperation } Entity? first = pair.Value[0]; - string? nextKey = this.Timekeeper.ToDateTime(first.Get()).ToString(this.Formats[i + 1]); + + string? nextKey = this.Timekeeper.ToDateTime(first.Get()) + .ToString(this.Formats[i + 1]); if (!indexes.ContainsKey(nextKey)) { indexes[nextKey] = new List(); } - indexes[nextKey].Add(indexEntity); + indexes[nextKey] + .Add(indexEntity); } } @@ -144,10 +160,14 @@ public partial class CreateDateIndexes : OperationBase, IResolvingOperation public CreateDateIndexes WithFormats(params string[] formats) { this.Formats = formats.ToList(); + return this; } - private Entity GroupOnFormats(Instant instant, List>> grouped, Entity entity) + private Entity GroupOnFormats( + Instant instant, + List>> grouped, + Entity entity) { var dateTime = this.Timekeeper.ToDateTime(instant); @@ -155,12 +175,14 @@ public partial class CreateDateIndexes : OperationBase, IResolvingOperation { string? formatted = dateTime.ToString(this.Formats[i]); - if (!grouped[i].ContainsKey(formatted)) + if (!grouped[i] + .ContainsKey(formatted)) { grouped[i][formatted] = new List(); } - grouped[i][formatted].Add(entity); + grouped[i][formatted] + .Add(entity); } return entity; diff --git a/src/Nitride.Temporal/DateIndex.cs b/src/Nitride.Temporal/DateIndex.cs index 66619d7..7d256ce 100644 --- a/src/Nitride.Temporal/DateIndex.cs +++ b/src/Nitride.Temporal/DateIndex.cs @@ -6,7 +6,11 @@ namespace Nitride.Temporal; public class DateIndex { - public DateIndex(string key, string format, IReadOnlyList entries, IReadOnlyList indexes) + public DateIndex( + string key, + string format, + IReadOnlyList entries, + IReadOnlyList indexes) { this.Key = key; this.Format = format; diff --git a/src/Nitride.Temporal/FilterOutExpiredInstant.cs b/src/Nitride.Temporal/FilterOutExpiredInstant.cs index 0683df6..5ac1440 100644 --- a/src/Nitride.Temporal/FilterOutExpiredInstant.cs +++ b/src/Nitride.Temporal/FilterOutExpiredInstant.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Linq; using FluentValidation; @@ -17,7 +16,9 @@ public partial class FilterOutExpiredInstant : OperationBase { private readonly IValidator validator; - public FilterOutExpiredInstant(IValidator validator, Timekeeper clock) + public FilterOutExpiredInstant( + IValidator validator, + Timekeeper clock) { this.validator = validator; this.Timekeeper = clock; @@ -35,15 +36,17 @@ public partial class FilterOutExpiredInstant : OperationBase return input; } - return input.ForEntities(x => x.Where(this.IsNotExpired)); + return input.SelectEntity(this.IsNotExpired); } - private bool IsNotExpired(Entity entity) + private Entity? IsNotExpired( + Entity entity, + Instant instant, + CanExpire _) { - Instant instant = entity.Get(); Instant expiration = this.Timekeeper.Expiration!.Value; bool isExpired = instant.CompareTo(expiration) < 0; - return !isExpired; + return isExpired ? null : entity; } } diff --git a/src/Nitride.Temporal/FilterOutExpiredInstantValidator.cs b/src/Nitride.Temporal/FilterOutExpiredInstantValidator.cs index c03d527..0053013 100644 --- a/src/Nitride.Temporal/FilterOutExpiredInstantValidator.cs +++ b/src/Nitride.Temporal/FilterOutExpiredInstantValidator.cs @@ -6,6 +6,7 @@ public class FilterOutExpiredInstantValidator : AbstractValidator x.Timekeeper).NotNull(); + this.RuleFor(x => x.Timekeeper) + .NotNull(); } } diff --git a/src/Nitride.Temporal/FilterOutFutureInstant.cs b/src/Nitride.Temporal/FilterOutFutureInstant.cs index 5040e8c..d46343a 100644 --- a/src/Nitride.Temporal/FilterOutFutureInstant.cs +++ b/src/Nitride.Temporal/FilterOutFutureInstant.cs @@ -25,6 +25,9 @@ public partial class FilterOutFutureInstant : OperationBase { Instant now = this.Timekeeper.Clock.GetCurrentInstant(); - return input.WhereEntities((_, instant) => instant.CompareTo(now) <= 0); + return input.SelectEntity( + ( + entity, + instant) => instant.CompareTo(now) <= 0 ? null : entity); } } diff --git a/src/Nitride.Temporal/FilterOutFutureInstantValidator.cs b/src/Nitride.Temporal/FilterOutFutureInstantValidator.cs index fbb5d49..a66c094 100644 --- a/src/Nitride.Temporal/FilterOutFutureInstantValidator.cs +++ b/src/Nitride.Temporal/FilterOutFutureInstantValidator.cs @@ -6,6 +6,7 @@ public class FilterOutFutureInstantValidator : AbstractValidator x.Timekeeper).NotNull(); + this.RuleFor(x => x.Timekeeper) + .NotNull(); } } diff --git a/src/Nitride.Temporal/Nitride.Temporal.csproj b/src/Nitride.Temporal/Nitride.Temporal.csproj index 60b7a1b..b0ff673 100644 --- a/src/Nitride.Temporal/Nitride.Temporal.csproj +++ b/src/Nitride.Temporal/Nitride.Temporal.csproj @@ -11,18 +11,18 @@ - - - - - - - - + + + + + + + + - + diff --git a/src/Nitride.Temporal/NitrideTemporalBuilderExtensions.cs b/src/Nitride.Temporal/NitrideTemporalBuilderExtensions.cs index b8cacf2..d3f782e 100644 --- a/src/Nitride.Temporal/NitrideTemporalBuilderExtensions.cs +++ b/src/Nitride.Temporal/NitrideTemporalBuilderExtensions.cs @@ -36,7 +36,8 @@ public static class NitrideTemporalBuilderExtensions // Add in the CLI options. if (config.AddDateOptionToCommandLine) { - x.RegisterType().As(); + x.RegisterType() + .As(); } if (config.AddExpireOptionToCommandLine && config.Expiration != null) @@ -56,7 +57,9 @@ public static class NitrideTemporalBuilderExtensions if (config.DateTimeZone != null) { builder.ConfigureSite( - (_, scope) => + ( + _, + scope) => { ILogger logger = scope.Resolve(); Timekeeper timekeeper = scope.Resolve(); diff --git a/src/Nitride.Temporal/NitrideTemporalConfiguration.cs b/src/Nitride.Temporal/NitrideTemporalConfiguration.cs index 5546a67..c736f99 100644 --- a/src/Nitride.Temporal/NitrideTemporalConfiguration.cs +++ b/src/Nitride.Temporal/NitrideTemporalConfiguration.cs @@ -33,6 +33,7 @@ public partial class NitrideTemporalConfiguration public NitrideTemporalConfiguration WithDateTimeZone(string zoneName) { this.DateTimeZone = DateTimeZoneProviders.Tzdb[zoneName]; + return this; } diff --git a/src/Nitride.Temporal/NitrideTemporalModule.cs b/src/Nitride.Temporal/NitrideTemporalModule.cs index 88dd383..2547a8d 100644 --- a/src/Nitride.Temporal/NitrideTemporalModule.cs +++ b/src/Nitride.Temporal/NitrideTemporalModule.cs @@ -9,7 +9,12 @@ public class NitrideTemporalModule : Module { builder.RegisterOperators(this); builder.RegisterValidators(this); - builder.RegisterType().AsSelf().SingleInstance(); - builder.RegisterGeneric(typeof(SetInstantFromComponent<>)).As(typeof(SetInstantFromComponent<>)); + + builder.RegisterType() + .AsSelf() + .SingleInstance(); + + builder.RegisterGeneric(typeof(SetInstantFromComponent<>)) + .As(typeof(SetInstantFromComponent<>)); } } diff --git a/src/Nitride.Temporal/SetInstantFromComponent.cs b/src/Nitride.Temporal/SetInstantFromComponent.cs index 711a238..89eb5dc 100644 --- a/src/Nitride.Temporal/SetInstantFromComponent.cs +++ b/src/Nitride.Temporal/SetInstantFromComponent.cs @@ -42,7 +42,7 @@ public class SetInstantFromComponent : OperationBase { this.validator.ValidateAndThrow(this); - return input.ForEachEntity(this.Set); + return input.SelectEntity(this.Set); } /// @@ -53,10 +53,13 @@ public class SetInstantFromComponent : OperationBase public SetInstantFromComponent WithGetDateTimeObject(Func? callback) { this.GetDateTimeObject = callback; + return this; } - private Entity Set(Entity entity, TComponent component) + private Entity Set( + Entity entity, + TComponent component) { object? temporal = this.GetDateTimeObject!(entity, component); Instant instant; @@ -67,22 +70,27 @@ public class SetInstantFromComponent : OperationBase return entity; case Instant direct: instant = direct; + break; case LocalDate other: instant = this.clock.CreateInstant(other); + break; case DateTime other: instant = this.clock.CreateInstant(other); + break; case DateTimeOffset other: instant = this.clock.CreateInstant(other); + break; default: throw new InvalidOperationException( "Did not get a date time object from the callback. " + "Can only handle DateTime, DateTimeOffset, LocalDate, " + "and Instant. Got a " - + temporal.GetType().Name + + temporal.GetType() + .Name + " instead."); } diff --git a/src/Nitride.Temporal/SetInstantFromComponentValidator.cs b/src/Nitride.Temporal/SetInstantFromComponentValidator.cs index 9f3d0a0..fd272d6 100644 --- a/src/Nitride.Temporal/SetInstantFromComponentValidator.cs +++ b/src/Nitride.Temporal/SetInstantFromComponentValidator.cs @@ -6,6 +6,7 @@ public class SetInstantFromComponentValidator : AbstractValidator x.GetDateTimeObject).NotNull(); + this.RuleFor(x => x.GetDateTimeObject) + .NotNull(); } } diff --git a/src/Nitride.Temporal/SetInstantFromPath.cs b/src/Nitride.Temporal/SetInstantFromPath.cs index 0240f5c..2c1a989 100644 --- a/src/Nitride.Temporal/SetInstantFromPath.cs +++ b/src/Nitride.Temporal/SetInstantFromPath.cs @@ -25,7 +25,9 @@ public partial class SetInstantFromPath : OperationBase private readonly IValidator validator; - public SetInstantFromPath(IValidator validator, Timekeeper clock) + public SetInstantFromPath( + IValidator validator, + Timekeeper clock) { this.validator = validator; this.clock = clock; @@ -43,10 +45,12 @@ public partial class SetInstantFromPath : OperationBase { this.validator.ValidateAndThrow(this); - return input.ForEachEntity(this.Set); + return input.SelectEntity(this.Set); } - private Entity Set(Entity entity, UPath path) + private Entity Set( + Entity entity, + UPath path) { // See if the path matches the given expression. Match match = this.PathRegex!.Match(path.ToString()); @@ -58,9 +62,15 @@ public partial class SetInstantFromPath : OperationBase // Create an Instant from this. Instant instant = this.clock.CreateInstant( - Convert.ToInt32(match.Groups["year"].Value), - Convert.ToInt32(match.Groups["month"].Value), - Convert.ToInt32(match.Groups["day"].Value)); + Convert.ToInt32( + match.Groups["year"] + .Value), + Convert.ToInt32( + match.Groups["month"] + .Value), + Convert.ToInt32( + match.Groups["day"] + .Value)); return entity.Set(instant); } diff --git a/src/Nitride.Temporal/SetInstantFromPathValidator.cs b/src/Nitride.Temporal/SetInstantFromPathValidator.cs index f4cb184..09ff2f4 100644 --- a/src/Nitride.Temporal/SetInstantFromPathValidator.cs +++ b/src/Nitride.Temporal/SetInstantFromPathValidator.cs @@ -6,6 +6,7 @@ public class SetInstantFromPathValidator : AbstractValidator { public SetInstantFromPathValidator() { - this.RuleFor(x => x.PathRegex).NotNull(); + this.RuleFor(x => x.PathRegex) + .NotNull(); } } diff --git a/src/Nitride.Temporal/Timekeeper.cs b/src/Nitride.Temporal/Timekeeper.cs index c24efdd..e9b3afa 100644 --- a/src/Nitride.Temporal/Timekeeper.cs +++ b/src/Nitride.Temporal/Timekeeper.cs @@ -37,7 +37,8 @@ public class Timekeeper /// Gets the instant when the files expire. /// public Instant? Expiration => this.Expires.HasValue - ? this.Clock.GetCurrentInstant().Minus(Duration.FromTimeSpan(this.Expires.Value)) + ? this.Clock.GetCurrentInstant() + .Minus(Duration.FromTimeSpan(this.Expires.Value)) : null; /// @@ -53,7 +54,10 @@ public class Timekeeper /// The numerical month. /// The numerical day of month. /// An instant in the clock's time zone. - public Instant CreateInstant(int year, int month, int day) + public Instant CreateInstant( + int year, + int month, + int day) { var date = new LocalDate(year, month, day); @@ -111,6 +115,8 @@ public class Timekeeper /// A DateTime in the correct date and time. public DateTime ToDateTime(Instant instant) { - return instant.InZone(this.DateTimeZone).ToDateTimeOffset().DateTime; + return instant.InZone(this.DateTimeZone) + .ToDateTimeOffset() + .DateTime; } } diff --git a/src/Nitride.Yaml/Nitride.Yaml.csproj b/src/Nitride.Yaml/Nitride.Yaml.csproj index eb1754f..3229d34 100644 --- a/src/Nitride.Yaml/Nitride.Yaml.csproj +++ b/src/Nitride.Yaml/Nitride.Yaml.csproj @@ -14,7 +14,7 @@ - + diff --git a/src/Nitride.Yaml/NitrideYamlModule.cs b/src/Nitride.Yaml/NitrideYamlModule.cs index 2052c95..d9fdba1 100644 --- a/src/Nitride.Yaml/NitrideYamlModule.cs +++ b/src/Nitride.Yaml/NitrideYamlModule.cs @@ -7,7 +7,9 @@ public class NitrideYamlModule : Module /// protected override void Load(ContainerBuilder builder) { - builder.RegisterGeneric(typeof(ParseYamlHeader<>)).As(typeof(ParseYamlHeader<>)); + builder.RegisterGeneric(typeof(ParseYamlHeader<>)) + .As(typeof(ParseYamlHeader<>)); + builder.RegisterOperators(this); builder.RegisterValidators(this); } diff --git a/src/Nitride.Yaml/ParseYamlHeader.cs b/src/Nitride.Yaml/ParseYamlHeader.cs index db635b1..472ddd1 100644 --- a/src/Nitride.Yaml/ParseYamlHeader.cs +++ b/src/Nitride.Yaml/ParseYamlHeader.cs @@ -52,7 +52,10 @@ public class ParseYamlHeader : OperationBase // Process through the files. We only care about the text ones // and we'll put a default TModel in for those that don't have a // header. - return input.ForEachEntity((entity, content) => this.Parse(entity, content, deserializer)); + return input.SelectEntity( + ( + entity, + content) => this.Parse(entity, content, deserializer)); } /// @@ -64,6 +67,7 @@ public class ParseYamlHeader : OperationBase public ParseYamlHeader WithIgnoreUnmatchedProperties(bool value) { this.ignoreUnmatchedProperties = value; + return this; } @@ -76,16 +80,21 @@ public class ParseYamlHeader : OperationBase public ParseYamlHeader WithNamingConvention(INamingConvention value) { this.namingConvention = value; + return this; } public ParseYamlHeader WithRemoveHeader(bool value) { this.RemoveHeader = value; + return this; } - private Entity Parse(Entity entity, ITextContent content, IDeserializer deserializer) + private Entity Parse( + Entity entity, + ITextContent content, + IDeserializer deserializer) { // Get the textual input from the stream. using TextReader reader = content.GetReader(); @@ -148,6 +157,8 @@ public class ParseYamlHeader : OperationBase } // Set the model and return it. - return entity.Set(model).SetTextContent(new StringTextContent(buffer.ToString())).Set(HasYamlModel.Instance); + return entity.Set(model) + .SetTextContent(new StringTextContent(buffer.ToString())) + .Set(HasYamlModel.Instance); } } diff --git a/src/Nitride/Commands/BuildCommand.cs b/src/Nitride/Commands/BuildCommand.cs index ac215b1..35d82a9 100644 --- a/src/Nitride/Commands/BuildCommand.cs +++ b/src/Nitride/Commands/BuildCommand.cs @@ -20,7 +20,10 @@ public class BuildCommand : Command, ICommandHandler private readonly PipelineManager pipelines; - public BuildCommand(ILogger logger, PipelineManager pipelines, IList pipelineOptions) + public BuildCommand( + ILogger logger, + PipelineManager pipelines, + IList pipelineOptions) : base("build", "Generate the website") { // Set up our simple member variables. diff --git a/src/Nitride/Contents/EntityBinaryContentExtensions.cs b/src/Nitride/Contents/EntityBinaryContentExtensions.cs index c4e2849..b1afb5c 100644 --- a/src/Nitride/Contents/EntityBinaryContentExtensions.cs +++ b/src/Nitride/Contents/EntityBinaryContentExtensions.cs @@ -36,7 +36,9 @@ public static class EntityBinaryContentExtensions /// The content to add to the entity. /// The base type of the content. /// The entity or a copy with the new component. - public static Entity SetBinaryContent(this Entity entity, TType content) + public static Entity SetBinaryContent( + this Entity entity, + TType content) where TType : IBinaryContent { return entity.SetContent(content); diff --git a/src/Nitride/Contents/EntityContentExtensions.cs b/src/Nitride/Contents/EntityContentExtensions.cs index 7ea02e4..a1fb088 100644 --- a/src/Nitride/Contents/EntityContentExtensions.cs +++ b/src/Nitride/Contents/EntityContentExtensions.cs @@ -19,7 +19,8 @@ public static class EntityContentExtensions /// The one and only content component. public static IContent GetContent(this Entity entity) { - Type type = entity.GetComponentTypes().Single(x => typeof(IContent).IsAssignableFrom(x)); + Type type = entity.GetComponentTypes() + .Single(x => typeof(IContent).IsAssignableFrom(x)); return entity.Get(type); } @@ -31,7 +32,8 @@ public static class EntityContentExtensions /// True if there is a component extending `IContent`. public static bool HasContent(this Entity entity) { - return entity.GetComponentTypes().Any(x => typeof(IContent).IsAssignableFrom(x)); + return entity.GetComponentTypes() + .Any(x => typeof(IContent).IsAssignableFrom(x)); } /// @@ -42,10 +44,13 @@ public static class EntityContentExtensions /// The content to add to the entity. /// The base type of the content. /// The entity or a copy with the new component. - public static Entity SetContent(this Entity entity, TType content) + public static Entity SetContent( + this Entity entity, + TType content) where TType : IContent { - IEnumerable? existing = entity.GetComponentTypes().Where(x => typeof(IContent).IsAssignableFrom(x)); + IEnumerable? existing = entity.GetComponentTypes() + .Where(x => typeof(IContent).IsAssignableFrom(x)); foreach (Type? component in existing) { diff --git a/src/Nitride/Contents/EntityTextContentExtensions.cs b/src/Nitride/Contents/EntityTextContentExtensions.cs index 4b2752e..9d4d97d 100644 --- a/src/Nitride/Contents/EntityTextContentExtensions.cs +++ b/src/Nitride/Contents/EntityTextContentExtensions.cs @@ -26,7 +26,9 @@ public static class EntityTextContentExtensions /// The content to add to the entity. /// The base type of the content. /// The entity or a copy with the new component. - public static Entity SetTextContent(this Entity entity, TType content) + public static Entity SetTextContent( + this Entity entity, + TType content) where TType : ITextContent { return entity.SetContent(content); @@ -41,7 +43,9 @@ public static class EntityTextContentExtensions /// The content to add to the entity. /// The base type of the content. /// The entity or a copy with the new component. - public static Entity SetTextContent(this Entity entity, string content) + public static Entity SetTextContent( + this Entity entity, + string content) { return entity.SetTextContent(new StringTextContent(content)); } diff --git a/src/Nitride/Entities/CreateOrUpdateIndex.cs b/src/Nitride/Entities/CreateOrUpdateIndex.cs index 6057fd6..bcb4939 100644 --- a/src/Nitride/Entities/CreateOrUpdateIndex.cs +++ b/src/Nitride/Entities/CreateOrUpdateIndex.cs @@ -28,7 +28,9 @@ public partial class CreateOrUpdateIndex : OperationBase private readonly IValidator validator; - public CreateOrUpdateIndex(ILogger logger, IValidator validator) + public CreateOrUpdateIndex( + ILogger logger, + IValidator validator) { this.validator = validator; this.logger = logger.ForContext(typeof(CreateOrUpdateIndex)); @@ -65,7 +67,8 @@ public partial class CreateOrUpdateIndex : OperationBase this.validator.ValidateAndThrow(this); // Get the list of all the scanned entities. - var scanned = this.Scanner.GetScannedResults().ToDictionary(x => x.Key, x => x.Value); + var scanned = this.Scanner.GetScannedResults() + .ToDictionary(x => x.Key, x => x.Value); // We loop through the results and look for index entities. Any one we // find, we update with the existing entries. If we get to the end and diff --git a/src/Nitride/Entities/CreateOrUpdateIndexValidator.cs b/src/Nitride/Entities/CreateOrUpdateIndexValidator.cs index 4f64f60..8644d5b 100644 --- a/src/Nitride/Entities/CreateOrUpdateIndexValidator.cs +++ b/src/Nitride/Entities/CreateOrUpdateIndexValidator.cs @@ -6,8 +6,13 @@ public class CreateOrUpdateIndexValidator : AbstractValidator x.Scanner).NotNull(); - this.RuleFor(x => x.GetIndexKey).NotNull(); - this.RuleFor(x => x.UpdateIndex).NotNull(); + this.RuleFor(x => x.Scanner) + .NotNull(); + + this.RuleFor(x => x.GetIndexKey) + .NotNull(); + + this.RuleFor(x => x.UpdateIndex) + .NotNull(); } } diff --git a/src/Nitride/Entities/EntityScanner.cs b/src/Nitride/Entities/EntityScanner.cs index cd9078e..95bb07e 100644 --- a/src/Nitride/Entities/EntityScanner.cs +++ b/src/Nitride/Entities/EntityScanner.cs @@ -74,6 +74,7 @@ public partial class EntityScanner : OperationBase public IEnumerable GetScannedKeys() { this.CheckDone(); + return this.results.Keys.ToImmutableList(); } @@ -114,7 +115,10 @@ public partial class EntityScanner : OperationBase this.results.AddOrUpdate( key, _ => new List { entity }, - (_, list) => list.Union(new[] { entity }).ToList()); + ( + _, + list) => list.Union(new[] { entity }) + .ToList()); } } diff --git a/src/Nitride/Entities/EntityScannerValidator.cs b/src/Nitride/Entities/EntityScannerValidator.cs index f8a7c71..5d78824 100644 --- a/src/Nitride/Entities/EntityScannerValidator.cs +++ b/src/Nitride/Entities/EntityScannerValidator.cs @@ -6,6 +6,7 @@ public class EntityScannerValidator : AbstractValidator { public EntityScannerValidator() { - this.RuleFor(x => x.GetKeysFromEntity).NotNull(); + this.RuleFor(x => x.GetKeysFromEntity) + .NotNull(); } } diff --git a/src/Nitride/Entities/EntitySequence.cs b/src/Nitride/Entities/EntitySequence.cs index bfb2b09..a407fe1 100644 --- a/src/Nitride/Entities/EntitySequence.cs +++ b/src/Nitride/Entities/EntitySequence.cs @@ -9,7 +9,9 @@ namespace Nitride.Entities; /// public class EntitySequence { - public EntitySequence(IReadOnlyList sequence, int index) + public EntitySequence( + IReadOnlyList sequence, + int index) { this.Sequence = sequence; this.Index = index; diff --git a/src/Nitride/Entities/LinkEntitySequence.cs b/src/Nitride/Entities/LinkEntitySequence.cs index e7ba83b..6b5e764 100644 --- a/src/Nitride/Entities/LinkEntitySequence.cs +++ b/src/Nitride/Entities/LinkEntitySequence.cs @@ -20,8 +20,14 @@ public partial class LinkEntitySequence : OperationBase, IResolvingOperation public LinkEntitySequence(IValidator validator) { this.validator = validator; - this.CreateSequenceIndex = (list, index) => new EntitySequence(list, index); - this.AddSequenceIndex = (entity, sequence) => entity.Add(sequence); + + this.CreateSequenceIndex = ( + list, + index) => new EntitySequence(list, index); + + this.AddSequenceIndex = ( + entity, + sequence) => entity.Add(sequence); } /// diff --git a/src/Nitride/Entities/LinkEntitySequenceValidator.cs b/src/Nitride/Entities/LinkEntitySequenceValidator.cs index 92fb565..dc3b2f5 100644 --- a/src/Nitride/Entities/LinkEntitySequenceValidator.cs +++ b/src/Nitride/Entities/LinkEntitySequenceValidator.cs @@ -6,7 +6,10 @@ public class LinkEntitySequenceValidator : AbstractValidator { public LinkEntitySequenceValidator() { - this.RuleFor(x => x.CreateSequenceIndex).NotNull(); - this.RuleFor(x => x.AddSequenceIndex).NotNull(); + this.RuleFor(x => x.CreateSequenceIndex) + .NotNull(); + + this.RuleFor(x => x.AddSequenceIndex) + .NotNull(); } } diff --git a/src/Nitride/Nitride.csproj b/src/Nitride/Nitride.csproj index 54ed65f..fd977f8 100644 --- a/src/Nitride/Nitride.csproj +++ b/src/Nitride/Nitride.csproj @@ -15,21 +15,21 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/src/Nitride/NitrideBuilder.cs b/src/Nitride/NitrideBuilder.cs index c0fa46c..0719356 100644 --- a/src/Nitride/NitrideBuilder.cs +++ b/src/Nitride/NitrideBuilder.cs @@ -40,7 +40,10 @@ public class NitrideBuilder this.configureSiteCallbacks = new List>(); this.configureContainerCallbacks = new List>(); this.nitrideModule = new NitrideModule(); - this.nitrideModule.ApplicationName = Assembly.GetExecutingAssembly().GetName().Name!; + + this.nitrideModule.ApplicationName = Assembly.GetExecutingAssembly() + .GetName() + .Name!; } /// @@ -59,6 +62,7 @@ public class NitrideBuilder public NitrideBuilder ConfigureContainer(Action callback) { this.configureContainerCallbacks.Add(callback); + return this; } @@ -71,6 +75,7 @@ public class NitrideBuilder public NitrideBuilder ConfigureSite(Action callback) { this.configureSiteCallbacks.Add(callback); + return this; } @@ -99,6 +104,7 @@ public class NitrideBuilder public NitrideBuilder WithApplicationDescription(string value) { this.nitrideModule.Description = value; + return this; } @@ -108,6 +114,7 @@ public class NitrideBuilder public NitrideBuilder WithApplicationName(string value) { this.nitrideModule.ApplicationName = value; + return this; } @@ -124,6 +131,7 @@ public class NitrideBuilder public NitrideBuilder WithRootDirectory(DirectoryInfo directory) { this.RootDirectory = directory; + return this; } @@ -148,11 +156,14 @@ public class NitrideBuilder } } - private void RegisterRootDirectory(ILogger logger, ContainerBuilder builder) + private void RegisterRootDirectory( + ILogger logger, + ContainerBuilder builder) { if (this.RootDirectory == null) { logger.Verbose("No root directory is registered"); + return; } @@ -161,6 +172,8 @@ public class NitrideBuilder var rootFileSystem = new PhysicalFileSystem(); var subFileSystem = new SubFileSystem(rootFileSystem, this.RootDirectory.FullName); - builder.RegisterInstance(subFileSystem).As().SingleInstance(); + builder.RegisterInstance(subFileSystem) + .As() + .SingleInstance(); } } diff --git a/src/Nitride/NitrideModule.cs b/src/Nitride/NitrideModule.cs index 8a306f1..c3cca8a 100644 --- a/src/Nitride/NitrideModule.cs +++ b/src/Nitride/NitrideModule.cs @@ -4,7 +4,6 @@ using System.CommandLine; using Autofac; using Nitride.Commands; -using Nitride.Entities; using Nitride.Pipelines; namespace Nitride; @@ -22,15 +21,22 @@ public class NitrideModule : Module protected override void Load(ContainerBuilder builder) { // Pipelines - builder.RegisterType().AsSelf(); - builder.RegisterType().AsSelf().SingleInstance(); + builder.RegisterType() + .AsSelf(); + + builder.RegisterType() + .AsSelf() + .SingleInstance(); // Operations builder.RegisterValidators(this); builder.RegisterOperators(this); // Commands - builder.RegisterType().AsSelf().As().SingleInstance(); + builder.RegisterType() + .AsSelf() + .As() + .SingleInstance(); // MfGames.ToolBuilder requires the RootCommand to be registered. This is because // of various things, mostly coordinating between different systems. diff --git a/src/Nitride/NitrideModuleExtensions.cs b/src/Nitride/NitrideModuleExtensions.cs index 540587b..440f47e 100644 --- a/src/Nitride/NitrideModuleExtensions.cs +++ b/src/Nitride/NitrideModuleExtensions.cs @@ -6,13 +6,24 @@ namespace Nitride; public static class NitrideModuleExtensions { - public static void RegisterOperators(this ContainerBuilder builder, Module module) + public static void RegisterOperators( + this ContainerBuilder builder, + Module module) { - builder.RegisterAssemblyTypes(module.GetType().Assembly).Where(x => x.IsAssignableTo()).AsSelf(); + builder.RegisterAssemblyTypes( + module.GetType() + .Assembly) + .Where(x => x.IsAssignableTo()) + .AsSelf(); } - public static void RegisterValidators(this ContainerBuilder builder, Module module) + public static void RegisterValidators( + this ContainerBuilder builder, + Module module) { - builder.RegisterAssemblyTypes(module.GetType().Assembly).AsClosedTypesOf(typeof(IValidator<>)); + builder.RegisterAssemblyTypes( + module.GetType() + .Assembly) + .AsClosedTypesOf(typeof(IValidator<>)); } } diff --git a/src/Nitride/NitrideOperationExtensions.cs b/src/Nitride/NitrideOperationExtensions.cs index 9f1d187..874e2b7 100644 --- a/src/Nitride/NitrideOperationExtensions.cs +++ b/src/Nitride/NitrideOperationExtensions.cs @@ -16,7 +16,9 @@ public static class NitrideOperationExtensions /// The entities to perform the operation against. /// The operation to run. /// The results of the operation. - public static IEnumerable Run(this IEnumerable input, IOperation operation) + public static IEnumerable Run( + this IEnumerable input, + IOperation operation) { return operation.Run(input); } diff --git a/src/Nitride/Pipelines/PipelineBase.cs b/src/Nitride/Pipelines/PipelineBase.cs index 45ebc46..b3e6d28 100644 --- a/src/Nitride/Pipelines/PipelineBase.cs +++ b/src/Nitride/Pipelines/PipelineBase.cs @@ -20,6 +20,7 @@ public abstract class PipelineBase : IPipeline public PipelineBase AddDependency(IPipeline pipeline) { this.dependencies.Add(pipeline); + return this; } @@ -35,6 +36,7 @@ public abstract class PipelineBase : IPipeline /// public override string ToString() { - return this.GetType().Name; + return this.GetType() + .Name; } } diff --git a/src/Nitride/Pipelines/PipelineManager.cs b/src/Nitride/Pipelines/PipelineManager.cs index 29c09c9..56aba3f 100644 --- a/src/Nitride/Pipelines/PipelineManager.cs +++ b/src/Nitride/Pipelines/PipelineManager.cs @@ -26,7 +26,10 @@ public class PipelineManager private ICollection pipelines; - public PipelineManager(ILogger logger, IEnumerable pipelines, PipelineRunner.Factory createEntry) + public PipelineManager( + ILogger logger, + IEnumerable pipelines, + PipelineRunner.Factory createEntry) { this.createEntry = createEntry; this.logger = logger.ForContext(); @@ -59,21 +62,26 @@ public class PipelineManager // resulting tasks and then wait for all of them to end. this.logger.Verbose("Starting {Count:l}", "pipeline".ToQuantity(this.pipelines.Count)); - Task[] tasks = this.entries.Select(x => Task.Run(async () => await x.RunAsync())).ToArray(); + Task[] tasks = this.entries.Select(x => Task.Run(async () => await x.RunAsync())) + .ToArray(); + var report = TimeSpan.FromSeconds(15); while (!Task.WaitAll(tasks, report)) { - var waiting = this.entries.Where(x => !x.IsFinished).ToList(); + var waiting = this.entries.Where(x => !x.IsFinished) + .ToList(); this.logger.Debug("Waiting for {Count:l} to finish running", "pipeline".ToQuantity(waiting.Count)); IOrderedEnumerable> states = - waiting.GroupBy(x => x.State, x => x).OrderBy(x => (int)x.Key); + waiting.GroupBy(x => x.State, x => x) + .OrderBy(x => (int)x.Key); foreach (IGrouping? state in states) { - var statePipelines = state.OrderBy(x => x.Pipeline.ToString()).ToList(); + var statePipelines = state.OrderBy(x => x.Pipeline.ToString()) + .ToList(); this.logger.Verbose( "Waiting for {Count:l} in {State}: {List:l}", @@ -120,12 +128,14 @@ public class PipelineManager // Wrap all the pipelines into entries. We do this before the next // step so we can have the entries depend on the entries. - this.entries = this.pipelines.Select(x => this.createEntry(x)).ToList(); + this.entries = this.pipelines.Select(x => this.createEntry(x)) + .ToList(); // Go through and connect the pipelines together. foreach (PipelineRunner? entry in this.entries) { - var dependencies = entry.Pipeline.GetDependencies().ToList(); + var dependencies = entry.Pipeline.GetDependencies() + .ToList(); foreach (IPipeline? dependency in dependencies) { diff --git a/src/Nitride/Pipelines/PipelineRunner.cs b/src/Nitride/Pipelines/PipelineRunner.cs index af48e9d..4c77abf 100644 --- a/src/Nitride/Pipelines/PipelineRunner.cs +++ b/src/Nitride/Pipelines/PipelineRunner.cs @@ -46,7 +46,9 @@ public class PipelineRunner /// private int waitingOnConsumers; - public PipelineRunner(ILogger logger, IPipeline pipeline) + public PipelineRunner( + ILogger logger, + IPipeline pipeline) { this.Pipeline = pipeline ?? throw new ArgumentNullException(nameof(pipeline)); this.Incoming = new List(); @@ -159,6 +161,7 @@ public class PipelineRunner + " state (not Initialized or Finalized)", this.Pipeline, this.State); + break; } @@ -175,6 +178,7 @@ public class PipelineRunner if (this.WaitForDependencies()) { this.SignalDoneWithInputs(); + return; } @@ -233,6 +237,7 @@ public class PipelineRunner newState, this.ElapsedFromInitialized, this.ElapsedFromState); + this.changed = DateTime.Now; this.State = newState; } @@ -250,7 +255,8 @@ public class PipelineRunner this.Pipeline, this.Incoming.Count); - var input = this.Incoming.SelectMany(x => x.Outputs).ToList(); + var input = this.Incoming.SelectMany(x => x.Outputs) + .ToList(); this.logger.Debug( "{Pipeline:l}: Got {Count:l} from dependencies", @@ -324,6 +330,7 @@ public class PipelineRunner // Wait for the dependencies to run first. this.ChangeState(PipelineRunnerState.Waiting); + this.logger.Verbose( "{Pipeline:l}: Waiting for {Count:l} to complete", this.Pipeline, diff --git a/src/Nitride/ROADMAP.md b/src/Nitride/ROADMAP.md index 0d8e157..b5b2761 100644 --- a/src/Nitride/ROADMAP.md +++ b/src/Nitride/ROADMAP.md @@ -2,8 +2,8 @@ ## Immediate -- Switch the various operations to be async - - ReadFiles - - WriteFiles -- Implement mime type determination -- Implement a convert to text content based on mime type +- Switch the various operations to be async + - ReadFiles + - WriteFiles +- Implement mime type determination +- Implement a convert to text content based on mime type diff --git a/tests/Nitride.IO.Tests/Nitride.IO.Tests.csproj b/tests/Nitride.IO.Tests/Nitride.IO.Tests.csproj index ab3a88b..7f3a132 100644 --- a/tests/Nitride.IO.Tests/Nitride.IO.Tests.csproj +++ b/tests/Nitride.IO.Tests/Nitride.IO.Tests.csproj @@ -6,22 +6,22 @@ - - + + - - - - - - + + + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/tests/Nitride.IO.Tests/NitrideIOTestBase.cs b/tests/Nitride.IO.Tests/NitrideIOTestBase.cs index 2ef1f30..13031ff 100644 --- a/tests/Nitride.IO.Tests/NitrideIOTestBase.cs +++ b/tests/Nitride.IO.Tests/NitrideIOTestBase.cs @@ -1,14 +1,6 @@ -using System; -using System.Text; - -using KellermanSoftware.CompareNetObjects; - using MfGames.TestSetup; -using Newtonsoft.Json; - using Xunit.Abstractions; -using Xunit.Sdk; namespace Nitride.IO.Tests; diff --git a/tests/Nitride.IO.Tests/NitrideIOTestContext.cs b/tests/Nitride.IO.Tests/NitrideIOTestContext.cs index 537b850..dad73c7 100644 --- a/tests/Nitride.IO.Tests/NitrideIOTestContext.cs +++ b/tests/Nitride.IO.Tests/NitrideIOTestContext.cs @@ -2,8 +2,6 @@ using Autofac; using Nitride.Tests; -using Serilog; - using Zio; using Zio.FileSystems; @@ -19,6 +17,8 @@ public class NitrideIOTestContext : NitrideTestContext base.ConfigureContainer(builder); builder.RegisterModule(); - builder.RegisterInstance(new MemoryFileSystem()).As().SingleInstance(); + builder.RegisterInstance(new MemoryFileSystem()) + .As() + .SingleInstance(); } } diff --git a/tests/Nitride.IO.Tests/Paths/AddPathPrefixTest.cs b/tests/Nitride.IO.Tests/Paths/AddPathPrefixTest.cs index 575f03a..354f0a0 100644 --- a/tests/Nitride.IO.Tests/Paths/AddPathPrefixTest.cs +++ b/tests/Nitride.IO.Tests/Paths/AddPathPrefixTest.cs @@ -31,13 +31,17 @@ public class AddPathPrefixTest : NitrideIOTestBase // Set up the operation. ReadFiles readFiles = context.Resolve(); - AddPathPrefix op = context.Resolve().WithPathPrefix("/prefix"); + + AddPathPrefix op = context.Resolve() + .WithPathPrefix("/prefix"); // Read and replace the paths. IOrderedEnumerable output = readFiles.WithPattern("/**") .Run() .Run(op) - .Select(x => x.Get().ToString()) + .Select( + x => x.Get() + .ToString()) .OrderBy(x => x); // Verify the results. diff --git a/tests/Nitride.IO.Tests/Paths/DirectChildPathScannerTests.cs b/tests/Nitride.IO.Tests/Paths/DirectChildPathScannerTests.cs index 5c55f6a..28876f6 100644 --- a/tests/Nitride.IO.Tests/Paths/DirectChildPathScannerTests.cs +++ b/tests/Nitride.IO.Tests/Paths/DirectChildPathScannerTests.cs @@ -45,9 +45,18 @@ public class DirectChildPathScannerTests : NitrideIOTestBase DirectChildPathScanner op = context.Resolve(); // Read and replace the paths. - var _ = readFiles.WithPattern("/**").Run().Run(op).ToList(); + var _ = readFiles.WithPattern("/**") + .Run() + .Run(op) + .ToList(); + KeyValuePair[] actual = op.GetScannedResults() - .ToDictionary(x => x.Key, x => x.Value.Select(y => y.Get().ToString()).ToArray()) + .ToDictionary( + x => x.Key, + x => x.Value.Select( + y => y.Get() + .ToString()) + .ToArray()) .ToList() .OrderBy(x => x.Key) .ToArray(); diff --git a/tests/Nitride.IO.Tests/Paths/LinkDirectChildrenTests.cs b/tests/Nitride.IO.Tests/Paths/LinkDirectChildrenTests.cs index 3ef0ce2..57ab893 100644 --- a/tests/Nitride.IO.Tests/Paths/LinkDirectChildrenTests.cs +++ b/tests/Nitride.IO.Tests/Paths/LinkDirectChildrenTests.cs @@ -44,7 +44,9 @@ public class LinkDirectChildrenTests : NitrideIOTestBase // Set up the operation. ReadFiles readFiles = context.Resolve(); DirectChildPathScanner scanner = context.Resolve(); - CreateOrUpdateIndex op = context.Resolve().WithScanner(scanner); + + CreateOrUpdateIndex op = context.Resolve() + .WithScanner(scanner); // Read and replace the paths. Tuple[]? actual = readFiles.WithPattern("/**") @@ -54,9 +56,12 @@ public class LinkDirectChildrenTests : NitrideIOTestBase .Run(op) .Select( x => new Tuple( - x.Get().ToString(), + x.Get() + .ToString(), x.GetOptional() - ?.Select(y => y.Get().ToString()) + ?.Select( + y => y.Get() + .ToString()) .OrderBy(y => y) .ToArray())) .OrderBy(x => x.Item1) diff --git a/tests/Nitride.IO.Tests/Paths/MoveToIndexPathsTest.cs b/tests/Nitride.IO.Tests/Paths/MoveToIndexPathsTest.cs index 9ed4e4b..6a5ab53 100644 --- a/tests/Nitride.IO.Tests/Paths/MoveToIndexPathsTest.cs +++ b/tests/Nitride.IO.Tests/Paths/MoveToIndexPathsTest.cs @@ -33,7 +33,9 @@ public class MoveToIndexPathsTest : NitrideIOTestBase IOrderedEnumerable output = readFiles.WithPattern("/**") .Run() .Run(op) - .Select(x => x.Get().ToString()) + .Select( + x => x.Get() + .ToString()) .OrderBy(x => x); // Verify the results. @@ -58,14 +60,19 @@ public class MoveToIndexPathsTest : NitrideIOTestBase // Set up the operation. ReadFiles readFiles = context.Resolve(); + MoveToIndexPath op = context.Resolve() - .WithCanMoveCallback(path => path.ToString().Contains("a1")); + .WithCanMoveCallback( + path => path.ToString() + .Contains("a1")); // Read and replace the paths. IOrderedEnumerable output = readFiles.WithPattern("/**") .Run() .Run(op) - .Select(x => x.Get().ToString()) + .Select( + x => x.Get() + .ToString()) .OrderBy(x => x); // Verify the results. diff --git a/tests/Nitride.IO.Tests/Paths/RemovePathPrefixTest.cs b/tests/Nitride.IO.Tests/Paths/RemovePathPrefixTest.cs index 423f735..f2f1bf9 100644 --- a/tests/Nitride.IO.Tests/Paths/RemovePathPrefixTest.cs +++ b/tests/Nitride.IO.Tests/Paths/RemovePathPrefixTest.cs @@ -33,13 +33,17 @@ public class RemovePathPrefixTest : NitrideIOTestBase // Set up the operation. ReadFiles readFiles = context.Resolve(); - RemovePathPrefix op = context.Resolve().WithPathPrefix("/a"); + + RemovePathPrefix op = context.Resolve() + .WithPathPrefix("/a"); // Read and replace the paths. IOrderedEnumerable output = readFiles.WithPattern("/**") .Run() .Run(op) - .Select(x => x.Get().ToString()) + .Select( + x => x.Get() + .ToString()) .OrderBy(x => x); // Verify the results. diff --git a/tests/Nitride.IO.Tests/ReadFilesTest.cs b/tests/Nitride.IO.Tests/ReadFilesTest.cs index bc36080..ea37e57 100644 --- a/tests/Nitride.IO.Tests/ReadFilesTest.cs +++ b/tests/Nitride.IO.Tests/ReadFilesTest.cs @@ -57,10 +57,13 @@ public class ReadFilesTest : NitrideIOTestBase CreateFileSystem(context); // Set up the operation. - ReadFiles op = context.Resolve().WithPattern("/*.txt"); + ReadFiles op = context.Resolve() + .WithPattern("/*.txt"); // Verify the paths. - IOrderedEnumerable paths = op.Run().Select(x => (string)x.Get()).OrderBy(x => x); + IOrderedEnumerable paths = op.Run() + .Select(x => (string)x.Get()) + .OrderBy(x => x); Assert.Equal( new[] @@ -79,10 +82,13 @@ public class ReadFilesTest : NitrideIOTestBase CreateFileSystem(context); // Set up the operation. - ReadFiles op = context.Resolve().WithPattern("**/*.txt"); + ReadFiles op = context.Resolve() + .WithPattern("**/*.txt"); // Verify the paths. - IOrderedEnumerable paths = op.Run().Select(x => (string)x.Get()).OrderBy(x => x); + IOrderedEnumerable paths = op.Run() + .Select(x => (string)x.Get()) + .OrderBy(x => x); Assert.Equal( new[] diff --git a/tests/Nitride.IO.Tests/WriteFilesTest.cs b/tests/Nitride.IO.Tests/WriteFilesTest.cs index d959ba4..67dfd2c 100644 --- a/tests/Nitride.IO.Tests/WriteFilesTest.cs +++ b/tests/Nitride.IO.Tests/WriteFilesTest.cs @@ -41,7 +41,9 @@ public class WriteFilesTest : NitrideIOTestBase // Set up the operation. var output = new MemoryFileSystem(); ReadFiles readFiles = context.Resolve(); - WriteFiles op = context.Resolve().WithFileSystem(output); + + WriteFiles op = context.Resolve() + .WithFileSystem(output); // Read and write out the files. We switch one of the files to be // text content to make sure that works too. diff --git a/tests/Nitride.Slugs.Tests/Nitride.Slugs.Tests.csproj b/tests/Nitride.Slugs.Tests/Nitride.Slugs.Tests.csproj index 88424b4..db7dd3a 100644 --- a/tests/Nitride.Slugs.Tests/Nitride.Slugs.Tests.csproj +++ b/tests/Nitride.Slugs.Tests/Nitride.Slugs.Tests.csproj @@ -6,21 +6,21 @@ - - - + + + - - - - + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/tests/Nitride.Slugs.Tests/UnicodeNormalizingSlugConverterTest.cs b/tests/Nitride.Slugs.Tests/UnicodeNormalizingSlugConverterTest.cs index ea0630e..4b9be2c 100644 --- a/tests/Nitride.Slugs.Tests/UnicodeNormalizingSlugConverterTest.cs +++ b/tests/Nitride.Slugs.Tests/UnicodeNormalizingSlugConverterTest.cs @@ -40,6 +40,7 @@ public class UnicodeNormalizingSlugConverterTest : NitrideTestBase { ["#"] = "-sharp", }); + var expected = new List(); var actual = new List(); @@ -51,7 +52,12 @@ public class UnicodeNormalizingSlugConverterTest : NitrideTestBase Assert.Equal(expected, actual); } - private void Test(ISlugConverter slug, List expected, List actual, string input, string output) + private void Test( + ISlugConverter slug, + List expected, + List actual, + string input, + string output) { expected.Add(output); actual.Add(slug.ToSlug(input)); diff --git a/tests/Nitride.Temporal.Tests/CreateDateIndexesTests.cs b/tests/Nitride.Temporal.Tests/CreateDateIndexesTests.cs index 1e11deb..4e247f2 100644 --- a/tests/Nitride.Temporal.Tests/CreateDateIndexesTests.cs +++ b/tests/Nitride.Temporal.Tests/CreateDateIndexesTests.cs @@ -30,12 +30,16 @@ public class CreateDateIndexesTests : TemporalTestBase List input = new() { - new Entity().Add("page1").Add(timekeeper.CreateInstant(2021, 1, 2)), - new Entity().Add("page2").Add(timekeeper.CreateInstant(2021, 2, 2)), - new Entity().Add("page3").Add(timekeeper.CreateInstant(2022, 1, 2)), + new Entity().Add("page1") + .Add(timekeeper.CreateInstant(2021, 1, 2)), + new Entity().Add("page2") + .Add(timekeeper.CreateInstant(2021, 2, 2)), + new Entity().Add("page3") + .Add(timekeeper.CreateInstant(2022, 1, 2)), }; List?, List?>> actual = this.GetActual(op, input); + var expected = new List?, List?>> { new("index-2021-01", new List { "page1" }, new List()), @@ -61,12 +65,16 @@ public class CreateDateIndexesTests : TemporalTestBase List input = new() { - new Entity().Add("page1").Add(timekeeper.CreateInstant(2021, 1, 2)), - new Entity().Add("page2").Add(timekeeper.CreateInstant(2021, 2, 2)), - new Entity().Add("page3").Add(timekeeper.CreateInstant(2022, 1, 2)), + new Entity().Add("page1") + .Add(timekeeper.CreateInstant(2021, 1, 2)), + new Entity().Add("page2") + .Add(timekeeper.CreateInstant(2021, 2, 2)), + new Entity().Add("page3") + .Add(timekeeper.CreateInstant(2022, 1, 2)), }; List?, List?>> actual = this.GetActual(op, input); + var expected = new List?, List?>> { new("index-2021", new List(), new List { "index-2021/01", "index-2021/02" }), @@ -98,12 +106,16 @@ public class CreateDateIndexesTests : TemporalTestBase List input = new() { - new Entity().Add("page1").Add(timekeeper.CreateInstant(2021, 1, 2)), - new Entity().Add("page2").Add(timekeeper.CreateInstant(2021, 2, 2)), - new Entity().Add("page3").Add(timekeeper.CreateInstant(2022, 1, 2)), + new Entity().Add("page1") + .Add(timekeeper.CreateInstant(2021, 1, 2)), + new Entity().Add("page2") + .Add(timekeeper.CreateInstant(2021, 2, 2)), + new Entity().Add("page3") + .Add(timekeeper.CreateInstant(2022, 1, 2)), }; List?, List?>> actual = this.GetActual(op, input); + var expected = new List?, List?>> { new("index-2021", new List(), new List { "index-2021/01", "index-2021/02" }), @@ -134,12 +146,16 @@ public class CreateDateIndexesTests : TemporalTestBase List input = new() { - new Entity().Add("page1").Add(timekeeper.CreateInstant(2021, 1, 2)), - new Entity().Add("page2").Add(timekeeper.CreateInstant(2021, 2, 2)), - new Entity().Add("page3").Add(timekeeper.CreateInstant(2022, 1, 2)), + new Entity().Add("page1") + .Add(timekeeper.CreateInstant(2021, 1, 2)), + new Entity().Add("page2") + .Add(timekeeper.CreateInstant(2021, 2, 2)), + new Entity().Add("page3") + .Add(timekeeper.CreateInstant(2022, 1, 2)), }; List?, List?>> actual = this.GetActual(op, input); + var expected = new List?, List?>> { new("index-2021", new List(), new List { "index-2021-01", "index-2021-02" }), @@ -167,12 +183,16 @@ public class CreateDateIndexesTests : TemporalTestBase List input = new() { - new Entity().Add("page1").Add(timekeeper.CreateInstant(2021, 1, 2)), - new Entity().Add("page2").Add(timekeeper.CreateInstant(2021, 2, 2)), - new Entity().Add("page3").Add(timekeeper.CreateInstant(2022, 1, 2)), + new Entity().Add("page1") + .Add(timekeeper.CreateInstant(2021, 1, 2)), + new Entity().Add("page2") + .Add(timekeeper.CreateInstant(2021, 2, 2)), + new Entity().Add("page3") + .Add(timekeeper.CreateInstant(2022, 1, 2)), }; List?, List?>> actual = this.GetActual(op, input); + var expected = new List?, List?>> { new("index-2021", new List { "page1", "page2" }, new List()), @@ -187,19 +207,29 @@ public class CreateDateIndexesTests : TemporalTestBase private Entity CreateIndex(DateIndex a) { - return new Entity().Add(a).Add($"index-{a.Key}"); + return new Entity().Add(a) + .Add($"index-{a.Key}"); } - private List?, List?>> GetActual(CreateDateIndexes op, List input) + private List?, List?>> GetActual( + CreateDateIndexes op, + List input) { var actual = op.Run(input) .Select( x => new Tuple?, List?>( x.Get(), - x.GetOptional()?.Entries.Select(a => a.Get()).OrderBy(x => x).ToList(), - x.GetOptional()?.Indexes.Select(a => a.Get()).OrderBy(x => x).ToList())) + x.GetOptional() + ?.Entries.Select(a => a.Get()) + .OrderBy(x => x) + .ToList(), + x.GetOptional() + ?.Indexes.Select(a => a.Get()) + .OrderBy(x => x) + .ToList())) .OrderBy(x => x.Item1) .ToList(); + return actual; } } diff --git a/tests/Nitride.Temporal.Tests/Nitride.Temporal.Tests.csproj b/tests/Nitride.Temporal.Tests/Nitride.Temporal.Tests.csproj index dce0bdf..36a4fd2 100644 --- a/tests/Nitride.Temporal.Tests/Nitride.Temporal.Tests.csproj +++ b/tests/Nitride.Temporal.Tests/Nitride.Temporal.Tests.csproj @@ -6,17 +6,17 @@ - - + + - - - - - - + + + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/tests/Nitride.Tests/Entities/CreateOrUpdateIndexTests.cs b/tests/Nitride.Tests/Entities/CreateOrUpdateIndexTests.cs index 5c7037c..f8712dd 100644 --- a/tests/Nitride.Tests/Entities/CreateOrUpdateIndexTests.cs +++ b/tests/Nitride.Tests/Entities/CreateOrUpdateIndexTests.cs @@ -24,12 +24,27 @@ public class CreateOrUpdateIndexTests : NitrideTestBase, IDisposable { this.context = this.CreateContext(); - this.scanner = this.context.Resolve().WithGetKeysFromEntity(e => e.GetOptional>()); + this.scanner = this.context.Resolve() + .WithGetKeysFromEntity(e => e.GetOptional>()); + this.op = this.context.Resolve() .WithScanner(this.scanner) - .WithGetIndexKey(x => x.Get().Contains("index") ? x.Get().Replace("index", "cat") : null) - .WithCreateIndex((key, list) => new Entity().Add(key.Replace("cat", "index")).Add(list.ToList())) - .WithUpdateIndex((index, key, list) => index.Add(list.ToList())); + .WithGetIndexKey( + x => x.Get() + .Contains("index") + ? x.Get() + .Replace("index", "cat") + : null) + .WithCreateIndex( + ( + key, + list) => new Entity().Add(key.Replace("cat", "index")) + .Add(list.ToList())) + .WithUpdateIndex( + ( + index, + key, + list) => index.Add(list.ToList())); } [Fact] @@ -37,9 +52,12 @@ public class CreateOrUpdateIndexTests : NitrideTestBase, IDisposable { List input = new() { - new Entity().Add("page1").Add(new List { "cat1" }), - new Entity().Add("page2").Add(new List { "cat2" }), - new Entity().Add("page3").Add(new List { "cat1" }), + new Entity().Add("page1") + .Add(new List { "cat1" }), + new Entity().Add("page2") + .Add(new List { "cat2" }), + new Entity().Add("page3") + .Add(new List { "cat1" }), }; List?>> actual = this.GetActual(input); @@ -61,9 +79,12 @@ public class CreateOrUpdateIndexTests : NitrideTestBase, IDisposable { List input = new() { - new Entity().Add("index2").Add(new List { "cat1" }), - new Entity().Add("page2").Add(new List { "cat2" }), - new Entity().Add("page3").Add(new List { "cat1" }), + new Entity().Add("index2") + .Add(new List { "cat1" }), + new Entity().Add("page2") + .Add(new List { "cat2" }), + new Entity().Add("page3") + .Add(new List { "cat1" }), }; List?>> actual = this.GetActual(input); @@ -84,7 +105,8 @@ public class CreateOrUpdateIndexTests : NitrideTestBase, IDisposable { List input = new() { - new Entity().Add("page1").Add(new List { "cat1" }), + new Entity().Add("page1") + .Add(new List { "cat1" }), }; List?>> actual = this.GetActual(input); @@ -110,15 +132,23 @@ public class CreateOrUpdateIndexTests : NitrideTestBase, IDisposable List input = new() { new Entity().Add("index1"), - new Entity().Add("page1").Add(new List { "cat1" }), + new Entity().Add("page1") + .Add(new List { "cat1" }), }; - var output = this.scanner.Run(input).ToList().Run(this.op).ToList(); + var output = this.scanner.Run(input) + .ToList() + .Run(this.op) + .ToList(); + var actual = output .Select( x => new Tuple?>( x.Get(), - x.GetOptional>()?.Select(y => y.Get()).OrderBy(y => y).ToList())) + x.GetOptional>() + ?.Select(y => y.Get()) + .OrderBy(y => y) + .ToList())) .OrderBy(x => x.Item1) .ToList(); @@ -133,14 +163,22 @@ public class CreateOrUpdateIndexTests : NitrideTestBase, IDisposable private List?>> GetActual(List input) { - var output = this.scanner.Run(input).ToList().Run(this.op).ToList(); + var output = this.scanner.Run(input) + .ToList() + .Run(this.op) + .ToList(); + var actual = output .Select( x => new Tuple?>( x.Get(), - x.GetOptional>()?.Select(y => y.Get()).OrderBy(y => y).ToList())) + x.GetOptional>() + ?.Select(y => y.Get()) + .OrderBy(y => y) + .ToList())) .OrderBy(x => x.Item1) .ToList(); + return actual; } } diff --git a/tests/Nitride.Tests/Entities/LinkEntitySequenceTests.cs b/tests/Nitride.Tests/Entities/LinkEntitySequenceTests.cs index 6bb2576..09eef58 100644 --- a/tests/Nitride.Tests/Entities/LinkEntitySequenceTests.cs +++ b/tests/Nitride.Tests/Entities/LinkEntitySequenceTests.cs @@ -1,4 +1,3 @@ -using System; using System.Collections.Generic; using System.Linq; @@ -31,13 +30,19 @@ public class LinkEntitySequenceTests : NitrideTestBase new Entity().Add("page3"), }; - var results = op.Run(input).ToList(); + var results = op.Run(input) + .ToList(); Assert.Equal(3, results.Count); - EntitySequence seq1 = results[0].Get(); - EntitySequence seq2 = results[1].Get(); - EntitySequence seq3 = results[2].Get(); + EntitySequence seq1 = results[0] + .Get(); + + EntitySequence seq2 = results[1] + .Get(); + + EntitySequence seq3 = results[2] + .Get(); Assert.True(seq1.IsFirst); Assert.False(seq1.IsLast); diff --git a/tests/Nitride.Tests/EntityContentTest.cs b/tests/Nitride.Tests/EntityContentTest.cs index 791ad98..3f21777 100644 --- a/tests/Nitride.Tests/EntityContentTest.cs +++ b/tests/Nitride.Tests/EntityContentTest.cs @@ -47,7 +47,9 @@ public class EntityContentTest : NitrideTestBase { var binaryContent = new ByteArrayBinaryContent(new byte[0]); var textContent = new StringTextContent("contents"); - Entity entity = new Entity().SetBinaryContent(binaryContent).SetTextContent(textContent); + + Entity entity = new Entity().SetBinaryContent(binaryContent) + .SetTextContent(textContent); Assert.Equal(1, entity.Count); Assert.True(entity.HasContent()); @@ -60,7 +62,9 @@ public class EntityContentTest : NitrideTestBase { var binaryContent = new ByteArrayBinaryContent(new byte[0]); var textContent = new StringTextContent("contents"); - Entity entity = new Entity().SetContent(textContent).SetContent(binaryContent); + + Entity entity = new Entity().SetContent(textContent) + .SetContent(binaryContent); Assert.Equal(1, entity.Count); Assert.True(entity.HasContent()); diff --git a/tests/Nitride.Tests/Nitride.Tests.csproj b/tests/Nitride.Tests/Nitride.Tests.csproj index 47df420..cb35568 100644 --- a/tests/Nitride.Tests/Nitride.Tests.csproj +++ b/tests/Nitride.Tests/Nitride.Tests.csproj @@ -8,13 +8,13 @@ - - - - - - - + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all @@ -26,7 +26,7 @@ - + diff --git a/tests/Nitride.Tests/TestHelper.cs b/tests/Nitride.Tests/TestHelper.cs index 11e9651..4c7bfb9 100644 --- a/tests/Nitride.Tests/TestHelper.cs +++ b/tests/Nitride.Tests/TestHelper.cs @@ -10,7 +10,9 @@ namespace Nitride.Tests; public static class TestHelper { - public static void CompareObjects(T expected, T actual) + public static void CompareObjects( + T expected, + T actual) where T : class { CompareLogic compare = new() @@ -20,6 +22,7 @@ public static class TestHelper MaxDifferences = int.MaxValue, }, }; + ComparisonResult comparison = compare.Compare(expected, actual); if (comparison.AreEqual) diff --git a/tests/Nitride.Yaml.Tests/Nitride.Yaml.Tests.csproj b/tests/Nitride.Yaml.Tests/Nitride.Yaml.Tests.csproj index 4c1423b..ea8bb93 100644 --- a/tests/Nitride.Yaml.Tests/Nitride.Yaml.Tests.csproj +++ b/tests/Nitride.Yaml.Tests/Nitride.Yaml.Tests.csproj @@ -6,7 +6,7 @@ - + diff --git a/tests/Nitride.Yaml.Tests/ParseYamlHeaderTest.cs b/tests/Nitride.Yaml.Tests/ParseYamlHeaderTest.cs index 2f962ec..eb4a2ea 100644 --- a/tests/Nitride.Yaml.Tests/ParseYamlHeaderTest.cs +++ b/tests/Nitride.Yaml.Tests/ParseYamlHeaderTest.cs @@ -28,17 +28,26 @@ public class ParseYamlHeaderTest : NitrideTestBase var op = new ParseYamlHeader(); - Entity output = input.Run(op).First(); + Entity output = input.Run(op) + .First(); Assert.True(output.Has()); + Assert.Equal( new[] { string.Empty, }, - output.Get().GetText().Split("\n")); + output.Get() + .GetText() + .Split("\n")); + Assert.True(output.Has()); - Assert.Equal("Test Title 1", output.Get().Title); + + Assert.Equal( + "Test Title 1", + output.Get() + .Title); } [Fact] @@ -51,18 +60,26 @@ public class ParseYamlHeaderTest : NitrideTestBase var op = new ParseYamlHeader(); - Entity output = input.Run(op).First(); + Entity output = input.Run(op) + .First(); Assert.True(output.Has()); + Assert.Equal( new[] { "Hello", string.Empty, }, - output.Get().GetText().Split("\n")); + output.Get() + .GetText() + .Split("\n")); + Assert.True(output.Has()); - Assert.Null(output.Get().Title); + + Assert.Null( + output.Get() + .Title); } [Fact] @@ -75,18 +92,27 @@ public class ParseYamlHeaderTest : NitrideTestBase var op = new ParseYamlHeader(); - Entity output = input.Run(op).First(); + Entity output = input.Run(op) + .First(); Assert.True(output.Has()); + Assert.Equal( new[] { "Hello", string.Empty, }, - output.Get().GetText().Split("\n")); + output.Get() + .GetText() + .Split("\n")); + Assert.True(output.Has()); - Assert.Equal("Test Title 1", output.Get().Title); + + Assert.Equal( + "Test Title 1", + output.Get() + .Title); } private class TestHeader