From 4b66d928ce9fee609789a4dba18b67f57f3a5516 Mon Sep 17 00:00:00 2001 From: dochoffiday Date: Tue, 19 Aug 2014 16:23:08 -0400 Subject: [PATCH] first commit --- Lorem.NET.sln | 27 ++++ Lorem.NET.v12.suo | Bin 0 -> 31744 bytes Lorem.NET/Extensions.cs | 28 ++++ Lorem.NET/Lorem.NET.csproj | 56 ++++++++ Lorem.NET/Lorem.cs | 130 ++++++++++++++++++ Lorem.NET/Properties/AssemblyInfo.cs | 36 +++++ Lorem.NET/RandomHelper.cs | 29 ++++ Lorem.NET/Source.cs | 20 +++ Lorem.NET/bin/Debug/Lorem.NET.dll | Bin 0 -> 10752 bytes Lorem.NET/bin/Debug/Lorem.NET.pdb | Bin 0 -> 26112 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 6406 bytes .../Lorem.NET.csproj.FileListAbsolute.txt | 5 + ...m.NET.csprojResolveAssemblyReference.cache | Bin 0 -> 1755 bytes Lorem.NET/obj/Debug/Lorem.NET.dll | Bin 0 -> 10752 bytes Lorem.NET/obj/Debug/Lorem.NET.pdb | Bin 0 -> 26112 bytes readme.md | 13 ++ 16 files changed, 344 insertions(+) create mode 100644 Lorem.NET.sln create mode 100644 Lorem.NET.v12.suo create mode 100644 Lorem.NET/Extensions.cs create mode 100644 Lorem.NET/Lorem.NET.csproj create mode 100644 Lorem.NET/Lorem.cs create mode 100644 Lorem.NET/Properties/AssemblyInfo.cs create mode 100644 Lorem.NET/RandomHelper.cs create mode 100644 Lorem.NET/Source.cs create mode 100644 Lorem.NET/bin/Debug/Lorem.NET.dll create mode 100644 Lorem.NET/bin/Debug/Lorem.NET.pdb create mode 100644 Lorem.NET/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 Lorem.NET/obj/Debug/Lorem.NET.csproj.FileListAbsolute.txt create mode 100644 Lorem.NET/obj/Debug/Lorem.NET.csprojResolveAssemblyReference.cache create mode 100644 Lorem.NET/obj/Debug/Lorem.NET.dll create mode 100644 Lorem.NET/obj/Debug/Lorem.NET.pdb create mode 100644 readme.md diff --git a/Lorem.NET.sln b/Lorem.NET.sln new file mode 100644 index 0000000..e7ac1cf --- /dev/null +++ b/Lorem.NET.sln @@ -0,0 +1,27 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.21005.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lorem.NET", "Lorem.NET\Lorem.NET.csproj", "{787D3BA7-DB6C-4704-B89C-8D91A4392442}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{438E4420-54B2-45AC-B8C8-010BE97875F3}" + ProjectSection(SolutionItems) = preProject + readme.md = readme.md + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {787D3BA7-DB6C-4704-B89C-8D91A4392442}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {787D3BA7-DB6C-4704-B89C-8D91A4392442}.Debug|Any CPU.Build.0 = Debug|Any CPU + {787D3BA7-DB6C-4704-B89C-8D91A4392442}.Release|Any CPU.ActiveCfg = Release|Any CPU + {787D3BA7-DB6C-4704-B89C-8D91A4392442}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Lorem.NET.v12.suo b/Lorem.NET.v12.suo new file mode 100644 index 0000000000000000000000000000000000000000..e573c756b2b9bf15be8f64fcdeacd4e736da24fd GIT binary patch literal 31744 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 literal 0 HcmV?d00001 diff --git a/Lorem.NET/Extensions.cs b/Lorem.NET/Extensions.cs new file mode 100644 index 0000000..79ccd7b --- /dev/null +++ b/Lorem.NET/Extensions.cs @@ -0,0 +1,28 @@ +using System; + +namespace Lorem.NET +{ + internal static class Extensions + { + internal static String Remove(this string s, string pattern) + { + return s.Replace(pattern, ""); + } + internal static String[] Split(this string s, string separator) + { + return s.Split(new[] { separator }, StringSplitOptions.None); + } + + internal static string UppercaseFirst(this string s) + { + // Check for empty string. + if (string.IsNullOrEmpty(s)) + { + return string.Empty; + } + + // Return char and concat substring. + return char.ToUpper(s[0]) + s.Substring(1); + } + } +} diff --git a/Lorem.NET/Lorem.NET.csproj b/Lorem.NET/Lorem.NET.csproj new file mode 100644 index 0000000..d78baf7 --- /dev/null +++ b/Lorem.NET/Lorem.NET.csproj @@ -0,0 +1,56 @@ + + + + + Debug + AnyCPU + {787D3BA7-DB6C-4704-B89C-8D91A4392442} + Library + Properties + Lorem.NET + Lorem.NET + v4.0 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Lorem.NET/Lorem.cs b/Lorem.NET/Lorem.cs new file mode 100644 index 0000000..e41c9b8 --- /dev/null +++ b/Lorem.NET/Lorem.cs @@ -0,0 +1,130 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Lorem.NET +{ + public class Lorem + { + public static bool Chance(int successes, int attempts) + { + var number = Number(1, attempts); + + return number <= successes; + } + + public static T Random(T[] items) + { + var index = RandomHelper.Instance.Next(items.Length); + + return items[index]; + } + + /* http://stackoverflow.com/a/6651661/234132 */ + public static long Number(long min, long max) + { + byte[] buf = new byte[8]; + RandomHelper.Instance.NextBytes(buf); + long longRand = BitConverter.ToInt64(buf, 0); + + return (Math.Abs(longRand % ((max + 1) - min)) + min); + } + + #region DateTime + + public static DateTime DateTime(int startYear = 1950, int startMonth = 1, int startDay = 1) + { + return DateTime(new System.DateTime(startYear, startMonth, startDay), System.DateTime.Now); + } + + public static DateTime DateTime(DateTime min) + { + return DateTime(min, System.DateTime.Now); + } + + /* http://stackoverflow.com/a/1483677/234132 */ + public static DateTime DateTime(DateTime min, DateTime max) + { + TimeSpan timeSpan = max - min; + TimeSpan newSpan = new TimeSpan(0, RandomHelper.Instance.Next(0, (int)timeSpan.TotalMinutes), 0); + + return min + newSpan; + } + + #endregion + + #region Text + + public static string Email() + { + return string.Format("{0}@{1}.com", Lorem.Words(1, false), Lorem.Words(1, false)); + } + + public static string Words(int wordCount, bool uppercaseFirstLetter = true, bool includePunctuation = false) + { + return Words(wordCount, wordCount, uppercaseFirstLetter, includePunctuation); + } + + public static string Words(int wordCountMin, int wordCountMax, bool uppercaseFirstLetter = true, bool includePunctuation = false) + { + var source = string.Join(" ", Source.WordList(includePunctuation).Take(RandomHelper.Instance.Next(wordCountMin, wordCountMax))); + + if (uppercaseFirstLetter) + { + source = source.UppercaseFirst(); + } + + return source; + } + + public static string Sentence(int wordCount) + { + return Sentence(wordCount, wordCount); + } + + public static string Sentence(int wordCountMin, int wordCountMax) + { + return string.Format("{0}.", Words(wordCountMin, wordCountMax, true, true)).Replace(",.", ".").Remove(".."); + } + + public static string Paragraph(int wordCount, int sentenceCount) + { + return Paragraph(wordCount, wordCount, sentenceCount, sentenceCount); + } + + public static string Paragraph(int wordCountMin, int wordCountMax, int sentenceCount) + { + return Paragraph(wordCountMin, wordCountMax, sentenceCount, sentenceCount); + } + + public static string Paragraph(int wordCountMin, int wordCountMax, int sentenceCountMin, int sentenceCountMax) + { + var source = string.Join(" ", Enumerable.Range(0, RandomHelper.Instance.Next(sentenceCountMin, sentenceCountMax)).Select(x => Sentence(wordCountMin, wordCountMax))); + + //remove traililng space + return source.Remove(source.Length - 1); + } + + public static IEnumerable Paragraphs(int wordCount, int sentenceCount, int paragraphCount) + { + return Paragraphs(wordCount, wordCount, sentenceCount, sentenceCount, paragraphCount, paragraphCount); + } + + public static IEnumerable Paragraphs(int wordCountMin, int wordCountMax, int sentenceCount, int paragraphCount) + { + return Paragraphs(wordCountMin, wordCountMax, sentenceCount, sentenceCount, paragraphCount, paragraphCount); + } + + public static IEnumerable Paragraphs(int wordCountMin, int wordCountMax, int sentenceCountMin, int sentenceCountMax, int paragraphCount) + { + return Paragraphs(wordCountMin, wordCountMax, sentenceCountMin, sentenceCountMax, paragraphCount, paragraphCount); + } + + public static IEnumerable Paragraphs(int wordCountMin, int wordCountMax, int sentenceCountMin, int sentenceCountMax, int paragraphCountMin, int paragraphCountMax) + { + return Enumerable.Range(0, RandomHelper.Instance.Next(paragraphCountMin, paragraphCountMax)).Select(p => Paragraph(wordCountMin, wordCountMax, sentenceCountMin, sentenceCountMax)).ToArray(); + } + + #endregion + } +} \ No newline at end of file diff --git a/Lorem.NET/Properties/AssemblyInfo.cs b/Lorem.NET/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..9033b31 --- /dev/null +++ b/Lorem.NET/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Lorem.NET")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Lorem.NET")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("8af259ae-efba-4e62-a4db-9830488a4085")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Lorem.NET/RandomHelper.cs b/Lorem.NET/RandomHelper.cs new file mode 100644 index 0000000..1bab258 --- /dev/null +++ b/Lorem.NET/RandomHelper.cs @@ -0,0 +1,29 @@ +using System; +using System.Threading; + +namespace Lorem.NET +{ + /* + * http://stackoverflow.com/a/1785821/234132 + */ + public static class RandomHelper + { + private static int seedCounter = new Random().Next(); + + [ThreadStatic] + private static Random rng; + + public static Random Instance + { + get + { + if (rng == null) + { + int seed = Interlocked.Increment(ref seedCounter); + rng = new Random(seed); + } + return rng; + } + } + } +} \ No newline at end of file diff --git a/Lorem.NET/Source.cs b/Lorem.NET/Source.cs new file mode 100644 index 0000000..4b4de81 --- /dev/null +++ b/Lorem.NET/Source.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using System.Linq; + +namespace Lorem.NET +{ + internal class Source + { + const string LoremIpsum = @"lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua, ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat, duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur, excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum,"; + + internal static IEnumerable Rearrange(string words) + { + return words.Split(" ").OrderBy(x => RandomHelper.Instance.Next()); + } + + internal static IEnumerable WordList(bool includePuncation) + { + return includePuncation ? Rearrange(LoremIpsum) : Rearrange(LoremIpsum.Remove(",")); + } + } +} diff --git a/Lorem.NET/bin/Debug/Lorem.NET.dll b/Lorem.NET/bin/Debug/Lorem.NET.dll new file mode 100644 index 0000000000000000000000000000000000000000..d9c3a88acc37e4dee08dadc72faf8ccb6d172129 GIT binary patch literal 10752 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