fix(src/window/launcher/plugins): refine calculator unit conversion parsing

The updated regex now matches non‑numeric unit prefixes, and units are normalized before conversion, improving accuracy and preventing mismatches.

- Bug Fixes: Fixed incorrect unit detection that caused failed conversions.
- Enhancements: Added unit cleaning (`converter.clean_type`) to standardize input.
- New Features: None.
This commit is contained in:
sankalp committed 2026-05-03 20:16:38 +05:45
1 parent d51f30f058
commit 3e5552b7f3
1 file changed
+6 -2
+6 -2
View File
@@ -48,7 +48,7 @@ class CalculatorPlugin(PluginBase):
self.expression_pattern = re.compile(r"[\d+\-*/^()=]")
self.number_pattern = re.compile(r"\d")
self.conversion_pattern = re.compile(
r"(\d+(?:\.\d+)?)\s*([a-zA-Z]+)\s*(?:to|in|=)\s*([a-zA-Z]+)"
r"(\d+(?:\.\d+)?)\s*([^0-9\s]+)\s*(?:to|in|=)\s*([^0-9\s]+)"
)
# Cache for conversion results
@@ -89,7 +89,11 @@ class CalculatorPlugin(PluginBase):
subtitle = f"{value} {from_unit} = {result:.6g} {to_unit}"
else:
# Use the conversion utility
result = self.converter.convert(value, from_unit, to_unit)
from_unit_clean = self.converter.clean_type(from_unit)
to_unit_clean = self.converter.clean_type(to_unit)
result = self.converter.convert(
value, from_unit_clean, to_unit_clean
)
# Cache the result
self._conversion_cache[cache_key] = result
subtitle = f"{value} {from_unit} = {result:.6g} {to_unit}"