Thread:Mathmagician/@comment-3153244-20121005032656/@comment-4674838-20121005174812

So, let's start off with some basic boolean logic:

The logical "not" operator for the abuse filter is !. This expression is true if A is false, but it is false if A is true (i.e. the "negation" of A): !A

The logical "and" operator for the abuse filter is &. This expression is true if both A and B are true, but it is false if A is false or B is false: A & B

The logical "or" operator for the abuse filter is |. This expression is true if either (or both) A or B are true, but it is false if both A and B are false: A | B

You can combine these to make more complicated expressions. The following expression will be true in 4 different cases: (A | B) & (C | D)
 * A and C are true
 * A and D are true
 * B and C are true
 * B and D are true

Finally, there's one part of abuse filters that is not boolean logic, and that is variable declarations. The following is a variable declaration. It says "I want to create a new variable called no_nothing":  /* This is a comment, the abuse filter will ignore everything between the slash-asterisk and asterisk-slash and it won't be treated as actual code */

/* Variable declaration syntax is... name := value */

no_nothing:=rmspecials(added_lines);