├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ ├── config.yml
│ └── feature_request.md
├── dependabot.yml
├── stale.yml
└── workflows
│ ├── merge-dependabot.yml
│ └── on-push-do-doco.yml
├── .gitignore
├── RedGateLicense.txt
├── code_of_conduct.md
├── license.txt
├── readme.md
└── src
├── .editorconfig
├── .gitattributes
├── Directory.Build.props
├── Directory.Packages.props
├── Shared.sln.DotSettings
├── Tests
├── FakerUsage.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.Bogus
├── Waffle.cs
├── WaffleGenerator.Bogus.csproj
└── WaffleGeneratorExtensions.cs
├── WaffleGenerator.sln
├── WaffleGenerator.sln.DotSettings
├── WaffleGenerator
├── AssemblyInfo.cs
├── Constants.cs
├── Extensions.cs
├── Heading.cs
├── InnerEngine.cs
├── Paragraph.cs
├── WaffleContent.cs
├── WaffleEngine.cs
└── WaffleGenerator.csproj
├── appveyor.yml
├── global.json
├── icon.png
├── key.snk
├── mdsnippets.json
└── nuget.config
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: SimonCropp
2 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug fix
3 | about: Create a bug fix to help us improve
4 | ---
5 |
6 | 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.
7 |
8 |
9 | #### Preamble
10 |
11 | General questions may be better placed [StackOveflow](https://stackoverflow.com/).
12 |
13 | Where relevant, ensure you are using the current stable versions on your development stack. For example:
14 |
15 | * Visual Studio
16 | * [.NET SDK or .NET Core SDK](https://www.microsoft.com/net/download)
17 | * Any related NuGet packages
18 |
19 | Any code or stack traces must be properly formatted with [GitHub markdown](https://guides.github.com/features/mastering-markdown/).
20 |
21 |
22 | #### Describe the bug
23 |
24 | A clear and concise description of what the bug is. Include any relevant version information.
25 |
26 | A clear and concise description of what you expected to happen.
27 |
28 | Add any other context about the problem here.
29 |
30 |
31 | #### Minimal Repro
32 |
33 | 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.
34 |
35 | #### Submit a PR that fixes the bug
36 |
37 | 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.
38 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: How to raise feature requests
4 | ---
5 |
6 |
7 | 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.
8 |
9 | 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/).
10 |
11 | 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.
12 |
13 | 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.
14 |
15 |
16 | #### Is the feature request related to a problem
17 |
18 | A clear and concise description of what the problem is.
19 |
20 |
21 | #### Describe the solution
22 |
23 | A clear and concise proposal of how you intend to implement the feature.
24 |
25 |
26 | #### Describe alternatives considered
27 |
28 | A clear and concise description of any alternative solutions or features you've considered.
29 |
30 |
31 | #### Additional context
32 |
33 | Add any other context about the feature request here.
34 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: nuget
4 | directory: "/src"
5 | schedule:
6 | interval: daily
7 | open-pull-requests-limit: 10
8 |
--------------------------------------------------------------------------------
/.github/stale.yml:
--------------------------------------------------------------------------------
1 | # Number of days of inactivity before an issue becomes stale
2 | daysUntilStale: 7
3 | # Number of days of inactivity before a stale issue is closed
4 | daysUntilClose: 7
5 | # Set to true to ignore issues in a milestone (defaults to false)
6 | exemptMilestones: true
7 | # Comment to post when marking an issue as stale. Set to `false` to disable
8 | markComment: >
9 | This issue has been automatically marked as stale because it has not had
10 | recent activity. It will be closed if no further activity occurs. Thank you
11 | for your contributions.
12 | # Comment to post when closing a stale issue. Set to `false` to disable
13 | closeComment: false
14 | # Optionally, specify configuration settings that are specific to just 'issues' or 'pulls':
15 | pulls:
16 | daysUntilStale: 30
17 | exemptLabels:
18 | - Question
19 | - Bug
20 | - Feature
21 | - Improvement
--------------------------------------------------------------------------------
/.github/workflows/merge-dependabot.yml:
--------------------------------------------------------------------------------
1 | name: merge-dependabot
2 | on:
3 | pull_request:
4 | jobs:
5 | automerge:
6 | runs-on: ubuntu-latest
7 | if: github.actor == 'dependabot[bot]'
8 | steps:
9 | - name: Dependabot Auto Merge
10 | uses: ahmadnassri/action-dependabot-auto-merge@v2.6.6
11 | with:
12 | target: minor
13 | github-token: ${{ secrets.dependabot }}
14 | command: squash and merge
--------------------------------------------------------------------------------
/.github/workflows/on-push-do-doco.yml:
--------------------------------------------------------------------------------
1 | name: on-push-do-doco
2 | on:
3 | push:
4 | jobs:
5 | release:
6 | runs-on: windows-latest
7 | steps:
8 | - uses: actions/checkout@v4
9 | - name: Run MarkdownSnippets
10 | run: |
11 | dotnet tool install --global MarkdownSnippets.Tool
12 | mdsnippets ${GITHUB_WORKSPACE}
13 | shell: bash
14 | - name: Push changes
15 | run: |
16 | git config --local user.email "action@github.com"
17 | git config --local user.name "GitHub Action"
18 | git commit -m "Doco changes" -a || echo "nothing to commit"
19 | remote="https://${GITHUB_ACTOR}:${{secrets.GITHUB_TOKEN}}@github.com/${GITHUB_REPOSITORY}.git"
20 | branch="${GITHUB_REF:11}"
21 | git push "${remote}" ${branch} || echo "nothing to push"
22 | shell: bash
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.suo
2 | *.user
3 | bin/
4 | obj/
5 | .vs/
6 | *.DotSettings.user
7 | .idea/
8 | *.received.*
9 | nugets/
--------------------------------------------------------------------------------
/RedGateLicense.txt:
--------------------------------------------------------------------------------
1 | New BSD License (BSD)
2 | Copyright (c) 2008, Red Gate Software Ltd
3 | All rights reserved.
4 |
5 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
6 |
7 | * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
8 | * 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.
9 | * 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.
10 |
11 | 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.
--------------------------------------------------------------------------------
/code_of_conduct.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | In the interest of fostering an open and welcoming environment, we as
6 | contributors and maintainers pledge to making participation in our project and
7 | our community a harassment-free experience for everyone, regardless of age, body
8 | size, disability, ethnicity, sex characteristics, gender identity and expression,
9 | level of experience, education, socio-economic status, nationality, personal
10 | appearance, race, religion, or sexual identity and orientation.
11 |
12 | ## Our Standards
13 |
14 | Examples of behavior that contributes to creating a positive environment
15 | include:
16 |
17 | * Using welcoming and inclusive language
18 | * Being respectful of differing viewpoints and experiences
19 | * Gracefully accepting constructive criticism
20 | * Focusing on what is best for the community
21 | * Showing empathy towards other community members
22 |
23 | Examples of unacceptable behavior by participants include:
24 |
25 | * The use of sexualized language or imagery and unwelcome sexual attention or
26 | advances
27 | * Trolling, insulting/derogatory comments, and personal or political attacks
28 | * Public or private harassment
29 | * Publishing others' private information, such as a physical or electronic
30 | address, without explicit permission
31 | * Other conduct which could reasonably be considered inappropriate in a
32 | professional setting
33 |
34 | ## Our Responsibilities
35 |
36 | Project maintainers are responsible for clarifying the standards of acceptable
37 | behavior and are expected to take appropriate and fair corrective action in
38 | response to any instances of unacceptable behavior.
39 |
40 | Project maintainers have the right and responsibility to remove, edit, or
41 | reject comments, commits, code, wiki edits, issues, and other contributions
42 | that are not aligned to this Code of Conduct, or to ban temporarily or
43 | permanently any contributor for other behaviors that they deem inappropriate,
44 | threatening, offensive, or harmful.
45 |
46 | ## Scope
47 |
48 | This Code of Conduct applies both within project spaces and in public spaces
49 | when an individual is representing the project or its community. Examples of
50 | representing a project or community include using an official project e-mail
51 | address, posting via an official social media account, or acting as an appointed
52 | representative at an online or offline event. Representation of a project may be
53 | further defined and clarified by project maintainers.
54 |
55 | ## Enforcement
56 |
57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
58 | reported by contacting the project team at simon.cropp@gmail.com. All
59 | complaints will be reviewed and investigated and will result in a response that
60 | is deemed necessary and appropriate to the circumstances. The project team is
61 | obligated to maintain confidentiality with regard to the reporter of an incident.
62 | Further details of specific enforcement policies may be posted separately.
63 |
64 | Project maintainers who do not follow or enforce the Code of Conduct in good
65 | faith may face temporary or permanent repercussions as determined by other
66 | members of the project's leadership.
67 |
68 | ## Attribution
69 |
70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72 |
73 | [homepage]: https://www.contributor-covenant.org
74 |
75 | For answers to common questions about this code of conduct, see
76 | https://www.contributor-covenant.org/faq
77 |
--------------------------------------------------------------------------------
/license.txt:
--------------------------------------------------------------------------------
1 | BSD 3-Clause License
2 |
3 | Copyright (c) 2018, Simon Cropp
4 | All rights reserved.
5 |
6 | Redistribution and use in source and binary forms, with or without
7 | modification, are permitted provided that the following conditions are met:
8 |
9 | * Redistributions of source code must retain the above copyright notice, this
10 | list of conditions and the following disclaimer.
11 |
12 | * Redistributions in binary form must reproduce the above copyright notice,
13 | this list of conditions and the following disclaimer in the documentation
14 | and/or other materials provided with the distribution.
15 |
16 | * Neither the name of the copyright holder nor the names of its
17 | contributors may be used to endorse or promote products derived from
18 | this software without specific prior written permission.
19 |
20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | #
WaffleGenerator
2 |
3 | [](https://ci.appveyor.com/project/SimonCropp/WaffleGenerator)
4 | [](https://www.nuget.org/packages/WaffleGenerator/)
5 | [](https://www.nuget.org/packages/WaffleGenerator.Bogus/)
6 |
7 | Produces text which, on first glance, looks like real, ponderous, prose; replete with clichés.
8 |
9 | **See [Milestones](../../milestones?state=closed) for release notes.**
10 |
11 | Example content:
12 |
13 | ```
14 | The Aesthetic Of Economico-Social Disposition
15 |
16 | "In this regard, the underlying surrealism of the take home message should not
17 | divert attention from The Aesthetic Of Economico-Social Disposition"
18 | (Humphrey Yokomoto in The Journal of the Total Entative Item (20044U))
19 |
20 | On any rational basis, a particular factor, such as the functional baseline, the
21 | analogy of object, the strategic requirements or the principal overriding programming
22 | provides an interesting insight into the complementary functional derivation.
23 | This trend may dissipate due to the mensurable proficiency.
24 | ```
25 |
26 | 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.
27 |
28 | 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/).
29 |
30 | Code based on [SDGGenerators - Red Gate SQL Data Generator Community Generators](https://archive.codeplex.com/?p=sdggenerators).
31 |
32 |
33 | ## Blazor App
34 |
35 | The [Blazing Waffles](http://wafflegen.azurewebsites.net/) app allows the generation of waffle text online.
36 |
37 | * Source: https://github.com/gbiellem/BlazingWaffles
38 |
39 |
40 | ## Main Package - WaffleGenerator
41 |
42 | https://nuget.org/packages/WaffleGenerator/
43 |
44 |
45 | ### Usage
46 |
47 | The `WaffleEngine` can be used to produce Html, text or Markdown:
48 |
49 |
50 | #### Html
51 |
52 |
53 |
54 | ```cs
55 | var text = WaffleEngine.Html(
56 | paragraphs: 2,
57 | includeHeading: true,
58 | includeHeadAndBody: true);
59 | Debug.WriteLine(text);
60 | ```
61 | snippet source | anchor
62 |
63 |
64 |
65 | #### Text
66 |
67 |
68 |
69 | ```cs
70 | var text = WaffleEngine.Text(
71 | paragraphs: 1,
72 | includeHeading: true);
73 | Debug.WriteLine(text);
74 | ```
75 | snippet source | anchor
76 |
77 |
78 |
79 | #### Markdown
80 |
81 |
82 |
83 | ```cs
84 | var markdown = WaffleEngine.Markdown(
85 | paragraphs: 1,
86 | includeHeading: true);
87 | Debug.WriteLine(markdown);
88 | ```
89 | snippet source | anchor
90 |
91 |
92 |
93 | ## WaffleGenerator.Bogus
94 |
95 | Extends [Bogus](https://github.com/bchavez/Bogus) to use WaffleGenerator.
96 |
97 | https://nuget.org/packages/WaffleGenerator.Bogus/
98 |
99 |
100 | ### Usage
101 |
102 | The entry extension method is `WaffleHtml()` or `WaffleText()` or `WaffleMarkdown()`:
103 |
104 |
105 |
106 | ```cs
107 | var faker = new Faker()
108 | .RuleFor(
109 | property: u => u.Title,
110 | setter: (f, u) => f.WaffleTitle())
111 | .RuleFor(
112 | property: u => u.Property1,
113 | setter: (f, u) => f.WaffleHtml())
114 | .RuleFor(
115 | property: u => u.Property2,
116 | setter: (f, u) => f.WaffleHtml(
117 | paragraphs: 4,
118 | includeHeading: true))
119 | .RuleFor(
120 | property: u => u.Property3,
121 | setter: (f, u) => f.WaffleText())
122 | .RuleFor(
123 | property: u => u.Property4,
124 | setter: (f, u) => f.WaffleText(
125 | paragraphs: 4,
126 | includeHeading: false));
127 |
128 | var target = faker.Generate();
129 | Debug.WriteLine(target.Title);
130 | Debug.WriteLine(target.Property1);
131 | Debug.WriteLine(target.Property2);
132 | Debug.WriteLine(target.Property3);
133 | Debug.WriteLine(target.Property4);
134 | ```
135 | snippet source | anchor
136 |
137 |
138 |
139 | ## Icon
140 |
141 | [Waffle](https://thenounproject.com/term/waffle/836862/) designed by Made by Made from [The Noun Project](https://thenounproject.com/)
142 |
--------------------------------------------------------------------------------
/src/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = space
5 |
6 | [*.cs]
7 | indent_size = 4
8 | charset = utf-8
9 |
10 | # Redundant accessor body
11 | resharper_redundant_accessor_body_highlighting = error
12 |
13 | # Replace with field keyword
14 | resharper_replace_with_field_keyword_highlighting = error
15 |
16 | # Replace with single call to Single(..)
17 | resharper_replace_with_single_call_to_single_highlighting = error
18 |
19 | # Replace with single call to SingleOrDefault(..)
20 | resharper_replace_with_single_call_to_single_or_default_highlighting = error
21 |
22 | # Replace with single call to LastOrDefault(..)
23 | resharper_replace_with_single_call_to_last_or_default_highlighting = error
24 |
25 | # Replace with single call to Last(..)
26 | resharper_replace_with_single_call_to_last_highlighting = error
27 |
28 | # Replace with single call to First(..)
29 | resharper_replace_with_single_call_to_first_highlighting = error
30 |
31 | # Replace with single call to FirstOrDefault(..)
32 | resharper_replace_with_single_call_to_first_or_default_highlighting = error
33 |
34 | # Replace with single call to Any(..)
35 | resharper_replace_with_single_call_to_any_highlighting = error
36 |
37 | # Replace with single call to Count(..)
38 | resharper_replace_with_single_call_to_count_highlighting = error
39 |
40 | # Declare types in namespaces
41 | dotnet_diagnostic.CA1050.severity = none
42 |
43 | # Use Literals Where Appropriate
44 | dotnet_diagnostic.CA1802.severity = error
45 |
46 | # Template should be a static expression
47 | dotnet_diagnostic.CA2254.severity = error
48 |
49 | # Potentially misleading parameter name in lambda or local function
50 | resharper_all_underscore_local_parameter_name_highlighting = none
51 |
52 | # Redundant explicit collection creation in argument of 'params' parameter
53 | resharper_redundant_explicit_params_array_creation_highlighting = error
54 |
55 | # Do not initialize unnecessarily
56 | dotnet_diagnostic.CA1805.severity = error
57 |
58 | # Avoid unsealed attributes
59 | dotnet_diagnostic.CA1813.severity = error
60 |
61 | # Test for empty strings using string length
62 | dotnet_diagnostic.CA1820.severity = none
63 |
64 | # Remove empty finalizers
65 | dotnet_diagnostic.CA1821.severity = error
66 |
67 | # Mark members as static
68 | dotnet_diagnostic.CA1822.severity = error
69 |
70 | # Avoid unused private fields
71 | dotnet_diagnostic.CA1823.severity = error
72 |
73 | # Avoid zero-length array allocations
74 | dotnet_diagnostic.CA1825.severity = error
75 |
76 | # Use property instead of Linq Enumerable method
77 | dotnet_diagnostic.CA1826.severity = error
78 |
79 | # Do not use Count()/LongCount() when Any() can be used
80 | dotnet_diagnostic.CA1827.severity = error
81 | dotnet_diagnostic.CA1828.severity = error
82 |
83 | # Use Length/Count property instead of Enumerable.Count method
84 | dotnet_diagnostic.CA1829.severity = error
85 |
86 | # Prefer strongly-typed Append and Insert method overloads on StringBuilder
87 | dotnet_diagnostic.CA1830.severity = error
88 |
89 | # Use AsSpan instead of Range-based indexers for string when appropriate
90 | dotnet_diagnostic.CA1831.severity = error
91 |
92 | # Use AsSpan instead of Range-based indexers for string when appropriate
93 | dotnet_diagnostic.CA1831.severity = error
94 | dotnet_diagnostic.CA1832.severity = error
95 | dotnet_diagnostic.CA1833.severity = error
96 |
97 | # Use StringBuilder.Append(char) for single character strings
98 | dotnet_diagnostic.CA1834.severity = error
99 |
100 | # Prefer IsEmpty over Count when available
101 | dotnet_diagnostic.CA1836.severity = error
102 |
103 | # Prefer IsEmpty over Count when available
104 | dotnet_diagnostic.CA1836.severity = error
105 |
106 | # Use Environment.ProcessId instead of Process.GetCurrentProcess().Id
107 | dotnet_diagnostic.CA1837.severity = error
108 |
109 | # Use Environment.ProcessPath instead of Process.GetCurrentProcess().MainModule.FileName
110 | dotnet_diagnostic.CA1839.severity = error
111 |
112 | # Use Environment.CurrentManagedThreadId instead of Thread.CurrentThread.ManagedThreadId
113 | dotnet_diagnostic.CA1840.severity = error
114 |
115 | # Prefer Dictionary Contains methods
116 | dotnet_diagnostic.CA1841.severity = error
117 |
118 | # Do not use WhenAll with a single task
119 | dotnet_diagnostic.CA1842.severity = error
120 |
121 | # Do not use WhenAll/WaitAll with a single task
122 | dotnet_diagnostic.CA1842.severity = error
123 | dotnet_diagnostic.CA1843.severity = error
124 |
125 | # Use span-based 'string.Concat'
126 | dotnet_diagnostic.CA1845.severity = error
127 |
128 | # Prefer AsSpan over Substring
129 | dotnet_diagnostic.CA1846.severity = error
130 |
131 | # Use string.Contains(char) instead of string.Contains(string) with single characters
132 | dotnet_diagnostic.CA1847.severity = error
133 |
134 | # Prefer static HashData method over ComputeHash
135 | dotnet_diagnostic.CA1850.severity = error
136 |
137 | # Possible multiple enumerations of IEnumerable collection
138 | dotnet_diagnostic.CA1851.severity = error
139 |
140 | # Unnecessary call to Dictionary.ContainsKey(key)
141 | dotnet_diagnostic.CA1853.severity = error
142 |
143 | # Prefer the IDictionary.TryGetValue(TKey, out TValue) method
144 | dotnet_diagnostic.CA1854.severity = error
145 |
146 | # Use Span.Clear() instead of Span.Fill()
147 | dotnet_diagnostic.CA1855.severity = error
148 |
149 | # Incorrect usage of ConstantExpected attribute
150 | dotnet_diagnostic.CA1856.severity = error
151 |
152 | # The parameter expects a constant for optimal performance
153 | dotnet_diagnostic.CA1857.severity = error
154 |
155 | # Use StartsWith instead of IndexOf
156 | dotnet_diagnostic.CA1858.severity = error
157 |
158 | # Avoid using Enumerable.Any() extension method
159 | dotnet_diagnostic.CA1860.severity = error
160 |
161 | # Avoid constant arrays as arguments
162 | dotnet_diagnostic.CA1861.severity = error
163 |
164 | # Use the StringComparison method overloads to perform case-insensitive string comparisons
165 | dotnet_diagnostic.CA1862.severity = error
166 |
167 | # Prefer the IDictionary.TryAdd(TKey, TValue) method
168 | dotnet_diagnostic.CA1864.severity = error
169 |
170 | # Use string.Method(char) instead of string.Method(string) for string with single char
171 | dotnet_diagnostic.CA1865.severity = error
172 | dotnet_diagnostic.CA1866.severity = error
173 | dotnet_diagnostic.CA1867.severity = error
174 |
175 | # Unnecessary call to 'Contains' for sets
176 | dotnet_diagnostic.CA1868.severity = error
177 |
178 | # Cache and reuse 'JsonSerializerOptions' instances
179 | dotnet_diagnostic.CA1869.severity = error
180 |
181 | # Use a cached 'SearchValues' instance
182 | dotnet_diagnostic.CA1870.severity = error
183 |
184 | # Microsoft .NET properties
185 | trim_trailing_whitespace = true
186 | csharp_preferred_modifier_order = public, private, protected, internal, new, static, abstract, virtual, sealed, readonly, override, extern, unsafe, volatile, async:suggestion
187 | resharper_namespace_body = file_scoped
188 | dotnet_naming_rule.private_constants_rule.severity = warning
189 | dotnet_naming_rule.private_constants_rule.style = lower_camel_case_style
190 | dotnet_naming_rule.private_constants_rule.symbols = private_constants_symbols
191 | dotnet_naming_rule.private_instance_fields_rule.severity = warning
192 | dotnet_naming_rule.private_instance_fields_rule.style = lower_camel_case_style
193 | dotnet_naming_rule.private_instance_fields_rule.symbols = private_instance_fields_symbols
194 | dotnet_naming_rule.private_static_fields_rule.severity = warning
195 | dotnet_naming_rule.private_static_fields_rule.style = lower_camel_case_style
196 | dotnet_naming_rule.private_static_fields_rule.symbols = private_static_fields_symbols
197 | dotnet_naming_rule.private_static_readonly_rule.severity = warning
198 | dotnet_naming_rule.private_static_readonly_rule.style = lower_camel_case_style
199 | dotnet_naming_rule.private_static_readonly_rule.symbols = private_static_readonly_symbols
200 | dotnet_naming_style.lower_camel_case_style.capitalization = camel_case
201 | dotnet_naming_style.upper_camel_case_style.capitalization = pascal_case
202 | dotnet_naming_symbols.private_constants_symbols.applicable_accessibilities = private
203 | dotnet_naming_symbols.private_constants_symbols.applicable_kinds = field
204 | dotnet_naming_symbols.private_constants_symbols.required_modifiers = const
205 | dotnet_naming_symbols.private_instance_fields_symbols.applicable_accessibilities = private
206 | dotnet_naming_symbols.private_instance_fields_symbols.applicable_kinds = field
207 | dotnet_naming_symbols.private_static_fields_symbols.applicable_accessibilities = private
208 | dotnet_naming_symbols.private_static_fields_symbols.applicable_kinds = field
209 | dotnet_naming_symbols.private_static_fields_symbols.required_modifiers = static
210 | dotnet_naming_symbols.private_static_readonly_symbols.applicable_accessibilities = private
211 | dotnet_naming_symbols.private_static_readonly_symbols.applicable_kinds = field
212 | dotnet_naming_symbols.private_static_readonly_symbols.required_modifiers = static, readonly
213 | dotnet_style_parentheses_in_arithmetic_binary_operators = never_if_unnecessary:none
214 | dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:none
215 | dotnet_style_parentheses_in_relational_binary_operators = never_if_unnecessary:none
216 |
217 | # ReSharper properties
218 | resharper_object_creation_when_type_not_evident = target_typed
219 |
220 | # ReSharper inspection severities
221 | resharper_arrange_object_creation_when_type_evident_highlighting = error
222 | resharper_arrange_object_creation_when_type_not_evident_highlighting = error
223 | resharper_arrange_redundant_parentheses_highlighting = error
224 | resharper_arrange_static_member_qualifier_highlighting = error
225 | resharper_arrange_this_qualifier_highlighting = error
226 | resharper_arrange_type_member_modifiers_highlighting = none
227 | resharper_built_in_type_reference_style_for_member_access_highlighting = hint
228 | resharper_built_in_type_reference_style_highlighting = hint
229 | resharper_check_namespace_highlighting = none
230 | resharper_convert_to_using_declaration_highlighting = error
231 | resharper_css_not_resolved_highlighting = warning
232 | resharper_field_can_be_made_read_only_local_highlighting = none
233 | resharper_merge_into_logical_pattern_highlighting = warning
234 | resharper_merge_into_pattern_highlighting = error
235 | resharper_method_has_async_overload_highlighting = warning
236 | # because stop rider giving errors before source generators have run
237 | resharper_partial_type_with_single_part_highlighting = warning
238 | resharper_redundant_base_qualifier_highlighting = warning
239 | resharper_redundant_cast_highlighting = error
240 | resharper_redundant_empty_object_creation_argument_list_highlighting = error
241 | resharper_redundant_empty_object_or_collection_initializer_highlighting = error
242 | resharper_redundant_name_qualifier_highlighting = error
243 | resharper_redundant_suppress_nullable_warning_expression_highlighting = error
244 | resharper_redundant_using_directive_highlighting = error
245 | resharper_redundant_verbatim_string_prefix_highlighting = error
246 | resharper_redundant_lambda_signature_parentheses_highlighting = error
247 | resharper_replace_substring_with_range_indexer_highlighting = warning
248 | resharper_suggest_var_or_type_built_in_types_highlighting = error
249 | resharper_suggest_var_or_type_elsewhere_highlighting = error
250 | resharper_suggest_var_or_type_simple_types_highlighting = error
251 | resharper_unnecessary_whitespace_highlighting = error
252 | resharper_use_await_using_highlighting = warning
253 | resharper_use_deconstruction_highlighting = warning
254 |
255 | # Sort using and Import directives with System.* appearing first
256 | dotnet_sort_system_directives_first = true
257 |
258 | # Avoid "this." and "Me." if not necessary
259 | dotnet_style_qualification_for_field = false:error
260 | dotnet_style_qualification_for_property = false:error
261 | dotnet_style_qualification_for_method = false:error
262 | dotnet_style_qualification_for_event = false:error
263 |
264 | # Use language keywords instead of framework type names for type references
265 | dotnet_style_predefined_type_for_locals_parameters_members = true:error
266 | dotnet_style_predefined_type_for_member_access = true:error
267 |
268 | # Suggest more modern language features when available
269 | dotnet_style_object_initializer = true:error
270 | dotnet_style_collection_initializer = true:error
271 | dotnet_style_coalesce_expression = false:error
272 | dotnet_style_null_propagation = true:error
273 | dotnet_style_explicit_tuple_names = true:error
274 |
275 | # Prefer "var" everywhere
276 | csharp_style_var_for_built_in_types = true:error
277 | csharp_style_var_when_type_is_apparent = true:error
278 | csharp_style_var_elsewhere = true:error
279 |
280 | # Prefer method-like constructs to have a block body
281 | csharp_style_expression_bodied_methods = true:error
282 | csharp_style_expression_bodied_local_functions = true:error
283 | csharp_style_expression_bodied_constructors = true:error
284 | csharp_style_expression_bodied_operators = true:error
285 | resharper_place_expr_method_on_single_line = false
286 |
287 | # Prefer property-like constructs to have an expression-body
288 | csharp_style_expression_bodied_properties = true:error
289 | csharp_style_expression_bodied_indexers = true:error
290 | csharp_style_expression_bodied_accessors = true:error
291 |
292 | # Suggest more modern language features when available
293 | csharp_style_pattern_matching_over_is_with_cast_check = true:error
294 | csharp_style_pattern_matching_over_as_with_null_check = true:error
295 | csharp_style_inlined_variable_declaration = true:suggestion
296 | csharp_style_throw_expression = true:suggestion
297 | csharp_style_conditional_delegate_call = true:suggestion
298 |
299 | # Newline settings
300 | #csharp_new_line_before_open_brace = all:error
301 | resharper_max_array_initializer_elements_on_line = 1
302 | csharp_new_line_before_else = true
303 | csharp_new_line_before_catch = true
304 | csharp_new_line_before_finally = true
305 | csharp_new_line_before_members_in_object_initializers = true
306 | csharp_new_line_before_members_in_anonymous_types = true
307 | resharper_wrap_before_first_type_parameter_constraint = true
308 | resharper_wrap_extends_list_style = chop_always
309 | resharper_wrap_after_dot_in_method_calls = false
310 | resharper_wrap_before_binary_pattern_op = false
311 | resharper_wrap_object_and_collection_initializer_style = chop_always
312 | resharper_place_simple_initializer_on_single_line = false
313 |
314 | # space
315 | resharper_space_around_lambda_arrow = true
316 |
317 | dotnet_style_require_accessibility_modifiers = never:error
318 | resharper_place_type_constraints_on_same_line = false
319 | resharper_blank_lines_inside_namespace = 0
320 | resharper_blank_lines_after_file_scoped_namespace_directive = 1
321 | resharper_blank_lines_inside_type = 0
322 |
323 | insert_final_newline = false
324 | resharper_place_attribute_on_same_line = false
325 | resharper_space_around_lambda_arrow = true
326 | resharper_place_constructor_initializer_on_same_line = false
327 |
328 | #braces https://www.jetbrains.com/help/resharper/EditorConfig_CSHARP_CSharpCodeStylePageImplSchema.html#Braces
329 | resharper_braces_for_ifelse = required
330 | resharper_braces_for_foreach = required
331 | resharper_braces_for_while = required
332 | resharper_braces_for_dowhile = required
333 | resharper_braces_for_lock = required
334 | resharper_braces_for_fixed = required
335 | resharper_braces_for_for = required
336 |
337 | resharper_return_value_of_pure_method_is_not_used_highlighting = error
338 |
339 | resharper_all_underscore_local_parameter_name_highlighting = none
340 |
341 | resharper_misleading_body_like_statement_highlighting = error
342 |
343 | resharper_redundant_record_class_keyword_highlighting = error
344 |
345 | resharper_redundant_extends_list_entry_highlighting = error
346 |
347 | # Xml files
348 | [*.{xml,config,nuspec,resx,vsixmanifest,csproj,targets,props,fsproj}]
349 | indent_size = 2
350 | # https://www.jetbrains.com/help/resharper/EditorConfig_XML_XmlCodeStylePageSchema.html#resharper_xml_blank_line_after_pi
351 | resharper_blank_line_after_pi = false
352 | resharper_space_before_self_closing = true
353 | ij_xml_space_inside_empty_tag = true
354 |
355 | [*.json]
356 | indent_size = 2
357 |
358 | # Verify settings
359 | [*.{received,verified}.{txt,xml,json,md,sql,csv,html,htm,md}]
360 | charset = utf-8-bom
361 | end_of_line = lf
362 | indent_size = unset
363 | indent_style = unset
364 | insert_final_newline = false
365 | tab_width = unset
366 | trim_trailing_whitespace = false
--------------------------------------------------------------------------------
/src/.gitattributes:
--------------------------------------------------------------------------------
1 | * text
2 | *.png binary
3 | *.snk binary
4 |
5 |
6 | *.verified.txt text eol=lf working-tree-encoding=UTF-8
7 | *.verified.xml text eol=lf working-tree-encoding=UTF-8
8 | *.verified.json text eol=lf working-tree-encoding=UTF-8
9 |
10 | .editorconfig text eol=lf working-tree-encoding=UTF-8
11 | Shared.sln.DotSettings text eol=lf working-tree-encoding=UTF-8
--------------------------------------------------------------------------------
/src/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | CS1591;NU1608;NU1109
5 | 4.3.0
6 | 1.0.0
7 | preview
8 | WaffleGenerator, Bogus
9 | enable
10 | enable
11 | true
12 | true
13 | true
14 | true
15 |
16 |
--------------------------------------------------------------------------------
/src/Directory.Packages.props:
--------------------------------------------------------------------------------
1 |
2 |
3 | true
4 | true
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/Shared.sln.DotSettings:
--------------------------------------------------------------------------------
1 |
2 | False
3 | Quiet
4 | True
5 | True
6 | True
7 | DO_NOT_SHOW
8 | ERROR
9 | ERROR
10 | ERROR
11 | WARNING
12 | ERROR
13 | ERROR
14 | ERROR
15 | ERROR
16 | ERROR
17 | ERROR
18 | ERROR
19 | ERROR
20 | ERROR
21 | ERROR
22 | ERROR
23 | ERROR
24 | ERROR
25 | ERROR
26 | ERROR
27 | ERROR
28 | ERROR
29 | ERROR
30 | ERROR
31 | ERROR
32 | ERROR
33 | ERROR
34 | ERROR
35 | ERROR
36 | ERROR
37 | ERROR
38 | ERROR
39 | ERROR
40 | ERROR
41 | ERROR
42 | ERROR
43 | DO_NOT_SHOW
44 | DO_NOT_SHOW
45 | ERROR
46 | ERROR
47 | ERROR
48 | ERROR
49 | ERROR
50 | ERROR
51 | ERROR
52 | ERROR
53 | ERROR
54 | ERROR
55 | ERROR
56 | ERROR
57 | C90+,E79+,S14+
58 | ERROR
59 | ERROR
60 | ERROR
61 | ERROR
62 | ERROR
63 | ERROR
64 | ERROR
65 | ERROR
66 | ERROR
67 | ERROR
68 | ERROR
69 | ERROR
70 | ERROR
71 | ERROR
72 | ERROR
73 | ERROR
74 | ERROR
75 | ERROR
76 | ERROR
77 | ERROR
78 | ERROR
79 | ERROR
80 | ERROR
81 | ERROR
82 | ERROR
83 | ERROR
84 | ERROR
85 | ERROR
86 | ERROR
87 | ERROR
88 | ERROR
89 | ERROR
90 | ERROR
91 | ERROR
92 | ERROR
93 | ERROR
94 | ERROR
95 | ERROR
96 | ERROR
97 | ERROR
98 | ERROR
99 | ERROR
100 | ERROR
101 | ERROR
102 | ERROR
103 | ERROR
104 | ERROR
105 | ERROR
106 | ERROR
107 | ERROR
108 | ERROR
109 | ERROR
110 | ERROR
111 | ERROR
112 | ERROR
113 | ERROR
114 | ERROR
115 | ERROR
116 | ERROR
117 | ERROR
118 | ERROR
119 | ERROR
120 | ERROR
121 | ERROR
122 | DO_NOT_SHOW
123 | *.received.*
124 | *.verified.*
125 | ERROR
126 | ERROR
127 | DO_NOT_SHOW
128 | ECMAScript 2016
129 | <?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><profile version="1.0">
130 | <option name="myName" value="c# Cleanup" />
131 | </profile></IDEA_SETTINGS><RIDER_SETTINGS><profile>
132 | <Language id="EditorConfig">
133 | <Reformat>false</Reformat>
134 | </Language>
135 | <Language id="HTML">
136 | <OptimizeImports>false</OptimizeImports>
137 | <Reformat>false</Reformat>
138 | <Rearrange>false</Rearrange>
139 | </Language>
140 | <Language id="JSON">
141 | <Reformat>false</Reformat>
142 | </Language>
143 | <Language id="RELAX-NG">
144 | <Reformat>false</Reformat>
145 | </Language>
146 | <Language id="XML">
147 | <OptimizeImports>false</OptimizeImports>
148 | <Reformat>false</Reformat>
149 | <Rearrange>false</Rearrange>
150 | </Language>
151 | </profile></RIDER_SETTINGS></Profile>
152 | ExpressionBody
153 | ExpressionBody
154 | ExpressionBody
155 | False
156 | NEVER
157 | NEVER
158 | False
159 | False
160 | False
161 | True
162 | False
163 | CHOP_ALWAYS
164 | False
165 | False
166 | RemoveIndent
167 | RemoveIndent
168 | False
169 | True
170 | True
171 | True
172 | True
173 | True
174 | ERROR
175 | DoNothing
176 |
--------------------------------------------------------------------------------
/src/Tests/FakerUsage.cs:
--------------------------------------------------------------------------------
1 | using Bogus;
2 |
3 | // ReSharper disable RedundantArgumentDefaultValue
4 | // ReSharper disable UnusedParameter.Local
5 |
6 | [TestFixture]
7 | public class FakerUsage
8 | {
9 | [Test]
10 | public void Sample()
11 | {
12 | #region BogusUsage
13 |
14 | var faker = new Faker()
15 | .RuleFor(
16 | property: u => u.Title,
17 | setter: (f, u) => f.WaffleTitle())
18 | .RuleFor(
19 | property: u => u.Property1,
20 | setter: (f, u) => f.WaffleHtml())
21 | .RuleFor(
22 | property: u => u.Property2,
23 | setter: (f, u) => f.WaffleHtml(
24 | paragraphs: 4,
25 | includeHeading: true))
26 | .RuleFor(
27 | property: u => u.Property3,
28 | setter: (f, u) => f.WaffleText())
29 | .RuleFor(
30 | property: u => u.Property4,
31 | setter: (f, u) => f.WaffleText(
32 | paragraphs: 4,
33 | includeHeading: false));
34 |
35 | var target = faker.Generate();
36 | Debug.WriteLine(target.Title);
37 | Debug.WriteLine(target.Property1);
38 | Debug.WriteLine(target.Property2);
39 | Debug.WriteLine(target.Property3);
40 | Debug.WriteLine(target.Property4);
41 |
42 | #endregion
43 | }
44 |
45 | [Test]
46 | public void Run()
47 | {
48 | var faker = new Faker()
49 | .RuleFor(u => u.Title, (f, u) => f.WaffleTitle())
50 | .RuleFor(u => u.Property1, (f, u) => f.WaffleHtml())
51 | .RuleFor(u => u.Property2, (f, u) => f.WaffleText());
52 |
53 | var target = faker.Generate();
54 | Trace.WriteLine(target.Title);
55 | Trace.WriteLine(target.Property1);
56 | Trace.WriteLine(target.Property2);
57 | NotNull(target.Title);
58 | IsNotEmpty(target.Title);
59 | NotNull(target.Property1);
60 | IsNotEmpty(target.Property1);
61 | NotNull(target.Property2);
62 | IsNotEmpty(target.Property2);
63 | }
64 |
65 | public class Target
66 | {
67 | public string? Property1 { get; set; }
68 | public string? Property2 { get; set; }
69 | public string? Property3 { get; set; }
70 | public string? Property4 { get; set; }
71 | public string? Title { get; set; }
72 | }
73 | }
--------------------------------------------------------------------------------
/src/Tests/Tests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | net9.0
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/Tests/WaffleEngineTests.HtmlWaffleMultiple.verified.txt:
--------------------------------------------------------------------------------
1 | The Aesthetic Of Economico-Social Disposition
2 | 'In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition'
3 | Humphrey Yokomoto in The Journal of the Total Entative Item (20114U)
4 | causation of milieu.
5 |
6 | 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.
7 |
8 |
9 |
The Potential Economic Competence.
10 | 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".
11 |
12 |
13 | 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'.
14 |
15 |
16 |
The Dynamic Effective Partnership.
17 | 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.
18 |
19 |
20 |
The Corporate Procedure.
21 | firstly, subdivisions of what amounts to the consultative consistent baseline significantly alters the importance of the work being done at the 'coal-face'.
22 |
23 |
24 | 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.
25 |
26 |
27 | 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.
28 |
29 |
30 | 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.
31 |
32 |
33 | 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.
34 |
35 |
36 | Note that:-
37 |
38 | 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"..
39 | 2. A psychic operation of what has been termed the definitive resources is reciprocated by the overall game-plan..
40 | 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..
41 | 4. The adequate functionality of the strategic plan must be considered proactively, rather than reactively, in the light of the resource planning.
42 | 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.
43 | 6. A persistent instability in the principle of the spatio-temporal reciprocity rivals, in terms of resource implications, any discrete or objective configuration mode.
44 |
45 | 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.
46 |
47 |
48 | 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.
49 |
50 |
--------------------------------------------------------------------------------
/src/Tests/WaffleEngineTests.HtmlWaffleMultipleWithHeadAndBody.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 | The Aesthetic Of Economico-Social Disposition
4 |
5 |
6 | The Aesthetic Of Economico-Social Disposition
7 | 'In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition'
8 | Humphrey Yokomoto in The Journal of the Total Entative Item (20114U)
9 | causation of milieu.
10 |
11 | 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.
12 |
13 |
14 |
The Potential Economic Competence.
15 | 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".
16 |
17 |
18 | 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'.
19 |
20 |
21 |
The Dynamic Effective Partnership.
22 | 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.
23 |
24 |
25 |
The Corporate Procedure.
26 | firstly, subdivisions of what amounts to the consultative consistent baseline significantly alters the importance of the work being done at the 'coal-face'.
27 |
28 |
29 | 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.
30 |
31 |
32 | 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.
33 |
34 |
35 | 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.
36 |
37 |
38 | 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.
39 |
40 |
41 | Note that:-
42 |
43 | 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"..
44 | 2. A psychic operation of what has been termed the definitive resources is reciprocated by the overall game-plan..
45 | 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..
46 | 4. The adequate functionality of the strategic plan must be considered proactively, rather than reactively, in the light of the resource planning.
47 | 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.
48 | 6. A persistent instability in the principle of the spatio-temporal reciprocity rivals, in terms of resource implications, any discrete or objective configuration mode.
49 |
50 | 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.
51 |
52 |
53 | 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.
54 |
55 |
56 |
--------------------------------------------------------------------------------
/src/Tests/WaffleEngineTests.HtmlWaffleNoHeading.verified.txt:
--------------------------------------------------------------------------------
1 | The Aesthetic Of Economico-Social Disposition
2 | 'In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition'
3 | Humphrey Yokomoto in The Journal of the Total Entative Item (20114U)
4 | causation of milieu.
5 |
6 | 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.
7 |
8 |
--------------------------------------------------------------------------------
/src/Tests/WaffleEngineTests.HtmlWaffleNoHeadingWithHeadAndBody.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 | The Aesthetic Of Economico-Social Disposition
4 |
5 |
6 | The Aesthetic Of Economico-Social Disposition
7 | 'In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition'
8 | Humphrey Yokomoto in The Journal of the Total Entative Item (20114U)
9 | causation of milieu.
10 |
11 | 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.
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/Tests/WaffleEngineTests.HtmlWaffleSingle.verified.txt:
--------------------------------------------------------------------------------
1 | The Aesthetic Of Economico-Social Disposition
2 | 'In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition'
3 | Humphrey Yokomoto in The Journal of the Total Entative Item (20114U)
4 | causation of milieu.
5 |
6 | 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.
7 |
8 |
--------------------------------------------------------------------------------
/src/Tests/WaffleEngineTests.HtmlWaffleSingleWithHeadAndBody.verified.txt:
--------------------------------------------------------------------------------
1 |
2 |
3 | The Aesthetic Of Economico-Social Disposition
4 |
5 |
6 | The Aesthetic Of Economico-Social Disposition
7 | 'In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition'
8 | Humphrey Yokomoto in The Journal of the Total Entative Item (20114U)
9 | causation of milieu.
10 |
11 | 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.
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/Tests/WaffleEngineTests.MarkdownWaffleMultiple.verified.md:
--------------------------------------------------------------------------------
1 | # The Aesthetic Of Economico-Social Disposition
2 |
3 | > In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition
4 |
5 | * Humphrey Yokomoto in The Journal of the Total Entative Item (20114U)
6 |
7 | ## causation of milieu.
8 |
9 | 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.
10 |
11 | ## The Potential Economic Competence.
12 |
13 | 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".
14 |
15 | 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'.
16 |
17 | ## The Dynamic Effective Partnership.
18 |
19 | 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.
20 |
21 | ## The Corporate Procedure.
22 |
23 | firstly, subdivisions of what amounts to the consultative consistent baseline significantly alters the importance of the work being done at the 'coal-face'.
24 |
25 | 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.
26 |
27 | 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.
28 |
29 | 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.
30 |
31 | 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.
32 |
33 | Note that:-
34 |
35 | 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"..
36 | 2. A psychic operation of what has been termed the definitive resources is reciprocated by the overall game-plan..
37 | 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..
38 | 4. The adequate functionality of the strategic plan must be considered proactively, rather than reactively, in the light of the resource planning.
39 | 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.
40 | 6. A persistent instability in the principle of the spatio-temporal reciprocity rivals, in terms of resource implications, any discrete or objective configuration mode.
41 |
42 | 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.
43 |
44 | 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.
45 |
46 |
--------------------------------------------------------------------------------
/src/Tests/WaffleEngineTests.MarkdownWaffleNoHeading.verified.md:
--------------------------------------------------------------------------------
1 | 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.
2 |
3 |
--------------------------------------------------------------------------------
/src/Tests/WaffleEngineTests.MarkdownWaffleSingle.verified.md:
--------------------------------------------------------------------------------
1 | # The Aesthetic Of Economico-Social Disposition
2 |
3 | > In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition
4 |
5 | * Humphrey Yokomoto in The Journal of the Total Entative Item (20114U)
6 |
7 | ## causation of milieu.
8 |
9 | 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.
10 |
11 |
--------------------------------------------------------------------------------
/src/Tests/WaffleEngineTests.TextWaffleMultiple.verified.txt:
--------------------------------------------------------------------------------
1 | The Aesthetic Of Economico-Social Disposition
2 |
3 | 'In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition'
4 |
5 | - Humphrey Yokomoto in The Journal of the Total Entative Item (20114U)
6 |
7 | causation of milieu.
8 |
9 | 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.
10 |
11 | The Potential Economic Competence.
12 |
13 | 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".
14 |
15 | 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'.
16 |
17 | The Dynamic Effective Partnership.
18 |
19 | 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.
20 |
21 | The Corporate Procedure.
22 |
23 | firstly, subdivisions of what amounts to the consultative consistent baseline significantly alters the importance of the work being done at the 'coal-face'.
24 |
25 | 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.
26 |
27 | 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.
28 |
29 | 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.
30 |
31 | 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.
32 |
33 | Note that:-
34 |
35 | 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"..
36 | 2. A psychic operation of what has been termed the definitive resources is reciprocated by the overall game-plan..
37 | 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..
38 | 4. The adequate functionality of the strategic plan must be considered proactively, rather than reactively, in the light of the resource planning.
39 | 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.
40 | 6. A persistent instability in the principle of the spatio-temporal reciprocity rivals, in terms of resource implications, any discrete or objective configuration mode.
41 |
42 | 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.
43 |
44 | 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.
45 |
--------------------------------------------------------------------------------
/src/Tests/WaffleEngineTests.TextWaffleNoHeading.verified.txt:
--------------------------------------------------------------------------------
1 | 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.
2 |
--------------------------------------------------------------------------------
/src/Tests/WaffleEngineTests.TextWaffleSingle.verified.txt:
--------------------------------------------------------------------------------
1 | The Aesthetic Of Economico-Social Disposition
2 |
3 | 'In this regard, the underlying surrealism of the take home message should not divert attention from The Aesthetic Of Economico-Social Disposition'
4 |
5 | - Humphrey Yokomoto in The Journal of the Total Entative Item (20114U)
6 |
7 | causation of milieu.
8 |
9 | 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.
10 |
--------------------------------------------------------------------------------
/src/Tests/WaffleEngineTests.Title.verified.txt:
--------------------------------------------------------------------------------
1 | The Aesthetic Of Economico-Social Disposition
--------------------------------------------------------------------------------
/src/Tests/WaffleEngineTests.cs:
--------------------------------------------------------------------------------
1 | using WaffleGenerator;
2 |
3 | [TestFixture]
4 | public class WaffleEngineTests
5 | {
6 | [Test]
7 | public void TextWaffleSample()
8 | {
9 | #region textUsage
10 |
11 | var text = WaffleEngine.Text(
12 | paragraphs: 1,
13 | includeHeading: true);
14 | Debug.WriteLine(text);
15 |
16 | #endregion
17 | }
18 |
19 | [Test]
20 | public void MarkdownWaffleSample()
21 | {
22 | #region markdownUsage
23 |
24 | var markdown = WaffleEngine.Markdown(
25 | paragraphs: 1,
26 | includeHeading: true);
27 | Debug.WriteLine(markdown);
28 |
29 | #endregion
30 | }
31 |
32 | [Test]
33 | public void HtmlWaffleSample()
34 | {
35 | #region htmlUsage
36 |
37 | var text = WaffleEngine.Html(
38 | paragraphs: 2,
39 | includeHeading: true,
40 | includeHeadAndBody: true);
41 | Debug.WriteLine(text);
42 |
43 | #endregion
44 | }
45 |
46 | [Test]
47 | public Task TextWaffleSingle()
48 | {
49 | var random = new Random(0);
50 | var text = WaffleEngine.Text(random, 1, true);
51 | return Verify(text);
52 | }
53 |
54 | [Test]
55 | public void EndsWith()
56 | {
57 | True(new StringBuilder("a").EndsWith('a'));
58 | True(new StringBuilder("ba").EndsWith('a'));
59 | True(new StringBuilder("ba").EndsWith('b', 'a'));
60 | True(new StringBuilder("a ").EndsWith('a'));
61 | True(new StringBuilder("ba ").EndsWith('a'));
62 | True(new StringBuilder("ba ").EndsWith('b', 'a'));
63 | True(new StringBuilder("a ").EndsWith('a'));
64 | True(new StringBuilder("ba ").EndsWith('a'));
65 | True(new StringBuilder("ba ").EndsWith('b', 'a'));
66 |
67 | False(new StringBuilder("a").EndsWith('c'));
68 | False(new StringBuilder("ba").EndsWith('c'));
69 | False(new StringBuilder("ba").EndsWith('c', 'd'));
70 | False(new StringBuilder("a ").EndsWith('c'));
71 | False(new StringBuilder("ba ").EndsWith('c'));
72 | False(new StringBuilder("ba ").EndsWith('c', 'd'));
73 | False(new StringBuilder("a ").EndsWith('c'));
74 | False(new StringBuilder("ba ").EndsWith('c'));
75 | False(new StringBuilder("ba ").EndsWith('c', 'd'));
76 | False(new StringBuilder(" ").EndsWith('c'));
77 | False(new StringBuilder(" ").EndsWith('c'));
78 | False(new StringBuilder("").EndsWith('c'));
79 | False(new StringBuilder("").EndsWith('c'));
80 | }
81 |
82 | [Test]
83 | public void MultiTextShouldNotDuplicate()
84 | {
85 | var text1 = WaffleEngine.Text(1, true);
86 | var text2 = WaffleEngine.Text(1, true);
87 | AreNotEqual(text1, text2);
88 | }
89 |
90 | [Test]
91 | public void MultiHtmlShouldNotDuplicate()
92 | {
93 | var text1 = WaffleEngine.Html(1, true, true);
94 | var text2 = WaffleEngine.Html(1, true, true);
95 | AreNotEqual(text1, text2);
96 | }
97 |
98 | [Test]
99 | public void MultiMarkdownShouldNotDuplicate()
100 | {
101 | var text1 = WaffleEngine.Markdown(1, true);
102 | var text2 = WaffleEngine.Markdown(1, true);
103 | AreNotEqual(text1, text2);
104 | }
105 |
106 | [Test]
107 | public Task MarkdownWaffleSingle()
108 | {
109 | var random = new Random(0);
110 | var text = WaffleEngine.Markdown(random, 1, true);
111 | return Verify(text, "md");
112 | }
113 |
114 | [Test]
115 | public Task Title()
116 | {
117 | var random = new Random(0);
118 | var title = WaffleEngine.Title(random);
119 | return Verify(title);
120 | }
121 |
122 | [Test]
123 | public Task HtmlWaffleSingle()
124 | {
125 | var random = new Random(0);
126 | var html = WaffleEngine.Html(random, 1, true, false);
127 | return Verify(html);
128 | }
129 |
130 | [Test]
131 | public Task HtmlWaffleSingleWithHeadAndBody()
132 | {
133 | var random = new Random(0);
134 | var html = WaffleEngine.Html(random, 1, true, true);
135 | return Verify(html);
136 | }
137 |
138 | [Test]
139 | public Task TextWaffleMultiple()
140 | {
141 | var random = new Random(0);
142 | var text = WaffleEngine.Text(random, 11, true);
143 | return Verify(text);
144 | }
145 |
146 | [Test]
147 | public Task MarkdownWaffleMultiple()
148 | {
149 | var random = new Random(0);
150 | var text = WaffleEngine.Markdown(random, 11, true);
151 | return Verify(text, "md");
152 | }
153 |
154 | [Test]
155 | public Task HtmlWaffleMultiple()
156 | {
157 | var random = new Random(0);
158 | var html = WaffleEngine.Html(random, 11, true, false);
159 | return Verify(html);
160 | }
161 |
162 | [Test]
163 | public Task HtmlWaffleMultipleWithHeadAndBody()
164 | {
165 | var random = new Random(0);
166 | var html = WaffleEngine.Html(random, 11, true, true);
167 | return Verify(html);
168 | }
169 |
170 | [Test]
171 | public Task TextWaffleNoHeading()
172 | {
173 | var random = new Random(0);
174 | var text = WaffleEngine.Text(random, 1, false);
175 | return Verify(text);
176 | }
177 |
178 | [Test]
179 | public Task MarkdownWaffleNoHeading()
180 | {
181 | var random = new Random(0);
182 | var text = WaffleEngine.Markdown(random, 1, false);
183 | return Verify(text, "md");
184 | }
185 |
186 | [Test]
187 | public Task HtmlWaffleNoHeading()
188 | {
189 | var random = new Random(0);
190 | var html = WaffleEngine.Html(random, 1, true, false);
191 | return Verify(html);
192 | }
193 |
194 | [Test]
195 | public Task HtmlWaffleNoHeadingWithHeadAndBody()
196 | {
197 | var random = new Random(0);
198 | var html = WaffleEngine.Html(random, 1, true, true);
199 | return Verify(html);
200 | }
201 | }
--------------------------------------------------------------------------------
/src/WaffleGenerator.Bogus/Waffle.cs:
--------------------------------------------------------------------------------
1 | using WaffleGenerator;
2 |
3 | namespace Bogus;
4 |
5 | public class Waffle : DataSet
6 | {
7 | public string Html(int paragraphs = 1, bool includeHeading = true, bool includeHeadAndBody = true) =>
8 | WaffleEngine.Html(RandomNumber, paragraphs, includeHeading, includeHeadAndBody);
9 |
10 | public string Text(int paragraphs = 1, bool includeHeading = true) =>
11 | WaffleEngine.Text(RandomNumber, paragraphs, includeHeading);
12 |
13 | public string Markdown(int paragraphs = 1, bool includeHeading = true) =>
14 | WaffleEngine.Markdown(RandomNumber, paragraphs, includeHeading);
15 |
16 | public string Title() =>
17 | WaffleEngine.Title(RandomNumber);
18 |
19 | int RandomNumber(int i) =>
20 | Random.Number(i - 1);
21 | }
--------------------------------------------------------------------------------
/src/WaffleGenerator.Bogus/WaffleGenerator.Bogus.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | net9;net48
4 | Produces Bogus (https://github.com/bchavez/Bogus) text which, on first glance, looks like real, ponderous, prose; replete with clichés.
5 | $(DefineConstants);Bogus
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/WaffleGenerator.Bogus/WaffleGeneratorExtensions.cs:
--------------------------------------------------------------------------------
1 | using Bogus.Premium;
2 |
3 | namespace Bogus;
4 |
5 | public static class WaffleExtensions
6 | {
7 | public static Waffle Waffle(this Faker faker) =>
8 | ContextHelper.GetOrSet(faker, () => new Waffle());
9 |
10 | public static string WaffleHtml(this Faker faker, int paragraphs = 1, bool includeHeading = true) =>
11 | faker
12 | .Waffle()
13 | .Html(paragraphs, includeHeading);
14 |
15 | public static string WaffleTitle(this Faker faker) =>
16 | faker
17 | .Waffle()
18 | .Title();
19 |
20 | public static string WaffleText(this Faker faker, int paragraphs = 1, bool includeHeading = true) =>
21 | faker
22 | .Waffle()
23 | .Text(paragraphs, includeHeading);
24 |
25 | public static string WaffleMarkdown(this Faker faker, int paragraphs = 1, bool includeHeading = true) =>
26 | faker
27 | .Waffle()
28 | .Markdown(paragraphs, includeHeading);
29 | }
--------------------------------------------------------------------------------
/src/WaffleGenerator.sln:
--------------------------------------------------------------------------------
1 | Microsoft Visual Studio Solution File, Format Version 12.00
2 | # Visual Studio Version 16
3 | VisualStudioVersion = 16.0.29230.61
4 | MinimumVisualStudioVersion = 15.0.26730.16
5 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2745D9FA-8583-434A-87D8-9A8BC11F5B0B}"
6 | ProjectSection(SolutionItems) = preProject
7 | appveyor.yml = appveyor.yml
8 | Directory.Build.props = Directory.Build.props
9 | Directory.Packages.props = Directory.Packages.props
10 | EndProjectSection
11 | EndProject
12 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WaffleGenerator", "WaffleGenerator\WaffleGenerator.csproj", "{92E64F4E-6A8E-43C2-9C8D-694E0327BEF0}"
13 | EndProject
14 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WaffleGenerator.Bogus", "WaffleGenerator.Bogus\WaffleGenerator.Bogus.csproj", "{6E9C0AD1-8F9E-447E-94DC-190073B6C4F5}"
15 | EndProject
16 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests", "Tests\Tests.csproj", "{87DB4CC0-4AC3-4AC1-97FD-7C55D3B921D9}"
17 | EndProject
18 | Global
19 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
20 | Debug|Any CPU = Debug|Any CPU
21 | Release|Any CPU = Release|Any CPU
22 | EndGlobalSection
23 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
24 | {92E64F4E-6A8E-43C2-9C8D-694E0327BEF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
25 | {92E64F4E-6A8E-43C2-9C8D-694E0327BEF0}.Debug|Any CPU.Build.0 = Debug|Any CPU
26 | {92E64F4E-6A8E-43C2-9C8D-694E0327BEF0}.Release|Any CPU.ActiveCfg = Release|Any CPU
27 | {92E64F4E-6A8E-43C2-9C8D-694E0327BEF0}.Release|Any CPU.Build.0 = Release|Any CPU
28 | {6E9C0AD1-8F9E-447E-94DC-190073B6C4F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
29 | {6E9C0AD1-8F9E-447E-94DC-190073B6C4F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
30 | {6E9C0AD1-8F9E-447E-94DC-190073B6C4F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
31 | {6E9C0AD1-8F9E-447E-94DC-190073B6C4F5}.Release|Any CPU.Build.0 = Release|Any CPU
32 | {87DB4CC0-4AC3-4AC1-97FD-7C55D3B921D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
33 | {87DB4CC0-4AC3-4AC1-97FD-7C55D3B921D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
34 | {87DB4CC0-4AC3-4AC1-97FD-7C55D3B921D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
35 | {87DB4CC0-4AC3-4AC1-97FD-7C55D3B921D9}.Release|Any CPU.Build.0 = Release|Any CPU
36 | EndGlobalSection
37 | GlobalSection(SolutionProperties) = preSolution
38 | HideSolutionNode = FALSE
39 | EndGlobalSection
40 | GlobalSection(ExtensibilityGlobals) = postSolution
41 | SolutionGuid = {A9DBE1FD-2601-4F67-B85B-CE26A668FA05}
42 | EndGlobalSection
43 | EndGlobal
44 |
--------------------------------------------------------------------------------
/src/WaffleGenerator.sln.DotSettings:
--------------------------------------------------------------------------------
1 |
2 | ..\Shared.sln.DotSettings
3 | True
4 | True
5 | 1
6 |
--------------------------------------------------------------------------------
/src/WaffleGenerator/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | [assembly: InternalsVisibleTo("Tests, PublicKey=00240000048000009400000006020000002400005253413100040000010001006944a8a4c5de92d68196a123157958d8f212381e1e21a772626e9c86cf8032f457f5b3d669045c4183f4d8dc89be3ae953ccba62b7522b2633156d0c886597509d50de36ce53cac9eebae9146e061bd6933499c740f56770c9ca3052f51de162791f86ea316ae4e3345c58b53e5743a3301359820655979aafefb40384c585c5")]
--------------------------------------------------------------------------------
/src/WaffleGenerator/Constants.cs:
--------------------------------------------------------------------------------
1 | // ReSharper disable StringLiteralTypo
2 |
3 | class Constants
4 | {
5 | public static string[] preamblePhrases =
6 | [
7 | """
8 | In broad terms, we can define the main issues with |t. There are :-
9 | * The |o of |o: |B |C |D.
10 | * The |o of |o: |B |C |D.
11 | * The |o of |o: |B |C |D.
12 | * The |o of |o: |B |C |D.
13 |
14 |
15 | """,
16 | """
17 | The following points should be appreciated about |t;
18 | 1. |B |C |D.
19 | 2. |B |C |D.
20 | 3. |B |C |D.
21 | 4. |B |C |D.
22 | 5. |B |C |D.
23 | 6. |B |C |D.
24 |
25 |
26 | """,
27 | """
28 | Note that:-
29 |
30 | 1. |B |C |D..
31 | 2. |B |C |D..
32 | 3. |B |C |D.
33 | 4. |B |C |D.
34 | 5. |B |C |D.
35 | 6. |B |C |D.
36 |
37 |
38 | """,
39 | """
40 | Essentially;
41 |
42 | * |B |C |D.
43 | * |B |C |D.
44 | * |B |C |D.
45 | * |B |C |D.
46 | * |B |C |D.
47 | * |B |C |D.
48 |
49 |
50 | """,
51 | """
52 | To make the main points more explicit, it is fair to say that;
53 | * |B |C |D.
54 | * |B |C |D.
55 | * |B |C |D.
56 | * |B |C |D.
57 |
58 |
59 | """,
60 | "We have heard it said, tongue-in-cheek, that",
61 | "To be quite frank,",
62 | "Focussing on the agreed facts, we can say that",
63 | "To be perfectly truthful,",
64 | "In broad terms,",
65 | "To be perfectly honest,",
66 | "It was |f |s who first pointed out that",
67 | "Since |f |s's first formulation of the |c, it has become fairly obvious that",
68 | "Since the seminal work of |f |s it has generally been accepted that",
69 | "Without a doubt, |f |s i was right in saying that",
70 | "As regards |h |c, We should put this one to bed. On the other hand,",
71 | "As regards |h |c, This may have a knock-on effect. On the other hand,",
72 | "We must take on board that fact that",
73 | "Without a doubt, |B |C |D. So, where to from here? Presumably,",
74 | "It has hitherto been accepted that",
75 | "At the end of the day,",
76 | "Under the provision of the overall |1 plan,",
77 | "Firming up the gaps, one can say that",
78 | "Within the bounds of |h |c,",
79 | "The |h |c provides us with a win-win situation. Especially if one considers that",
80 | "There are swings and roundabouts in considering that",
81 | "To be precise,",
82 | "Whilst taking the subject of |h |c offline, one must add that",
83 | "For example,",
84 | "An orthodox view is that",
85 | "To reiterate,",
86 | "To recapitulate,",
87 | "Strictly speaking,",
88 | "In a very real sense,",
89 | "Regarding the nature of |h |c,",
90 | "In a strictly mechanistic sense,",
91 | "One is struck quite forcibly by the fact that",
92 | "In any event,",
93 | "In particular,",
94 | "In assessing the |c, one should think outside the box. on the other hand,",
95 | "On the other hand,",
96 | "It is recognized that",
97 | "Focusing specifically on the relationship between |h |c and any |c,",
98 | "Although it is fair to say that |B |C |D, one should take this out of the loop",
99 | "|bly,",
100 | "|bly,",
101 | "|bly,",
102 | "Be that as it may,",
103 | "Taking everything into consideration,",
104 | "As in so many cases, we can state that",
105 | "The |c cannot explain all the problems in maximizing the efficacy of |h |c. Generally",
106 | "We can confidently base our case on an assumption that",
107 | "An initial appraisal makes it evident that",
108 | "An investigation of the |1 factors suggests that",
109 | "It is common knowledge that",
110 | "Despite an element of volatility,",
111 | "The less obviously co-existential factors imply that",
112 | "To coin a phrase,",
113 | "One might venture to suggest that",
114 | "In all foreseeable circumstances,",
115 | "However,",
116 | "Similarly,",
117 | "As a resultant implication,",
118 | "There is a strong body of opinion that affirms that",
119 | "Up to a point,",
120 | "Quite frankly,",
121 | "In this regard,",
122 | "Based on integral subsystems,",
123 | "For example,",
124 | "Therefore,",
125 | "Within current constraints on manpower resources,",
126 | "Up to a certain point,",
127 | "In an ideal environment,",
128 | "It might seem reasonable to think of |h |c as involving |h |c. Nevertheless,",
129 | "It can be forcibly emphasized that",
130 | "Thus,",
131 | "Within the restrictions of |h |c,",
132 | "In respect to specific goals,",
133 | "It is important to realize that",
134 | "To put it concisely,",
135 | "To be perfectly frank,",
136 | "On any rational basis,",
137 | "In any event,",
138 | "On the basis of |h |2 |3,",
139 | "With all the relevant considerations taken into account, it can be stated that",
140 | "Few would disagree, however, that",
141 | "It goes without saying that",
142 | "Only in the case of the |c can one state that",
143 | "if one considers the |c in the light of |h |c,",
144 | "The |c is taken to be a |c. Presumably,",
145 | "So far,",
146 | "It is quite instructive to compare |h |c and |h |c. In the latter case,",
147 | "Obviously,",
148 | "By and large,",
149 | "Possibly,",
150 | "One can, with a certain degree of confidence, conclude that",
151 | "Without doubt,",
152 | "With due caution, one can postulate that",
153 | "The |c is clearly related to |h |c. Nevertheless,",
154 | "There is probably no causal link between the |c and |h |c. However",
155 | "In the light of |h |c, it is clear that",
156 | "No one can deny the relevance of |h |c. Equally it is certain that",
157 | "Albeit,",
158 | "It is precisely the influence of |h |c for |t that makes the |c inevitable, Equally,",
159 | "One must clearly state that",
160 | "In connection with |h |c,",
161 | "Normally",
162 | "one can, quite consistently, say that",
163 | "Clearly, it is becoming possible to resolve the difficulties in assuming that",
164 | "Within normal variability,",
165 | "There can be little doubt that",
166 | "Few would deny that",
167 | "It is not often |e stated that",
168 | "In real terms,",
169 | "In this day and age,",
170 | "It is |e stated that",
171 | "The position in regard to the |c is that",
172 | "On one hand |B |C |D, but on the other hand",
173 | "One hears it stated that |B |C |D, but it is more likely that",
174 | "Whilst it may be true that |B |C |D, one must not lose sight of the fact that"
175 | ];
176 |
177 | public static string[] subjectPhrases =
178 | [
179 | "|h strategic goals",
180 | "|h gap analysis",
181 | "|h hardball",
182 | "|h purchaser - provider",
183 | "|h skill set",
184 | "|h knock-on effect",
185 | "|h strategic plan",
186 | "|h the bottom line",
187 | "|h mindset",
188 | "|h benchmark",
189 | "|h core business",
190 | "|h big picture",
191 | "|h take home message",
192 | "|h lessons learnt",
193 | "|h movers and shakers",
194 | "|h knowledge base",
195 | "the ball-park figures for the |c",
196 | "The core drivers",
197 | "a particular factor, such as the |c, the |c, the |c or the |c",
198 | "there is an apparent contradiction between the |c and |h |c. However, |h |c",
199 | "the question of |h |c",
200 | "the desirability of attaining |h |c, as far as the |c is concerned,",
201 | "a persistent instability in |h |c",
202 | "examination of |2 instances",
203 | "the classic definition of |h |c",
204 | "firm assumptions about |c",
205 | "the |c and the resources needed to support it are mandatory. |A |B",
206 | "significant progress has been made in the |c. |A |B",
207 | "efforts are already underway in the development of the |c. |A |B",
208 | "a |2 operation of |h |c",
209 | "subdivisions of |h |c",
210 | "an anticipation of the effects of any |c",
211 | "an overall understanding of |h |c",
212 | "the assertion of the importance of the |c",
213 | "an understanding of the necessary relationship between the |c and any |c",
214 | "the possibility, that the |c plays a decisive part in influencing |h |c,",
215 | "any solution to the problem of |h |c",
216 | "the lack of understanding of |h |c",
217 | "the |c in its relation to |h |c",
218 | "parameters within |h |c",
219 | "the target population for |h |c",
220 | "initiation of |h |c",
221 | "both |c and |c",
222 | "|h |c",
223 | "an extrapolation of the |c",
224 | "|h |c",
225 | "the assessment of any significant weaknesses in the |c",
226 | "any subsequent interpolation",
227 | "|h |c is |e significant. On the other hand |h |c",
228 | "|h |c relates |e to any |c. Conversely, |h |c",
229 | "|h |c may be |e important. The |c",
230 | "the incorporation of the |c",
231 | "the quest for the |c",
232 | "the dangers inherent in the |c",
233 | "the value of the |c",
234 | "the |c",
235 | "an unambiguous concept of the |c",
236 | "a metonymic reconstruction of the |c",
237 | "a primary interrelationship between system and/or subsystem technologies"
238 | ];
239 |
240 | public static string[] verbPhrases =
241 | [
242 | "|d the overall efficiency of",
243 | "|d the |4 and |C",
244 | "can fully utilize",
245 | "will move the goal posts for",
246 | "would stretch the envelope of",
247 | "enables us to tick the boxes of",
248 | "could go the extra mile for",
249 | "should empower employees to produce",
250 | "should touch base with",
251 | "probably |d",
252 | "is generally compatible with",
253 | "provides the bandwidth for",
254 | "gives a win-win situation for",
255 | "has clear ramifications for",
256 | "has been made imperative in view of",
257 | "provides the context for",
258 | "underpins the importance of",
259 | "focuses our attention on",
260 | "will require a substantial amount of effort. |A |B |C",
261 | "represents a different business risk. |A |B |C",
262 | "is of considerable importance from the production aspect. |A |B |C",
263 | "should facilitate information exchange. |A |B |C",
264 | "has the intrinsic benefit of resilience, unlike the",
265 | "cannot be shown to be relevant. This is in contrast to",
266 | "cannot always help us. |A |B |C",
267 | "|C |D. A priority should be established based on a combination of |c and |c",
268 | "|C |D. The objective of the |c is to delineate",
269 | "shows an interesting ambivalence with",
270 | "underlines the essential paradigm of",
271 | "can be taken in juxtaposition with",
272 | "provides an interesting insight into",
273 | "must seem over simplistic in the light of",
274 | "seems to |e reinforce the importance of",
275 | "leads clearly to the rejection of the supremacy of",
276 | "allows us to see the clear significance of",
277 | "underlines the significance of",
278 | "reinforces the weaknesses in",
279 | "confuses the |c and",
280 | "|d the |c and",
281 | "|d",
282 | "|d",
283 | "|d",
284 | "|d",
285 | "|d",
286 | "|d",
287 | "provides a harmonic integration with",
288 | "is constantly directing the course of",
289 | "must intrinsically determine",
290 | "has fundamental repercussions for",
291 | "provides an idealized framework for",
292 | "|e alters the importance of",
293 | "|e changes the interrelationship between the|c and",
294 | "|e legitimises the significance of",
295 | "must utilize and be functionally interwoven with",
296 | "|d the probability of project success and",
297 | "|e |d the |c and",
298 | "|e |d the |c and",
299 | "|e |d the |c and",
300 | "|e |d the |c in its relationship with",
301 | "|d the dangers quite |e of",
302 | "has confirmed an expressed desire for",
303 | "is reciprocated by",
304 | "has no other function than to provide",
305 | "adds explicit performance limits to",
306 | "must be considered proactively, rather than reactively, in the light of",
307 | "necessitates that urgent consideration be applied to",
308 | "requires considerable systems analysis and trade-off studies to arrive at",
309 | "provides a heterogeneous environment to",
310 | "cannot compare in its potential exigencies with",
311 | "is further compounded, when taking into account",
312 | "presents extremely interesting challenges to",
313 | "|d the importance of other systems and the necessity for",
314 | "provides one of the dominant factors of",
315 | "forms the basis for",
316 | "enhances the efficiency of",
317 | "develops a vision to leverage",
318 | "produces diagnostic feedback to",
319 | "capitalises on the strengths of",
320 | "effects a significant implementation of",
321 | "seems to counterpoint",
322 | "adds overriding performance constraints to",
323 | "manages to subsume",
324 | "provides a balanced perspective to",
325 | "rivals, in terms of resource implications,",
326 | "contrives through the medium of the |c to emphasize",
327 | "can be developed in parallel with",
328 | "commits resources to",
329 | "confounds the essential conformity of",
330 | "provides the bridge between the |c and",
331 | "should be provided to expedite investigation into",
332 | "poses problems and challenges for both the |c and",
333 | "should not divert attention from",
334 | "provides an insight into",
335 | "has considerable manpower implications when considered in the light of",
336 | "may mean a wide diffusion of the |c into",
337 | "makes little difference to",
338 | "focuses our attention on",
339 | "exceeds the functionality of",
340 | "recognizes deficiencies in",
341 | "needs to be factored into the equation alongside the",
342 | "needs to be addressed along with the"
343 | ];
344 |
345 | public static string[] objectPhrases =
346 | [
347 | "the overall game-plan",
348 | "the slippery slope",
349 | "the strategic fit",
350 | "The total quality objectives",
351 | "the |c. This should be considered in the light of the |c",
352 | "the |c. One must therefore dedicate resources to the |c immediately.",
353 | "the |c on a strictly limited basis",
354 | "this |c. This should present few practical problems",
355 | "what should be termed the |c",
356 | "the applicability and value of the |c",
357 | "the |c or the |c",
358 | "the negative aspects of any |c",
359 | "an unambiguous concept of the |c",
360 | "the thematic reconstruction of |c",
361 | "the scientific |o of the |c",
362 | "the evolution of |2 |o over a given time limit",
363 | "any commonality between the |c and the |c",
364 | "the greater |c of the |c",
365 | "the universe of |o",
366 | "any discrete or |2 configuration mode",
367 | "the |4",
368 | "an elemental change in the |c",
369 | "the work being done at the 'coal-face'",
370 | "what is beginning to be termed the \"|c\"",
371 | "the |c. We need to be able to rationalize |D",
372 | "the |c. We can then |e play back our understanding of |D",
373 | "the |c. Everything should be done to expedite |D",
374 | "The |c. The advent of the |c |e |d |D",
375 | "the |c. The |c makes this |e inevitable",
376 | "the |c. The |3 is of a |2 nature",
377 | "the |c. This may be due to a lack of a |c.",
378 | "the |c. Therefore a maximum of flexibility is required",
379 | "any |c. This can be deduced from the |c",
380 | "the |c. This may |e flounder on the |c",
381 | "the |c. This may explain why the |c |e |d |D",
382 | "the |c. This trend may dissipate due to the |c"
383 | ];
384 |
385 | public static string[] adverbs =
386 | [
387 | "substantively",
388 | "intuitively",
389 | "uniquely",
390 | "semantically",
391 | "necessarily",
392 | "stringently",
393 | "precisely",
394 | "rigorously",
395 | "broadly",
396 | "generally",
397 | "implicitly",
398 | "inherently",
399 | "presumably",
400 | "preeminently",
401 | "analytically",
402 | "logically",
403 | "ontologically",
404 | "wholly",
405 | "basically",
406 | "demonstrably",
407 | "strictly",
408 | "functionally",
409 | "radically",
410 | "definitely",
411 | "positively",
412 | "intrinsically",
413 | "generally",
414 | "overwhelmingly",
415 | "essentially",
416 | "vitally",
417 | "operably",
418 | "fundamentally",
419 | "significantly",
420 | "retroactively",
421 | "retrospectively",
422 | "globally",
423 | "clearly",
424 | "disconcertingly"
425 | ];
426 |
427 | public static string[] verbs =
428 | [
429 | "stimulates",
430 | "spreads",
431 | "improves",
432 | "energises",
433 | "emphasizes",
434 | "subordinates",
435 | "posits",
436 | "perceives",
437 | "de-stabilizes",
438 | "Revisits",
439 | "connotes",
440 | "signifies",
441 | "indicates",
442 | "increases",
443 | "supports",
444 | "rationalises",
445 | "provokes",
446 | "de-actualises",
447 | "relocates",
448 | "yields",
449 | "implies",
450 | "designates",
451 | "reflects",
452 | "sustains",
453 | "supplements",
454 | "represents",
455 | "re-iterates",
456 | "juxtaposes",
457 | "provides",
458 | "maximizes",
459 | "identifies",
460 | "furnishes",
461 | "supplies",
462 | "affords",
463 | "yields",
464 | "formulates",
465 | "focuses on",
466 | "depicts",
467 | "embodies",
468 | "exemplifies",
469 | "expresses",
470 | "personifies",
471 | "symbolizes",
472 | "typifies",
473 | "replaces",
474 | "supplants",
475 | "denotes",
476 | "depicts",
477 | "expresses",
478 | "illustrates",
479 | "implies",
480 | "symbolizes",
481 | "delineates",
482 | "depicts",
483 | "illustrates",
484 | "portrays",
485 | "clarifies",
486 | "depicts",
487 | "interprets",
488 | "delineates",
489 | "reflects",
490 | "evinces",
491 | "expresses",
492 | "indicates",
493 | "manifests",
494 | "reveals",
495 | "shows",
496 | "delineates",
497 | "represents",
498 | "anticipates",
499 | "denotes",
500 | "identifies",
501 | "indicates",
502 | "symbolizes",
503 | "diminishes",
504 | "lessens",
505 | "represses",
506 | "suppresses",
507 | "weakens",
508 | "accentuates",
509 | "amplifies",
510 | "heightens",
511 | "highlights",
512 | "spotlights",
513 | "stresses",
514 | "underlines",
515 | "underscores",
516 | "asserts",
517 | "reiterates",
518 | "restates",
519 | "stresses",
520 | "enhances",
521 | "amends",
522 | "translates",
523 | "specifies"
524 | ];
525 |
526 | public static string[] firstAdjectivePhrases =
527 | [
528 | "comprehensive",
529 | "targeted",
530 | "realigned",
531 | "client focussed",
532 | "best practice",
533 | "value added",
534 | "quality driven",
535 | "basic",
536 | "principal",
537 | "central",
538 | "essential",
539 | "primary",
540 | "indicative",
541 | "continuous",
542 | "critical",
543 | "prevalent",
544 | "preeminent",
545 | "unequivocal",
546 | "sanctioned",
547 | "logical",
548 | "reproducible",
549 | "methodological",
550 | "relative",
551 | "integrated",
552 | "fundamental",
553 | "cohesive",
554 | "interactive",
555 | "comprehensive",
556 | "critical",
557 | "potential",
558 | "vibrant",
559 | "total",
560 | "additional",
561 | "secondary",
562 | "primary",
563 | "heuristic",
564 | "complex",
565 | "pivotal",
566 | "quasi-effectual",
567 | "dominant",
568 | "characteristic",
569 | "ideal",
570 | "doctrine of the",
571 | "key",
572 | "independent",
573 | "deterministic",
574 | "assumptions about the",
575 | "heuristic",
576 | "crucial",
577 | "meaningful",
578 | "implicit",
579 | "analogous",
580 | "explicit",
581 | "integrational",
582 | "non-viable",
583 | "directive",
584 | "consultative",
585 | "collaborative",
586 | "delegative",
587 | "tentative",
588 | "privileged",
589 | "common",
590 | "hypothetical",
591 | "metathetical",
592 | "marginalised",
593 | "systematised",
594 | "evolutional",
595 | "parallel",
596 | "functional",
597 | "responsive",
598 | "optical",
599 | "inductive",
600 | "objective",
601 | "synchronised",
602 | "compatible",
603 | "prominent",
604 | "three-phase",
605 | "two-phase",
606 | "balanced",
607 | "legitimate",
608 | "subordinated",
609 | "complementary",
610 | "proactive",
611 | "truly global",
612 | "interdisciplinary",
613 | "homogeneous",
614 | "hierarchical",
615 | "technical",
616 | "alternative",
617 | "strategic",
618 | "environmental",
619 | "closely monitored",
620 | "three-tier",
621 | "inductive",
622 | "fully integrated",
623 | "fully interactive",
624 | "ad-hoc",
625 | "ongoing",
626 | "proactive",
627 | "dynamic",
628 | "flexible",
629 | "verifiable",
630 | "falsifiable",
631 | "transitional",
632 | "mechanism-independent",
633 | "synergistic",
634 | "high-level"
635 | ];
636 |
637 | public static string[] secondAdjectivePhrases =
638 | [
639 | "fast-track",
640 | "transparent",
641 | "results-driven",
642 | "subsystem",
643 | "test",
644 | "configuration",
645 | "mission",
646 | "functional",
647 | "referential",
648 | "numinous",
649 | "paralyptic",
650 | "radical",
651 | "paratheoretical",
652 | "consistent",
653 | "macro",
654 | "interpersonal",
655 | "auxiliary",
656 | "empirical",
657 | "theoretical",
658 | "corroborated",
659 | "management",
660 | "organizational",
661 | "monitored",
662 | "consensus",
663 | "reciprocal",
664 | "unprejudiced",
665 | "digital",
666 | "logic",
667 | "transitional",
668 | "incremental",
669 | "equivalent",
670 | "universal",
671 | "sub-logical",
672 | "hypothetical",
673 | "conjectural",
674 | "conceptual",
675 | "empirical",
676 | "spatio-temporal",
677 | "third-generation",
678 | "epistemological",
679 | "diffusible",
680 | "specific",
681 | "non-referent",
682 | "overriding",
683 | "politico-strategical",
684 | "economico-social",
685 | "on-going",
686 | "extrinsic",
687 | "intrinsic",
688 | "multi-media",
689 | "integrated",
690 | "effective",
691 | "overall",
692 | "principal",
693 | "prime",
694 | "major",
695 | "empirical",
696 | "definitive",
697 | "explicit",
698 | "determinant",
699 | "precise",
700 | "cardinal",
701 | "principal",
702 | "affirming",
703 | "harmonizing",
704 | "central",
705 | "essential",
706 | "primary",
707 | "indicative",
708 | "mechanistic",
709 | "continuous",
710 | "critical",
711 | "prevalent",
712 | "preeminent",
713 | "unequivocal",
714 | "sanctioned",
715 | "logical",
716 | "reproducible",
717 | "methodological",
718 | "relative",
719 | "integrated",
720 | "fundamental",
721 | "cohesive",
722 | "interactive",
723 | "comprehensive",
724 | "critical",
725 | "potential",
726 | "total",
727 | "additional",
728 | "secondary",
729 | "primary",
730 | "heuristic",
731 | "complex",
732 | "pivotal",
733 | "quasi-effectual",
734 | "dominant",
735 | "characteristic",
736 | "ideal",
737 | "independent",
738 | "deterministic",
739 | "heuristic",
740 | "crucial",
741 | "meaningful",
742 | "implicit",
743 | "analogous",
744 | "explicit",
745 | "integrational",
746 | "directive",
747 | "collaborative",
748 | "entative",
749 | "privileged",
750 | "common",
751 | "hypothetical",
752 | "metathetical",
753 | "marginalised",
754 | "systematised",
755 | "evolutional",
756 | "parallel",
757 | "functional",
758 | "responsive",
759 | "optical",
760 | "inductive",
761 | "objective",
762 | "synchronised",
763 | "compatible",
764 | "prominent",
765 | "legitimate",
766 | "subordinated",
767 | "complementary",
768 | "homogeneous",
769 | "hierarchical",
770 | "alternative",
771 | "environmental",
772 | "inductive",
773 | "transitional",
774 | "Philosophical",
775 | "latent",
776 | "conscious",
777 | "practical",
778 | "temperamental",
779 | "impersonal",
780 | "personal",
781 | "subjective",
782 | "objective",
783 | "dynamic",
784 | "inclusive",
785 | "paradoxical",
786 | "pure",
787 | "central",
788 | "psychic",
789 | "associative",
790 | "intuitive",
791 | "free-floating",
792 | "empirical",
793 | "superficial",
794 | "predominant",
795 | "actual",
796 | "mutual",
797 | "arbitrary",
798 | "inevitable",
799 | "immediate",
800 | "affirming",
801 | "functional",
802 | "referential",
803 | "numinous",
804 | "paralyptic",
805 | "radical",
806 | "paratheoretical",
807 | "consistent",
808 | "interpersonal",
809 | "auxiliary",
810 | "empirical",
811 | "theoretical",
812 | "reciprocal",
813 | "unprejudiced",
814 | "transitional",
815 | "incremental",
816 | "equivalent",
817 | "universal",
818 | "sub-logical",
819 | "hypothetical",
820 | "conjectural",
821 | "conceptual",
822 | "empirical",
823 | "spatio-temporal",
824 | "epistemological",
825 | "diffusible",
826 | "specific",
827 | "non-referent",
828 | "overriding",
829 | "politico-strategical",
830 | "economico-social",
831 | "on-going",
832 | "extrinsic",
833 | "intrinsic",
834 | "effective",
835 | "principal",
836 | "prime",
837 | "major",
838 | "empirical",
839 | "definitive",
840 | "explicit",
841 | "determinant",
842 | "precise",
843 | "cardinal",
844 | "geometric",
845 | "naturalistic",
846 | "linear",
847 | "distinctive",
848 | "phylogenetic",
849 | "ethical",
850 | "theoretical",
851 | "economic",
852 | "aesthetic",
853 | "personal",
854 | "social",
855 | "discordant",
856 | "political",
857 | "religious",
858 | "artificial",
859 | "collective",
860 | "permanent",
861 | "metaphysical",
862 | "organic",
863 | "mensurable",
864 | "expressive",
865 | "governing",
866 | "subjective",
867 | "empathic",
868 | "imaginative",
869 | "ethical",
870 | "expressionistic",
871 | "resonant",
872 | "vibrant"
873 | ];
874 |
875 | public static string[] nounPhrases =
876 | [
877 | "|o",
878 | "|o",
879 | "|o",
880 | "|o",
881 | "|o",
882 | "|o",
883 | "|o",
884 | "|o",
885 | "|o",
886 | "|o",
887 | "|o",
888 | "|o",
889 | "|o",
890 | "|o",
891 | "|o",
892 | "|o",
893 | "|o",
894 | "|o",
895 | "|o",
896 | "|o",
897 | "|o",
898 | "|o",
899 | "|o",
900 | "|o",
901 | "|o",
902 | "|o",
903 | "|o",
904 | "|o",
905 | "|o",
906 | "|o",
907 | "development",
908 | "program",
909 | "baseline",
910 | "reconstruction",
911 | "discordance",
912 | "monologism",
913 | "substructure",
914 | "legitimisation",
915 | "principle",
916 | "constraints",
917 | "management option",
918 | "strategy",
919 | "transposition",
920 | "auto-interruption",
921 | "derivation",
922 | "option",
923 | "flexibility",
924 | "proposal",
925 | "formulation",
926 | "item",
927 | "issue",
928 | "capability",
929 | "mobility",
930 | "programming",
931 | "concept",
932 | "time-phase",
933 | "dimension",
934 | "faculty",
935 | "capacity",
936 | "proficiency",
937 | "reciprocity",
938 | "fragmentation",
939 | "consolidation",
940 | "projection",
941 | "interface",
942 | "hardware",
943 | "contingency",
944 | "dialog",
945 | "dichotomy",
946 | "concept",
947 | "parameter",
948 | "algorithm",
949 | "milieu",
950 | "terms of reference",
951 | "item",
952 | "vibrancy",
953 | "reaction",
954 | "casuistry",
955 | "theme",
956 | "teleology",
957 | "symbolism",
958 | "resource allocation",
959 | "certification project",
960 | "functionality",
961 | "specification",
962 | "matrix",
963 | "rationalization",
964 | "consolidation",
965 | "remediation",
966 | "facilitation",
967 | "simulation",
968 | "evaluation",
969 | "competence",
970 | "familiarisation",
971 | "transformation",
972 | "apriorism",
973 | "conventionalism",
974 | "verification",
975 | "functionality",
976 | "component",
977 | "factor",
978 | "antitheseis",
979 | "desiderata",
980 | "metaphor",
981 | "metalanguage",
982 | "globalisation",
983 | "initiative",
984 | "projection",
985 | "partnership",
986 | "priority",
987 | "service",
988 | "support",
989 | "best-practice",
990 | "change",
991 | "delivery",
992 | "funding",
993 | "resources"
994 | ];
995 |
996 | public static string[] cliches =
997 | [
998 | "|o of |o",
999 | "|o of |o",
1000 | "|o of |o",
1001 | "|o of |o",
1002 | "|o of |o",
1003 | "|o of |o",
1004 | "|o of |o",
1005 | "|o of |o",
1006 | "development strategy",
1007 | "decision support",
1008 | "fourth-generation environment",
1009 | "application systems",
1010 | "feedback process",
1011 | "function hierarchy analysis",
1012 | "structured business analysis",
1013 | "base information",
1014 | "final consolidation",
1015 | "design criteria",
1016 | "iterative design process",
1017 | "common interface",
1018 | "ongoing support",
1019 | "relational flexibility",
1020 | "referential integrity",
1021 | "strategic framework",
1022 | "dynamic systems strategy",
1023 | "functional decomposition",
1024 | "operational situation",
1025 | "individual action plan",
1026 | "key behavioural skills",
1027 | "set of constraints",
1028 | "structure plan",
1029 | "contingency planning",
1030 | "resource planning",
1031 | "participant feedback",
1032 | "referential function",
1033 | "passive result",
1034 | "aims and constraints",
1035 | "strategic opportunity",
1036 | "development of systems resource",
1037 | "major theme of the |c",
1038 | "technical coherence",
1039 | "cost-effective application",
1040 | "high leverage area",
1041 | "key leveraging technology",
1042 | "known strategic opportunity",
1043 | "internal resource capability",
1044 | "interactive concern-control system",
1045 | "key technology",
1046 | "prime objective",
1047 | "key area of opportunity",
1048 | "present infrastructure",
1049 | "enabling technology",
1050 | "key objective",
1051 | "areas of particular expertise",
1052 | "overall business benefit",
1053 | "competitive practice and technology",
1054 | "flexible manufacturing system",
1055 | "adequate resource level",
1056 | "|e sophisticated hardware",
1057 | "external agencies",
1058 | "anticipated fourth-generation equipment",
1059 | "maintenance of current standards",
1060 | "adequate development of any necessary measures",
1061 | "critical component in the",
1062 | "active process of information gathering",
1063 | "general milestones",
1064 | "adequate timing control",
1065 | "quantitative and discrete targets",
1066 | "subsystem compatibility testing",
1067 | "structural design, based on system engineering concepts",
1068 | "key principles behind the |c",
1069 | "constraints of manpower resourcing",
1070 | "necessity for budgetary control",
1071 | "discipline of resource planning",
1072 | "diverse hardware environment",
1073 | "product lead times",
1074 | "access to corporate systems",
1075 | "overall certification project",
1076 | "commitment to industry standards",
1077 | "general increase in office efficiency",
1078 | "preliminary qualification limit",
1079 | "calculus of consequence",
1080 | "corollary",
1081 | "reverse image",
1082 | "logical data structure",
1083 | "philosophy of commonality and standardization",
1084 | "impact on overall performance",
1085 | "multilingual cynicism",
1086 | "functional synergy",
1087 | "backbone of connectivity",
1088 | "integrated set of requirements",
1089 | "ongoing |3 philosophy",
1090 | "strategic requirements",
1091 | "integration of |c with strategic initiatives",
1092 | "established analysis and design methodology",
1093 | "corporate information exchange",
1094 | "separate roles and significances of the |c",
1095 | "formal strategic direction",
1096 | "integrated set of facilities",
1097 | "appreciation of vested responsibilities",
1098 | "potential globalisation candidate",
1099 | "tentative priority",
1100 | "performance objectives",
1101 | "global business practice",
1102 | "functionality matrix",
1103 | "priority sequence",
1104 | "system elements",
1105 | "life cycle phase",
1106 | "operations scenario",
1107 | "total system rationale",
1108 | "conceptual baseline",
1109 | "incremental delivery",
1110 | "requirements hierarchy",
1111 | "functional baseline",
1112 | "system critical design",
1113 | "capability constraint",
1114 | "matrix of supporting elements",
1115 | "lead group concept",
1116 | "dominant factor",
1117 | "modest correction",
1118 | "element of volatility",
1119 | "inevitability of amelioration",
1120 | "attenuation of subsequent feedback",
1121 | "chance of entropy within the system",
1122 | "associated supporting element",
1123 | "intrinsic homeostasis within the metasystem",
1124 | "characterization of specific information",
1125 | "organization structure",
1126 | "constant flow of effective information",
1127 | "key business objectives",
1128 | "life cycle",
1129 | "large portion of the co-ordination of communication",
1130 | "corporate procedure",
1131 | "proposed scenario"
1132 | ];
1133 |
1134 | public static string[] prefixes =
1135 | [
1136 | "the",
1137 | "the",
1138 | "the",
1139 | "the",
1140 | "the",
1141 | "the",
1142 | "the",
1143 | "the",
1144 | "the",
1145 | "any",
1146 | "any",
1147 | "what might be described as the",
1148 | "what amounts to the",
1149 | "a large proportion of the",
1150 | "what has been termed the",
1151 | "a unique facet of the",
1152 | "a significant aspect of the",
1153 | "the all-inclusiveness of the",
1154 | "any inherent dangers of the",
1155 | "the obvious necessity for the",
1156 | "the basis of any",
1157 | "the basis of the",
1158 | "any formalization of the",
1159 | "the quest for the",
1160 | "any significant enhancements in the",
1161 | "the underlying surrealism of the",
1162 | "the feasibility of the",
1163 | "the requirements of",
1164 | "an implementation strategy for",
1165 | "any fundamental dichotomies of the",
1166 | "a concept of what we have come to call the",
1167 | "the infrastructure of the",
1168 | "a proven solution to the",
1169 | "a percentage of the",
1170 | "a proportion of the",
1171 | "an issue of the",
1172 | "any consideration of the",
1173 | "a factor within the",
1174 | "the adequate functionality of the",
1175 | "the principle of the",
1176 | "the constraints of the",
1177 | "a realization the importance of the",
1178 | "the criterion of",
1179 | "a unique facet of",
1180 | "the consolidation of the",
1181 | "a preponderance of the"
1182 | ];
1183 |
1184 | public static string[] artyNouns =
1185 | [
1186 | "discordance",
1187 | "legitimisation",
1188 | "principle",
1189 | "transposition",
1190 | "dimension",
1191 | "reciprocity",
1192 | "fragmentation",
1193 | "projection",
1194 | "dichotomy",
1195 | "concept",
1196 | "theme",
1197 | "teleology",
1198 | "symbolism",
1199 | "transformation",
1200 | "antithesis",
1201 | "desiderata",
1202 | "metaphor",
1203 | "metalanguage",
1204 | "reciprocity",
1205 | "consciousness",
1206 | "feeling",
1207 | "fact",
1208 | "individuality",
1209 | "comparison",
1210 | "awareness",
1211 | "expression",
1212 | "appreciation",
1213 | "correspondence",
1214 | "interpretation",
1215 | "interpolation",
1216 | "interpenetration",
1217 | "statement",
1218 | "emphasis",
1219 | "feeling",
1220 | "empathy",
1221 | "sensibility",
1222 | "insight",
1223 | "attitude",
1224 | "consciousness",
1225 | "absorption",
1226 | "self-forgetfulness",
1227 | "parallelism",
1228 | "classification",
1229 | "evidence",
1230 | "aspect",
1231 | "distinction",
1232 | "idealism",
1233 | "naturalism",
1234 | "disposition",
1235 | "apprehension",
1236 | "morality",
1237 | "object",
1238 | "idealism",
1239 | "quality",
1240 | "romanticism",
1241 | "realism",
1242 | "idealism",
1243 | "quality",
1244 | "transposition",
1245 | "determinism",
1246 | "attitude",
1247 | "terminology",
1248 | "individuality",
1249 | "category",
1250 | "integration",
1251 | "concept",
1252 | "phenomenon",
1253 | "element",
1254 | "analogy",
1255 | "perception",
1256 | "principle",
1257 | "aesthetic",
1258 | "spirituality",
1259 | "aspiration",
1260 | "quality",
1261 | "disposition",
1262 | "subjectivism",
1263 | "objectivism",
1264 | "contemplation",
1265 | "vivacity",
1266 | "feeling",
1267 | "empathy",
1268 | "value",
1269 | "sensation",
1270 | "causation",
1271 | "affectability",
1272 | "impulse",
1273 | "attitude",
1274 | "sensibility",
1275 | "material",
1276 | "aspect",
1277 | "problem",
1278 | "implication",
1279 | "hierarchy",
1280 | "process",
1281 | "provenance",
1282 | "discord",
1283 | "milieu"
1284 | ];
1285 |
1286 | public static string[] surnames =
1287 | [
1288 | "Bennet",
1289 | "Blotchet-Halls",
1290 | "Carson",
1291 | "Clarke",
1292 | "DeFrance",
1293 | "del Castillo",
1294 | "Dull",
1295 | "Green",
1296 | "Greene",
1297 | "Gringlesby",
1298 | "Hunter",
1299 | "Karsen",
1300 | "Locksley",
1301 | "MacFeather",
1302 | "McBadden",
1303 | "O'Leary",
1304 | "Panteley",
1305 | "Poel",
1306 | "Powys-Lybbe",
1307 | "Smith",
1308 | "Straight",
1309 | "Stringer",
1310 | "White",
1311 | "Yokomoto"
1312 | ];
1313 |
1314 | public static string[] forenames =
1315 | [
1316 | "Abraham",
1317 | "Reginald",
1318 | "Cheryl",
1319 | "Michel",
1320 | "Innes",
1321 | "Ann",
1322 | "Marjorie",
1323 | "Matthew",
1324 | "Mark",
1325 | "Luke",
1326 | "John",
1327 | "Burt",
1328 | "Lionel",
1329 | "Humphrey",
1330 | "Andrew",
1331 | "Jenny",
1332 | "Sheryl",
1333 | "Livia",
1334 | "Charlene",
1335 | "Winston",
1336 | "Heather",
1337 | "Michael",
1338 | "Sylvia",
1339 | "Albert",
1340 | "Anne",
1341 | "Meander",
1342 | "Dean",
1343 | "Dirk",
1344 | "Desmond",
1345 | "Akiko"
1346 | ];
1347 |
1348 | public static string[] buzzPhrases =
1349 | [
1350 | "|1 |2 |3",
1351 | "|1 |2 |3",
1352 | "|2 |3",
1353 | "|1 |2 |3",
1354 | "|1 |2 |3",
1355 | "|4",
1356 | "|4"
1357 | ];
1358 |
1359 | public static string[] cardinalSequences =
1360 | [
1361 | "one",
1362 | "two",
1363 | "three",
1364 | "four",
1365 | "five",
1366 | "six",
1367 | "seven",
1368 | "eight",
1369 | "nine",
1370 | "ten",
1371 | "eleven",
1372 | "twelve"
1373 | ];
1374 |
1375 | public static string[] ordinalSequences =
1376 | [
1377 | "first",
1378 | "second",
1379 | "third",
1380 | "fourth",
1381 | "fifth"
1382 | ];
1383 |
1384 | public static string[] maybeHeading =
1385 | [
1386 | "",
1387 | "",
1388 | "The |uc.",
1389 | ""
1390 | ];
1391 |
1392 | public static bool[] maybeParagraph =
1393 | [
1394 | false,
1395 | false,
1396 | true,
1397 | false
1398 | ];
1399 | }
--------------------------------------------------------------------------------
/src/WaffleGenerator/Extensions.cs:
--------------------------------------------------------------------------------
1 | static class Extensions
2 | {
3 | public static bool EndsWith(this StringBuilder builder, params char[] chars)
4 | {
5 | for (var i = builder.Length - 1; i != -1; i--)
6 | {
7 | var builderChar = builder[i];
8 | if (char.IsWhiteSpace(builderChar))
9 | {
10 | continue;
11 | }
12 |
13 | foreach (var c in chars)
14 | {
15 | if (c == builderChar)
16 | {
17 | return true;
18 | }
19 | }
20 |
21 | return false;
22 | }
23 |
24 | return false;
25 | }
26 | }
--------------------------------------------------------------------------------
/src/WaffleGenerator/Heading.cs:
--------------------------------------------------------------------------------
1 | record Heading(string Quote, string Cite, string Buzz, string Title);
--------------------------------------------------------------------------------
/src/WaffleGenerator/InnerEngine.cs:
--------------------------------------------------------------------------------
1 | using System.Globalization;
2 |
3 | class InnerEngine(Func random)
4 | {
5 | int cardinalSequence;
6 | int ordinalSequence;
7 | string? title;
8 | string? quote;
9 | string? cite;
10 | string? buzz;
11 | List paragraphs = [];
12 |
13 | void EvaluateRandomPhrase(string[] phrases, StringBuilder output)
14 | {
15 | var index = random(phrases.Length);
16 | EvaluatePhrase(phrases[index], output);
17 | }
18 |
19 | void EvaluatePhrase(string phrase, StringBuilder result)
20 | {
21 | for (var i = 0; i < phrase.Length; i++)
22 | {
23 | if (phrase[i] == '|' && i + 1 < phrase.Length)
24 | {
25 | i++;
26 |
27 | if (phrase[i] == 'u' && i + 1 < phrase.Length)
28 | {
29 | var escape = new StringBuilder();
30 | i++;
31 | EvaluateChar(phrase[i], escape);
32 | result.Append(TitleCaseWords(escape.ToString()));
33 | }
34 | else
35 | {
36 | EvaluateChar(phrase[i], result);
37 | }
38 | }
39 | else
40 | {
41 | if (i == 0 && HasSentenceEnded(result))
42 | {
43 | result.Append(char.ToUpper(phrase[i]));
44 | }
45 | else
46 | {
47 | result.Append(phrase[i]);
48 | }
49 | }
50 | }
51 | }
52 |
53 | void EvaluateChar(char c, StringBuilder builder)
54 | {
55 | switch (c)
56 | {
57 | case 'a':
58 | EvaluateCardinalSequence(builder);
59 | break;
60 | case 'b':
61 | EvaluateOrdinalSequence(builder);
62 | break;
63 | case 'c':
64 | EvaluateRandomPhrase(Constants.buzzPhrases, builder);
65 | break;
66 | case 'd':
67 | EvaluateRandomPhrase(Constants.verbs, builder);
68 | break;
69 | case 'e':
70 | EvaluateRandomPhrase(Constants.adverbs, builder);
71 | break;
72 | case 'f':
73 | EvaluateRandomPhrase(Constants.forenames, builder);
74 | break;
75 | case 's':
76 | EvaluateRandomPhrase(Constants.surnames, builder);
77 | break;
78 | case 'o':
79 | EvaluateRandomPhrase(Constants.artyNouns, builder);
80 | break;
81 | case 'y':
82 | RandomDate(builder);
83 | break;
84 | case 'h':
85 | EvaluateRandomPhrase(Constants.prefixes, builder);
86 | break;
87 | case 'A':
88 | EvaluateRandomPhrase(Constants.preamblePhrases, builder);
89 | break;
90 | case 'B':
91 | EvaluateRandomPhrase(Constants.subjectPhrases, builder);
92 | break;
93 | case 'C':
94 | EvaluateRandomPhrase(Constants.verbPhrases, builder);
95 | break;
96 | case 'D':
97 | EvaluateRandomPhrase(Constants.objectPhrases, builder);
98 | break;
99 | case '1':
100 | EvaluateRandomPhrase(Constants.firstAdjectivePhrases, builder);
101 | break;
102 | case '2':
103 | EvaluateRandomPhrase(Constants.secondAdjectivePhrases, builder);
104 | break;
105 | case '3':
106 | EvaluateRandomPhrase(Constants.nounPhrases, builder);
107 | break;
108 | case '4':
109 | EvaluateRandomPhrase(Constants.cliches, builder);
110 | break;
111 | case 't':
112 | builder.Append(title);
113 | break;
114 | }
115 | }
116 |
117 | static bool HasSentenceEnded(StringBuilder result) =>
118 | result.EndsWith('.', '>');
119 |
120 | void EvaluateCardinalSequence(StringBuilder output)
121 | {
122 | if (cardinalSequence >= Constants.cardinalSequences.Length)
123 | {
124 | cardinalSequence = 0;
125 | }
126 |
127 | output.Append(Constants.cardinalSequences[cardinalSequence++]);
128 | }
129 |
130 | void EvaluateOrdinalSequence(StringBuilder output)
131 | {
132 | if (ordinalSequence >= Constants.ordinalSequences.Length)
133 | {
134 | ordinalSequence = 0;
135 | }
136 |
137 | output.Append(Constants.ordinalSequences[ordinalSequence++]);
138 | }
139 |
140 | void RandomDate(StringBuilder output) =>
141 | output.AppendFormat("{0:04u}", DateTime.Now.Year - random(31));
142 |
143 | static string TitleCaseWords(string input) =>
144 | CultureInfo.CurrentCulture.TextInfo.ToTitleCase(input);
145 |
146 | public WaffleContent GetContent(int paragraphsCount, bool includeHeading)
147 | {
148 | cardinalSequence = 0;
149 | ordinalSequence = 0;
150 | Heading? heading = null;
151 | if (includeHeading)
152 | {
153 | title = BuildTitle();
154 | var quoteBuilder = new StringBuilder();
155 | EvaluatePhrase("|A |B |C |t", quoteBuilder);
156 | quote = quoteBuilder.ToString();
157 | var citeBuilder = new StringBuilder();
158 | EvaluatePhrase("|f |s in The Journal of the |uc (|uy)", citeBuilder);
159 | cite = citeBuilder.ToString();
160 | var buzzBuilder = new StringBuilder();
161 | EvaluatePhrase("|c.", buzzBuilder);
162 | buzz = buzzBuilder.ToString();
163 | heading = new(quote, cite, buzz, title);
164 | }
165 |
166 | for (var i = 0; i < paragraphsCount; i++)
167 | {
168 | string? paragraphHeading = null;
169 | if (i != 0)
170 | {
171 | var headingBuilder = new StringBuilder();
172 | EvaluateRandomPhrase(Constants.maybeHeading, headingBuilder);
173 | paragraphHeading = headingBuilder.ToString();
174 | if (string.IsNullOrWhiteSpace(paragraphHeading))
175 | {
176 | paragraphHeading = null;
177 | }
178 | }
179 |
180 | var bodyBuilder = new StringBuilder();
181 | EvaluatePhrase("|A |B |C |D.", bodyBuilder);
182 | var paragraph = new Paragraph(paragraphHeading, bodyBuilder.ToString());
183 | paragraphs.Add(paragraph);
184 | }
185 |
186 | return new(heading, paragraphs);
187 | }
188 |
189 | public string BuildTitle()
190 | {
191 | var builder = new StringBuilder();
192 | EvaluatePhrase("the |o of |2 |o", builder);
193 |
194 | return TitleCaseWords(builder.ToString());
195 | }
196 | }
--------------------------------------------------------------------------------
/src/WaffleGenerator/Paragraph.cs:
--------------------------------------------------------------------------------
1 | record Paragraph(string? Heading, string Body);
2 |
--------------------------------------------------------------------------------
/src/WaffleGenerator/WaffleContent.cs:
--------------------------------------------------------------------------------
1 | record WaffleContent(Heading? Heading, List Paragraphs);
--------------------------------------------------------------------------------
/src/WaffleGenerator/WaffleEngine.cs:
--------------------------------------------------------------------------------
1 | namespace WaffleGenerator;
2 |
3 | public static class WaffleEngine
4 | {
5 | public static string Html(int seed, int paragraphs, bool includeHeading, bool includeHeadAndBody) =>
6 | Html(new Random(seed), paragraphs, includeHeading, includeHeadAndBody);
7 |
8 | public static string Html(int paragraphs, bool includeHeading, bool includeHeadAndBody) =>
9 | Html(new Random(), paragraphs, includeHeading, includeHeadAndBody);
10 |
11 | public static string Html(Random random, int paragraphs, bool includeHeading, bool includeHeadAndBody) =>
12 | Html(_ => random.Next(0, _), paragraphs, includeHeading, includeHeadAndBody);
13 |
14 | public static string Html(Func random, int paragraphs, bool includeHeading, bool includeHeadAndBody)
15 | {
16 | var builder = new StringBuilder();
17 | var innerEngine = new InnerEngine(random);
18 | var waffleContent = innerEngine.GetContent(paragraphs, includeHeading);
19 |
20 | var heading = waffleContent.Heading;
21 | if (heading != null)
22 | {
23 | if (includeHeadAndBody)
24 | {
25 | builder.AppendLine(
26 | $"""
27 |
28 |
29 | {heading.Title}
30 |
31 |
32 | """);
33 | }
34 |
35 | builder.AppendLine(
36 | $"""
37 | {heading.Title}
38 | '{heading.Quote}'
39 | {heading.Cite}
40 | {heading.Buzz}
41 | """);
42 | }
43 |
44 | foreach (var paragraph in waffleContent.Paragraphs)
45 | {
46 | builder.AppendLine("");
47 | if (paragraph.Heading != null)
48 | {
49 | builder.AppendLine($"
{paragraph.Heading}
");
50 | }
51 |
52 | builder.AppendLine(paragraph.Body);
53 | builder.AppendLine("");
54 | }
55 |
56 | if (includeHeadAndBody)
57 | {
58 | builder.AppendLine("");
59 | builder.Append("");
60 | }
61 |
62 | return builder.ToString();
63 | }
64 |
65 | public static string Title() =>
66 | Title(new Random());
67 |
68 | public static string Title(int seed) =>
69 | Title(new Random(seed));
70 |
71 | public static string Title(Random random) =>
72 | Title(_ => random.Next(0, _));
73 |
74 | public static string Title(Func random)
75 | {
76 | var innerEngine = new InnerEngine(random);
77 | return innerEngine.BuildTitle();
78 | }
79 |
80 | public static string Markdown(int seed, int paragraphs, bool includeHeading) =>
81 | Markdown(new Random(seed), paragraphs, includeHeading);
82 |
83 | public static string Markdown(int paragraphs, bool includeHeading) =>
84 | Markdown(new Random(), paragraphs, includeHeading);
85 |
86 | public static string Markdown(Random random, int paragraphs, bool includeHeading) =>
87 | Markdown(_ => random.Next(0, _), paragraphs, includeHeading);
88 |
89 | public static string Markdown(Func random, int paragraphs, bool includeHeading)
90 | {
91 | var builder = new StringBuilder();
92 | var innerEngine = new InnerEngine(random);
93 | var waffleContent = innerEngine.GetContent(paragraphs, includeHeading);
94 |
95 | var heading = waffleContent.Heading;
96 | if (heading != null)
97 | {
98 | builder.AppendLine(
99 | $"""
100 | # {heading.Title}
101 |
102 | > {heading.Quote}
103 |
104 | * {heading.Cite}
105 |
106 | ## {heading.Buzz}
107 |
108 | """);
109 | }
110 |
111 | foreach (var paragraph in waffleContent.Paragraphs)
112 | {
113 | if (paragraph.Heading != null)
114 | {
115 | builder.AppendLine($"## {paragraph.Heading}");
116 | builder.AppendLine();
117 | }
118 |
119 | builder.AppendLine(paragraph.Body);
120 | builder.AppendLine();
121 | }
122 |
123 | return builder.ToString();
124 | }
125 |
126 | public static string Text(int seed, int paragraphs, bool includeHeading) =>
127 | Text(new Random(seed), paragraphs, includeHeading);
128 |
129 | public static string Text(int paragraphs, bool includeHeading) =>
130 | Text(new Random(), paragraphs, includeHeading);
131 |
132 | public static string Text(Random random, int paragraphs, bool includeHeading) =>
133 | Text(_ => random.Next(0, _), paragraphs, includeHeading);
134 |
135 | public static string Text(Func random, int paragraphs, bool includeHeading)
136 | {
137 | var builder = new StringBuilder();
138 | var innerEngine = new InnerEngine(random);
139 | var waffleContent = innerEngine.GetContent(paragraphs, includeHeading);
140 | var heading = waffleContent.Heading;
141 | if (heading != null)
142 | {
143 | builder.AppendLine(
144 | $"""
145 | {heading.Title}
146 |
147 | '{heading.Quote}'
148 |
149 | - {heading.Cite}
150 |
151 | {heading.Buzz}
152 |
153 | """);
154 | }
155 |
156 | var lastIndex = waffleContent.Paragraphs.Count - 1;
157 | for (var index = 0; index < waffleContent.Paragraphs.Count; index++)
158 | {
159 | var paragraph = waffleContent.Paragraphs[index];
160 | if (paragraph.Heading != null)
161 | {
162 | builder.AppendLine(paragraph.Heading);
163 | builder.AppendLine();
164 | }
165 |
166 | builder.AppendLine(paragraph.Body);
167 | if (index != lastIndex)
168 | {
169 | builder.AppendLine();
170 | }
171 | }
172 |
173 | return builder.ToString();
174 | }
175 | }
--------------------------------------------------------------------------------
/src/WaffleGenerator/WaffleGenerator.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | net8.0;net9.0;net48
4 | Produces of text which, on first glance, looks like real, ponderous, prose; replete with clichés.
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/appveyor.yml:
--------------------------------------------------------------------------------
1 | image: Visual Studio 2022
2 | environment:
3 | DOTNET_NOLOGO: true
4 | DOTNET_CLI_TELEMETRY_OPTOUT: true
5 | DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
6 | build_script:
7 | - pwsh: |
8 | Invoke-WebRequest "https://dot.net/v1/dotnet-install.ps1" -OutFile "./dotnet-install.ps1"
9 | ./dotnet-install.ps1 -JSonFile src/global.json -Architecture x64 -InstallDir 'C:\Program Files\dotnet'
10 | - dotnet build src --configuration Release
11 | - dotnet test src --configuration Release --no-build --no-restore
12 | test: off
13 | on_failure:
14 | - ps: Get-ChildItem *.received.* -recurse | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
15 | artifacts:
16 | - path: nugets\*.nupkg
--------------------------------------------------------------------------------
/src/global.json:
--------------------------------------------------------------------------------
1 | {
2 | "sdk": {
3 | "version": "9.0.300",
4 | "allowPrerelease": true,
5 | "rollForward": "latestFeature"
6 | }
7 | }
--------------------------------------------------------------------------------
/src/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SimonCropp/WaffleGenerator/0fde3de2be3b3ad584286dbae42a925857fae3c9/src/icon.png
--------------------------------------------------------------------------------
/src/key.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SimonCropp/WaffleGenerator/0fde3de2be3b3ad584286dbae42a925857fae3c9/src/key.snk
--------------------------------------------------------------------------------
/src/mdsnippets.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://raw.githubusercontent.com/SimonCropp/MarkdownSnippets/master/schema.json",
3 | "TocExcludes": [ "Release Notes", "Icon" ],
4 | "MaxWidth": 80,
5 | "ValidateContent": false,
6 | "Convention": "InPlaceOverwrite"
7 | }
--------------------------------------------------------------------------------
/src/nuget.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
16 |
17 |
20 |
21 |
24 |
25 |
26 |
--------------------------------------------------------------------------------