parse_hwdb: introduce local variable for boolean syntax

This commit is contained in:
Lennart Poettering
2026-03-04 08:22:20 +01:00
parent 170a8f1d40
commit 4dbb0cd0bf
+24 -23
View File
@@ -147,6 +147,7 @@ def property_grammar():
mount_matrix = Group(mount_matrix_row + ';' + mount_matrix_row + ';' + mount_matrix_row)('MOUNT_MATRIX')
xkb_setting = Optional(Word(alphanums + '+-/@._'))
id_input_setting = Optional(Or((Literal('0'), Literal('1'))))
zero_one = Or((Literal('0'), Literal('1')))
# Although this set doesn't cover all of characters in database entries, it's enough for test targets.
name_literal = Word(printables + ' ')
@@ -156,13 +157,13 @@ def property_grammar():
('MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL', INTEGER),
('MOUSE_WHEEL_CLICK_COUNT', INTEGER),
('MOUSE_WHEEL_CLICK_COUNT_HORIZONTAL', INTEGER),
('ID_INPUT_3D_MOUSE', Or((Literal('0'), Literal('1')))),
('ID_AUTOSUSPEND', Or((Literal('0'), Literal('1')))),
('ID_INPUT_3D_MOUSE', zero_one),
('ID_AUTOSUSPEND', zero_one),
('ID_AUTOSUSPEND_DELAY_MS', INTEGER),
('ID_AV_PRODUCTION_CONTROLLER', Or((Literal('0'), Literal('1')))),
('ID_AV_LIGHTS', Or((Literal('0'), Literal('1')))),
('ID_PERSIST', Or((Literal('0'), Literal('1')))),
('ID_PDA', Or((Literal('0'), Literal('1')))),
('ID_AV_PRODUCTION_CONTROLLER', zero_one),
('ID_AV_LIGHTS', zero_one),
('ID_PERSIST', zero_one),
('ID_PDA', zero_one),
('ID_INPUT', id_input_setting),
('ID_INPUT_ACCELEROMETER', id_input_setting),
('ID_INPUT_JOYSTICK', id_input_setting),
@@ -176,12 +177,12 @@ def property_grammar():
('ID_INPUT_TOUCHPAD', id_input_setting),
('ID_INPUT_TOUCHSCREEN', id_input_setting),
('ID_INPUT_TRACKBALL', id_input_setting),
('ID_SIGNAL_ANALYZER', Or((Literal('0'), Literal('1')))),
('ID_MAKER_TOOL', Or((Literal('0'), Literal('1')))),
('ID_HARDWARE_WALLET', Or((Literal('0'), Literal('1')))),
('ID_SOFTWARE_RADIO', Or((Literal('0'), Literal('1')))),
('ID_MM_DEVICE_IGNORE', Or((Literal('0'), Literal('1')))),
('ID_NET_AUTO_LINK_LOCAL_ONLY', Or((Literal('0'), Literal('1')))),
('ID_SIGNAL_ANALYZER', zero_one),
('ID_MAKER_TOOL', zero_one),
('ID_HARDWARE_WALLET', zero_one),
('ID_SOFTWARE_RADIO', zero_one),
('ID_MM_DEVICE_IGNORE', zero_one),
('ID_NET_AUTO_LINK_LOCAL_ONLY', zero_one),
('POINTINGSTICK_SENSITIVITY', INTEGER),
('ID_INTEGRATION', Or(('internal', 'external'))),
('ID_INPUT_TOUCHPAD_INTEGRATION', Or(('internal', 'external'))),
@@ -193,25 +194,25 @@ def property_grammar():
('ACCEL_MOUNT_MATRIX', mount_matrix),
('ACCEL_LOCATION', Or(('display', 'base'))),
('PROXIMITY_NEAR_LEVEL', INTEGER),
('IEEE1394_UNIT_FUNCTION_MIDI', Or((Literal('0'), Literal('1')))),
('IEEE1394_UNIT_FUNCTION_AUDIO', Or((Literal('0'), Literal('1')))),
('IEEE1394_UNIT_FUNCTION_VIDEO', Or((Literal('0'), Literal('1')))),
('IEEE1394_UNIT_FUNCTION_MIDI', zero_one),
('IEEE1394_UNIT_FUNCTION_AUDIO', zero_one),
('IEEE1394_UNIT_FUNCTION_VIDEO', zero_one),
('ID_VENDOR_FROM_DATABASE', name_literal),
('ID_MODEL_FROM_DATABASE', name_literal),
('ID_TAG_MASTER_OF_SEAT', Literal('1')),
('ID_INFRARED_CAMERA', Or((Literal('0'), Literal('1')))),
('ID_INFRARED_CAMERA', zero_one),
('ID_CAMERA_DIRECTION', Or(('front', 'rear'))),
('SOUND_FORM_FACTOR', Or(('internal', 'webcam', 'speaker', 'headphone', 'headset', 'handset', 'microphone'))),
('ID_SYS_VENDOR_IS_RUBBISH', Or((Literal('0'), Literal('1')))),
('ID_PRODUCT_NAME_IS_RUBBISH', Or((Literal('0'), Literal('1')))),
('ID_PRODUCT_VERSION_IS_RUBBISH', Or((Literal('0'), Literal('1')))),
('ID_BOARD_VERSION_IS_RUBBISH', Or((Literal('0'), Literal('1')))),
('ID_PRODUCT_SKU_IS_RUBBISH', Or((Literal('0'), Literal('1')))),
('ID_CHASSIS_ASSET_TAG_IS_RUBBISH', Or((Literal('0'), Literal('1')))),
('ID_SYS_VENDOR_IS_RUBBISH', zero_one),
('ID_PRODUCT_NAME_IS_RUBBISH', zero_one),
('ID_PRODUCT_VERSION_IS_RUBBISH', zero_one),
('ID_BOARD_VERSION_IS_RUBBISH', zero_one),
('ID_PRODUCT_SKU_IS_RUBBISH', zero_one),
('ID_CHASSIS_ASSET_TAG_IS_RUBBISH', zero_one),
('ID_CHASSIS', name_literal),
('ID_SYSFS_ATTRIBUTE_MODEL', name_literal),
('ID_NET_NAME_FROM_DATABASE', name_literal),
('ID_NET_NAME_INCLUDE_DOMAIN', Or((Literal('0'), Literal('1')))),
('ID_NET_NAME_INCLUDE_DOMAIN', zero_one),
)
fixed_props = [Literal(name)('NAME') - Suppress('=') - val('VALUE')
for name, val in props]