| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| from __future__ import absolute_import |
| from __future__ import print_function |
| from __future__ import unicode_literals |
|
|
|
|
|
|
| from hwp5.binmodel._shared import RecordModelType |
| from hwp5.binmodel._shared import RecordModel |
| from hwp5.tagids import HWPTAG_CTRL_HEADER |
| from hwp5.binmodel.controlchar import CHID |
|
|
|
|
| control_models = dict() |
|
|
|
|
| class ControlType(RecordModelType): |
|
|
| def __new__(mcs, name, bases, attrs): |
| cls = RecordModelType.__new__(mcs, name, bases, attrs) |
| if 'chid' in attrs: |
| chid = attrs['chid'] |
| assert chid not in control_models |
| control_models[chid] = cls |
| return cls |
|
|
|
|
| class Control(RecordModel, metaclass=ControlType): |
| ''' 4.2.6. 컨트롤 헤더 ''' |
|
|
| tagid = HWPTAG_CTRL_HEADER |
|
|
| def attributes(): |
| yield CHID, 'chid' |
| attributes = staticmethod(attributes) |
|
|
| extension_types = control_models |
|
|
| def get_extension_key(cls, context, model): |
| ''' chid ''' |
| return model['content']['chid'] |
| get_extension_key = classmethod(get_extension_key) |
|
|