我想解析標準輸入文本,並獲取結構化數據容器對象。 我每次都會混淆,最後我會使用全局變量ARGF來分割。 我該如何做得更好?我怎樣才能更簡單易讀?或者什麼寶石幫助我?如何閱讀標準輸入文本數據並將其轉換爲Ruby中的結構化數據?
下面是我的醜陋的代碼一種情況:
# encoding: utf-8
$DATA = {}
$COUNT = 0
ARGF.each do |line|
col = line.split(nil).map(&:to_i)
if col.count == 1
next
elsif col.count == 2
$DATA[$COUNT][:cut_param] << { :cut_order => col[0], :pick_count => col[1] }
elsif col.count == 3
$COUNT += 1
$DATA[$COUNT] = {
:card_amount => col[0],
:cut_count => col[1],
:needle_order => col[2],
:cut_param => []
}
end
end
這有什麼錯嗎?您是否願意編寫更易於集成到更大工具中的代碼,而不需要每個工具都可以自行執行?這對我來說似乎很好。 – sarnold 2012-01-06 00:49:55
你真的需要零參數來拆分嗎? – 2012-01-06 02:59:39
如果您想幫助格式化數據,則需要提供您嘗試解析的數據樣本。另外,如果你的代碼發現有四列或更多列的行,你會做什麼? – 2012-01-06 04:58:43