#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"); } } }; }