【问题标题】:Parse Ruby file for comments解析 Ruby 文件以获取注释
【发布时间】:2016-12-13 21:31:06
【问题描述】:

我想要一些可以解析 ruby​​ 文件的东西来给我 cmets 的文件位置。按受欢迎程度排名:

  1. 理想情况下,我可以将一些命令行参数传递给“ruby”,因为“ruby”当然会知道。但是好像没有这个?
  2. 有谁知道“ruby”中是否/在哪里我可以挂钩并使用它的方法来知道 cmets 在哪里?
  3. 一些众所周知的正则表达式?

谢谢!

【问题讨论】:

  • 嗨,给我们一些输入和预期输出,也许还有一些你尝试过的代码。你可以阅读这篇文章来改进你的答案stackoverflow.com/help/how-to-ask
  • 输入是任何带有 cmets 的 ruby​​ 文件。只要我能导出 cmets 的文件位置,输出可以是任何形式。我天真地从 /\#.*/ 之类的正则表达式开始,但很快意识到它比这更复杂(例如,嵌入在字符串中的主题标签)。我希望并且稍后会研究,我可以连接到“ruby”可执行文件,因为谁应该最了解,对吧?否则,我将尝试从以下位置调整正则表达式:stackoverflow.com/questions/5865371/…
  • 如何确定“场外资源”是什么?操作方法链接没有提到它。
  • on-topic help page 禁止请求“书籍、工具、软件库、教程或其他非现场资源”。这就是它所说的一切,所以如果不清楚,那么我会要求对元数据进行澄清。这将是改进帮助页面的第一步。
  • 提示 Ruby cmets 有多么复杂,因此 regexp 永远无法涵盖所有​​情况:stackoverflow.com/questions/2989762/multi-line-comments-in-ruby

标签: ruby comments


【解决方案1】:

找到:https://github.com/ruby/ruby/tree/trunk/ext/ripper

例子:

require 'ripper'
require 'pp'

class CommentRipper < Ripper::SexpBuilder
    def on_comment(token)
        super.tap { |result| pp result }
    end
end

contents = File.read("file.rb")
pp CommentRipper.new(contents).parse

帮助我更好地了解 Ripper:http://svenfuchs.com/2009/7/5/using-ruby-1-9-ripper

【讨论】:

    猜你喜欢
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    • 2014-03-03
    • 1970-01-01
    • 2011-10-27
    相关资源
    最近更新 更多