Options
All
  • Public
  • Public/Protected
  • All
Menu

Class ContexterBase<NodeType, ContextType, EnvType>

这个类定义一个预处理时的处理上下文的工具的基类。 每个上下文工具以这样的方式运作:

  • 每个上下文工具有一个唯一的名称,其只会操作环境和上下文中对应名称的项目。
  • 每个上下文工具提供三个方法:进入方法、退出方法和询问方法,其中前两个方法在预处理时使用,而询问方法则是在渲染时从上下文中读出 所约定的数据。
  • 每个上下文工具自行维护是否需要进行下一次迭代。

在上下文工具中可以尽情修改envcontext,因为已经事先使用了immer来确定不可变性。

另外,需要注意,Contexter永远是无状态的,也就是说同一个contexter可以用在不同的对象上。

TODO 是不是需要提供一个『如果已经确定不需要二次迭代,那么下一次进入就会自动跳过』的方法啊?

Type Parameters

  • NodeType = Node

  • ContextType = any

  • EnvType = any

Hierarchy

Index

Constructors

  • new ContexterBase<NodeType, ContextType, EnvType>(key: string, default_val: EnvType): ContexterBase<NodeType, ContextType, EnvType>
  • 上下文工具的构造函数。

    Type Parameters

    • NodeType = Node

    • ContextType = any

    • EnvType = any

    Parameters

    • key: string

      本工具的唯一名称。

    • default_val: EnvType

      如果环境还没创建,默认的环境的方法。

    Returns ContexterBase<NodeType, ContextType, EnvType>

Properties

get_default_val: (() => EnvType)

Type declaration

    • (): EnvType
    • Returns EnvType

key: string

Methods

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

    Parameters

    Returns void

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

    Parameters

    Returns ContextType

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

    Parameters

    Returns EnvType

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

    Parameters

    Returns void

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

    Parameters

    • env: Env
    • val: EnvType

    Returns void

Generated using TypeDoc