commit b313f4ec26b0a6d163c8c71ce12524e46d857c1d
parent 9bdcf152348f975cb5162e42283473a8581d1c1a
Author: Carlosokumu <carlosokumu254@gmail.com>
Date: Thu, 21 Aug 2025 18:02:11 +0300
enhance _process_contact_arg in ArgsParser to parse CONTACT information, supporting freeform text and optional parameters such as ALTREP for alternative representations.
Diffstat:
1 file changed, 20 insertions(+), 0 deletions(-)
diff --git a/calendarapp/cmd/args_parser.py b/calendarapp/cmd/args_parser.py
@@ -77,6 +77,7 @@ class ArgsParser:
help="Event headline image")
parser.add_argument("-ld", "--long",
help="Exhaustive description of the event")
+ parser.add_argument("-c","--contact",help="Contact details")
create_event_parser = subparsers.add_parser('create', help='Create a new calendar event')
@@ -268,6 +269,12 @@ class ArgsParser:
if args.location: updates["LOCATION"] = args.location
if args.description: updates["DESCRIPTION"] = args.description
if args.organizer: updates["ORGANIZER"] = args.organizer
+ if args.contact:
+ value, params = self._process_contact_arg(args.contact)
+ if params:
+ updates["CONTACT"] = (value, params) # will be expanded
+ else:
+ updates["CONTACT"] = value
for ctx_name in ("poster", "long"):
arg_val = getattr(args, ctx_name, None)
@@ -280,6 +287,19 @@ class ArgsParser:
return updates, attachments
+ def _process_contact_arg(self, raw_contact: str):
+ if "|" in raw_contact:
+ value, param_str = raw_contact.split("|", 1)
+ params = {}
+ for token in param_str.split(";"):
+ if "=" in token:
+ k, v = token.split("=", 1)
+ params[k.strip().upper()] = v.strip()
+ return value.strip(), params
+ return raw_contact.strip(), {}
+
+
+
def run(self):
args = self.parse_args()