IPrinter
输出器接口
基本信息
| 属性 | 值 |
|---|---|
| 路径 | com.github.lunatrius.ingameinfo.printer.IPrinter |
| 行数 | 13(纯接口) |
唯一方法
boolean print(File file, Map<Alignment, List<List<Value>>> format);
与 IParser 的 parse 签名对称,
format 类型完全一致。
三个实现
| 实现 | 行数 | 用途 |
|---|---|---|
| XmlPrinter | 94 | 写回 XML |
| JsonPrinter | 93 | 写回 JSON |
| TextPrinter | 109 | 写回 TXT |
⚠️ 三者行数相近(93-109),说明实现难度相当, 没有哪个格式被特别简化。
唯一调用方
InGameInfoCore.saveConfig(:231-243):
if (filename.endsWith(EXT_XML)) printer = new XmlPrinter();
else if (filename.endsWith(EXT_JSON)) printer = new JsonPrinter();
else if (filename.endsWith(EXT_TXT)) printer = new TextPrinter();
return printer != null && printer.print(file, format);
⚠️ 与 setConfigFile 的解析器选择完全相同的 if-else 链
(InGameInfoCore 的 :118-124),
两处独立重复,改扩展名清单要同时改两处。
⚠️ printer 可能为 null(扩展名不匹配),
printer != null && 短路保护后返回 false —— 不抛异常。
调用方 InGameInfoCommand 的 save 分支
据此报 failure。
往返一致性
printer 的输出是给用户手写配置用的参考格式
(/igi save <file>),不是给解析器做 round-trip 测试用的。
由于 TextParser 的语法与 XML/JSON 差异较大
(见该条目),TXT 的往返不保证无损。
相关
- IParser - 对称的输入接口
- InGameInfoCore - 唯一调用方
- InGameInfoCommand -
/igi save的触发方