@@ -104,26 +104,35 @@ def __init__(self, params):
104104
105105 self .tags = VirtualTableTag .NO_TAGS
106106 if TAGS_KEY in params :
107- if params .get (TAGS_KEY ) is not None and type (params .get (TAGS_KEY )) is int :
107+ if params .get (TAGS_KEY ) is not None and isinstance (params .get (TAGS_KEY ), int ) :
108108 tags = int (params .get (TAGS_KEY ))
109-
110- match tags :
111- case 0 : # Tag 0 is used for no tags
112- self .tags = VirtualTableTag .NO_TAGS
113- case 1 | 2 : # Tags 1 and 2 are reserved
114- self .tags = VirtualTableTag .RESERVED
115- case 4 : # Tag 4 is used for border
116- self .tags = VirtualTableTag .BORDER
117- case 8 : # Tag 8 is used for highlight
118- self .tags = VirtualTableTag .HIGHLIGHT
119- case _: # Other tags are not supported
120- self .tags = VirtualTableTag .NO_TAGS
109+
110+ self .tags = VirtualTableTag .NO_TAGS # Tag 0 is used for no tags
111+ if tags & 0x1 : # Tags 1 and 2 are reserved
112+ self .tags |= VirtualTableTag .RESERVED_1
113+ if tags & 0x2 : # Tags 1 and 2 are reserved
114+ self .tags |= VirtualTableTag .RESERVED_2
115+ if tags & 0x4 : # Tag 4 is used for border
116+ self .tags |= VirtualTableTag .BORDER
117+ if tags & 0x8 : # Tag 8 is used for highlight
118+ self .tags |= VirtualTableTag .HIGHLIGHT
119+
121120 del params [TAGS_KEY ]
122121
122+ def has_tag (self , tag ):
123+ return bool (self .tags & tag )
124+
123125 def print (self ):
124126
125127 print (f" index: { self .index } " )
126- print (f" tags: { self .tags .name } " )
128+ if self .tags == VirtualTableTag .NO_TAGS :
129+ print (" tags: NO_TAGS" )
130+ else :
131+ active_tags = []
132+ for tag in VirtualTableTag :
133+ if tag != VirtualTableTag .NO_TAGS and self .has_tag (tag ):
134+ active_tags .append (tag .name )
135+ print (f" tags: { ' | ' .join (active_tags )} " )
127136 print (" cells:" )
128137 for i , cell in enumerate (self .cells ):
129138 cell .print ()
@@ -144,23 +153,31 @@ def __init__(self, params):
144153
145154 self .tags = VirtualTableTag .NO_TAGS
146155 if TAGS_KEY in params :
147- if params .get (TAGS_KEY ) is not None and type (params .get (TAGS_KEY )) is int :
156+ if params .get (TAGS_KEY ) is not None and isinstance (params .get (TAGS_KEY ), int ) :
148157 tags = int (params .get (TAGS_KEY ))
158+
159+ self .tags = VirtualTableTag .NO_TAGS # Tag 0 is used for no tags
160+ if tags & 0x1 : # Tags 1 and 2 are reserved
161+ self .tags |= VirtualTableTag .RESERVED_1
162+ if tags & 0x2 : # Tags 1 and 2 are reserved
163+ self .tags |= VirtualTableTag .RESERVED_2
164+ if tags & 0x4 : # Tag 4 is used for border
165+ self .tags |= VirtualTableTag .BORDER
166+ if tags & 0x8 : # Tag 8 is used for highlight
167+ self .tags |= VirtualTableTag .HIGHLIGHT
149168
150- match tags :
151- case 0 : # Tag 0 is used for no tags
152- self .tags = VirtualTableTag .NO_TAGS
153- case 1 | 2 : # Tags 1 and 2 are reserved
154- self .tags = VirtualTableTag .RESERVED
155- case 4 : # Tag 4 is used for border
156- self .tags = VirtualTableTag .BORDER
157- case 8 : # Tag 8 is used for highlight
158- self .tags = VirtualTableTag .HIGHLIGHT
159- case _: # Other tags are not supported
160- self .tags = VirtualTableTag .NO_TAGS
161169 del params [TAGS_KEY ]
162170
171+ def has_tag (self , tag ):
172+ return bool (self .tags & tag )
173+
163174 def print (self ):
164175 print (f" \" { TABLE_LINE_CELL_CONTENT_KEY } \" : \" { self .content } \" " )
165- print (f" \" tags\" : { self .tags .name } " )
176+ if self .tags == VirtualTableTag .NO_TAGS :
177+ tags_str = "NO_TAGS"
178+ else :
179+ active_tags = [tag .name for tag in VirtualTableTag if tag != VirtualTableTag .NO_TAGS and self .has_tag (tag )]
180+ tags_str = " | " .join (active_tags )
181+
182+ print (f" \" tags\" : \" { tags_str } \" " )
166183 print (f" { '-' * 10 } " )
0 commit comments