class SyntaxSuggest::CaptureCodeContext

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

算法有三个主要阶段

  1. 净化/格式化输入源码

  2. 搜索无效代码块

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

此类处理第三部分。

算法非常擅长在第二步中将整个语法错误捕获到一个代码块中,但是结果可能包含歧义。人类擅长模式匹配和过滤,可以自行去除多余的数据,但他们无法添加不存在的数据。

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

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

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