Current section
Files
Jump to
Current section
Files
lib/csv_editor.ex
defmodule CsvEditor do
@moduledoc """
Documentation for CsvEditor.
"""
def decode(file_path), do: decode(file_path, define_separator(file_path))
def decode(file_path, separator) do
header = decode_header(file_path, separator)
{header, decode_stream(file_path, separator) |> Stream.drop(1) |> Enum.to_list}
end
def decode_header(file_path, separator \\ ?;), do: decode_stream(file_path, separator) |> Enum.take(1) |> List.first
def decode_stream(file_path, separator \\ ?;), do: File.stream!(file_path) |> CSV.decode(separator: separator) |> Enum.to_list
def define_separator(file_path) do
semicolon_count = File.stream!(file_path)
|> Enum.take(1)
|> CSV.decode(separator: ?;)
|> Enum.to_list
|> hd
|> Enum.count
case semicolon_count do
1 -> ?,
_ -> ?;
end
end
end