I compared code using my library triggon
with traditional if
statements!
First Example 👇
This shows a situation where you want to change a message depending on the arguments.
Traditional if
version:
def sample(y: int): x = 7 if x > y: fmt = "greater than" elif x == y: fmt = "equal to" else: fmt = "smaller than" print(f"x is {fmt} y.") sample(10) # Output: x is smaller than y. sample(7) # Output: x is equal to y. sample(0) # Output: x is greater than y.
With triggon
:
tg = Triggon({"A": "greater than", "B": "equal to"}) def sample(y: int): x = 7 tg.set_trigger("A", cond="x > y") tg.set_trigger("B", cond="x == y") fmt = tg.switch_lit(["A", "B"], org="smaller than") print(f"x is {fmt} y.") sample(10) # Output: x is smaller than y. sample(7) # Output: x is equal to y. sample(0) # Output: x is greater than y.
The only change is one line,
but it removes three lines inside the function!
Second Example 👇
This shows a situation where you want to delete user data and later recover it.
Traditional if
version:
# (This `if` version was auto-written by AI) @dataclass class User: name: str = "John" age: int = 25 _original_name: str = None _original_age: int = None _reverted: bool = False def apply_deletion(self, delete: bool): if delete and not self._reverted: # Save original values if not already saved self._original_name = self.name self._original_age = self.age self.name = None self.age = None elif not delete and not self._reverted: # Do nothing if restore not requested yet pass elif delete and self._reverted: # Skip change if values have been reverted pass def revert(self): if self._original_name is not None and self._original_age is not None: self.name = self._original_name self.age = self._original_age self._reverted = True user = User() user.apply_deletion(False) print(f"user name: {user.name}, age: {user.age}") # Output: user name: John, age: 25 user.apply_deletion(True) print(f"user name: {user.name}, age: {user.age}") # Output: user name: None, age: None user.revert() print(f"user name: {user.name}, age: {user.age}") # Output: user name: John, age: 25 user.apply_deletion(True) print(f"user name: {user.name}, age: {user.age}") # Output: user name: John, age: 25
That’s a bit too long…
With triggon
:
tg = Triggon("del", None) @dataclass class User: name: str = "John" age: int = 25 def apply_deletion(self, delete: bool): tg.switch_var("del", [self.name, self.age]) tg.set_trigger("del", cond="delete") user = User() user.apply_deletion(False) print(f"user name: {user.name}, age: {user.age}") # Output: user name: John, age: 25 user.apply_deletion(True) print(f"user name: {user.name}, age: {user.age}") # Output: user name: None, age: None # Permanently revert the values tg.revert("del", disable=True) print(f"user name: {user.name}, age: {user.age}") # Output: user name: John, age: 25 user.apply_deletion(True) print(f"user name: {user.name}, age: {user.age}") # Output: user name: John, age: 25
It reduces the code to less than half compared to the if
version!
if
statements are fine for simple logic,
but for more complex cases—like storing original values, performing multiple toggles, or restoring state—triggon
really shines!
I just released v0.1.0b3
of my library triggon
today.
But some bugs have already been found...
I'll be fixing them in the next update soon!
↓ You can check out the README here:
README
🔗 GitHub -> tsuruko12/triggon
🔗 X -> @tool_tsuruko12
Top comments (0)