标签: ruby-parser

为什么读取CSV文件时会有一个尾随列?

我有一个CSV文件,其结构如下:

"customer_id";"customer_name";"quantity";
"id1234";"Henry";"15";
Run Code Online (Sandbox Code Playgroud)

使用Ruby的标准CSV库解析:

csv_data = CSV.read(pathtofile,{
    :headers => :first_row,
    :col_sep => ";",
    :quote_char => '"'
    :row_sep => "\r\n" #setting it to "\r" or "\n" results in MalformedCSVError
})

puts csv_data.headers.count #4
Run Code Online (Sandbox Code Playgroud)

我不明白为什么解析似乎导致四列,尽管文件只包含三列.这不是解析文件的正确方法吗?

ruby csv parsing multiple-columns ruby-parser

3
推荐指数
1
解决办法
154
查看次数

为什么此发送模式不匹配?

我写了一个自定义的 rubocop cop,摘录如下:

def_node_matcher :is_foo_bar?, <<-PATTERN
  (send (const nil :Foo) :bar)
PATTERN

def on_send(node)
  puts "Match" if is_foo_bar?(node)
end
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用以下代码:

Foo.bar
Run Code Online (Sandbox Code Playgroud)

有趣的是,node.to_s下面的内容与我的模式完全匹配:

"(send
  (const nil :Foo) :bar)"
Run Code Online (Sandbox Code Playgroud)

但节点不匹配。如果我将模式更改为以下内容,它仍然有效:

(send (...) :bar)
Run Code Online (Sandbox Code Playgroud)

为什么我原来的匹配不起作用?

我的版本:

  • 红宝石2.6.2
  • AST 2.4.0
  • 鲁博科普 0.77.0
  • 解析器2.6.4.1

ruby-parser rubocop

1
推荐指数
1
解决办法
490
查看次数

标签 统计

ruby-parser ×2

csv ×1

multiple-columns ×1

parsing ×1

rubocop ×1

ruby ×1