我一直在尝试使用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;
并生成此函数列表:
但是,如果我们删除缩进:
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;
我们结束了这个函数列表,其中缺少类定义(我假设因为类中的函数被忽略,所以不渲染空类):
我正在使用以下解析器:
<parser
displayName="Ruby"
id ="ruby_function"
>
<!-- within a class-->
<classRange
mainExpr ="(?<=^class\x20).*?(?=\n\S|\Z)"
>
<className>
<nameExpr expr="\w+" />
</className>
<function
mainExpr="^\s*def\s+\w+"
>
<functionName>
<funcNameExpr expr="(?<=def\s)\w+" />
</functionName>
</function>
</classRange>
<!-- without class-->
<function
mainExpr="^\s*def\s+\w+"
>
<functionName>
<nameExpr expr="(?<=def\s)\w+" />
</functionName>
</function>
</parser>
我认为问题源于classRange的mainExpr。任何人都可以解释解析器中可以更改的内容,以便正确地拾取函数,无论它们是否缩进?