From: Plom Heller Date: Sat, 13 Jun 2026 16:06:15 +0000 (+0200) Subject: Enhance naming consistencies between attributes, CLI parameters. X-Git-Url: https://plomlompom.com/repos/%22https:/validator.w3.org/static/%7B%7Bprefix%7D%7D?a=commitdiff_plain;h=cc535bb5934f258e239a5e015321574780265d23;p=bricksplom Enhance naming consistencies between attributes, CLI parameters. --- diff --git a/bricksplom.py b/bricksplom.py index 404ad5a..cfe67b8 100755 --- a/bricksplom.py +++ b/bricksplom.py @@ -27,13 +27,15 @@ CHAR_COLL_SEP_COLUMN = '-' CHAR_COLL_SEP_PAGE = '=' CHAR_COL_SOLID = '+' CHAR_COL_TRANSPARENT = '-' -CHAR_Q_ID = '=' -CHAR_Q_STUDS = 's' -CHAR_Q_TEXT = '?' BOX_PREFIX = 'box:' + +PARAM_Q_ID = 'id=' +PARAM_Q_STUDS = 'n_studs=' +PARAM_Q_TEXT = 'text:' +PARAMS_Q = (PARAM_Q_ID, PARAM_Q_STUDS, PARAM_Q_TEXT) TOK_SORT_BOX = 'box' TOK_SORT_ID = 'id' -TOK_SORT_STUDS = 'studs' +TOK_SORT_STUDS = 'n_studs' BrickListing = tuple[int, str, str] # count, ID, comment PageColumn = tuple[BrickListing, ...] @@ -133,8 +135,8 @@ class Lookupable: ) -> dict[str, Callable[[str], bool]]: 'Available lookup matchers.' return { - CHAR_Q_ID: lambda q_body: self.id_ == q_body, - CHAR_Q_TEXT: lambda q_body: q_body.upper() in str(self).upper() + PARAM_Q_ID: lambda q_body: self.id_ == q_body, + PARAM_Q_TEXT: lambda q_body: q_body.upper() in str(self).upper() } def match( @@ -277,7 +279,7 @@ class BrickDesign(Textfiled, Lookupable): ) -> bool: assert q_body.isdigit() return self.attrs.n_studs == int(q_body) - return super().matchers | {CHAR_Q_STUDS: q_studs} + return super().matchers | {PARAM_Q_STUDS: q_studs} @property def sorters( @@ -483,7 +485,7 @@ class BrickSet(Textfiled, WithDb, Lookupable): self ) -> dict[str, Callable[[str], bool]]: return super().matchers | { - CHAR_Q_TEXT: lambda q_body: q_body.upper() in self.show().upper() + PARAM_Q_TEXT: lambda q_body: q_body.upper() in self.show().upper() } def _format_paginated( @@ -683,7 +685,7 @@ class BricksDb: table_name: str, item_id: str, show_raw: bool, - filter_by: str, + match_by: str, sort_by: str ) -> str: 'Return result of inquiry on table of table_name.' @@ -691,13 +693,16 @@ class BricksDb: maybe_dict = getattr(self, table_name) table = maybe_dict if isinstance(maybe_dict, dict) else maybe_dict() if item_id: - filter_by = CHAR_Q_ID + item_id + match_by = PARAM_Q_ID + item_id items = tuple(table.values()) if items and sort_by: items = items[0].sorters[sort_by](self, items) - if filter_by: - items = tuple(item for item in items - if item.match(filter_by[0], filter_by[1:])) + if match_by: + candidates = [p for p in PARAMS_Q if match_by.startswith(p)] + assert len(candidates) == 1 + p_key = candidates[0] + p_val = match_by[len(p_key):] + items = tuple(item for item in items if item.match(p_key, p_val)) if len(items) == 1 and not show_raw: return items[0].show() return CHAR_NEWLINE.join( @@ -730,7 +735,7 @@ def main( add_abbrev_choices_arg(parser, 'table', set(db.lookupable)) parser.add_argument('item_id', nargs='?', metavar='ITEM_ID') parser.add_argument('-r', '--raw', action='store_true') - parser.add_argument('-f', '--filter-by', action='store') + parser.add_argument('-m', '--match-by', action='store') parser.add_argument('-s', '--sort-by', action='store', default=TOK_SORT_ID) args = parser.parse_args() print( @@ -738,7 +743,7 @@ def main( table_name=args.table, item_id=args.item_id, show_raw=args.raw, - filter_by=args.filter_by, + match_by=args.match_by, sort_by=args.sort_by ).rstrip())