package commonmark4cj.commonmark
/*
* 此类用于管理BlockParser产出的链接定义
* 场景: 一些便签需要引用其他处定义的链接
* 优化: 使用简化的数据结构
* key: 链接类名+lable
* value: 链接对象
* 限制: 所有的链接定义必须继承LinkReferenceDefinition
*/
public class Definitions {
private let defs: HashMap<String, LinkReferenceDefinition> = HashMap()
@Frozen
public func addDefinition(ref: LinkReferenceDefinition): Unit {
let k = ref.getNodeType() + ref.getLabel().getOrThrow()
defs.addIfAbsent(k, ref)
}
@Frozen
public func getDefinition<D>(typ: String, label: String): ?D {
match (defs.get(typ + label)) {
case Some(v: D) => v
case _ => None
}
}
}