Notepad ++函数列表没有在没有缩进的类中显示函数

时间:2017-03-14 09:46:58

标签: notepad++

我一直在尝试使用Ruby解析器作为基础在Notepad ++中构建一个新的函数列表解析器,但遇到的问题是,如果函数没有在类中缩进,则不会拾取函数。

例如,以下工作正常:

class Dog
  def initialize(breed, name)  
    # Instance variables  
    @breed = breed  
    @name = name  
  end;

  def bark  
    puts 'Ruff! Ruff!'  
  end;

  def display  
    puts "I am of #{@breed} breed and my name is #{@name}"  
  end;
end Dog;

并生成此函数列表:

correct function list

但是,如果我们删除缩进:

class Dog
def initialize(breed, name)  
# Instance variables  
@breed = breed  
@name = name  
end;

def bark  
puts 'Ruff! Ruff!'  
end;

def display  
puts "I am of #{@breed} breed and my name is #{@name}"  
end;
end Dog;

我们结束了这个函数列表,其中缺少类定义(我假设因为类中的函数被忽略,所以不渲染空类):

wrong function list

我正在使用以下解析器:

<parser
    displayName="Ruby"
    id         ="ruby_function"
>
    <!-- within a class-->
    <classRange
        mainExpr    ="(?&lt;=^class\x20).*?(?=\n\S|\Z)"
    >
        <className>
            <nameExpr expr="\w+" />
        </className>
        <function
            mainExpr="^\s*def\s+\w+"
        >
            <functionName>
                <funcNameExpr expr="(?&lt;=def\s)\w+" />
            </functionName>
        </function>
    </classRange>
    <!-- without class-->
    <function
        mainExpr="^\s*def\s+\w+"
    >
        <functionName>
            <nameExpr expr="(?&lt;=def\s)\w+" />
        </functionName>
    </function>
</parser>

我认为问题源于classRange的mainExpr。任何人都可以解释解析器中可以更改的内容,以便正确地拾取函数,无论它们是否缩进?

0 个答案:

没有答案