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