Initial commit

This commit is contained in:
2024-12-02 06:30:40 +00:00
commit fd62fb822d
33 changed files with 1972 additions and 0 deletions

37
include/cmd/cmd_wc.hpp Normal file
View File

@ -0,0 +1,37 @@
#pragma once
#include "cmd/cmd_base.hpp"
namespace fsh {
class CmdWc : public Command {
protected:
virtual void register_flags() override {
ArgFactory& factory = get_factory();
factory.add_input_rule();
factory.add_rule("-c");
factory.add_rule("-w");
}
virtual void run(std::istream& in, std::ostream& out, ArgManager& args) override {
int i = 0;
char c;
if(args.get("-c")) {
while(in.get(c)) i++;
out << i << "\n";
} else if (args.get("-w")) {
bool prev_space = true;
while(in.get(c)) {
if(std::isspace(c)) { prev_space = true; }
else if(prev_space) { prev_space = false; i++;}
}
out << i << "\n";
} else {
throw std::invalid_argument("Didn't provide flag");
}
}
};
}