Skip to content

Commit

Permalink
Minor tweaks
Browse files Browse the repository at this point in the history
  • Loading branch information
0xVavaldi committed Aug 17, 2023
1 parent 18548f5 commit 5e0c047
Showing 1 changed file with 14 additions and 29 deletions.
43 changes: 14 additions & 29 deletions rule.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -403,36 +403,32 @@ std::function<void(std::string&)> Rule::build_rule_processor() {
if(!value_1_is_numeric) break;
int_value_1 = get_number_value(rule_value_1); // insert location
return [rule_value_1=int_value_1](std::string& plaintext){
if(rule_value_1 > plaintext.size()) return;
plaintext[rule_value_1] = plaintext[rule_value_1];
if(rule_value_1 >= plaintext.size()) return;
plaintext[rule_value_1] = static_cast<char>(static_cast<unsigned char>(plaintext[rule_value_1]) << 1);
};

case 'R':
if(!value_1_is_numeric) break;
int_value_1 = get_number_value(rule_value_1); // insert location
return [rule_value_1=int_value_1](std::string& plaintext){
if(rule_value_1 > plaintext.size()) return;
plaintext[rule_value_1] = plaintext[rule_value_1];
if(rule_value_1 >= plaintext.size()) return;
plaintext[rule_value_1] = static_cast<char>(static_cast<unsigned char>(plaintext[rule_value_1]) >> 1);
};

case '-':
if(!value_1_is_numeric) break;
int_value_1 = get_number_value(rule_value_1); // insert location
return [rule_value_1=int_value_1](std::string& plaintext) {
if(rule_value_1 < plaintext.size()) {
plaintext[rule_value_1] = --plaintext[rule_value_1];
}
if(rule_value_1 >= plaintext.size()) return;
plaintext[rule_value_1] = --plaintext[rule_value_1];
};

case '+':
if(!value_1_is_numeric) break;
int_value_1 = get_number_value(rule_value_1); // insert location
return [rule_value_1=int_value_1](std::string& plaintext) {
if(rule_value_1 < plaintext.size()) {
plaintext[rule_value_1] = ++plaintext[rule_value_1];
}
if(rule_value_1 >= plaintext.size()) return;
plaintext[rule_value_1] = ++plaintext[rule_value_1];
};

case '@':
Expand All @@ -444,9 +440,8 @@ std::function<void(std::string&)> Rule::build_rule_processor() {
if(!value_1_is_numeric) break;
int_value_1 = get_number_value(rule_value_1); // target location
return [rule_value_1=int_value_1](std::string& plaintext){
if(rule_value_1+1 < plaintext.size()) {
plaintext[rule_value_1] = plaintext[rule_value_1+1];
}
if(rule_value_1+1 >= plaintext.size()) return;
plaintext[rule_value_1] = plaintext[rule_value_1+1];
};

case ',':
Expand Down Expand Up @@ -483,9 +478,7 @@ std::function<void(std::string&)> Rule::build_rule_processor() {
int_value_1 = get_number_value(rule_value_1); // start location
int_value_2 = get_number_value(rule_value_2); // delete amount
return [start_loc=int_value_1, delete_amount=int_value_2](std::string& plaintext) {
if(start_loc > plaintext.size()-1 || plaintext.empty()) {
return;
}
if(start_loc > plaintext.size()-1 || plaintext.empty()) return;
if(start_loc + delete_amount < plaintext.size()) {
plaintext.erase(start_loc, delete_amount);
} else {
Expand All @@ -499,9 +492,7 @@ std::function<void(std::string&)> Rule::build_rule_processor() {
if(int_value_1 < 0) break;

return [offset=int_value_1, replace_value=rule_value_2](std::string& plaintext){
if((offset+replace_value.size()-1) > plaintext.size()-1 || plaintext.empty()) {
return;
}
if((offset+replace_value.size()-1) > plaintext.size()-1 || plaintext.empty()) return;
for(int i=0; i < replace_value.size(); i++) {
plaintext[offset + i] = replace_value[i];
}
Expand All @@ -522,9 +513,7 @@ std::function<void(std::string&)> Rule::build_rule_processor() {
int_value_2 = get_number_value(rule_value_2); // delete amount
if(int_value_1 < 0 || int_value_2 < 0) break;
return [start_loc=int_value_1, keep_amount=int_value_2](std::string& plaintext){
if(plaintext.empty() || start_loc >= plaintext.size()) {
return;
}
if(plaintext.empty() || start_loc >= plaintext.size()) return;
if((start_loc + keep_amount) <= plaintext.size()) {
plaintext.erase(start_loc + keep_amount, plaintext.size()-(start_loc+keep_amount));
plaintext.erase(0, start_loc); // Delete from start to start of rule
Expand All @@ -535,19 +524,15 @@ std::function<void(std::string&)> Rule::build_rule_processor() {
if(!value_1_is_numeric) break;
int_value_1 = get_number_value(rule_value_1);
return [reject_count=int_value_1](std::string& plaintext){
if(reject_count < plaintext.size()) {
return;
}
if(reject_count < plaintext.size()) return;
plaintext = "";
};

case '>':
if(!value_1_is_numeric) break;
int_value_1 = get_number_value(rule_value_1);
return [reject_count=int_value_1](std::string& plaintext){
if(reject_count > plaintext.size()) {
return;
}
if(reject_count > plaintext.size()) return;
plaintext = "";
};

Expand All @@ -574,7 +559,7 @@ std::function<void(std::string&)> Rule::build_rule_processor() {
}
};

case '3': // Toggle nth instance of a char
case '3': // Toggle letter after nth instance of a char
if(!value_1_is_numeric) break;
int_value_1 = get_number_value(rule_value_1); // character location
return [rule_instance_of_char = int_value_1, char_value_rule = rule_value_2](std::string& plaintext) {
Expand Down

0 comments on commit 5e0c047

Please sign in to comment.