class PPZ::ParserContext

当前行,所处的上下文 比如 一级 section 下面的 ul 下的 第 n 个 ul

Public Class Methods

new(root) click to toggle source
# File lib/doc/parser/context.rb, line 5
def initialize root
  @stack = [root]
end

Public Instance Methods

append(target) click to toggle source
# File lib/doc/parser/context.rb, line 9
def append target
  # ContainerClass: 容器类,如果上级不是,就造一个
  if(PPZ::Func::class_has_const? target, :ContainerClass) and (head.class != target.class::ContainerClass)
    append target.class::ContainerClass.new
  end
  # UpperClass: 上级类,如果上级不是,就出栈
  if(PPZ::Func::class_has_const? target, :UpperClass) and (head.class != target.class::UpperClass)
    pop_to target.class::UpperClass
  end

  head.append target # 加入 model
  @stack.push target if target.is_a? PPZ::AbstractWrapperModel # 加入 stack
end
head() click to toggle source
# File lib/doc/parser/context.rb, line 27
def head
  @stack[-1]
end
pop() click to toggle source
# File lib/doc/parser/context.rb, line 23
def pop
  @stack.pop
end
root() click to toggle source
# File lib/doc/parser/context.rb, line 31
def root
  @stack[0]
end

Private Instance Methods

pop_to(klass) click to toggle source
# File lib/doc/parser/context.rb, line 36
def pop_to klass
  loop do
    break if head.is_a? klass
    pop
  end
end