MCPcopy Create free account
hub / github.com/BIT-DataLab/Edit-Banana / BaseProcessor

Class BaseProcessor

modules/base.py:69–181  ·  view source on GitHub ↗

处理模块基类 所有处理模块都应该继承此类并实现 process() 方法。 子模块职责: 1. 处理自己负责的元素类型 2. 生成对应的mxCell XML代码 3. 设置 element.xml_fragment 和 element.layer_level 使用示例: class MyProcessor(BaseProcessor): def process(self, context: ProcessingContext) -> Proce

Source from the content-addressed store, hash-verified

67
68
69class BaseProcessor(ABC):
70 """
71 处理模块基类
72
73 所有处理模块都应该继承此类并实现 process() 方法。
74
75 子模块职责:
76 1. 处理自己负责的元素类型
77 2. 生成对应的mxCell XML代码
78 3. 设置 element.xml_fragment 和 element.layer_level
79
80 使用示例:
81 class MyProcessor(BaseProcessor):
82 def process(self, context: ProcessingContext) -> ProcessingResult:
83 for elem in context.elements:
84 if self._should_process(elem):
85 xml = self._generate_xml(elem)
86 elem.xml_fragment = xml
87 elem.layer_level = LayerLevel.BASIC_SHAPE.value
88 return ProcessingResult(success=True, elements=context.elements)
89 """
90
91 def __init__(self, config: Optional['ProcessingConfig'] = None):
92 """
93 初始化处理器
94
95 Args:
96 config: 处理配置,如果为None则使用默认配置
97 """
98 from .data_types import ProcessingConfig
99 self.config = config or ProcessingConfig()
100 self._model = None # 延迟加载的模型实例
101
102 @property
103 def name(self) -> str:
104 """模块名称(用于日志和标识)"""
105 return self.__class__.__name__
106
107 @abstractmethod
108 def process(self, context: ProcessingContext) -> 'ProcessingResult':
109 """
110 处理入口 - 子类必须实现
111
112 Args:
113 context: 处理上下文,包含输入数据和共享状态
114
115 Returns:
116 ProcessingResult: 处理结果
117
118 子类实现要点:
119 1. 遍历 context.elements,找到需要处理的元素
120 2. 生成 mxCell XML字符串
121 3. 设置 element.xml_fragment = xml_string
122 4. 设置 element.layer_level = 合适的层级
123 5. 返回 ProcessingResult
124 """
125 pass
126

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected