Options
All
  • Public
  • Public/Protected
  • All
Menu

Class InjectContexter<NodeType, InfoType>

这个上下文工具允许节点向之后的节点的渲染函数注入一定的可渲染元素。 注射器会在环境内创造以特定的名称定义的环境,每个环境内又被infokey分为若干个子环境,每个子环境是一个数组,包含所有以 这个infokey注射的信息。每次Consumer会取出所有的信息并处理。

注意这里类型定义其实不严谨,env中并非所有项目都是InfoType(所有Injecter都共用一个env,但是他们的InfoType不一定一样)。 但是在实现中只会关心env[this.infotype](这一点由所有函数都首先调用this.get_subenv来保证),而这一项一定是InfoType类型 的,所以不会有问题。

Type Parameters

  • NodeType extends Node = Node

  • InfoType = any

Hierarchy

Index

Constructors

Properties

aftinfo: PreprocessFunction<NodeType, InfoType>
get_default_val: (() => {})

Type declaration

    • (): {}
    • Returns {}

      • [infokey: string]: InfoType[]
infokey: string

『注射器』上下文工具的构造函数。

param infokey

要注射的信息配对使用的key。

param infos.preinfo

在进入节点时(先序)生成的信息。

param infos.aftinfo

在离开节点时(后序)生成的信息。

key: string
preinfo: PreprocessFunction<NodeType, InfoType>

Methods

  • ensure_env(env: Env): void
  • 这个函数确保自己的环境存在,如果没有就创建一个。

    Parameters

    Returns void

  • get_context(context: Context): undefined
  • 获得这个操作器对应的上下文。

    Parameters

    Returns undefined

  • get_env(env: Env): {}
  • 获得这个操作器对应的环境。

    Parameters

    Returns {}

    • [infokey: string]: InfoType[]
  • get_subenv(env: Env): InfoType[]
  • 这个函数自动创建(如果不存在的话)对应的环境项目和信息项目,并返回本注射器使用的信息项目。 所有注射器函数在操作env之前都应该调用这个函数,来保证只操作自己的项目。

    Parameters

    Returns InfoType[]

  • set_context(context: Context, val: undefined): void
  • 设置这个操作器对应的上下文。

    Parameters

    Returns void

  • set_env(env: Env, val: {}): void
  • 设置这个操作器对应的环境。

    Parameters

    • env: Env
    • val: {}
      • [infokey: string]: InfoType[]

    Returns void

Generated using TypeDoc