Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用ruby中的正则表达式在RubyonRails中获取php注释行和代码行_Ruby - Fatal编程技术网

如何使用ruby中的正则表达式在RubyonRails中获取php注释行和代码行

如何使用ruby中的正则表达式在RubyonRails中获取php注释行和代码行,ruby,Ruby,我是rails新手,目前我正在使用ruby为php、javascript/coffeescript存储库进行代码统计,我需要使用正则表达式不获取php、javascript和coffeescript文件的编码行和注释行(单行和多行注释)。有人能帮忙吗,提前谢谢你这是我的人: f = File.open("test.php") loc = 0 comments = 0 while line = f.gets if commented ||= line.match(/^\/\*/) c

我是rails新手,目前我正在使用ruby为php、javascript/coffeescript存储库进行代码统计,我需要使用正则表达式不获取php、javascript和coffeescript文件的编码行和注释行(单行和多行注释)。有人能帮忙吗,提前谢谢你这是我的人:

f = File.open("test.php")

loc = 0
comments = 0
while line = f.gets
  if commented ||= line.match(/^\/\*/)
    commented = nil if line.match(/\*\/$/)
    comments += 1
  elsif line.match(/^\s*\/\//)
    comments += 1
  else
    loc +=1 unless line.match(/^\s*\n/)
  end
end

puts loc
puts comments
这适用于:

//line comments
/* inline block comments */
/* multi
line
comments */
工作原理:

  • 你打开这个文件
  • 初始化0中的计数器
  • 使用get遍历每一行,并将其分配给line变量
  • 如果行与块注释的行匹配,则设置注释变量
  • 将1添加到注释变量
  • 如果设置了commented,则搜索注释的结尾,如果找到,则将commented设置为nil
  • 否则,如果未打开注释块且找到“/”,则在注释中添加1
  • 否则将1添加到loc,除非它是“空”行

听起来更像是一个Ruby问题,而不是Rails。谢谢您的回答,是的,我使用Ruby在php和javascript文件中获取注释行,我获取单行注释,但我在获取多行注释(/*…*/)方面遇到了问题。您能帮我考虑一下这个问题吗。