class SyntaxSuggest::CaptureCodeContext

将“无效代码块”转换为有用的上下文

算法主要分为三个阶段

  1. 清理/格式化输入源代码

  2. 搜索无效代码块

  3. 将无效代码块格式化为有意义的内容

此类处理第三部分。

该算法非常擅长捕获单个代码块中的所有语法错误(在第2步中),但结果可能包含歧义。人类擅长模式匹配和过滤,并且可以在脑海中删除无关的数据,但是他们无法添加不存在的额外数据。

对于已知的歧义情况,此类会将上下文添加回歧义,以便程序员拥有完整的信息。

除了处理这些歧义之外,它还会捕获周围的代码上下文信息

puts block.to_s # => "def bark"

context = CaptureCodeContext.new(
  blocks: block,
  code_lines: code_lines
)

lines = context.call.map(&:original)
puts lines.join
# =>
  class Dog
    def bark
  end