csv

17
TOI AUSSI TRAITE DU CSV AVEC TON RUBY Un retour d'expérience

Upload: nicolas-ledez

Post on 18-Nov-2014

156 views

Category:

Technology


0 download

DESCRIPTION

Un retour d'expérience sur comment traiter des fichiers CSV. C'est simple et basique, mais c'est mieux en le disant.

TRANSCRIPT

Page 1: Csv

TOI AUSSI TRAITE DU CSV AVEC TON RUBY

Un retour d'expérience

Page 2: Csv

NICOLAS LEDEZ

Orange Business Services / IT&L@bs

DevCamp Rennes

Rennes On Rails

Rennes DevOps

Graphotec Cloud

Page 3: Csv

J'AI :

Un fichier CSV de 600 lignes

Une cible de 100 fichiers XML

Page 4: Csv

CHOIX DES ARMES

À la main

Macro VBA Excel

Perl

Python

Ruby

Page 5: Csv

TDD 1/4

Page 6: Csv

TDD 2/4

Page 7: Csv

TDD 3/4

Page 8: Csv

TDD 4/4

Page 9: Csv

POUR COMMENCER

def parse_csv(filename) @list = {}

lines = File.open(filename).readlines lines[1..-1].each { |line| (fullname, login) = line.chomp.split(";")

Page 10: Csv

MAIS...

def parse_csv(filename) @list = {}

lines = File.open(filename).readlines lines[1..-1].each { |line| (firstname, lastname, login) = line.chomp.split(";")

Page 11: Csv

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

Page 12: Csv

L'AGILITÉC'est aussi savoir tout casser

Page 13: Csv

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

Page 14: Csv

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

Page 15: Csv

SOURCES

https://github.com/nledez/csv2other

Page 16: Csv

CONCLUSION

Page 17: Csv

@NLEDEZ