code
This commit is contained in:
		
							
								
								
									
										123
									
								
								owo.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										123
									
								
								owo.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,123 @@
 | 
			
		||||
#include <iostream>
 | 
			
		||||
#include <regex>
 | 
			
		||||
#include <string>
 | 
			
		||||
#include <fstream>
 | 
			
		||||
using namespace std;
 | 
			
		||||
 | 
			
		||||
string replacements[6][2] = {
 | 
			
		||||
    {"(?:r|l)", "w"},
 | 
			
		||||
    {"(?:R|L)", "W"},
 | 
			
		||||
    {"n([aeiou])", "ny$1"},
 | 
			
		||||
    {"N([aeiou])", "Ny$1"},
 | 
			
		||||
    {"N([AEIOU])", "Ny$1"},
 | 
			
		||||
    {"ove", "uv"}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string owo(string input) {
 | 
			
		||||
    string output = input;
 | 
			
		||||
    for (int i = 0; i < 6; i++) {
 | 
			
		||||
        output = regex_replace(output, regex(replacements[i][0]), replacements[i][1]);
 | 
			
		||||
    }
 | 
			
		||||
    return output;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int help() {
 | 
			
		||||
    cout << "Usage: owo [-p] [-h] [-f file] [-o file] [text]" << endl;
 | 
			
		||||
    cout << "       owo [text]" << endl;
 | 
			
		||||
    cout << "       owo -f [file] -o [file]" << endl;
 | 
			
		||||
    cout << "       echo [text] | owo -p" << endl << endl;
 | 
			
		||||
    cout << "Options:" << endl;
 | 
			
		||||
    cout << "  -p  Read from stdin" << endl;
 | 
			
		||||
    cout << "  -h  Show this help message" << endl;
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main(int argc, char *argv[]) {
 | 
			
		||||
    string input, inputfile, outputfile;
 | 
			
		||||
    bool stdin = false;
 | 
			
		||||
 | 
			
		||||
    if (argc < 2) {
 | 
			
		||||
        cout << owo("No text provided") << endl << endl;
 | 
			
		||||
        help();
 | 
			
		||||
        return 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    for (int i = 1; i < argc; i++) {
 | 
			
		||||
        if (string(argv[i]) == "-f") {
 | 
			
		||||
            inputfile = string(argv[i+1]);
 | 
			
		||||
            i++;
 | 
			
		||||
        } else if (string(argv[i]) == "-o") {
 | 
			
		||||
            outputfile = string(argv[i+1]);
 | 
			
		||||
            i++;
 | 
			
		||||
        } else if (string(argv[i]) == "-p") {
 | 
			
		||||
            stdin = true;
 | 
			
		||||
        } else if (string(argv[i]) == "-h") {
 | 
			
		||||
            return help();
 | 
			
		||||
        } else if (i == argc-1) {
 | 
			
		||||
            input = string(argv[i]);
 | 
			
		||||
        } else {
 | 
			
		||||
            cout << owo("Invalid argument: " + string(argv[i])) << endl << endl;
 | 
			
		||||
            help();
 | 
			
		||||
            return 1;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    if (stdin && inputfile != "" || stdin && input != "" || inputfile != "" && input != "") {
 | 
			
		||||
        cout << owo("Cannot use multiple input methods at once") << endl << endl;
 | 
			
		||||
        help();
 | 
			
		||||
        return 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ostream *output;
 | 
			
		||||
 | 
			
		||||
    if (outputfile != "") {
 | 
			
		||||
        output = new ofstream(outputfile);
 | 
			
		||||
        if (!output->good()) {
 | 
			
		||||
            cout << owo("Failed to open output file") << endl;
 | 
			
		||||
            return 1;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (stdin) {
 | 
			
		||||
        while (getline(cin, input)) {
 | 
			
		||||
            if (outputfile != "") {
 | 
			
		||||
                *output << owo(input) << endl;
 | 
			
		||||
            } else {
 | 
			
		||||
                cout << owo(input) << endl;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    } else if (inputfile != "") {
 | 
			
		||||
        ifstream inputstream(inputfile);
 | 
			
		||||
        if (!inputstream.good()) {
 | 
			
		||||
            cout << owo("Failed to open input file") << endl;
 | 
			
		||||
            if (outputfile != "") {
 | 
			
		||||
                ((ofstream*)output)->close();
 | 
			
		||||
            }
 | 
			
		||||
            return 1;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        while (getline(inputstream, input)) {
 | 
			
		||||
            if (outputfile != "") {
 | 
			
		||||
                *output << owo(input) << endl;
 | 
			
		||||
            } else {
 | 
			
		||||
                cout << owo(input) << endl;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        inputstream.close();
 | 
			
		||||
 | 
			
		||||
    } else if (input != "") {
 | 
			
		||||
        if (outputfile != "") {
 | 
			
		||||
            *output << owo(input) << endl;
 | 
			
		||||
        } else {
 | 
			
		||||
            cout << owo(input) << endl;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (outputfile != "") {
 | 
			
		||||
        ((ofstream*)output)->close();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user