aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/help.c24
-rw-r--r--src/help.h6
-rw-r--r--src/main.c100
-rw-r--r--src/modes.c38
-rw-r--r--src/modes.h16
-rw-r--r--src/words.c37
6 files changed, 125 insertions, 96 deletions
diff --git a/src/help.c b/src/help.c
new file mode 100644
index 0000000..f5eedcc
--- /dev/null
+++ b/src/help.c
@@ -0,0 +1,24 @@
+#include <stdio.h>
+
+#include "help.h"
+
+int print_help() {
+ printf("usage: lorem [OPTIONS]\n\n");
+ printf("positional arguments:\n");
+ printf(" mode\t\tgeneration mode: [w]ord, [l]ine/[s]entence, [p]aragraph (default: line)\n");
+ printf(" length\t\tnumber of chunks to generate (default: 1)\n");
+ printf("\noptions:\n");
+ printf(" -h --help\t\tshow this message\n");
+ printf("\nexamples:\n");
+ printf(" lorem p 2\t\tgenerate 2 paragraphs\n");
+ printf(" lorem w 2\t\tgenerate 2 words\n");
+ printf(" lorem l 2\t\tgenerate 2 lines/sentences\n");
+ printf(" lorem s 2\t\tgenerate 2 lines/sentences\n");
+ printf(" lorem 2\t\tgenerate 2 lines/sentences\n");
+ printf(" lorem\t\t\tgenerate 1 line/sentence\n");
+ printf(" lorem paragraph 2\tgenerate 2 paragraphs\n");
+ printf(" lorem word 2\t\tgenerate 2 words\n");
+ printf(" lorem line 2\t\tgenerate 2 lines/sentences\n");
+ printf(" lorem sentence 2\tgenerate 2 lines/sentences\n");
+ return 0;
+}
diff --git a/src/help.h b/src/help.h
new file mode 100644
index 0000000..47924e8
--- /dev/null
+++ b/src/help.h
@@ -0,0 +1,6 @@
+#ifndef HELP_H
+#define HELP_H
+
+int print_help();
+
+#endif // HELP_H
diff --git a/src/main.c b/src/main.c
index 0a4540b..2398207 100644
--- a/src/main.c
+++ b/src/main.c
@@ -2,51 +2,9 @@
#include <stdlib.h>
#include <string.h>
#include <time.h>
-#include <stdbool.h>
-char *words[] = {
- "a", "ab", "accusamus", "accusantium", "ad", "adipisci", "adipiscing",
- "aliqua", "aliquam", "aliquid", "amet", "anim", "aperiam", "architecto",
- "asperiores", "aspernatur", "assumenda", "at", "atque", "aut", "aute",
- "autem", "beatae", "blanditiis", "cillum", "commodi", "commodo",
- "consectetur", "consequat", "consequatur", "consequuntur", "corporis",
- "corrupti", "culpa", "cum", "cumque", "cupidatat", "cupiditate", "debitis",
- "delectus", "deleniti", "deserunt", "dicta", "dignissimos", "distinctio",
- "do", "dolor", "dolore", "dolorem", "doloremque", "dolores", "doloribus",
- "dolorum", "ducimus", "duis", "ea", "eaque", "earum", "eius", "eligendi",
- "elit", "enim", "eos", "error", "esse", "est", "et", "eu", "eum", "eveniet",
- "ex", "excepteur", "excepturi", "exercitation", "exercitationem", "expedita",
- "explicabo", "facere", "facilis", "fuga", "fugiat", "fugit", "harum", "hic",
- "id", "illo", "illum", "impedit", "in", "incidunt", "incididunt", "inventore",
- "ipsum", "irure", "iste", "itaque", "labore", "laboriosam", "laboris",
- "laborum", "laudantium", "libero", "lorem", "magna", "magnam", "magni",
- "maiores", "maxime", "minima", "minim", "minus", "modi", "molestiae",
- "molestias", "mollitia", "mollit", "nam", "natus", "necessitatibus", "nemo",
- "neque", "nesciunt", "nihil", "nisi", "nobis", "non", "nostrud", "nulla",
- "numquam", "occaecat", "odio", "odit", "officia", "omnis", "optio",
- "pariatur", "perferendis", "perspiciatis", "placeat", "porro", "possimus",
- "praesentium", "proident", "quae", "quaerat", "quam", "quas", "qui", "quia",
- "quibusdam", "quidem", "quis", "quisquam", "quo", "ratione", "recusandae",
- "reiciendis", "rem", "repellat", "repellendus", "reprehenderit",
- "repudiandae", "rerum", "saepe", "sapiente", "sed", "sequi", "similique",
- "sint", "sit", "soluta", "sunt", "suscipit", "tempor", "tempora",
- "temporibus", "tempore", "tenetur", "totam", "ullamco", "ullam", "unde", "ut",
- "vel", "velit", "veniam", "vero", "vitae", "voluptas", "voluptate",
- "voluptatem", "voluptates", "voluptatibus", "voluptatum",
-};
-
-#define WORDS_COUNT sizeof(words) / sizeof(char*)
-
-enum {
- MODE_WORD,
- MODE_SENTENCE,
- MODE_PARAGRAPH
-};
-
-int word_mode(int length, bool newline, bool capitalize);
-int sentence_mode(int length, bool newline);
-int paragraph_mode(int length, bool newline);
-int print_help();
+#include "modes.h"
+#include "help.h"
int main(int argc, char **argv) {
int mode = MODE_SENTENCE;
@@ -98,55 +56,5 @@ int main(int argc, char **argv) {
return paragraph_mode(length, true);
}
-int word_mode(int length, bool newline, bool capitalize) {
- for (int i = 0; i < length; i++) {
- int index = rand() % WORDS_COUNT;
- char word[1024];
- strncpy(word, words[index], 1024);
- if (i == 0 && capitalize) word[0] += 'A' - 'a';
- if (i == length - 1) printf("%s", word);
- else printf("%s ", word);
- }
- if (newline) printf("\n");
- return 0;
-}
-
-int sentence_mode(int length, bool newline) {
- for (int i = 0; i < length; i++) {
- int size = 10 + rand() % 20;
- word_mode(size, false, true);
- printf(". ");
- if (newline) printf("\n");
- }
- return 0;
-}
-
-int paragraph_mode(int length, bool newline) {
- for (int i = 0; i < length; i++) {
- int size = 6 + rand() % 10;
- sentence_mode(size, false);
- if (newline) printf("\n\n");
- }
- return 0;
-}
-
-int print_help() {
- printf("usage: lorem [OPTIONS]\n\n");
- printf("positional arguments:\n");
- printf(" mode\t\tgeneration mode: [w]ord, [l]ine/[s]entence, [p]aragraph (default: line)\n");
- printf(" length\t\tnumber of chunks to generate (default: 1)\n");
- printf("\noptions:\n");
- printf(" -h --help\t\tshow this message\n");
- printf("\nexamples:\n");
- printf(" lorem p 2\t\tgenerate 2 paragraphs\n");
- printf(" lorem w 2\t\tgenerate 2 words\n");
- printf(" lorem l 2\t\tgenerate 2 lines/sentences\n");
- printf(" lorem s 2\t\tgenerate 2 lines/sentences\n");
- printf(" lorem 2\t\tgenerate 2 lines/sentences\n");
- printf(" lorem\t\t\tgenerate 1 line/sentence\n");
- printf(" lorem paragraph 2\tgenerate 2 paragraphs\n");
- printf(" lorem word 2\t\tgenerate 2 words\n");
- printf(" lorem line 2\t\tgenerate 2 lines/sentences\n");
- printf(" lorem sentence 2\tgenerate 2 lines/sentences\n");
- return 0;
-}
+#include "modes.c"
+#include "help.c"
diff --git a/src/modes.c b/src/modes.c
new file mode 100644
index 0000000..9b63431
--- /dev/null
+++ b/src/modes.c
@@ -0,0 +1,38 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "modes.h"
+#include "words.c"
+
+int word_mode(int length, bool newline, bool capitalize) {
+ for (int i = 0; i < length; i++) {
+ int index = rand() % WORDS_COUNT;
+ char word[1024];
+ strncpy(word, words[index], 1024);
+ if (i == 0 && capitalize) word[0] += 'A' - 'a';
+ if (i == length - 1) printf("%s", word);
+ else printf("%s ", word);
+ }
+ if (newline) printf("\n");
+ return 0;
+}
+
+int sentence_mode(int length, bool newline) {
+ for (int i = 0; i < length; i++) {
+ int size = 10 + rand() % 20;
+ word_mode(size, false, true);
+ printf(". ");
+ if (newline) printf("\n");
+ }
+ return 0;
+}
+
+int paragraph_mode(int length, bool newline) {
+ for (int i = 0; i < length; i++) {
+ int size = 6 + rand() % 10;
+ sentence_mode(size, false);
+ if (newline) printf("\n\n");
+ }
+ return 0;
+}
diff --git a/src/modes.h b/src/modes.h
new file mode 100644
index 0000000..d406704
--- /dev/null
+++ b/src/modes.h
@@ -0,0 +1,16 @@
+#ifndef MODES_H
+#define MODES_H
+
+#include <stdbool.h>
+
+enum {
+ MODE_WORD,
+ MODE_SENTENCE,
+ MODE_PARAGRAPH
+};
+
+int word_mode(int length, bool newline, bool capitalize);
+int sentence_mode(int length, bool newline);
+int paragraph_mode(int length, bool newline);
+
+#endif // MODES_H
diff --git a/src/words.c b/src/words.c
new file mode 100644
index 0000000..e3778ec
--- /dev/null
+++ b/src/words.c
@@ -0,0 +1,37 @@
+#ifndef WORDS
+#define WORDS
+
+char *words[] = {
+ "a", "ab", "accusamus", "accusantium", "ad", "adipisci", "adipiscing",
+ "aliqua", "aliquam", "aliquid", "amet", "anim", "aperiam", "architecto",
+ "asperiores", "aspernatur", "assumenda", "at", "atque", "aut", "aute",
+ "autem", "beatae", "blanditiis", "cillum", "commodi", "commodo",
+ "consectetur", "consequat", "consequatur", "consequuntur", "corporis",
+ "corrupti", "culpa", "cum", "cumque", "cupidatat", "cupiditate", "debitis",
+ "delectus", "deleniti", "deserunt", "dicta", "dignissimos", "distinctio",
+ "do", "dolor", "dolore", "dolorem", "doloremque", "dolores", "doloribus",
+ "dolorum", "ducimus", "duis", "ea", "eaque", "earum", "eius", "eligendi",
+ "elit", "enim", "eos", "error", "esse", "est", "et", "eu", "eum", "eveniet",
+ "ex", "excepteur", "excepturi", "exercitation", "exercitationem", "expedita",
+ "explicabo", "facere", "facilis", "fuga", "fugiat", "fugit", "harum", "hic",
+ "id", "illo", "illum", "impedit", "in", "incidunt", "incididunt", "inventore",
+ "ipsum", "irure", "iste", "itaque", "labore", "laboriosam", "laboris",
+ "laborum", "laudantium", "libero", "lorem", "magna", "magnam", "magni",
+ "maiores", "maxime", "minima", "minim", "minus", "modi", "molestiae",
+ "molestias", "mollitia", "mollit", "nam", "natus", "necessitatibus", "nemo",
+ "neque", "nesciunt", "nihil", "nisi", "nobis", "non", "nostrud", "nulla",
+ "numquam", "occaecat", "odio", "odit", "officia", "omnis", "optio",
+ "pariatur", "perferendis", "perspiciatis", "placeat", "porro", "possimus",
+ "praesentium", "proident", "quae", "quaerat", "quam", "quas", "qui", "quia",
+ "quibusdam", "quidem", "quis", "quisquam", "quo", "ratione", "recusandae",
+ "reiciendis", "rem", "repellat", "repellendus", "reprehenderit",
+ "repudiandae", "rerum", "saepe", "sapiente", "sed", "sequi", "similique",
+ "sint", "sit", "soluta", "sunt", "suscipit", "tempor", "tempora",
+ "temporibus", "tempore", "tenetur", "totam", "ullamco", "ullam", "unde", "ut",
+ "vel", "velit", "veniam", "vero", "vitae", "voluptas", "voluptate",
+ "voluptatem", "voluptates", "voluptatibus", "voluptatum",
+};
+
+#define WORDS_COUNT sizeof(words) / sizeof(char*)
+
+#endif // WORDS