home · contact · privacy
Extend inquiry command into full-text search.
authorPlom Heller <plom@plomlompom.com>
Fri, 1 May 2026 23:48:40 +0000 (01:48 +0200)
committerPlom Heller <plom@plomlompom.com>
Fri, 1 May 2026 23:48:40 +0000 (01:48 +0200)
bricksplom.py

index 835ba1878f128dd8759fa0caad2c3ca2162820b1..f9143efac68a6d3026e032b3fd2d96442964f5ad 100755 (executable)
@@ -25,6 +25,7 @@ CHAR_COLL_SEP_COLUMN = '-'
 CHAR_COLL_SEP_PAGE = '='
 CHAR_COL_SOLID = '+'
 CHAR_COL_TRANSPARENT = '-'
+CHAR_INQUIRY = '?'
 BOX_PREFIX = 'box:'
 
 PieceListing = tuple[int, str, str]
@@ -455,7 +456,10 @@ class BricksDb:
         assert table_name in self.lookupable
         maybe_dict = getattr(self, table_name)
         table = maybe_dict if isinstance(maybe_dict, dict) else maybe_dict()
-        return table[inquiry]
+        return (CHAR_NEWLINE.join([str(v) for v in table.values()
+                                   if inquiry[1:].upper() in str(v).upper()])
+                if inquiry.startswith(CHAR_INQUIRY)
+                else table[inquiry])
 
     def piece_to_box_listing(
             self,
@@ -506,7 +510,7 @@ def main(
     db = BricksDb(environ.get(NAME_ENV_DIRNAME, '.'))
     parser = ArgumentParser()
     add_abbrev_choices_arg(parser, 'table', set(db.lookupable))
-    parser.add_argument('inquiry')
+    parser.add_argument('inquiry', nargs='?', default=CHAR_INQUIRY)
     args = parser.parse_args()
     print(db.lookup(args.table, args.inquiry))