csv
Post on 18-Nov-2014
156 Views
Preview:
DESCRIPTION
TRANSCRIPT
TOI AUSSI TRAITE DU CSV AVEC TON RUBY
Un retour d'expérience
NICOLAS LEDEZ
Orange Business Services / IT&L@bs
DevCamp Rennes
Rennes On Rails
Rennes DevOps
Graphotec Cloud
J'AI :
Un fichier CSV de 600 lignes
Une cible de 100 fichiers XML
CHOIX DES ARMES
À la main
Macro VBA Excel
Perl
Python
Ruby
TDD 1/4
TDD 2/4
TDD 3/4
TDD 4/4
POUR COMMENCER
def parse_csv(filename) @list = {}
lines = File.open(filename).readlines lines[1..-1].each { |line| (fullname, login) = line.chomp.split(";")
MAIS...
def parse_csv(filename) @list = {}
lines = File.open(filename).readlines lines[1..-1].each { |line| (firstname, lastname, login) = line.chomp.split(";")
1 AN PLUS TARD
+----------------------+-------+-------+---------+---------+-----+-------+| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |+----------------------+-------+-------+---------+---------+-----+-------+| Libraries | 446 | 356 | 6 | 19 | 3 | 16 || spec/vsabuilder | 484 | 388 | 0 | 38 | 0 | 8 |+----------------------+-------+-------+---------+---------+-----+-------+
Code LOC: 356 Test LOC: 388 Code to Test Ratio: 1:1.1
L'AGILITÉC'est aussi savoir tout casser
UTILISER UNE LIB !
def parse(csv_filename, key) key_symbol = key.to_sym CSV.foreach(csv_filename, :col_sep =>';', :headers =>
true, :header_converters => :symbol) do |line| current_key = line[key_symbol] @content[current_key] = line endend
3 JOURS APRÈS
+----------------------+-------+-------+---------+---------+-----+-------+| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |+----------------------+-------+-------+---------+---------+-----+-------+| Libraries | 58 | 48 | 2 | 7 | 3 | 4 || spec/lib | 157 | 122 | 0 | 6 | 0 | 18 |+----------------------+-------+-------+---------+---------+-----+-------+
Code LOC: 48 Test LOC: 122 Code to Test Ratio: 1:2.5
Rappel :+----------------------+-------+-------+---------+---------+-----+-------+| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |+----------------------+-------+-------+---------+---------+-----+-------+| Libraries | 446 | 356 | 6 | 19 | 3 | 16 || spec/vsabuilder | 484 | 388 | 0 | 38 | 0 | 8 |+----------------------+-------+-------+---------+---------+-----+-------+
Code LOC: 356 Test LOC: 388 Code to Test Ratio: 1:1.1
SOURCES
https://github.com/nledez/csv2other
CONCLUSION
@NLEDEZ
top related