Domanda

Voglio caricare una struttura di dati in uno script Ruby che associa una stringa a una tripla che contiene una combinazione di espressioni regolari, script e atomi. Il file che carica deve essere scrivibile dall'uomo.

Attualmente sto scrivendo il file per contenere un hash Ruby, caricandolo come stringa e chiamando eval. Vale a dire.

File di dati

{ "key1" => [ /pattern/, "text", "text" ],
  "key2" => [ "text2", :nil, "text3" ],
  "key3" => [ "text4", /pattern2/, /pattern3/ ] }

Script

def get_mapping
  f = File.new path
  return eval(f.read())
end

Va ??bene e funziona, ma sembra (i) come un po 'un hack, (ii) non sicuro. Quindi sono curioso di sapere: esiste un modo migliore per farlo?

È quasi JSON ma non penso che possa gestire facilmente atomi o espressioni regolari. Il formato del file può essere cambiato come aspetto in quanto rimane ragionevolmente leggibile / scrivibile dall'uomo.

È stato utile?

Soluzione

Dovresti davvero usare YAML per questo tipo di cose, il tuo codice è davvero rischioso.

YAML supporta regexps ed è abbastanza estensibile.

Altri suggerimenti

Hash es e Array possono essere schierato . Ciò potrebbe essere utile se si desidera archiviare i dati dal proprio programma in un file. Se sei interessato a dare all'utente la possibilità di fornire dati in file esterni, puoi dare un'occhiata a YAML .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top