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)