csv2other 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/.simplecov ADDED
@@ -0,0 +1,6 @@
1
+ SimpleCov.start do
2
+ add_filter '/spec/'
3
+ add_filter '/config/'
4
+ add_filter '/lib/'
5
+ add_filter '/vendor/'
6
+ end if ENV["COVERAGE"]
data/.travis.yml ADDED
@@ -0,0 +1,2 @@
1
+ language: ruby
2
+ script: bundle exec rspec spec
data/Gemfile ADDED
@@ -0,0 +1,20 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in csv2other.gemspec
4
+ gemspec
5
+
6
+ group :developpement do
7
+ gem "guard"
8
+ gem "guard-rspec"
9
+ gem "rb-fsevent"
10
+
11
+ gem "growl"
12
+ gem "spork"
13
+ gem "guard-spork"
14
+ end
15
+
16
+ group :test do
17
+ gem "simplecov"
18
+ gem "json", '~> 1.7.7'
19
+ gem "coveralls"
20
+ end
data/Guardfile ADDED
@@ -0,0 +1,13 @@
1
+ guard 'spork' do
2
+ watch('Gemfile')
3
+ watch('Gemfile.lock')
4
+ watch('spec/spec_helper.rb') { :rspec }
5
+ end
6
+
7
+ guard 'rspec' do
8
+ watch(%r{^spec/.+_spec\.rb$})
9
+ watch(%r{.+\.erb}) { "spec" }
10
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
11
+ watch('spec/spec_helper.rb') { "spec" }
12
+ watch(%r{^spec/data/.*/.*}) { "spec" }
13
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Nicolas Ledez
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,28 @@
1
+ # Csv2other
2
+
3
+ A tiny gem to convert CSV files to other format with template
4
+
5
+ Current build:
6
+ [![Build Status](https://travis-ci.org/nledez/csv2other.png)](https://travis-ci.org/nledez/csv2other)
7
+ [![Coverage Status](https://coveralls.io/repos/nledez/csv2other/badge.png)](https://coveralls.io/r/nledez/csv2other)
8
+ [![Dependency Status](https://gemnasium.com/nledez/csv2other.png)](https://gemnasium.com/nledez/csv2other)
9
+ [![Code Climate](https://codeclimate.com/github/nledez/csv2other.png)](https://codeclimate.com/github/nledez/csv2other)
10
+
11
+
12
+ ## Installation
13
+
14
+ Add this line to your application's Gemfile:
15
+
16
+ gem 'csv2other'
17
+
18
+ And then execute:
19
+
20
+ $ bundle
21
+
22
+ Or install it yourself as:
23
+
24
+ $ gem install csv2other
25
+
26
+ ## Usage
27
+
28
+ TODO: Write usage instructions here
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/csv2other.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'csv2other/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "csv2other"
8
+ gem.version = Csv2other::VERSION
9
+ gem.authors = ["Nicolas Ledez"]
10
+ gem.email = ["github@ledez.net"]
11
+ gem.description = %q{A tiny gem to convert CSV files to other format with template}
12
+ gem.summary = %q{You prepare a template, use CSV to iterate and you have some informations}
13
+ gem.homepage = ""
14
+
15
+ gem.add_dependency "nokogiri"
16
+
17
+ gem.add_development_dependency "rspec"
18
+
19
+ gem.files = `git ls-files`.split($/)
20
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
21
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
22
+ gem.require_paths = ["lib"]
23
+ end
data/lib/csv2other.rb ADDED
@@ -0,0 +1,55 @@
1
+ require 'csv2other/version'
2
+ require 'csv'
3
+ require 'erb'
4
+ require 'nokogiri'
5
+
6
+ class Csv2other
7
+ attr_reader :content
8
+
9
+ def initialize
10
+ @content = {}
11
+ end
12
+
13
+ def parse(csv_filename, key)
14
+ key_symbol = key.to_sym
15
+ CSV.foreach(csv_filename, :col_sep =>';', :headers => true, :header_converters => :symbol) do |line|
16
+ current_key = line[key_symbol]
17
+ @content[current_key] = line
18
+ end
19
+ end
20
+
21
+ def list
22
+ @content.keys
23
+ end
24
+
25
+ def load_template(template_filename)
26
+ @template_filename = template_filename
27
+ @template = File.open(@template_filename).readlines.join
28
+ end
29
+
30
+ def each
31
+ @content.each do |k, v|
32
+ yield k, v
33
+ end
34
+ end
35
+
36
+ def render(my_binding = binding)
37
+ ERB.new(@template).result(my_binding)
38
+ end
39
+
40
+ def validate_with_xsd(xsd_path, binding_from, xpath = nil)
41
+ content = self.render(binding_from)
42
+ unless xpath.nil?
43
+ content = Nokogiri::XML(content).xpath(xpath).to_xml
44
+ end
45
+
46
+ xsd_path = xsd_path
47
+ xsddoc = Nokogiri::XML(File.read(xsd_path), xsd_path)
48
+ xsd = Nokogiri::XML::Schema.from_document(xsddoc)
49
+
50
+ xsd.validate(Nokogiri::XML(content)).each do |error|
51
+ puts error.message
52
+ raise error
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,3 @@
1
+ class Csv2other
2
+ VERSION = "0.0.4"
3
+ end
@@ -0,0 +1,5 @@
1
+ module Csv2otherSpecHelper
2
+ def diff_file(dest, reference)
3
+ File.read(dest).should == File.read(reference)
4
+ end
5
+ end
@@ -0,0 +1,4 @@
1
+ host;login;passwd
2
+ host1;logina;host1-logina
3
+ host2;loginb;host2-loginb
4
+ host3;loginc;host3-loginc
@@ -0,0 +1,5 @@
1
+ Create host: <%= @e[:host] %>
2
+ With credentials:
3
+ Login: <%= @e[:login] %>
4
+ Passwd: <%= @e[:passwd] %>
5
+
@@ -0,0 +1,15 @@
1
+ Create host: host1
2
+ With credentials:
3
+ Login: logina
4
+ Passwd: host1-logina
5
+
6
+ Create host: host2
7
+ With credentials:
8
+ Login: loginb
9
+ Passwd: host2-loginb
10
+
11
+ Create host: host3
12
+ With credentials:
13
+ Login: loginc
14
+ Passwd: host3-loginc
15
+
@@ -0,0 +1,4 @@
1
+ username;account;password
2
+ Rudolph Weldon;rudolph;sasdacFoaDry
3
+ Pierrick Judicaël;pierrick;GutVicDyWeuk
4
+ Mael Roparzh;mael;WheklAcyeug8
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0"?>
2
+ <account>
3
+ <username><%= @e[:username] %></username>
4
+ <account><%= @e[:account] %></account>
5
+ <password><%= @e[:password] %></password>
6
+ </account>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0"?>
2
+ <account>
3
+ <username>Mael Roparzh</username>
4
+ <account>mael</account>
5
+ <password>WheklAcyeug8</password>
6
+ </account>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0"?>
2
+ <account>
3
+ <username>Pierrick Judicaël</username>
4
+ <account>pierrick</account>
5
+ <password>GutVicDyWeuk</password>
6
+ </account>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0"?>
2
+ <account>
3
+ <username>Rudolph Weldon</username>
4
+ <account>rudolph</account>
5
+ <password>sasdacFoaDry</password>
6
+ </account>
@@ -0,0 +1,2 @@
1
+ username;account;password
2
+ Rudolph Weldon;rudolph;sasdacFoaDry
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0"?>
2
+ <account>
3
+ <username><%= @e[:username] %></username>
4
+ <account><%= @e[:account] %></account>
5
+ <password><%= @e[:password] %></password>
6
+ <account>
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
3
+
4
+ <xs:element name="account">
5
+ <xs:complexType>
6
+ <xs:sequence>
7
+ <xs:element name="username" type="xs:string"/>
8
+ <xs:element name="account" type="xs:string"/>
9
+ <xs:element name="password" type="xs:string"/>
10
+ </xs:sequence>
11
+ </xs:complexType>
12
+ </xs:element>
13
+
14
+ </xs:schema>
@@ -0,0 +1,2 @@
1
+ username;account;password
2
+ Rudolph Weldon;rudolph;sasdacFoaDry
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0"?>
2
+ <account>
3
+ <username><%= @e[:username] %></username>
4
+ <account><%= @e[:account] %></account>
5
+ <password><%= @e[:password] %></password>
6
+ <subpart>
7
+ <needed>What ?</needed>
8
+ </subpart>
9
+ </account>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0"?>
2
+ <account>
3
+ <username><%= @e[:username] %></username>
4
+ <account><%= @e[:account] %></account>
5
+ <password><%= @e[:password] %></password>
6
+ <subpart>
7
+ <needed>What ?</needed>
8
+ <anotherneed>With value</anotherneed>
9
+ </subpart>
10
+ </account>
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
3
+
4
+ <xs:element name="account">
5
+ <xs:complexType>
6
+ <xs:sequence>
7
+ <xs:element name="username" type="xs:string"/>
8
+ <xs:element name="account" type="xs:string"/>
9
+ <xs:element name="password" type="xs:string"/>
10
+ <xs:element name="subpart">
11
+ <xs:complexType>
12
+ <xs:sequence>
13
+ <xs:element name="needed" type="xs:string"/>
14
+ <xs:element name="anotherneed" type="xs:string"/>
15
+ </xs:sequence>
16
+ </xs:complexType>
17
+ </xs:element>
18
+ </xs:sequence>
19
+ </xs:complexType>
20
+ </xs:element>
21
+
22
+ </xs:schema>
@@ -0,0 +1,4 @@
1
+ <subpart>
2
+ <needed>What ?</needed>
3
+ <anotherneed>With value</anotherneed>
4
+ </subpart>
@@ -0,0 +1,13 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
3
+
4
+ <xs:element name="subpart">
5
+ <xs:complexType>
6
+ <xs:sequence>
7
+ <xs:element name="needed" type="xs:string"/>
8
+ <xs:element name="anotherneed" type="xs:string"/>
9
+ </xs:sequence>
10
+ </xs:complexType>
11
+ </xs:element>
12
+
13
+ </xs:schema>
@@ -0,0 +1,157 @@
1
+ require File.dirname(__FILE__) + '../../spec_helper'
2
+ require 'csv2other_helper'
3
+ require 'csv2other'
4
+
5
+ Dir.mkdir "tmp" unless Dir.exist? "tmp"
6
+
7
+ describe "Csv2other" do
8
+ include Csv2otherSpecHelper
9
+
10
+ it "Can load data and create target file" do
11
+ converter01 = Csv2other.new
12
+ converter01.parse("spec/data/case01/01-input.csv", "host")
13
+ converter01.content.should be_an_instance_of(Hash)
14
+ converter01.list.should == [ "host1", "host2", "host3" ]
15
+
16
+ converter01.load_template("spec/data/case01/02-template.cli.erb")
17
+
18
+ filename_key = 'tmp/01-03-expected-with-key.cli'
19
+ destination = File.open(filename_key, "w")
20
+ converter01.each do |k, e|
21
+ @e = e
22
+ destination.puts converter01.render(binding)
23
+ end
24
+ destination.close
25
+
26
+ diff_file(filename_key, 'spec/data/case01/03-expected.cli')
27
+ end
28
+
29
+ it "Can create target file with value" do
30
+ converter01 = Csv2other.new
31
+ converter01.parse("spec/data/case01/01-input.csv", "host")
32
+
33
+ converter01.load_template("spec/data/case01/02-template.cli.erb")
34
+
35
+ filename_value = 'tmp/01-03-expected-with-value.cli'
36
+ destination = File.open(filename_value, "w")
37
+ converter01.each do |k, e|
38
+ @e = e
39
+ destination.puts converter01.render(binding)
40
+ end
41
+ destination.close
42
+
43
+ diff_file(filename_value, 'spec/data/case01/03-expected.cli')
44
+ end
45
+
46
+ it "Can create target file without parameters" do
47
+ converter01 = Csv2other.new
48
+ converter01.parse("spec/data/case01/01-input.csv", "host")
49
+
50
+ converter01.load_template("spec/data/case01/02-template.cli.erb")
51
+
52
+ filename_value = 'tmp/01-03-expected-with-parameters.cli'
53
+ destination = File.open(filename_value, "w")
54
+ converter01.each do |k, e|
55
+ @e = e
56
+ destination.puts converter01.render(binding)
57
+ end
58
+ destination.close
59
+
60
+ diff_file(filename_value, 'spec/data/case01/03-expected.cli')
61
+ end
62
+
63
+ it "Can generate separe files" do
64
+ converter02 = Csv2other.new
65
+ converter02.parse("spec/data/case02/01-case02.csv", "account")
66
+
67
+ converter02.load_template("spec/data/case02/02-template.xml.erb")
68
+
69
+ converter02.each do |k, e|
70
+ @e = e
71
+ filename_value = "tmp/02-#{k}.xml"
72
+ destination = File.open(filename_value, "w")
73
+ destination.puts converter02.render(binding)
74
+ destination.close
75
+ end
76
+
77
+ converter02.list.each do |account|
78
+ diff_file("tmp/02-#{account}.xml", "spec/data/case02/03-results/#{account}.xml")
79
+ end
80
+ end
81
+
82
+ it "Can validate XML" do
83
+ converter03 = Csv2other.new
84
+ converter03.parse("spec/data/case03/01-case03.csv", "account")
85
+
86
+ converter03.load_template("spec/data/case03/02-template.xml.erb")
87
+
88
+ filename_value = "tmp/03-dummy.xml"
89
+ destination = File.open(filename_value, "w")
90
+
91
+ begin
92
+ orig_stdout = $stdout.clone
93
+ $stdout.reopen File.new('tmp/stdout.txt', 'w')
94
+
95
+ expect do
96
+ converter03.each do |k, e|
97
+ @e = e
98
+ destination.puts converter03.render(binding)
99
+ converter03.validate_with_xsd("spec/data/case03/account.xsd", binding)
100
+ end
101
+ end.to raise_error(Nokogiri::XML::SyntaxError, "Element 'account': This element is not expected.")
102
+ rescue Exception => e
103
+ $stdout.reopen orig_stdout
104
+ raise e
105
+ ensure
106
+ $stdout.reopen orig_stdout
107
+ end
108
+
109
+ destination.close
110
+ end
111
+
112
+ it "Can validate XML subpart" do
113
+ converter04 = Csv2other.new
114
+ converter04.parse("spec/data/case04/01-case04.csv", "account")
115
+
116
+ converter04.load_template("spec/data/case04/02-template.xml.erb")
117
+
118
+ filename_value = "tmp/03-dummy-02.xml"
119
+ destination = File.open(filename_value, "w")
120
+
121
+ converter04.each do |k, e|
122
+ @e = e
123
+ converter04.validate_with_xsd("spec/data/case04/account.xsd", binding)
124
+ converter04.validate_with_xsd("spec/data/case04/subpart.xsd", binding, '/account/subpart')
125
+ destination.puts converter04.render(binding)
126
+ end
127
+
128
+ destination.close
129
+
130
+ # With bad part
131
+ converter04.load_template("spec/data/case04/02-template-bad.xml.erb")
132
+
133
+ filename_value = "tmp/03-dummy-02-bad.xml"
134
+ destination = File.open(filename_value, "w")
135
+
136
+ begin
137
+ orig_stdout = $stdout.clone
138
+ $stdout.reopen File.new('tmp/stdout.txt', 'w')
139
+
140
+ expect do
141
+ converter04.each do |k, e|
142
+ @e = e
143
+ converter04.validate_with_xsd("spec/data/case04/account.xsd", binding)
144
+ converter04.validate_with_xsd("spec/data/case04/subpart.xsd", binding, '/account/subpart')
145
+ destination.puts converter04.render(binding)
146
+ end
147
+ end.to raise_error(Nokogiri::XML::SyntaxError, "Element 'subpart': Missing child element(s). Expected is ( anotherneed ).")
148
+ rescue Exception => e
149
+ $stdout.reopen orig_stdout
150
+ raise e
151
+ ensure
152
+ $stdout.reopen orig_stdout
153
+ end
154
+
155
+ destination.close
156
+ end
157
+ end
@@ -0,0 +1,29 @@
1
+ require 'spork'
2
+ require 'rspec'
3
+
4
+ Spork.prefork do
5
+ unless ENV['DRB']
6
+ require 'simplecov'
7
+ SimpleCov.start 'rails'
8
+ end
9
+ end
10
+
11
+ Spork.each_run do
12
+ if ENV['DRB']
13
+ require 'simplecov'
14
+ SimpleCov.start 'rails'
15
+ end
16
+ end
17
+
18
+ if ENV["CI"]
19
+ require 'coveralls'
20
+ Coveralls.wear!
21
+ end
22
+
23
+ RSpec.configure do |config|
24
+ config.treat_symbols_as_metadata_keys_with_true_values = true
25
+ config.run_all_when_everything_filtered = true
26
+ config.filter_run :focus
27
+
28
+ config.order = 'random'
29
+ end
metadata ADDED
@@ -0,0 +1,130 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: csv2other
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Nicolas Ledez
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-07-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nokogiri
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ description: A tiny gem to convert CSV files to other format with template
47
+ email:
48
+ - github@ledez.net
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - .gitignore
54
+ - .rspec
55
+ - .simplecov
56
+ - .travis.yml
57
+ - Gemfile
58
+ - Guardfile
59
+ - LICENSE.txt
60
+ - README.md
61
+ - Rakefile
62
+ - csv2other.gemspec
63
+ - lib/csv2other.rb
64
+ - lib/csv2other/version.rb
65
+ - spec/csv2other_helper.rb
66
+ - spec/data/case01/01-input.csv
67
+ - spec/data/case01/02-template.cli.erb
68
+ - spec/data/case01/03-expected.cli
69
+ - spec/data/case02/01-case02.csv
70
+ - spec/data/case02/02-template.xml.erb
71
+ - spec/data/case02/03-results/mael.xml
72
+ - spec/data/case02/03-results/pierrick.xml
73
+ - spec/data/case02/03-results/rudolph.xml
74
+ - spec/data/case03/01-case03.csv
75
+ - spec/data/case03/02-template.xml.erb
76
+ - spec/data/case03/account.xsd
77
+ - spec/data/case04/01-case04.csv
78
+ - spec/data/case04/02-template-bad.xml.erb
79
+ - spec/data/case04/02-template.xml.erb
80
+ - spec/data/case04/account.xsd
81
+ - spec/data/case04/subpart.xml
82
+ - spec/data/case04/subpart.xsd
83
+ - spec/lib/csv2other_spec.rb
84
+ - spec/spec_helper.rb
85
+ homepage: ''
86
+ licenses: []
87
+ post_install_message:
88
+ rdoc_options: []
89
+ require_paths:
90
+ - lib
91
+ required_ruby_version: !ruby/object:Gem::Requirement
92
+ none: false
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ! '>='
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ requirements: []
104
+ rubyforge_project:
105
+ rubygems_version: 1.8.23
106
+ signing_key:
107
+ specification_version: 3
108
+ summary: You prepare a template, use CSV to iterate and you have some informations
109
+ test_files:
110
+ - spec/csv2other_helper.rb
111
+ - spec/data/case01/01-input.csv
112
+ - spec/data/case01/02-template.cli.erb
113
+ - spec/data/case01/03-expected.cli
114
+ - spec/data/case02/01-case02.csv
115
+ - spec/data/case02/02-template.xml.erb
116
+ - spec/data/case02/03-results/mael.xml
117
+ - spec/data/case02/03-results/pierrick.xml
118
+ - spec/data/case02/03-results/rudolph.xml
119
+ - spec/data/case03/01-case03.csv
120
+ - spec/data/case03/02-template.xml.erb
121
+ - spec/data/case03/account.xsd
122
+ - spec/data/case04/01-case04.csv
123
+ - spec/data/case04/02-template-bad.xml.erb
124
+ - spec/data/case04/02-template.xml.erb
125
+ - spec/data/case04/account.xsd
126
+ - spec/data/case04/subpart.xml
127
+ - spec/data/case04/subpart.xsd
128
+ - spec/lib/csv2other_spec.rb
129
+ - spec/spec_helper.rb
130
+ has_rdoc: