| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | 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) |
| |
|