Repository: SimonCropp/WaffleGenerator Branch: main Commit: 04504833cb55 Files: 56 Total size: 153.4 KB Directory structure: gitextract_pa37ucf7/ ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── config.yml │ │ └── feature_request.md │ ├── dependabot.yml │ ├── stale.yml │ └── workflows/ │ ├── merge-dependabot.yml │ ├── milestone-release.yml │ └── on-push-do-doco.yml ├── .gitignore ├── RedGateLicense.txt ├── code_of_conduct.md ├── license.txt ├── readme.md └── src/ ├── Directory.Build.props ├── Directory.Packages.props ├── Shared.sln.DotSettings ├── Tests/ │ ├── FakerUsage.cs │ ├── GlobalUsings.cs │ ├── ModuleInitializer.cs │ ├── Tests.csproj │ ├── WaffleEngineTests.HtmlWaffleMultiple.verified.txt │ ├── WaffleEngineTests.HtmlWaffleMultipleWithHeadAndBody.verified.txt │ ├── WaffleEngineTests.HtmlWaffleNoHeading.verified.txt │ ├── WaffleEngineTests.HtmlWaffleNoHeadingWithHeadAndBody.verified.txt │ ├── WaffleEngineTests.HtmlWaffleSingle.verified.txt │ ├── WaffleEngineTests.HtmlWaffleSingleWithHeadAndBody.verified.txt │ ├── WaffleEngineTests.MarkdownWaffleMultiple.verified.md │ ├── WaffleEngineTests.MarkdownWaffleNoHeading.verified.md │ ├── WaffleEngineTests.MarkdownWaffleSingle.verified.md │ ├── WaffleEngineTests.TextWaffleMultiple.verified.txt │ ├── WaffleEngineTests.TextWaffleNoHeading.verified.txt │ ├── WaffleEngineTests.TextWaffleSingle.verified.txt │ ├── WaffleEngineTests.Title.verified.txt │ └── WaffleEngineTests.cs ├── WaffleGenerator/ │ ├── AssemblyInfo.cs │ ├── Constants.cs │ ├── Extensions.cs │ ├── Heading.cs │ ├── InnerEngine.cs │ ├── Paragraph.cs │ ├── WaffleContent.cs │ ├── WaffleEngine.cs │ └── WaffleGenerator.csproj ├── WaffleGenerator.Bogus/ │ ├── Waffle.cs │ ├── WaffleGenerator.Bogus.csproj │ └── WaffleGeneratorExtensions.cs ├── WaffleGenerator.slnx ├── WaffleGenerator.slnx.DotSettings ├── appveyor.yml ├── global.json ├── key.snk ├── mdsnippets.json └── nuget.config ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ root = true [*] indent_style = space end_of_line = lf insert_final_newline = true [*.cs] indent_size = 4 charset = utf-8 # Redundant accessor body resharper_redundant_accessor_body_highlighting = error # Replace with field keyword resharper_replace_with_field_keyword_highlighting = error # Replace with single call to Single(..) resharper_replace_with_single_call_to_single_highlighting = error # Replace with single call to SingleOrDefault(..) resharper_replace_with_single_call_to_single_or_default_highlighting = error # Replace with single call to LastOrDefault(..) resharper_replace_with_single_call_to_last_or_default_highlighting = error # Element is localizable resharper_localizable_element_highlighting = none # Replace with single call to Last(..) resharper_replace_with_single_call_to_last_highlighting = error # Replace with single call to First(..) resharper_replace_with_single_call_to_first_highlighting = error # Replace with single call to FirstOrDefault(..) resharper_replace_with_single_call_to_first_or_default_highlighting = error # Replace with single call to Any(..) resharper_replace_with_single_call_to_any_highlighting = error # Simplify negative equality expression resharper_negative_equality_expression_highlighting = error # Replace with single call to Count(..) resharper_replace_with_single_call_to_count_highlighting = error # Declare types in namespaces dotnet_diagnostic.CA1050.severity = none # Use Literals Where Appropriate dotnet_diagnostic.CA1802.severity = error # Template should be a static expression dotnet_diagnostic.CA2254.severity = error # Potentially misleading parameter name in lambda or local function resharper_all_underscore_local_parameter_name_highlighting = none # Redundant explicit collection creation in argument of 'params' parameter resharper_redundant_explicit_params_array_creation_highlighting = error # Do not initialize unnecessarily dotnet_diagnostic.CA1805.severity = error # Avoid unsealed attributes dotnet_diagnostic.CA1813.severity = error # Test for empty strings using string length dotnet_diagnostic.CA1820.severity = none # Remove empty finalizers dotnet_diagnostic.CA1821.severity = error # Mark members as static dotnet_diagnostic.CA1822.severity = error # Avoid unused private fields dotnet_diagnostic.CA1823.severity = error # Avoid zero-length array allocations dotnet_diagnostic.CA1825.severity = error # Use property instead of Linq Enumerable method dotnet_diagnostic.CA1826.severity = error # Do not use Count()/LongCount() when Any() can be used dotnet_diagnostic.CA1827.severity = error dotnet_diagnostic.CA1828.severity = error # Use Length/Count property instead of Enumerable.Count method dotnet_diagnostic.CA1829.severity = error # Prefer strongly-typed Append and Insert method overloads on StringBuilder dotnet_diagnostic.CA1830.severity = error # Use AsSpan instead of Range-based indexers for string when appropriate dotnet_diagnostic.CA1831.severity = error # Use AsSpan instead of Range-based indexers for string when appropriate dotnet_diagnostic.CA1831.severity = error dotnet_diagnostic.CA1832.severity = error dotnet_diagnostic.CA1833.severity = error # Use StringBuilder.Append(char) for single character strings dotnet_diagnostic.CA1834.severity = error # Prefer IsEmpty over Count when available dotnet_diagnostic.CA1836.severity = error # Prefer IsEmpty over Count when available dotnet_diagnostic.CA1836.severity = error # Use Environment.ProcessId instead of Process.GetCurrentProcess().Id dotnet_diagnostic.CA1837.severity = error # Use Environment.ProcessPath instead of Process.GetCurrentProcess().MainModule.FileName dotnet_diagnostic.CA1839.severity = error # Use Environment.CurrentManagedThreadId instead of Thread.CurrentThread.ManagedThreadId dotnet_diagnostic.CA1840.severity = error # Prefer Dictionary Contains methods dotnet_diagnostic.CA1841.severity = error # Do not use WhenAll with a single task dotnet_diagnostic.CA1842.severity = error # Do not use WhenAll/WaitAll with a single task dotnet_diagnostic.CA1842.severity = error dotnet_diagnostic.CA1843.severity = error # Use span-based 'string.Concat' dotnet_diagnostic.CA1845.severity = error # Prefer AsSpan over Substring dotnet_diagnostic.CA1846.severity = error # Use string.Contains(char) instead of string.Contains(string) with single characters dotnet_diagnostic.CA1847.severity = error # Prefer static HashData method over ComputeHash dotnet_diagnostic.CA1850.severity = error # Possible multiple enumerations of IEnumerable collection dotnet_diagnostic.CA1851.severity = error # Unnecessary call to Dictionary.ContainsKey(key) dotnet_diagnostic.CA1853.severity = error # Prefer the IDictionary.TryGetValue(TKey, out TValue) method dotnet_diagnostic.CA1854.severity = error # Use Span.Clear() instead of Span.Fill() dotnet_diagnostic.CA1855.severity = error # Incorrect usage of ConstantExpected attribute dotnet_diagnostic.CA1856.severity = error # The parameter expects a constant for optimal performance dotnet_diagnostic.CA1857.severity = error # Use StartsWith instead of IndexOf dotnet_diagnostic.CA1858.severity = error # Avoid using Enumerable.Any() extension method dotnet_diagnostic.CA1860.severity = error # Avoid constant arrays as arguments dotnet_diagnostic.CA1861.severity = error # Use the StringComparison method overloads to perform case-insensitive string comparisons dotnet_diagnostic.CA1862.severity = error # Prefer the IDictionary.TryAdd(TKey, TValue) method dotnet_diagnostic.CA1864.severity = error # Use string.Method(char) instead of string.Method(string) for string with single char dotnet_diagnostic.CA1865.severity = error dotnet_diagnostic.CA1866.severity = error dotnet_diagnostic.CA1867.severity = error # Unnecessary call to 'Contains' for sets dotnet_diagnostic.CA1868.severity = error # Cache and reuse 'JsonSerializerOptions' instances dotnet_diagnostic.CA1869.severity = error # Use a cached 'SearchValues' instance dotnet_diagnostic.CA1870.severity = error # Microsoft .NET properties trim_trailing_whitespace = true csharp_preferred_modifier_order = public, private, protected, internal, new, static, abstract, virtual, sealed, readonly, override, extern, unsafe, volatile, async:suggestion resharper_namespace_body = file_scoped dotnet_naming_rule.private_constants_rule.severity = warning dotnet_naming_rule.private_constants_rule.style = lower_camel_case_style dotnet_naming_rule.private_constants_rule.symbols = private_constants_symbols 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_rule.severity = warning dotnet_naming_rule.private_static_fields_rule.style = lower_camel_case_style dotnet_naming_rule.private_static_fields_rule.symbols = private_static_fields_symbols dotnet_naming_rule.private_static_readonly_rule.severity = warning dotnet_naming_rule.private_static_readonly_rule.style = lower_camel_case_style dotnet_naming_rule.private_static_readonly_rule.symbols = private_static_readonly_symbols dotnet_naming_style.lower_camel_case_style.capitalization = camel_case dotnet_naming_style.upper_camel_case_style.capitalization = pascal_case dotnet_naming_symbols.private_constants_symbols.applicable_accessibilities = private 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_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_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 dotnet_style_parentheses_in_arithmetic_binary_operators = never_if_unnecessary:none dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:none dotnet_style_parentheses_in_relational_binary_operators = never_if_unnecessary:none # ReSharper properties resharper_object_creation_when_type_not_evident = target_typed # ReSharper inspection severities resharper_arrange_object_creation_when_type_evident_highlighting = error resharper_arrange_object_creation_when_type_not_evident_highlighting = error resharper_arrange_redundant_parentheses_highlighting = error resharper_arrange_static_member_qualifier_highlighting = error resharper_arrange_this_qualifier_highlighting = error resharper_arrange_type_member_modifiers_highlighting = none 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_convert_to_using_declaration_highlighting = error resharper_field_can_be_made_read_only_local_highlighting = none resharper_merge_into_logical_pattern_highlighting = warning resharper_merge_into_pattern_highlighting = error resharper_method_has_async_overload_highlighting = warning # because stop rider giving errors before source generators have run resharper_partial_type_with_single_part_highlighting = warning resharper_redundant_base_qualifier_highlighting = warning resharper_redundant_cast_highlighting = error resharper_redundant_empty_object_creation_argument_list_highlighting = error resharper_redundant_empty_object_or_collection_initializer_highlighting = error resharper_redundant_name_qualifier_highlighting = error resharper_redundant_suppress_nullable_warning_expression_highlighting = error resharper_redundant_using_directive_highlighting = error resharper_redundant_verbatim_string_prefix_highlighting = error resharper_redundant_lambda_signature_parentheses_highlighting = error resharper_replace_substring_with_range_indexer_highlighting = warning resharper_suggest_var_or_type_built_in_types_highlighting = error resharper_suggest_var_or_type_elsewhere_highlighting = error resharper_suggest_var_or_type_simple_types_highlighting = error resharper_unnecessary_whitespace_highlighting = error resharper_use_await_using_highlighting = warning resharper_use_deconstruction_highlighting = warning # Sort using and Import directives with System.* appearing first dotnet_sort_system_directives_first = true # Avoid "this." and "Me." if not necessary dotnet_style_qualification_for_field = false:error dotnet_style_qualification_for_property = false:error dotnet_style_qualification_for_method = false:error dotnet_style_qualification_for_event = false:error # Use language keywords instead of framework type names for type references dotnet_style_predefined_type_for_locals_parameters_members = true:error dotnet_style_predefined_type_for_member_access = true:error # Suggest more modern language features when available dotnet_style_object_initializer = true:error dotnet_style_collection_initializer = true:error dotnet_style_coalesce_expression = false:error dotnet_style_null_propagation = true:error dotnet_style_explicit_tuple_names = true:error # Use collection expression syntax resharper_use_collection_expression_highlighting = error # Prefer "var" everywhere csharp_style_var_for_built_in_types = true:error csharp_style_var_when_type_is_apparent = true:error csharp_style_var_elsewhere = true:error # Prefer method-like constructs to have a block body csharp_style_expression_bodied_methods = true:error csharp_style_expression_bodied_local_functions = true:error csharp_style_expression_bodied_constructors = true:error csharp_style_expression_bodied_operators = true:error resharper_place_expr_method_on_single_line = false # Prefer property-like constructs to have an expression-body csharp_style_expression_bodied_properties = true:error csharp_style_expression_bodied_indexers = true:error csharp_style_expression_bodied_accessors = true:error # Suggest more modern language features when available csharp_style_pattern_matching_over_is_with_cast_check = true:error csharp_style_pattern_matching_over_as_with_null_check = true:error csharp_style_inlined_variable_declaration = true:suggestion csharp_style_throw_expression = true:suggestion csharp_style_conditional_delegate_call = true:suggestion # Newline settings #csharp_new_line_before_open_brace = all:error resharper_max_array_initializer_elements_on_line = 1 csharp_new_line_before_else = true csharp_new_line_before_catch = true csharp_new_line_before_finally = true csharp_new_line_before_members_in_object_initializers = true csharp_new_line_before_members_in_anonymous_types = true resharper_wrap_before_first_type_parameter_constraint = true resharper_wrap_extends_list_style = chop_always resharper_wrap_after_dot_in_method_calls = false resharper_wrap_before_binary_pattern_op = false resharper_wrap_object_and_collection_initializer_style = chop_always resharper_place_simple_initializer_on_single_line = false # space resharper_space_around_lambda_arrow = true dotnet_style_require_accessibility_modifiers = never:error resharper_place_type_constraints_on_same_line = false resharper_blank_lines_inside_namespace = 0 resharper_blank_lines_after_file_scoped_namespace_directive = 1 resharper_blank_lines_inside_type = 0 resharper_place_attribute_on_same_line = false #braces https://www.jetbrains.com/help/resharper/EditorConfig_CSHARP_CSharpCodeStylePageImplSchema.html#Braces resharper_braces_for_ifelse = required resharper_braces_for_foreach = required resharper_braces_for_while = required resharper_braces_for_dowhile = required resharper_braces_for_lock = required resharper_braces_for_fixed = required resharper_braces_for_for = required resharper_return_value_of_pure_method_is_not_used_highlighting = error resharper_member_hides_interface_member_with_default_implementation_highlighting = error resharper_misleading_body_like_statement_highlighting = error resharper_redundant_record_class_keyword_highlighting = error resharper_redundant_extends_list_entry_highlighting = error resharper_redundant_type_arguments_inside_nameof_highlighting = error # Xml files [*.{xml,config,nuspec,resx,vsixmanifest,csproj,targets,props,fsproj}] indent_size = 2 # https://www.jetbrains.com/help/resharper/EditorConfig_XML_XmlCodeStylePageSchema.html#resharper_xml_blank_line_after_pi resharper_blank_line_after_pi = false resharper_space_before_self_closing = true ij_xml_space_inside_empty_tag = true [*.json] indent_size = 2 # Verify settings [*.{received,verified}.{txt,xml,json,md,sql,csv,html,htm,nuspec,rels}] charset = utf-8-bom end_of_line = lf indent_size = unset indent_style = unset insert_final_newline = false tab_width = unset trim_trailing_whitespace = false ================================================ FILE: .gitattributes ================================================ * text=auto eol=lf *.png binary *.snk binary *.verified.txt text eol=lf working-tree-encoding=UTF-8 *.verified.xml text eol=lf working-tree-encoding=UTF-8 *.verified.json text eol=lf working-tree-encoding=UTF-8 .editorconfig text eol=lf working-tree-encoding=UTF-8 *.sln.DotSettings text eol=lf working-tree-encoding=UTF-8 *.slnx.DotSettings text eol=lf working-tree-encoding=UTF-8 ================================================ FILE: .github/FUNDING.yml ================================================ github: SimonCropp ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.md ================================================ --- name: Bug fix about: Create a bug fix to help us improve --- Note: New issues raised, where it is clear the submitter has not read the issue template, are likely to be closed with "please read the issue template". Please don't take offense at this. It is simply a time management decision. If someone raises an issue, and can't be bothered to spend the time to read the issue template, then the project maintainers should not be expected to spend the time to read the submitted issue. Often too much time is spent going back and forth in issue comments asking for information that is outlined in the issue template. #### Preamble Where relevant, ensure you are using the current stable versions on your development stack. For example: * Visual Studio * [.NET SDK or .NET Core SDK](https://www.microsoft.com/net/download) * Any related NuGet packages Any code or stack traces must be properly formatted with [GitHub markdown](https://guides.github.com/features/mastering-markdown/). #### Describe the bug A clear and concise description of what the bug is. Include any relevant version information. A clear and concise description of what you expected to happen. Add any other context about the problem here. #### Minimal Repro Ensure you have replicated the bug in a minimal solution with the fewest moving parts. Often this will help point to the true cause of the problem. Upload this repro as part of the issue, preferably a public GitHub repository or a downloadable zip. The repro will allow the maintainers of this project to smoke test the any fix. #### Submit a PR that fixes the bug Submit a [Pull Request (PR)](https://help.github.com/articles/about-pull-requests/) that fixes the bug. Include in this PR a test that verifies the fix. If you were not able to fix the bug, a PR that illustrates your partial progress will suffice. ================================================ FILE: .github/ISSUE_TEMPLATE/config.yml ================================================ blank_issues_enabled: false ================================================ FILE: .github/ISSUE_TEMPLATE/feature_request.md ================================================ --- name: Feature request about: How to raise feature requests --- Note: New issues raised, where it is clear the submitter has not read the issue template, are likely to be closed with "please read the issue template". Please don't take offense at this. It is simply a time management decision. If someone raises an issue, and can't be bothered to spend the time to read the issue template, then the project maintainers should not be expected to spend the time to read the submitted issue. Often too much time is spent going back and forth in issue comments asking for information that is outlined in the issue template. If you are certain the feature will be accepted, it is better to raise a [Pull Request (PR)](https://help.github.com/articles/about-pull-requests/). If you are uncertain if the feature will be accepted, outline the proposal below to confirm it is viable, prior to raising a PR that implements the feature. Note that even if the feature is a good idea and viable, it may not be accepted since the ongoing effort in maintaining the feature may outweigh the benefit it delivers. #### Is the feature request related to a problem A clear and concise description of what the problem is. #### Describe the solution A clear and concise proposal of how you intend to implement the feature. #### Describe alternatives considered A clear and concise description of any alternative solutions or features you've considered. #### Additional context Add any other context about the feature request here. ================================================ FILE: .github/dependabot.yml ================================================ version: 2 updates: - package-ecosystem: nuget directory: "/src" schedule: interval: daily open-pull-requests-limit: 10 ================================================ FILE: .github/stale.yml ================================================ # Number of days of inactivity before an issue becomes stale daysUntilStale: 7 # Number of days of inactivity before a stale issue is closed daysUntilClose: 7 # Set to true to ignore issues in a milestone (defaults to false) exemptMilestones: true # Comment to post when marking an issue as stale. Set to `false` to disable markComment: > This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. # Comment to post when closing a stale issue. Set to `false` to disable closeComment: false # Optionally, specify configuration settings that are specific to just 'issues' or 'pulls': pulls: daysUntilStale: 30 exemptLabels: - Question - Bug - Feature - Improvement ================================================ FILE: .github/workflows/merge-dependabot.yml ================================================ name: merge-dependabot on: pull_request: jobs: automerge: runs-on: ubuntu-latest if: github.actor == 'dependabot[bot]' steps: - name: Dependabot Auto Merge uses: ahmadnassri/action-dependabot-auto-merge@v2.6.6 with: target: minor github-token: ${{ secrets.dependabot }} command: squash and merge ================================================ FILE: .github/workflows/milestone-release.yml ================================================ name: milestone-release on: milestone: types: [created, edited, deleted, closed, opened] issues: types: [opened, edited, closed, reopened, deleted, milestoned, demilestoned] pull_request: types: [opened, edited, closed, reopened, milestoned, demilestoned] push: tags: - '*' workflow_dispatch: inputs: milestone: description: 'Milestone title to rebuild (leave empty to rebuild all)' required: false type: string permissions: contents: write jobs: sync-release: runs-on: ubuntu-latest steps: - name: Sync Release with Milestone uses: actions/github-script@v7 with: script: | const { owner, repo } = context.repo; async function syncMilestone(milestone) { const milestoneTitle = milestone.title; const milestoneNumber = milestone.number; // Find existing release by tag_name (includes drafts) let release = null; for await (const response of github.paginate.iterator( github.rest.repos.listReleases, { owner, repo, per_page: 100 } )) { release = response.data.find(r => r.tag_name === milestoneTitle); if (release) break; } // Fetch all issues and PRs in milestone const items = []; for await (const response of github.paginate.iterator( github.rest.issues.listForRepo, { owner, repo, milestone: milestoneNumber, state: 'all', per_page: 100 } )) { items.push(...response.data); } // Sort by number and generate body items.sort((a, b) => a.number - b.number); const body = items.map(item => { const checkbox = item.state === 'closed' ? '[x]' : '[ ]'; return `- ${checkbox} [#${item.number}](${item.html_url}) ${item.title}`; }).join('\n'); // Determine if release should be draft or published const isDraft = milestone.state === 'open'; if (release) { await github.rest.repos.updateRelease({ owner, repo, release_id: release.id, name: milestoneTitle, body: body || 'No issues in this milestone yet.', draft: isDraft }); console.log(`Updated release: ${milestoneTitle}`); } else { // Check if tag exists before creating release let tagExists = false; try { await github.rest.git.getRef({ owner, repo, ref: `tags/${milestoneTitle}` }); tagExists = true; } catch (error) { if (error.status !== 404) throw error; } if (tagExists) { await github.rest.repos.createRelease({ owner, repo, tag_name: milestoneTitle, name: milestoneTitle, body: body || 'No issues in this milestone yet.', draft: isDraft }); console.log(`Created release: ${milestoneTitle}`); } else { console.log(`Skipping release creation: tag '${milestoneTitle}' does not exist`); } } } // Handle tag push - find matching milestone and sync if (context.eventName === 'push' && context.ref.startsWith('refs/tags/')) { const tagName = context.ref.replace('refs/tags/', ''); const milestones = []; for await (const response of github.paginate.iterator( github.rest.issues.listMilestones, { owner, repo, state: 'all', per_page: 100 } )) { milestones.push(...response.data); } const milestone = milestones.find(ms => ms.title === tagName); if (milestone) { await syncMilestone(milestone); } else { console.log(`No milestone found matching tag '${tagName}'`); } return; } // Handle manual trigger - rebuild all or specific milestone if (context.eventName === 'workflow_dispatch') { const inputMilestone = context.payload.inputs?.milestone; const milestones = []; for await (const response of github.paginate.iterator( github.rest.issues.listMilestones, { owner, repo, state: 'all', per_page: 100 } )) { milestones.push(...response.data); } for (const ms of milestones) { if (!inputMilestone || ms.title === inputMilestone) { await syncMilestone(ms); } } return; } // Get milestone from event let milestone = context.payload.milestone; if (!milestone && context.payload.issue?.milestone) { milestone = context.payload.issue.milestone; } if (!milestone && context.payload.pull_request?.milestone) { milestone = context.payload.pull_request.milestone; } if (!milestone) { console.log('No milestone associated with this event'); return; } const eventAction = context.payload.action; // Handle milestone deleted if (context.eventName === 'milestone' && eventAction === 'deleted') { const milestoneTitle = milestone.title; let release = null; for await (const response of github.paginate.iterator( github.rest.repos.listReleases, { owner, repo, per_page: 100 } )) { release = response.data.find(r => r.tag_name === milestoneTitle); if (release) break; } if (release) { await github.rest.repos.deleteRelease({ owner, repo, release_id: release.id }); console.log(`Deleted release for milestone: ${milestoneTitle}`); } return; } await syncMilestone(milestone); ================================================ FILE: .github/workflows/on-push-do-doco.yml ================================================ name: on-push-do-doco on: push: jobs: release: runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: Run MarkdownSnippets run: | dotnet tool install --global MarkdownSnippets.Tool mdsnippets ${GITHUB_WORKSPACE} shell: bash - name: Push changes run: | git config --local user.email "action@github.com" git config --local user.name "GitHub Action" git commit -m "Doco changes" -a || echo "nothing to commit" remote="https://${GITHUB_ACTOR}:${{secrets.GITHUB_TOKEN}}@github.com/${GITHUB_REPOSITORY}.git" branch="${GITHUB_REF:11}" git push "${remote}" ${branch} || echo "nothing to push" shell: bash ================================================ FILE: .gitignore ================================================ *.suo *.user bin/ obj/ .vs/ *.DotSettings.user .idea/ *.received.* nugets/ ================================================ FILE: RedGateLicense.txt ================================================ New BSD License (BSD) Copyright (c) 2008, Red Gate Software Ltd All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Red Gate Software Ltd nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ================================================ FILE: code_of_conduct.md ================================================ # Contributor Covenant Code of Conduct ## Our Pledge In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. ## Our Standards Examples of behavior that contributes to creating a positive environment include: * Using welcoming and inclusive language * Being respectful of differing viewpoints and experiences * Gracefully accepting constructive criticism * Focusing on what is best for the community * Showing empathy towards other community members Examples of unacceptable behavior by participants include: * The use of sexualized language or imagery and unwelcome sexual attention or advances * Trolling, insulting/derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or electronic address, without explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. ## Scope This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at simon.cropp@gmail.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq ================================================ FILE: license.txt ================================================ BSD 3-Clause License Copyright (c) 2018, Simon Cropp All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ================================================ FILE: readme.md ================================================ # WaffleGenerator [![Build status](https://img.shields.io/appveyor/build/SimonCropp/WaffleGenerator)](https://ci.appveyor.com/project/SimonCropp/WaffleGenerator) [![NuGet Status](https://img.shields.io/nuget/v/WaffleGenerator.svg?label=WaffleGenerator&cacheSeconds=86400)](https://www.nuget.org/packages/WaffleGenerator/) [![NuGet Status](https://img.shields.io/nuget/v/WaffleGenerator.Bogus.svg?label=WaffleGenerator.Bogus&cacheSeconds=86400)](https://www.nuget.org/packages/WaffleGenerator.Bogus/) Produces text which, on first glance, looks like real, ponderous, prose; replete with clichés. **See [Milestones](../../milestones?state=closed) for release notes.** Example content: ``` The Aesthetic Of Economico-Social Disposition "In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition" (Humphrey Yokomoto in The Journal of the Total Entative Item (20044U)) On any rational basis, a particular factor, such as the functional baseline, the analogy of object, the strategic requirements or the principal overriding programming provides an interesting insight into the complementary functional derivation. This trend may dissipate due to the mensurable proficiency. ``` This output can be used in similar way to [Lorem ipsum](https://en.wikipedia.org/wiki/Lorem_ipsum) content, in that it is useful for producing text for build software and producing design mockups. Based on the awesome work by [Andrew Clarke](https://www.red-gate.com/simple-talk/author/andrew-clarke/) outlined in [The Waffle Generator](https://www.red-gate.com/simple-talk/dotnet/net-tools/the-waffle-generator/). Code based on [SDGGenerators - Red Gate SQL Data Generator Community Generators](https://archive.codeplex.com/?p=sdggenerators). ## Blazor App The [Blazing Waffles](http://wafflegen.azurewebsites.net/) app allows the generation of waffle text online. * Source: https://github.com/gbiellem/BlazingWaffles ## Main Package - WaffleGenerator https://nuget.org/packages/WaffleGenerator/ ### Usage The `WaffleEngine` can be used to produce Html, text or Markdown: #### Html ```cs var text = WaffleEngine.Html( paragraphs: 2, includeHeading: true, includeHeadAndBody: true); Debug.WriteLine(text); ``` snippet source | anchor #### Text ```cs var text = WaffleEngine.Text( paragraphs: 1, includeHeading: true); Debug.WriteLine(text); ``` snippet source | anchor #### Markdown ```cs var markdown = WaffleEngine.Markdown( paragraphs: 1, includeHeading: true); Debug.WriteLine(markdown); ``` snippet source | anchor ## WaffleGenerator.Bogus Extends [Bogus](https://github.com/bchavez/Bogus) to use WaffleGenerator. https://nuget.org/packages/WaffleGenerator.Bogus/ ### Usage The entry extension method is `WaffleHtml()` or `WaffleText()` or `WaffleMarkdown()`: ```cs var faker = new Faker() .RuleFor( property: u => u.Title, setter: (f, u) => f.WaffleTitle()) .RuleFor( property: u => u.Property1, setter: (f, u) => f.WaffleHtml()) .RuleFor( property: u => u.Property2, setter: (f, u) => f.WaffleHtml( paragraphs: 4, includeHeading: true)) .RuleFor( property: u => u.Property3, setter: (f, u) => f.WaffleText()) .RuleFor( property: u => u.Property4, setter: (f, u) => f.WaffleText( paragraphs: 4, includeHeading: false)); var target = faker.Generate(); Debug.WriteLine(target.Title); Debug.WriteLine(target.Property1); Debug.WriteLine(target.Property2); Debug.WriteLine(target.Property3); Debug.WriteLine(target.Property4); ``` snippet source | anchor ## Icon [Waffle](https://thenounproject.com/term/waffle/836862/) designed by Made by Made from [The Noun Project](https://thenounproject.com/) ================================================ FILE: src/Directory.Build.props ================================================ CS1591;NU1608;NU1109 4.3.0 1.0.0 preview WaffleGenerator, Bogus enable enable true true true true ================================================ FILE: src/Directory.Packages.props ================================================ true true ================================================ FILE: src/Shared.sln.DotSettings ================================================  DO_NOT_SHOW False False Quiet True True True DO_NOT_SHOW ERROR ERROR ERROR WARNING ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR DO_NOT_SHOW DO_NOT_SHOW ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR C90+,E79+,S14+ ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR DO_NOT_SHOW *.received.* *.verified.* ERROR ERROR DO_NOT_SHOW ECMAScript 2016 <?xml version="1.0" encoding="utf-16"?><Profile name="c# Cleanup"><AspOptimizeRegisterDirectives>True</AspOptimizeRegisterDirectives><CSCodeStyleAttributes ArrangeVarStyle="True" ArrangeTypeAccessModifier="True" ArrangeTypeMemberAccessModifier="True" SortModifiers="True" RemoveRedundantParentheses="True" AddMissingParentheses="True" ArrangeBraces="True" ArrangeAttributes="True" ArrangeCodeBodyStyle="True" ArrangeTrailingCommas="True" ArrangeObjectCreation="True" ArrangeDefaultValue="True" ArrangeNamespaces="True" /><CssAlphabetizeProperties>True</CssAlphabetizeProperties><JSStringLiteralQuotesDescriptor>True</JSStringLiteralQuotesDescriptor><CorrectVariableKindsDescriptor>True</CorrectVariableKindsDescriptor><VariablesToInnerScopesDescriptor>True</VariablesToInnerScopesDescriptor><StringToTemplatesDescriptor>True</StringToTemplatesDescriptor><JsInsertSemicolon>True</JsInsertSemicolon><RemoveRedundantQualifiersTs>True</RemoveRedundantQualifiersTs><OptimizeImportsTs>True</OptimizeImportsTs><OptimizeReferenceCommentsTs>True</OptimizeReferenceCommentsTs><PublicModifierStyleTs>True</PublicModifierStyleTs><ExplicitAnyTs>True</ExplicitAnyTs><TypeAnnotationStyleTs>True</TypeAnnotationStyleTs><RelativePathStyleTs>True</RelativePathStyleTs><AsInsteadOfCastTs>True</AsInsteadOfCastTs><RemoveCodeRedundancies>True</RemoveCodeRedundancies><CSUseAutoProperty>True</CSUseAutoProperty><CSMakeFieldReadonly>True</CSMakeFieldReadonly><CSMakeAutoPropertyGetOnly>True</CSMakeAutoPropertyGetOnly><CSArrangeQualifiers>True</CSArrangeQualifiers><CSFixBuiltinTypeReferences>True</CSFixBuiltinTypeReferences><CssReformatCode>True</CssReformatCode><JsReformatCode>True</JsReformatCode><JsFormatDocComments>True</JsFormatDocComments><CSOptimizeUsings><OptimizeUsings>True</OptimizeUsings></CSOptimizeUsings><CSShortenReferences>True</CSShortenReferences><CSReformatCode>True</CSReformatCode><CSharpFormatDocComments>True</CSharpFormatDocComments><FormatAttributeQuoteDescriptor>True</FormatAttributeQuoteDescriptor><HtmlReformatCode>True</HtmlReformatCode><XAMLCollapseEmptyTags>False</XAMLCollapseEmptyTags><IDEA_SETTINGS>&lt;profile version="1.0"&gt; &lt;option name="myName" value="c# Cleanup" /&gt; &lt;/profile&gt;</IDEA_SETTINGS><RIDER_SETTINGS>&lt;profile&gt; &lt;Language id="EditorConfig"&gt; &lt;Reformat&gt;false&lt;/Reformat&gt; &lt;/Language&gt; &lt;Language id="HTML"&gt; &lt;OptimizeImports&gt;false&lt;/OptimizeImports&gt; &lt;Reformat&gt;false&lt;/Reformat&gt; &lt;Rearrange&gt;false&lt;/Rearrange&gt; &lt;/Language&gt; &lt;Language id="JSON"&gt; &lt;Reformat&gt;false&lt;/Reformat&gt; &lt;/Language&gt; &lt;Language id="RELAX-NG"&gt; &lt;Reformat&gt;false&lt;/Reformat&gt; &lt;/Language&gt; &lt;Language id="XML"&gt; &lt;OptimizeImports&gt;false&lt;/OptimizeImports&gt; &lt;Reformat&gt;false&lt;/Reformat&gt; &lt;Rearrange&gt;false&lt;/Rearrange&gt; &lt;/Language&gt; &lt;/profile&gt;</RIDER_SETTINGS></Profile> ExpressionBody ExpressionBody ExpressionBody False NEVER NEVER False False False True False CHOP_ALWAYS False False RemoveIndent RemoveIndent False True True True True True ERROR DoNothing ================================================ FILE: src/Tests/FakerUsage.cs ================================================ using Bogus; // ReSharper disable RedundantArgumentDefaultValue // ReSharper disable UnusedParameter.Local [TestFixture] public class FakerUsage { [Test] public void Sample() { #region BogusUsage var faker = new Faker() .RuleFor( property: u => u.Title, setter: (f, u) => f.WaffleTitle()) .RuleFor( property: u => u.Property1, setter: (f, u) => f.WaffleHtml()) .RuleFor( property: u => u.Property2, setter: (f, u) => f.WaffleHtml( paragraphs: 4, includeHeading: true)) .RuleFor( property: u => u.Property3, setter: (f, u) => f.WaffleText()) .RuleFor( property: u => u.Property4, setter: (f, u) => f.WaffleText( paragraphs: 4, includeHeading: false)); var target = faker.Generate(); Debug.WriteLine(target.Title); Debug.WriteLine(target.Property1); Debug.WriteLine(target.Property2); Debug.WriteLine(target.Property3); Debug.WriteLine(target.Property4); #endregion } [Test] public void Run() { var faker = new Faker() .RuleFor(u => u.Title, (f, u) => f.WaffleTitle()) .RuleFor(u => u.Property1, (f, u) => f.WaffleHtml()) .RuleFor(u => u.Property2, (f, u) => f.WaffleText()); var target = faker.Generate(); Trace.WriteLine(target.Title); Trace.WriteLine(target.Property1); Trace.WriteLine(target.Property2); NotNull(target.Title); IsNotEmpty(target.Title); NotNull(target.Property1); IsNotEmpty(target.Property1); NotNull(target.Property2); IsNotEmpty(target.Property2); } public class Target { public string? Property1 { get; set; } public string? Property2 { get; set; } public string? Property3 { get; set; } public string? Property4 { get; set; } public string? Title { get; set; } } } ================================================ FILE: src/Tests/GlobalUsings.cs ================================================ // Global using directives global using VerifyTests.DiffPlex; global using WaffleGenerator; ================================================ FILE: src/Tests/ModuleInitializer.cs ================================================ static class ModuleInitializer { [ModuleInitializer] public static void Initialize() { VerifyDiffPlex.Initialize(OutputType.Compact); VerifierSettings.InitializePlugins(); } } ================================================ FILE: src/Tests/Tests.csproj ================================================ net10.0 ================================================ FILE: src/Tests/WaffleEngineTests.HtmlWaffleMultiple.verified.txt ================================================ 

The Aesthetic Of Economico-Social Disposition

'In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition'
Humphrey Yokomoto in The Journal of the Total Entative Item (20124U)

causation of milieu.

On any rational basis, a particular factor, such as the functional baseline, the analogy of object, the strategic requirements or the principal overriding programming provides an interesting insight into the complementary functional derivation. This trend may dissipate due to the mensurable proficiency.

The Potential Economic Competence.

On the other hand, the integrated dominant specification and the resources needed to support it are mandatory. It can be forcibly emphasized that efforts are already underway in the development of the inductive extrinsic rationalization. Albeit, the target population for an implementation strategy for fully interactive phylogenetic value focuses our attention on what is beginning to be termed the "set of constraints".

To coin a phrase, the operations scenario in its relation to the separate roles and significances of the ad-hoc politico-strategical time-phase identifies the probability of project success and the strategic overriding competence. We need to be able to rationalize The major theme of the optical reproducible reconstruction. The advent of the set of constraints rigorously posits the work being done at the 'coal-face'.

The Dynamic Effective Partnership.

Focussing on the agreed facts, we can say that the dangers inherent in the essential conjectural determinism focuses our attention on the greater objective inductive attitude of the quasi-effectual empirical correspondence.

The Corporate Procedure.

firstly, subdivisions of what amounts to the consultative consistent baseline significantly alters the importance of the work being done at the 'coal-face'.

The religious analogy is taken to be a alternative immediate contingency. Presumably, the core business is reciprocated by the applicability and value of the access to corporate systems.

To recapitulate, the feasibility of the directive subjective morality relates stringently to any impact on overall performance. Conversely, the feasibility of the inductive resonant monologism could go the extra mile for any commonality between the integrated auxiliary antithesis and the crucial test option.

The the criterion of non-viable expressive resources provides us with a win-win situation. Especially if one considers that a concept of what we have come to call the strategic goals underlines the essential paradigm of the proactive sanctioned item. This may explain why the dominant factor clearly supplements the strategic framework. This should be considered in the light of the necessity for budgetary control.

Similarly, the question of a preponderance of the compatible transitional disposition generally maximizes the truly global universal algorithm in its relationship with the multilingual cynicism.

Note that:- 1. The constraints of the knock-on effect stresses the importance of other systems and the necessity for what is beginning to be termed the "critical privileged impulse".. 2. A psychic operation of what has been termed the definitive resources is reciprocated by the overall game-plan.. 3. A primary interrelationship between system and/or subsystem technologies exceeds the functionality of the feedback process. One must therefore dedicate resources to the quality driven unprejudiced matrix immediately.. 4. The adequate functionality of the strategic plan must be considered proactively, rather than reactively, in the light of the resource planning. 5. The principle of the ongoing specific programming relates presumably to any adequate resource level. Conversely, any fundamental dichotomies of the calculus of consequence probably delineates the necessity for budgetary control. This trend may dissipate due to the comprehensive hierarchical theme. 6. A persistent instability in the principle of the spatio-temporal reciprocity rivals, in terms of resource implications, any discrete or objective configuration mode. Any fundamental dichotomies of the benchmark inherently sustains the maintenance of current standards and the politico-strategical integration. This may rigorously flounder on the non-viable hypothetical dimension.

An initial appraisal makes it evident that the principle of the the bottom line generally reflects the privileged directive resources and the vibrant pure familiarisation. This should be considered in the light of the critical subsystem mobility.

================================================ FILE: src/Tests/WaffleEngineTests.HtmlWaffleMultipleWithHeadAndBody.verified.txt ================================================  The Aesthetic Of Economico-Social Disposition

The Aesthetic Of Economico-Social Disposition

'In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition'
Humphrey Yokomoto in The Journal of the Total Entative Item (20124U)

causation of milieu.

On any rational basis, a particular factor, such as the functional baseline, the analogy of object, the strategic requirements or the principal overriding programming provides an interesting insight into the complementary functional derivation. This trend may dissipate due to the mensurable proficiency.

The Potential Economic Competence.

On the other hand, the integrated dominant specification and the resources needed to support it are mandatory. It can be forcibly emphasized that efforts are already underway in the development of the inductive extrinsic rationalization. Albeit, the target population for an implementation strategy for fully interactive phylogenetic value focuses our attention on what is beginning to be termed the "set of constraints".

To coin a phrase, the operations scenario in its relation to the separate roles and significances of the ad-hoc politico-strategical time-phase identifies the probability of project success and the strategic overriding competence. We need to be able to rationalize The major theme of the optical reproducible reconstruction. The advent of the set of constraints rigorously posits the work being done at the 'coal-face'.

The Dynamic Effective Partnership.

Focussing on the agreed facts, we can say that the dangers inherent in the essential conjectural determinism focuses our attention on the greater objective inductive attitude of the quasi-effectual empirical correspondence.

The Corporate Procedure.

firstly, subdivisions of what amounts to the consultative consistent baseline significantly alters the importance of the work being done at the 'coal-face'.

The religious analogy is taken to be a alternative immediate contingency. Presumably, the core business is reciprocated by the applicability and value of the access to corporate systems.

To recapitulate, the feasibility of the directive subjective morality relates stringently to any impact on overall performance. Conversely, the feasibility of the inductive resonant monologism could go the extra mile for any commonality between the integrated auxiliary antithesis and the crucial test option.

The the criterion of non-viable expressive resources provides us with a win-win situation. Especially if one considers that a concept of what we have come to call the strategic goals underlines the essential paradigm of the proactive sanctioned item. This may explain why the dominant factor clearly supplements the strategic framework. This should be considered in the light of the necessity for budgetary control.

Similarly, the question of a preponderance of the compatible transitional disposition generally maximizes the truly global universal algorithm in its relationship with the multilingual cynicism.

Note that:- 1. The constraints of the knock-on effect stresses the importance of other systems and the necessity for what is beginning to be termed the "critical privileged impulse".. 2. A psychic operation of what has been termed the definitive resources is reciprocated by the overall game-plan.. 3. A primary interrelationship between system and/or subsystem technologies exceeds the functionality of the feedback process. One must therefore dedicate resources to the quality driven unprejudiced matrix immediately.. 4. The adequate functionality of the strategic plan must be considered proactively, rather than reactively, in the light of the resource planning. 5. The principle of the ongoing specific programming relates presumably to any adequate resource level. Conversely, any fundamental dichotomies of the calculus of consequence probably delineates the necessity for budgetary control. This trend may dissipate due to the comprehensive hierarchical theme. 6. A persistent instability in the principle of the spatio-temporal reciprocity rivals, in terms of resource implications, any discrete or objective configuration mode. Any fundamental dichotomies of the benchmark inherently sustains the maintenance of current standards and the politico-strategical integration. This may rigorously flounder on the non-viable hypothetical dimension.

An initial appraisal makes it evident that the principle of the the bottom line generally reflects the privileged directive resources and the vibrant pure familiarisation. This should be considered in the light of the critical subsystem mobility.

================================================ FILE: src/Tests/WaffleEngineTests.HtmlWaffleNoHeading.verified.txt ================================================ 

The Aesthetic Of Economico-Social Disposition

'In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition'
Humphrey Yokomoto in The Journal of the Total Entative Item (20124U)

causation of milieu.

On any rational basis, a particular factor, such as the functional baseline, the analogy of object, the strategic requirements or the principal overriding programming provides an interesting insight into the complementary functional derivation. This trend may dissipate due to the mensurable proficiency.

================================================ FILE: src/Tests/WaffleEngineTests.HtmlWaffleNoHeadingWithHeadAndBody.verified.txt ================================================  The Aesthetic Of Economico-Social Disposition

The Aesthetic Of Economico-Social Disposition

'In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition'
Humphrey Yokomoto in The Journal of the Total Entative Item (20124U)

causation of milieu.

On any rational basis, a particular factor, such as the functional baseline, the analogy of object, the strategic requirements or the principal overriding programming provides an interesting insight into the complementary functional derivation. This trend may dissipate due to the mensurable proficiency.

================================================ FILE: src/Tests/WaffleEngineTests.HtmlWaffleSingle.verified.txt ================================================ 

The Aesthetic Of Economico-Social Disposition

'In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition'
Humphrey Yokomoto in The Journal of the Total Entative Item (20124U)

causation of milieu.

On any rational basis, a particular factor, such as the functional baseline, the analogy of object, the strategic requirements or the principal overriding programming provides an interesting insight into the complementary functional derivation. This trend may dissipate due to the mensurable proficiency.

================================================ FILE: src/Tests/WaffleEngineTests.HtmlWaffleSingleWithHeadAndBody.verified.txt ================================================  The Aesthetic Of Economico-Social Disposition

The Aesthetic Of Economico-Social Disposition

'In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition'
Humphrey Yokomoto in The Journal of the Total Entative Item (20124U)

causation of milieu.

On any rational basis, a particular factor, such as the functional baseline, the analogy of object, the strategic requirements or the principal overriding programming provides an interesting insight into the complementary functional derivation. This trend may dissipate due to the mensurable proficiency.

================================================ FILE: src/Tests/WaffleEngineTests.MarkdownWaffleMultiple.verified.md ================================================ # The Aesthetic Of Economico-Social Disposition > In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition * Humphrey Yokomoto in The Journal of the Total Entative Item (20124U) ## causation of milieu. On any rational basis, a particular factor, such as the functional baseline, the analogy of object, the strategic requirements or the principal overriding programming provides an interesting insight into the complementary functional derivation. This trend may dissipate due to the mensurable proficiency. ## The Potential Economic Competence. On the other hand, the integrated dominant specification and the resources needed to support it are mandatory. It can be forcibly emphasized that efforts are already underway in the development of the inductive extrinsic rationalization. Albeit, the target population for an implementation strategy for fully interactive phylogenetic value focuses our attention on what is beginning to be termed the "set of constraints". To coin a phrase, the operations scenario in its relation to the separate roles and significances of the ad-hoc politico-strategical time-phase identifies the probability of project success and the strategic overriding competence. We need to be able to rationalize The major theme of the optical reproducible reconstruction. The advent of the set of constraints rigorously posits the work being done at the 'coal-face'. ## The Dynamic Effective Partnership. Focussing on the agreed facts, we can say that the dangers inherent in the essential conjectural determinism focuses our attention on the greater objective inductive attitude of the quasi-effectual empirical correspondence. ## The Corporate Procedure. firstly, subdivisions of what amounts to the consultative consistent baseline significantly alters the importance of the work being done at the 'coal-face'. The religious analogy is taken to be a alternative immediate contingency. Presumably, the core business is reciprocated by the applicability and value of the access to corporate systems. To recapitulate, the feasibility of the directive subjective morality relates stringently to any impact on overall performance. Conversely, the feasibility of the inductive resonant monologism could go the extra mile for any commonality between the integrated auxiliary antithesis and the crucial test option. The the criterion of non-viable expressive resources provides us with a win-win situation. Especially if one considers that a concept of what we have come to call the strategic goals underlines the essential paradigm of the proactive sanctioned item. This may explain why the dominant factor clearly supplements the strategic framework. This should be considered in the light of the necessity for budgetary control. Similarly, the question of a preponderance of the compatible transitional disposition generally maximizes the truly global universal algorithm in its relationship with the multilingual cynicism. Note that:- 1. The constraints of the knock-on effect stresses the importance of other systems and the necessity for what is beginning to be termed the "critical privileged impulse".. 2. A psychic operation of what has been termed the definitive resources is reciprocated by the overall game-plan.. 3. A primary interrelationship between system and/or subsystem technologies exceeds the functionality of the feedback process. One must therefore dedicate resources to the quality driven unprejudiced matrix immediately.. 4. The adequate functionality of the strategic plan must be considered proactively, rather than reactively, in the light of the resource planning. 5. The principle of the ongoing specific programming relates presumably to any adequate resource level. Conversely, any fundamental dichotomies of the calculus of consequence probably delineates the necessity for budgetary control. This trend may dissipate due to the comprehensive hierarchical theme. 6. A persistent instability in the principle of the spatio-temporal reciprocity rivals, in terms of resource implications, any discrete or objective configuration mode. Any fundamental dichotomies of the benchmark inherently sustains the maintenance of current standards and the politico-strategical integration. This may rigorously flounder on the non-viable hypothetical dimension. An initial appraisal makes it evident that the principle of the the bottom line generally reflects the privileged directive resources and the vibrant pure familiarisation. This should be considered in the light of the critical subsystem mobility. ================================================ FILE: src/Tests/WaffleEngineTests.MarkdownWaffleNoHeading.verified.md ================================================ Only in the case of the performance objectives can one state that an overall understanding of any ad-hoc implicit delivery shows an interesting ambivalence with the parallel entative delivery or the three-tier resonant teleology. ================================================ FILE: src/Tests/WaffleEngineTests.MarkdownWaffleSingle.verified.md ================================================ # The Aesthetic Of Economico-Social Disposition > In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition * Humphrey Yokomoto in The Journal of the Total Entative Item (20124U) ## causation of milieu. On any rational basis, a particular factor, such as the functional baseline, the analogy of object, the strategic requirements or the principal overriding programming provides an interesting insight into the complementary functional derivation. This trend may dissipate due to the mensurable proficiency. ================================================ FILE: src/Tests/WaffleEngineTests.TextWaffleMultiple.verified.txt ================================================ The Aesthetic Of Economico-Social Disposition 'In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition' - Humphrey Yokomoto in The Journal of the Total Entative Item (20124U) causation of milieu. On any rational basis, a particular factor, such as the functional baseline, the analogy of object, the strategic requirements or the principal overriding programming provides an interesting insight into the complementary functional derivation. This trend may dissipate due to the mensurable proficiency. The Potential Economic Competence. On the other hand, the integrated dominant specification and the resources needed to support it are mandatory. It can be forcibly emphasized that efforts are already underway in the development of the inductive extrinsic rationalization. Albeit, the target population for an implementation strategy for fully interactive phylogenetic value focuses our attention on what is beginning to be termed the "set of constraints". To coin a phrase, the operations scenario in its relation to the separate roles and significances of the ad-hoc politico-strategical time-phase identifies the probability of project success and the strategic overriding competence. We need to be able to rationalize The major theme of the optical reproducible reconstruction. The advent of the set of constraints rigorously posits the work being done at the 'coal-face'. The Dynamic Effective Partnership. Focussing on the agreed facts, we can say that the dangers inherent in the essential conjectural determinism focuses our attention on the greater objective inductive attitude of the quasi-effectual empirical correspondence. The Corporate Procedure. firstly, subdivisions of what amounts to the consultative consistent baseline significantly alters the importance of the work being done at the 'coal-face'. The religious analogy is taken to be a alternative immediate contingency. Presumably, the core business is reciprocated by the applicability and value of the access to corporate systems. To recapitulate, the feasibility of the directive subjective morality relates stringently to any impact on overall performance. Conversely, the feasibility of the inductive resonant monologism could go the extra mile for any commonality between the integrated auxiliary antithesis and the crucial test option. The the criterion of non-viable expressive resources provides us with a win-win situation. Especially if one considers that a concept of what we have come to call the strategic goals underlines the essential paradigm of the proactive sanctioned item. This may explain why the dominant factor clearly supplements the strategic framework. This should be considered in the light of the necessity for budgetary control. Similarly, the question of a preponderance of the compatible transitional disposition generally maximizes the truly global universal algorithm in its relationship with the multilingual cynicism. Note that:- 1. The constraints of the knock-on effect stresses the importance of other systems and the necessity for what is beginning to be termed the "critical privileged impulse".. 2. A psychic operation of what has been termed the definitive resources is reciprocated by the overall game-plan.. 3. A primary interrelationship between system and/or subsystem technologies exceeds the functionality of the feedback process. One must therefore dedicate resources to the quality driven unprejudiced matrix immediately.. 4. The adequate functionality of the strategic plan must be considered proactively, rather than reactively, in the light of the resource planning. 5. The principle of the ongoing specific programming relates presumably to any adequate resource level. Conversely, any fundamental dichotomies of the calculus of consequence probably delineates the necessity for budgetary control. This trend may dissipate due to the comprehensive hierarchical theme. 6. A persistent instability in the principle of the spatio-temporal reciprocity rivals, in terms of resource implications, any discrete or objective configuration mode. Any fundamental dichotomies of the benchmark inherently sustains the maintenance of current standards and the politico-strategical integration. This may rigorously flounder on the non-viable hypothetical dimension. An initial appraisal makes it evident that the principle of the the bottom line generally reflects the privileged directive resources and the vibrant pure familiarisation. This should be considered in the light of the critical subsystem mobility. ================================================ FILE: src/Tests/WaffleEngineTests.TextWaffleNoHeading.verified.txt ================================================ Only in the case of the performance objectives can one state that an overall understanding of any ad-hoc implicit delivery shows an interesting ambivalence with the parallel entative delivery or the three-tier resonant teleology. ================================================ FILE: src/Tests/WaffleEngineTests.TextWaffleSingle.verified.txt ================================================ The Aesthetic Of Economico-Social Disposition 'In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition' - Humphrey Yokomoto in The Journal of the Total Entative Item (20124U) causation of milieu. On any rational basis, a particular factor, such as the functional baseline, the analogy of object, the strategic requirements or the principal overriding programming provides an interesting insight into the complementary functional derivation. This trend may dissipate due to the mensurable proficiency. ================================================ FILE: src/Tests/WaffleEngineTests.Title.verified.txt ================================================ The Aesthetic Of Economico-Social Disposition ================================================ FILE: src/Tests/WaffleEngineTests.cs ================================================ [TestFixture] public class WaffleEngineTests { [Test] public void TextWaffleSample() { #region textUsage var text = WaffleEngine.Text( paragraphs: 1, includeHeading: true); Debug.WriteLine(text); #endregion } [Test] public void MarkdownWaffleSample() { #region markdownUsage var markdown = WaffleEngine.Markdown( paragraphs: 1, includeHeading: true); Debug.WriteLine(markdown); #endregion } [Test] public void HtmlWaffleSample() { #region htmlUsage var text = WaffleEngine.Html( paragraphs: 2, includeHeading: true, includeHeadAndBody: true); Debug.WriteLine(text); #endregion } [Test] public Task TextWaffleSingle() { var random = new Random(0); var text = WaffleEngine.Text(random, 1, true); return Verify(text); } [Test] public void EndsWith() { True(new StringBuilder("a").EndsWith('a')); True(new StringBuilder("ba").EndsWith('a')); True(new StringBuilder("ba").EndsWith('b', 'a')); True(new StringBuilder("a ").EndsWith('a')); True(new StringBuilder("ba ").EndsWith('a')); True(new StringBuilder("ba ").EndsWith('b', 'a')); True(new StringBuilder("a ").EndsWith('a')); True(new StringBuilder("ba ").EndsWith('a')); True(new StringBuilder("ba ").EndsWith('b', 'a')); False(new StringBuilder("a").EndsWith('c')); False(new StringBuilder("ba").EndsWith('c')); False(new StringBuilder("ba").EndsWith('c', 'd')); False(new StringBuilder("a ").EndsWith('c')); False(new StringBuilder("ba ").EndsWith('c')); False(new StringBuilder("ba ").EndsWith('c', 'd')); False(new StringBuilder("a ").EndsWith('c')); False(new StringBuilder("ba ").EndsWith('c')); False(new StringBuilder("ba ").EndsWith('c', 'd')); False(new StringBuilder(" ").EndsWith('c')); False(new StringBuilder(" ").EndsWith('c')); False(new StringBuilder("").EndsWith('c')); False(new StringBuilder("").EndsWith('c')); } [Test] public void MultiTextShouldNotDuplicate() { var text1 = WaffleEngine.Text(1, true); var text2 = WaffleEngine.Text(1, true); AreNotEqual(text1, text2); } [Test] public void MultiHtmlShouldNotDuplicate() { var text1 = WaffleEngine.Html(1, true, true); var text2 = WaffleEngine.Html(1, true, true); AreNotEqual(text1, text2); } [Test] public void MultiMarkdownShouldNotDuplicate() { var text1 = WaffleEngine.Markdown(1, true); var text2 = WaffleEngine.Markdown(1, true); AreNotEqual(text1, text2); } [Test] public Task MarkdownWaffleSingle() { var random = new Random(0); var text = WaffleEngine.Markdown(random, 1, true); return Verify(text, "md"); } [Test] public Task Title() { var random = new Random(0); var title = WaffleEngine.Title(random); return Verify(title); } [Test] public Task HtmlWaffleSingle() { var random = new Random(0); var html = WaffleEngine.Html(random, 1, true, false); return Verify(html); } [Test] public Task HtmlWaffleSingleWithHeadAndBody() { var random = new Random(0); var html = WaffleEngine.Html(random, 1, true, true); return Verify(html); } [Test] public Task TextWaffleMultiple() { var random = new Random(0); var text = WaffleEngine.Text(random, 11, true); return Verify(text); } [Test] public Task MarkdownWaffleMultiple() { var random = new Random(0); var text = WaffleEngine.Markdown(random, 11, true); return Verify(text, "md"); } [Test] public Task HtmlWaffleMultiple() { var random = new Random(0); var html = WaffleEngine.Html(random, 11, true, false); return Verify(html); } [Test] public Task HtmlWaffleMultipleWithHeadAndBody() { var random = new Random(0); var html = WaffleEngine.Html(random, 11, true, true); return Verify(html); } [Test] public Task TextWaffleNoHeading() { var random = new Random(0); var text = WaffleEngine.Text(random, 1, false); return Verify(text); } [Test] public Task MarkdownWaffleNoHeading() { var random = new Random(0); var text = WaffleEngine.Markdown(random, 1, false); return Verify(text, "md"); } [Test] public Task HtmlWaffleNoHeading() { var random = new Random(0); var html = WaffleEngine.Html(random, 1, true, false); return Verify(html); } [Test] public Task HtmlWaffleNoHeadingWithHeadAndBody() { var random = new Random(0); var html = WaffleEngine.Html(random, 1, true, true); return Verify(html); } } ================================================ FILE: src/WaffleGenerator/AssemblyInfo.cs ================================================ [assembly: InternalsVisibleTo("Tests, PublicKey=00240000048000009400000006020000002400005253413100040000010001006944a8a4c5de92d68196a123157958d8f212381e1e21a772626e9c86cf8032f457f5b3d669045c4183f4d8dc89be3ae953ccba62b7522b2633156d0c886597509d50de36ce53cac9eebae9146e061bd6933499c740f56770c9ca3052f51de162791f86ea316ae4e3345c58b53e5743a3301359820655979aafefb40384c585c5")] ================================================ FILE: src/WaffleGenerator/Constants.cs ================================================ // ReSharper disable StringLiteralTypo class Constants { public static string[] preamblePhrases = [ """ In broad terms, we can define the main issues with |t. There are :- * The |o of |o: |B |C |D. * The |o of |o: |B |C |D. * The |o of |o: |B |C |D. * The |o of |o: |B |C |D. """, """ The following points should be appreciated about |t; 1. |B |C |D. 2. |B |C |D. 3. |B |C |D. 4. |B |C |D. 5. |B |C |D. 6. |B |C |D. """, """ Note that:- 1. |B |C |D.. 2. |B |C |D.. 3. |B |C |D. 4. |B |C |D. 5. |B |C |D. 6. |B |C |D. """, """ Essentially; * |B |C |D. * |B |C |D. * |B |C |D. * |B |C |D. * |B |C |D. * |B |C |D. """, """ To make the main points more explicit, it is fair to say that; * |B |C |D. * |B |C |D. * |B |C |D. * |B |C |D. """, "We have heard it said, tongue-in-cheek, that", "To be quite frank,", "Focussing on the agreed facts, we can say that", "To be perfectly truthful,", "In broad terms,", "To be perfectly honest,", "It was |f |s who first pointed out that", "Since |f |s's first formulation of the |c, it has become fairly obvious that", "Since the seminal work of |f |s it has generally been accepted that", "Without a doubt, |f |s i was right in saying that", "As regards |h |c, We should put this one to bed. On the other hand,", "As regards |h |c, This may have a knock-on effect. On the other hand,", "We must take on board that fact that", "Without a doubt, |B |C |D. So, where to from here? Presumably,", "It has hitherto been accepted that", "At the end of the day,", "Under the provision of the overall |1 plan,", "Firming up the gaps, one can say that", "Within the bounds of |h |c,", "The |h |c provides us with a win-win situation. Especially if one considers that", "There are swings and roundabouts in considering that", "To be precise,", "Whilst taking the subject of |h |c offline, one must add that", "For example,", "An orthodox view is that", "To reiterate,", "To recapitulate,", "Strictly speaking,", "In a very real sense,", "Regarding the nature of |h |c,", "In a strictly mechanistic sense,", "One is struck quite forcibly by the fact that", "In any event,", "In particular,", "In assessing the |c, one should think outside the box. on the other hand,", "On the other hand,", "It is recognized that", "Focusing specifically on the relationship between |h |c and any |c,", "Although it is fair to say that |B |C |D, one should take this out of the loop", "|bly,", "|bly,", "|bly,", "Be that as it may,", "Taking everything into consideration,", "As in so many cases, we can state that", "The |c cannot explain all the problems in maximizing the efficacy of |h |c. Generally", "We can confidently base our case on an assumption that", "An initial appraisal makes it evident that", "An investigation of the |1 factors suggests that", "It is common knowledge that", "Despite an element of volatility,", "The less obviously co-existential factors imply that", "To coin a phrase,", "One might venture to suggest that", "In all foreseeable circumstances,", "However,", "Similarly,", "As a resultant implication,", "There is a strong body of opinion that affirms that", "Up to a point,", "Quite frankly,", "In this regard,", "Based on integral subsystems,", "For example,", "Therefore,", "Within current constraints on manpower resources,", "Up to a certain point,", "In an ideal environment,", "It might seem reasonable to think of |h |c as involving |h |c. Nevertheless,", "It can be forcibly emphasized that", "Thus,", "Within the restrictions of |h |c,", "In respect to specific goals,", "It is important to realize that", "To put it concisely,", "To be perfectly frank,", "On any rational basis,", "In any event,", "On the basis of |h |2 |3,", "With all the relevant considerations taken into account, it can be stated that", "Few would disagree, however, that", "It goes without saying that", "Only in the case of the |c can one state that", "if one considers the |c in the light of |h |c,", "The |c is taken to be a |c. Presumably,", "So far,", "It is quite instructive to compare |h |c and |h |c. In the latter case,", "Obviously,", "By and large,", "Possibly,", "One can, with a certain degree of confidence, conclude that", "Without doubt,", "With due caution, one can postulate that", "The |c is clearly related to |h |c. Nevertheless,", "There is probably no causal link between the |c and |h |c. However", "In the light of |h |c, it is clear that", "No one can deny the relevance of |h |c. Equally it is certain that", "Albeit,", "It is precisely the influence of |h |c for |t that makes the |c inevitable, Equally,", "One must clearly state that", "In connection with |h |c,", "Normally", "one can, quite consistently, say that", "Clearly, it is becoming possible to resolve the difficulties in assuming that", "Within normal variability,", "There can be little doubt that", "Few would deny that", "It is not often |e stated that", "In real terms,", "In this day and age,", "It is |e stated that", "The position in regard to the |c is that", "On one hand |B |C |D, but on the other hand", "One hears it stated that |B |C |D, but it is more likely that", "Whilst it may be true that |B |C |D, one must not lose sight of the fact that" ]; public static string[] subjectPhrases = [ "|h strategic goals", "|h gap analysis", "|h hardball", "|h purchaser - provider", "|h skill set", "|h knock-on effect", "|h strategic plan", "|h the bottom line", "|h mindset", "|h benchmark", "|h core business", "|h big picture", "|h take home message", "|h lessons learnt", "|h movers and shakers", "|h knowledge base", "the ball-park figures for the |c", "The core drivers", "a particular factor, such as the |c, the |c, the |c or the |c", "there is an apparent contradiction between the |c and |h |c. However, |h |c", "the question of |h |c", "the desirability of attaining |h |c, as far as the |c is concerned,", "a persistent instability in |h |c", "examination of |2 instances", "the classic definition of |h |c", "firm assumptions about |c", "the |c and the resources needed to support it are mandatory. |A |B", "significant progress has been made in the |c. |A |B", "efforts are already underway in the development of the |c. |A |B", "a |2 operation of |h |c", "subdivisions of |h |c", "an anticipation of the effects of any |c", "an overall understanding of |h |c", "the assertion of the importance of the |c", "an understanding of the necessary relationship between the |c and any |c", "the possibility, that the |c plays a decisive part in influencing |h |c,", "any solution to the problem of |h |c", "the lack of understanding of |h |c", "the |c in its relation to |h |c", "parameters within |h |c", "the target population for |h |c", "initiation of |h |c", "both |c and |c", "|h |c", "an extrapolation of the |c", "|h |c", "the assessment of any significant weaknesses in the |c", "any subsequent interpolation", "|h |c is |e significant. On the other hand |h |c", "|h |c relates |e to any |c. Conversely, |h |c", "|h |c may be |e important. The |c", "the incorporation of the |c", "the quest for the |c", "the dangers inherent in the |c", "the value of the |c", "the |c", "an unambiguous concept of the |c", "a metonymic reconstruction of the |c", "a primary interrelationship between system and/or subsystem technologies" ]; public static string[] verbPhrases = [ "|d the overall efficiency of", "|d the |4 and |C", "can fully utilize", "will move the goal posts for", "would stretch the envelope of", "enables us to tick the boxes of", "could go the extra mile for", "should empower employees to produce", "should touch base with", "probably |d", "is generally compatible with", "provides the bandwidth for", "gives a win-win situation for", "has clear ramifications for", "has been made imperative in view of", "provides the context for", "underpins the importance of", "focuses our attention on", "will require a substantial amount of effort. |A |B |C", "represents a different business risk. |A |B |C", "is of considerable importance from the production aspect. |A |B |C", "should facilitate information exchange. |A |B |C", "has the intrinsic benefit of resilience, unlike the", "cannot be shown to be relevant. This is in contrast to", "cannot always help us. |A |B |C", "|C |D. A priority should be established based on a combination of |c and |c", "|C |D. The objective of the |c is to delineate", "shows an interesting ambivalence with", "underlines the essential paradigm of", "can be taken in juxtaposition with", "provides an interesting insight into", "must seem over simplistic in the light of", "seems to |e reinforce the importance of", "leads clearly to the rejection of the supremacy of", "allows us to see the clear significance of", "underlines the significance of", "reinforces the weaknesses in", "confuses the |c and", "|d the |c and", "|d", "|d", "|d", "|d", "|d", "|d", "provides a harmonic integration with", "is constantly directing the course of", "must intrinsically determine", "has fundamental repercussions for", "provides an idealized framework for", "|e alters the importance of", "|e changes the interrelationship between the|c and", "|e legitimises the significance of", "must utilize and be functionally interwoven with", "|d the probability of project success and", "|e |d the |c and", "|e |d the |c and", "|e |d the |c and", "|e |d the |c in its relationship with", "|d the dangers quite |e of", "has confirmed an expressed desire for", "is reciprocated by", "has no other function than to provide", "adds explicit performance limits to", "must be considered proactively, rather than reactively, in the light of", "necessitates that urgent consideration be applied to", "requires considerable systems analysis and trade-off studies to arrive at", "provides a heterogeneous environment to", "cannot compare in its potential exigencies with", "is further compounded, when taking into account", "presents extremely interesting challenges to", "|d the importance of other systems and the necessity for", "provides one of the dominant factors of", "forms the basis for", "enhances the efficiency of", "develops a vision to leverage", "produces diagnostic feedback to", "capitalises on the strengths of", "effects a significant implementation of", "seems to counterpoint", "adds overriding performance constraints to", "manages to subsume", "provides a balanced perspective to", "rivals, in terms of resource implications,", "contrives through the medium of the |c to emphasize", "can be developed in parallel with", "commits resources to", "confounds the essential conformity of", "provides the bridge between the |c and", "should be provided to expedite investigation into", "poses problems and challenges for both the |c and", "should not divert attention from", "provides an insight into", "has considerable manpower implications when considered in the light of", "may mean a wide diffusion of the |c into", "makes little difference to", "focuses our attention on", "exceeds the functionality of", "recognizes deficiencies in", "needs to be factored into the equation alongside the", "needs to be addressed along with the" ]; public static string[] objectPhrases = [ "the overall game-plan", "the slippery slope", "the strategic fit", "The total quality objectives", "the |c. This should be considered in the light of the |c", "the |c. One must therefore dedicate resources to the |c immediately.", "the |c on a strictly limited basis", "this |c. This should present few practical problems", "what should be termed the |c", "the applicability and value of the |c", "the |c or the |c", "the negative aspects of any |c", "an unambiguous concept of the |c", "the thematic reconstruction of |c", "the scientific |o of the |c", "the evolution of |2 |o over a given time limit", "any commonality between the |c and the |c", "the greater |c of the |c", "the universe of |o", "any discrete or |2 configuration mode", "the |4", "an elemental change in the |c", "the work being done at the 'coal-face'", "what is beginning to be termed the \"|c\"", "the |c. We need to be able to rationalize |D", "the |c. We can then |e play back our understanding of |D", "the |c. Everything should be done to expedite |D", "The |c. The advent of the |c |e |d |D", "the |c. The |c makes this |e inevitable", "the |c. The |3 is of a |2 nature", "the |c. This may be due to a lack of a |c.", "the |c. Therefore a maximum of flexibility is required", "any |c. This can be deduced from the |c", "the |c. This may |e flounder on the |c", "the |c. This may explain why the |c |e |d |D", "the |c. This trend may dissipate due to the |c" ]; public static string[] adverbs = [ "substantively", "intuitively", "uniquely", "semantically", "necessarily", "stringently", "precisely", "rigorously", "broadly", "generally", "implicitly", "inherently", "presumably", "preeminently", "analytically", "logically", "ontologically", "wholly", "basically", "demonstrably", "strictly", "functionally", "radically", "definitely", "positively", "intrinsically", "generally", "overwhelmingly", "essentially", "vitally", "operably", "fundamentally", "significantly", "retroactively", "retrospectively", "globally", "clearly", "disconcertingly" ]; public static string[] verbs = [ "stimulates", "spreads", "improves", "energises", "emphasizes", "subordinates", "posits", "perceives", "de-stabilizes", "Revisits", "connotes", "signifies", "indicates", "increases", "supports", "rationalises", "provokes", "de-actualises", "relocates", "yields", "implies", "designates", "reflects", "sustains", "supplements", "represents", "re-iterates", "juxtaposes", "provides", "maximizes", "identifies", "furnishes", "supplies", "affords", "yields", "formulates", "focuses on", "depicts", "embodies", "exemplifies", "expresses", "personifies", "symbolizes", "typifies", "replaces", "supplants", "denotes", "depicts", "expresses", "illustrates", "implies", "symbolizes", "delineates", "depicts", "illustrates", "portrays", "clarifies", "depicts", "interprets", "delineates", "reflects", "evinces", "expresses", "indicates", "manifests", "reveals", "shows", "delineates", "represents", "anticipates", "denotes", "identifies", "indicates", "symbolizes", "diminishes", "lessens", "represses", "suppresses", "weakens", "accentuates", "amplifies", "heightens", "highlights", "spotlights", "stresses", "underlines", "underscores", "asserts", "reiterates", "restates", "stresses", "enhances", "amends", "translates", "specifies" ]; public static string[] firstAdjectivePhrases = [ "comprehensive", "targeted", "realigned", "client focussed", "best practice", "value added", "quality driven", "basic", "principal", "central", "essential", "primary", "indicative", "continuous", "critical", "prevalent", "preeminent", "unequivocal", "sanctioned", "logical", "reproducible", "methodological", "relative", "integrated", "fundamental", "cohesive", "interactive", "comprehensive", "critical", "potential", "vibrant", "total", "additional", "secondary", "primary", "heuristic", "complex", "pivotal", "quasi-effectual", "dominant", "characteristic", "ideal", "doctrine of the", "key", "independent", "deterministic", "assumptions about the", "heuristic", "crucial", "meaningful", "implicit", "analogous", "explicit", "integrational", "non-viable", "directive", "consultative", "collaborative", "delegative", "tentative", "privileged", "common", "hypothetical", "metathetical", "marginalised", "systematised", "evolutional", "parallel", "functional", "responsive", "optical", "inductive", "objective", "synchronised", "compatible", "prominent", "three-phase", "two-phase", "balanced", "legitimate", "subordinated", "complementary", "proactive", "truly global", "interdisciplinary", "homogeneous", "hierarchical", "technical", "alternative", "strategic", "environmental", "closely monitored", "three-tier", "inductive", "fully integrated", "fully interactive", "ad-hoc", "ongoing", "proactive", "dynamic", "flexible", "verifiable", "falsifiable", "transitional", "mechanism-independent", "synergistic", "high-level" ]; public static string[] secondAdjectivePhrases = [ "fast-track", "transparent", "results-driven", "subsystem", "test", "configuration", "mission", "functional", "referential", "numinous", "paralyptic", "radical", "paratheoretical", "consistent", "macro", "interpersonal", "auxiliary", "empirical", "theoretical", "corroborated", "management", "organizational", "monitored", "consensus", "reciprocal", "unprejudiced", "digital", "logic", "transitional", "incremental", "equivalent", "universal", "sub-logical", "hypothetical", "conjectural", "conceptual", "empirical", "spatio-temporal", "third-generation", "epistemological", "diffusible", "specific", "non-referent", "overriding", "politico-strategical", "economico-social", "on-going", "extrinsic", "intrinsic", "multi-media", "integrated", "effective", "overall", "principal", "prime", "major", "empirical", "definitive", "explicit", "determinant", "precise", "cardinal", "principal", "affirming", "harmonizing", "central", "essential", "primary", "indicative", "mechanistic", "continuous", "critical", "prevalent", "preeminent", "unequivocal", "sanctioned", "logical", "reproducible", "methodological", "relative", "integrated", "fundamental", "cohesive", "interactive", "comprehensive", "critical", "potential", "total", "additional", "secondary", "primary", "heuristic", "complex", "pivotal", "quasi-effectual", "dominant", "characteristic", "ideal", "independent", "deterministic", "heuristic", "crucial", "meaningful", "implicit", "analogous", "explicit", "integrational", "directive", "collaborative", "entative", "privileged", "common", "hypothetical", "metathetical", "marginalised", "systematised", "evolutional", "parallel", "functional", "responsive", "optical", "inductive", "objective", "synchronised", "compatible", "prominent", "legitimate", "subordinated", "complementary", "homogeneous", "hierarchical", "alternative", "environmental", "inductive", "transitional", "Philosophical", "latent", "conscious", "practical", "temperamental", "impersonal", "personal", "subjective", "objective", "dynamic", "inclusive", "paradoxical", "pure", "central", "psychic", "associative", "intuitive", "free-floating", "empirical", "superficial", "predominant", "actual", "mutual", "arbitrary", "inevitable", "immediate", "affirming", "functional", "referential", "numinous", "paralyptic", "radical", "paratheoretical", "consistent", "interpersonal", "auxiliary", "empirical", "theoretical", "reciprocal", "unprejudiced", "transitional", "incremental", "equivalent", "universal", "sub-logical", "hypothetical", "conjectural", "conceptual", "empirical", "spatio-temporal", "epistemological", "diffusible", "specific", "non-referent", "overriding", "politico-strategical", "economico-social", "on-going", "extrinsic", "intrinsic", "effective", "principal", "prime", "major", "empirical", "definitive", "explicit", "determinant", "precise", "cardinal", "geometric", "naturalistic", "linear", "distinctive", "phylogenetic", "ethical", "theoretical", "economic", "aesthetic", "personal", "social", "discordant", "political", "religious", "artificial", "collective", "permanent", "metaphysical", "organic", "mensurable", "expressive", "governing", "subjective", "empathic", "imaginative", "ethical", "expressionistic", "resonant", "vibrant" ]; public static string[] nounPhrases = [ "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "|o", "development", "program", "baseline", "reconstruction", "discordance", "monologism", "substructure", "legitimisation", "principle", "constraints", "management option", "strategy", "transposition", "auto-interruption", "derivation", "option", "flexibility", "proposal", "formulation", "item", "issue", "capability", "mobility", "programming", "concept", "time-phase", "dimension", "faculty", "capacity", "proficiency", "reciprocity", "fragmentation", "consolidation", "projection", "interface", "hardware", "contingency", "dialog", "dichotomy", "concept", "parameter", "algorithm", "milieu", "terms of reference", "item", "vibrancy", "reaction", "casuistry", "theme", "teleology", "symbolism", "resource allocation", "certification project", "functionality", "specification", "matrix", "rationalization", "consolidation", "remediation", "facilitation", "simulation", "evaluation", "competence", "familiarisation", "transformation", "apriorism", "conventionalism", "verification", "functionality", "component", "factor", "antitheseis", "desiderata", "metaphor", "metalanguage", "globalisation", "initiative", "projection", "partnership", "priority", "service", "support", "best-practice", "change", "delivery", "funding", "resources" ]; public static string[] cliches = [ "|o of |o", "|o of |o", "|o of |o", "|o of |o", "|o of |o", "|o of |o", "|o of |o", "|o of |o", "development strategy", "decision support", "fourth-generation environment", "application systems", "feedback process", "function hierarchy analysis", "structured business analysis", "base information", "final consolidation", "design criteria", "iterative design process", "common interface", "ongoing support", "relational flexibility", "referential integrity", "strategic framework", "dynamic systems strategy", "functional decomposition", "operational situation", "individual action plan", "key behavioural skills", "set of constraints", "structure plan", "contingency planning", "resource planning", "participant feedback", "referential function", "passive result", "aims and constraints", "strategic opportunity", "development of systems resource", "major theme of the |c", "technical coherence", "cost-effective application", "high leverage area", "key leveraging technology", "known strategic opportunity", "internal resource capability", "interactive concern-control system", "key technology", "prime objective", "key area of opportunity", "present infrastructure", "enabling technology", "key objective", "areas of particular expertise", "overall business benefit", "competitive practice and technology", "flexible manufacturing system", "adequate resource level", "|e sophisticated hardware", "external agencies", "anticipated fourth-generation equipment", "maintenance of current standards", "adequate development of any necessary measures", "critical component in the", "active process of information gathering", "general milestones", "adequate timing control", "quantitative and discrete targets", "subsystem compatibility testing", "structural design, based on system engineering concepts", "key principles behind the |c", "constraints of manpower resourcing", "necessity for budgetary control", "discipline of resource planning", "diverse hardware environment", "product lead times", "access to corporate systems", "overall certification project", "commitment to industry standards", "general increase in office efficiency", "preliminary qualification limit", "calculus of consequence", "corollary", "reverse image", "logical data structure", "philosophy of commonality and standardization", "impact on overall performance", "multilingual cynicism", "functional synergy", "backbone of connectivity", "integrated set of requirements", "ongoing |3 philosophy", "strategic requirements", "integration of |c with strategic initiatives", "established analysis and design methodology", "corporate information exchange", "separate roles and significances of the |c", "formal strategic direction", "integrated set of facilities", "appreciation of vested responsibilities", "potential globalisation candidate", "tentative priority", "performance objectives", "global business practice", "functionality matrix", "priority sequence", "system elements", "life cycle phase", "operations scenario", "total system rationale", "conceptual baseline", "incremental delivery", "requirements hierarchy", "functional baseline", "system critical design", "capability constraint", "matrix of supporting elements", "lead group concept", "dominant factor", "modest correction", "element of volatility", "inevitability of amelioration", "attenuation of subsequent feedback", "chance of entropy within the system", "associated supporting element", "intrinsic homeostasis within the metasystem", "characterization of specific information", "organization structure", "constant flow of effective information", "key business objectives", "life cycle", "large portion of the co-ordination of communication", "corporate procedure", "proposed scenario" ]; public static string[] prefixes = [ "the", "the", "the", "the", "the", "the", "the", "the", "the", "any", "any", "what might be described as the", "what amounts to the", "a large proportion of the", "what has been termed the", "a unique facet of the", "a significant aspect of the", "the all-inclusiveness of the", "any inherent dangers of the", "the obvious necessity for the", "the basis of any", "the basis of the", "any formalization of the", "the quest for the", "any significant enhancements in the", "the underlying surrealism of the", "the feasibility of the", "the requirements of", "an implementation strategy for", "any fundamental dichotomies of the", "a concept of what we have come to call the", "the infrastructure of the", "a proven solution to the", "a percentage of the", "a proportion of the", "an issue of the", "any consideration of the", "a factor within the", "the adequate functionality of the", "the principle of the", "the constraints of the", "a realization the importance of the", "the criterion of", "a unique facet of", "the consolidation of the", "a preponderance of the" ]; public static string[] artyNouns = [ "discordance", "legitimisation", "principle", "transposition", "dimension", "reciprocity", "fragmentation", "projection", "dichotomy", "concept", "theme", "teleology", "symbolism", "transformation", "antithesis", "desiderata", "metaphor", "metalanguage", "reciprocity", "consciousness", "feeling", "fact", "individuality", "comparison", "awareness", "expression", "appreciation", "correspondence", "interpretation", "interpolation", "interpenetration", "statement", "emphasis", "feeling", "empathy", "sensibility", "insight", "attitude", "consciousness", "absorption", "self-forgetfulness", "parallelism", "classification", "evidence", "aspect", "distinction", "idealism", "naturalism", "disposition", "apprehension", "morality", "object", "idealism", "quality", "romanticism", "realism", "idealism", "quality", "transposition", "determinism", "attitude", "terminology", "individuality", "category", "integration", "concept", "phenomenon", "element", "analogy", "perception", "principle", "aesthetic", "spirituality", "aspiration", "quality", "disposition", "subjectivism", "objectivism", "contemplation", "vivacity", "feeling", "empathy", "value", "sensation", "causation", "affectability", "impulse", "attitude", "sensibility", "material", "aspect", "problem", "implication", "hierarchy", "process", "provenance", "discord", "milieu" ]; public static string[] surnames = [ "Bennet", "Blotchet-Halls", "Carson", "Clarke", "DeFrance", "del Castillo", "Dull", "Green", "Greene", "Gringlesby", "Hunter", "Karsen", "Locksley", "MacFeather", "McBadden", "O'Leary", "Panteley", "Poel", "Powys-Lybbe", "Smith", "Straight", "Stringer", "White", "Yokomoto" ]; public static string[] forenames = [ "Abraham", "Reginald", "Cheryl", "Michel", "Innes", "Ann", "Marjorie", "Matthew", "Mark", "Luke", "John", "Burt", "Lionel", "Humphrey", "Andrew", "Jenny", "Sheryl", "Livia", "Charlene", "Winston", "Heather", "Michael", "Sylvia", "Albert", "Anne", "Meander", "Dean", "Dirk", "Desmond", "Akiko" ]; public static string[] buzzPhrases = [ "|1 |2 |3", "|1 |2 |3", "|2 |3", "|1 |2 |3", "|1 |2 |3", "|4", "|4" ]; public static string[] cardinalSequences = [ "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve" ]; public static string[] ordinalSequences = [ "first", "second", "third", "fourth", "fifth" ]; public static string[] maybeHeading = [ "", "", "The |uc.", "" ]; public static bool[] maybeParagraph = [ false, false, true, false ]; } ================================================ FILE: src/WaffleGenerator/Extensions.cs ================================================ static class Extensions { public static bool EndsWith(this StringBuilder builder, params char[] chars) { for (var i = builder.Length - 1; i != -1; i--) { var builderChar = builder[i]; if (char.IsWhiteSpace(builderChar)) { continue; } foreach (var c in chars) { if (c == builderChar) { return true; } } return false; } return false; } } ================================================ FILE: src/WaffleGenerator/Heading.cs ================================================ record Heading(string Quote, string Cite, string Buzz, string Title); ================================================ FILE: src/WaffleGenerator/InnerEngine.cs ================================================ using System.Globalization; class InnerEngine(Func random) { int cardinalSequence; int ordinalSequence; string? title; string? quote; string? cite; string? buzz; List paragraphs = []; void EvaluateRandomPhrase(string[] phrases, StringBuilder output) { var index = random(phrases.Length); EvaluatePhrase(phrases[index], output); } void EvaluatePhrase(string phrase, StringBuilder result) { for (var i = 0; i < phrase.Length; i++) { if (phrase[i] == '|' && i + 1 < phrase.Length) { i++; if (phrase[i] == 'u' && i + 1 < phrase.Length) { var escape = new StringBuilder(); i++; EvaluateChar(phrase[i], escape); result.Append(TitleCaseWords(escape.ToString())); } else { EvaluateChar(phrase[i], result); } } else { if (i == 0 && HasSentenceEnded(result)) { result.Append(char.ToUpper(phrase[i])); } else { result.Append(phrase[i]); } } } } void EvaluateChar(char c, StringBuilder builder) { switch (c) { case 'a': EvaluateCardinalSequence(builder); break; case 'b': EvaluateOrdinalSequence(builder); break; case 'c': EvaluateRandomPhrase(Constants.buzzPhrases, builder); break; case 'd': EvaluateRandomPhrase(Constants.verbs, builder); break; case 'e': EvaluateRandomPhrase(Constants.adverbs, builder); break; case 'f': EvaluateRandomPhrase(Constants.forenames, builder); break; case 's': EvaluateRandomPhrase(Constants.surnames, builder); break; case 'o': EvaluateRandomPhrase(Constants.artyNouns, builder); break; case 'y': RandomDate(builder); break; case 'h': EvaluateRandomPhrase(Constants.prefixes, builder); break; case 'A': EvaluateRandomPhrase(Constants.preamblePhrases, builder); break; case 'B': EvaluateRandomPhrase(Constants.subjectPhrases, builder); break; case 'C': EvaluateRandomPhrase(Constants.verbPhrases, builder); break; case 'D': EvaluateRandomPhrase(Constants.objectPhrases, builder); break; case '1': EvaluateRandomPhrase(Constants.firstAdjectivePhrases, builder); break; case '2': EvaluateRandomPhrase(Constants.secondAdjectivePhrases, builder); break; case '3': EvaluateRandomPhrase(Constants.nounPhrases, builder); break; case '4': EvaluateRandomPhrase(Constants.cliches, builder); break; case 't': builder.Append(title); break; } } static bool HasSentenceEnded(StringBuilder result) => result.EndsWith('.', '>'); void EvaluateCardinalSequence(StringBuilder output) { if (cardinalSequence >= Constants.cardinalSequences.Length) { cardinalSequence = 0; } output.Append(Constants.cardinalSequences[cardinalSequence++]); } void EvaluateOrdinalSequence(StringBuilder output) { if (ordinalSequence >= Constants.ordinalSequences.Length) { ordinalSequence = 0; } output.Append(Constants.ordinalSequences[ordinalSequence++]); } void RandomDate(StringBuilder output) => output.AppendFormat("{0:04u}", DateTime.Now.Year - random(31)); static string TitleCaseWords(string input) => CultureInfo.CurrentCulture.TextInfo.ToTitleCase(input); public WaffleContent GetContent(int paragraphsCount, bool includeHeading) { cardinalSequence = 0; ordinalSequence = 0; Heading? heading = null; if (includeHeading) { title = BuildTitle(); var quoteBuilder = new StringBuilder(); EvaluatePhrase("|A |B |C |t", quoteBuilder); quote = quoteBuilder.ToString(); var citeBuilder = new StringBuilder(); EvaluatePhrase("|f |s in The Journal of the |uc (|uy)", citeBuilder); cite = citeBuilder.ToString(); var buzzBuilder = new StringBuilder(); EvaluatePhrase("|c.", buzzBuilder); buzz = buzzBuilder.ToString(); heading = new(quote, cite, buzz, title); } for (var i = 0; i < paragraphsCount; i++) { string? paragraphHeading = null; if (i != 0) { var headingBuilder = new StringBuilder(); EvaluateRandomPhrase(Constants.maybeHeading, headingBuilder); paragraphHeading = headingBuilder.ToString(); if (string.IsNullOrWhiteSpace(paragraphHeading)) { paragraphHeading = null; } } var bodyBuilder = new StringBuilder(); EvaluatePhrase("|A |B |C |D.", bodyBuilder); var paragraph = new Paragraph(paragraphHeading, bodyBuilder.ToString()); paragraphs.Add(paragraph); } return new(heading, paragraphs); } public string BuildTitle() { var builder = new StringBuilder(); EvaluatePhrase("the |o of |2 |o", builder); return TitleCaseWords(builder.ToString()); } } ================================================ FILE: src/WaffleGenerator/Paragraph.cs ================================================ record Paragraph(string? Heading, string Body); ================================================ FILE: src/WaffleGenerator/WaffleContent.cs ================================================ record WaffleContent(Heading? Heading, List Paragraphs); ================================================ FILE: src/WaffleGenerator/WaffleEngine.cs ================================================ namespace WaffleGenerator; public static class WaffleEngine { public static string Html(int seed, int paragraphs, bool includeHeading, bool includeHeadAndBody) => Html(new Random(seed), paragraphs, includeHeading, includeHeadAndBody); public static string Html(int paragraphs, bool includeHeading, bool includeHeadAndBody) => Html(new Random(), paragraphs, includeHeading, includeHeadAndBody); public static string Html(Random random, int paragraphs, bool includeHeading, bool includeHeadAndBody) => Html(_ => random.Next(0, _), paragraphs, includeHeading, includeHeadAndBody); public static string Html(Func random, int paragraphs, bool includeHeading, bool includeHeadAndBody) { var builder = new StringBuilder(); var innerEngine = new InnerEngine(random); var waffleContent = innerEngine.GetContent(paragraphs, includeHeading); var heading = waffleContent.Heading; if (heading != null) { if (includeHeadAndBody) { builder.AppendLine( $""" {heading.Title} """); } builder.AppendLine( $"""

{heading.Title}

'{heading.Quote}'
{heading.Cite}

{heading.Buzz}

"""); } foreach (var paragraph in waffleContent.Paragraphs) { builder.AppendLine("

"); if (paragraph.Heading != null) { builder.AppendLine($"

{paragraph.Heading}

"); } builder.AppendLine(paragraph.Body); builder.AppendLine("

"); } if (includeHeadAndBody) { builder.AppendLine(""); builder.Append(""); } return builder.ToString(); } public static string Title() => Title(new Random()); public static string Title(int seed) => Title(new Random(seed)); public static string Title(Random random) => Title(_ => random.Next(0, _)); public static string Title(Func random) { var innerEngine = new InnerEngine(random); return innerEngine.BuildTitle(); } public static string Markdown(int seed, int paragraphs, bool includeHeading) => Markdown(new Random(seed), paragraphs, includeHeading); public static string Markdown(int paragraphs, bool includeHeading) => Markdown(new Random(), paragraphs, includeHeading); public static string Markdown(Random random, int paragraphs, bool includeHeading) => Markdown(_ => random.Next(0, _), paragraphs, includeHeading); public static string Markdown(Func random, int paragraphs, bool includeHeading) { var builder = new StringBuilder(); var innerEngine = new InnerEngine(random); var waffleContent = innerEngine.GetContent(paragraphs, includeHeading); var heading = waffleContent.Heading; if (heading != null) { builder.AppendLine( $""" # {heading.Title} > {heading.Quote} * {heading.Cite} ## {heading.Buzz} """); } foreach (var paragraph in waffleContent.Paragraphs) { if (paragraph.Heading != null) { builder.AppendLine($"## {paragraph.Heading}"); builder.AppendLine(); } builder.AppendLine(paragraph.Body); builder.AppendLine(); } return builder.ToString(); } public static string Text(int seed, int paragraphs, bool includeHeading) => Text(new Random(seed), paragraphs, includeHeading); public static string Text(int paragraphs, bool includeHeading) => Text(new Random(), paragraphs, includeHeading); public static string Text(Random random, int paragraphs, bool includeHeading) => Text(_ => random.Next(0, _), paragraphs, includeHeading); public static string Text(Func random, int paragraphs, bool includeHeading) { var builder = new StringBuilder(); var innerEngine = new InnerEngine(random); var waffleContent = innerEngine.GetContent(paragraphs, includeHeading); var heading = waffleContent.Heading; if (heading != null) { builder.AppendLine( $""" {heading.Title} '{heading.Quote}' - {heading.Cite} {heading.Buzz} """); } var lastIndex = waffleContent.Paragraphs.Count - 1; for (var index = 0; index < waffleContent.Paragraphs.Count; index++) { var paragraph = waffleContent.Paragraphs[index]; if (paragraph.Heading != null) { builder.AppendLine(paragraph.Heading); builder.AppendLine(); } builder.AppendLine(paragraph.Body); if (index != lastIndex) { builder.AppendLine(); } } return builder.ToString(); } } ================================================ FILE: src/WaffleGenerator/WaffleGenerator.csproj ================================================ net8.0;net9.0;net10.0;net48 Produces of text which, on first glance, looks like real, ponderous, prose; replete with clichés. ================================================ FILE: src/WaffleGenerator.Bogus/Waffle.cs ================================================ using WaffleGenerator; namespace Bogus; public class Waffle : DataSet { public string Html(int paragraphs = 1, bool includeHeading = true, bool includeHeadAndBody = true) => WaffleEngine.Html(RandomNumber, paragraphs, includeHeading, includeHeadAndBody); public string Text(int paragraphs = 1, bool includeHeading = true) => WaffleEngine.Text(RandomNumber, paragraphs, includeHeading); public string Markdown(int paragraphs = 1, bool includeHeading = true) => WaffleEngine.Markdown(RandomNumber, paragraphs, includeHeading); public string Title() => WaffleEngine.Title(RandomNumber); int RandomNumber(int i) => Random.Number(i - 1); } ================================================ FILE: src/WaffleGenerator.Bogus/WaffleGenerator.Bogus.csproj ================================================ net9.0;net10.0;net48 Produces Bogus (https://github.com/bchavez/Bogus) text which, on first glance, looks like real, ponderous, prose; replete with clichés. $(DefineConstants);Bogus ================================================ FILE: src/WaffleGenerator.Bogus/WaffleGeneratorExtensions.cs ================================================ using Bogus.Premium; namespace Bogus; public static class WaffleExtensions { public static Waffle Waffle(this Faker faker) => ContextHelper.GetOrSet(faker, () => new Waffle()); public static string WaffleHtml(this Faker faker, int paragraphs = 1, bool includeHeading = true) => faker .Waffle() .Html(paragraphs, includeHeading); public static string WaffleTitle(this Faker faker) => faker .Waffle() .Title(); public static string WaffleText(this Faker faker, int paragraphs = 1, bool includeHeading = true) => faker .Waffle() .Text(paragraphs, includeHeading); public static string WaffleMarkdown(this Faker faker, int paragraphs = 1, bool includeHeading = true) => faker .Waffle() .Markdown(paragraphs, includeHeading); } ================================================ FILE: src/WaffleGenerator.slnx ================================================  ================================================ FILE: src/WaffleGenerator.slnx.DotSettings ================================================  ..\Shared.sln.DotSettings True True 1 ================================================ FILE: src/appveyor.yml ================================================ image: Visual Studio 2022 environment: DOTNET_NOLOGO: true DOTNET_CLI_TELEMETRY_OPTOUT: true DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true build_script: - pwsh: | Invoke-WebRequest "https://dot.net/v1/dotnet-install.ps1" -OutFile "./dotnet-install.ps1" ./dotnet-install.ps1 -JSonFile src/global.json -Architecture x64 -InstallDir 'C:\Program Files\dotnet' - dotnet build src --configuration Release - dotnet test src --configuration Release --no-build --no-restore test: off on_failure: - ps: | $root = (Get-Location).Path Get-ChildItem *.received.* -Recurse | % { $rel = $_.FullName.Substring($root.Length + 1) Push-AppveyorArtifact $_.FullName -FileName $rel } artifacts: - path: nugets\*.nupkg ================================================ FILE: src/global.json ================================================ { "sdk": { "version": "10.0.300", "allowPrerelease": true, "rollForward": "latestFeature" } } ================================================ FILE: src/mdsnippets.json ================================================ { "$schema": "https://raw.githubusercontent.com/SimonCropp/MarkdownSnippets/master/schema.json", "TocExcludes": [ "Release Notes", "Icon" ], "MaxWidth": 80, "ValidateContent": false, "Convention": "InPlaceOverwrite" } ================================================ FILE: src/nuget.config ================================================