21 lines
		
	
	
		
			546 B
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			21 lines
		
	
	
		
			546 B
		
	
	
	
		
			Elixir
		
	
	
	
	
	
defmodule CSV do
 | 
						|
  @moduledoc """
 | 
						|
  Helper to interact with CSV
 | 
						|
  """
 | 
						|
 | 
						|
  def parse(path) do
 | 
						|
    content = File.read!(path)
 | 
						|
    [_ | parts] = String.replace(content, "\r", "") |> String.split("\n") |> Enum.filter(fn v -> v != "" end)
 | 
						|
    names = Enum.map(parts, fn v ->
 | 
						|
      [name | _ ] = String.split(v, ";")
 | 
						|
      String.trim(name, "\"")
 | 
						|
    end)
 | 
						|
    students = Enum.map(names, fn v ->
 | 
						|
      IO.inspect(v)
 | 
						|
      [_, lastname, firstname] = Regex.run(~r/(^[A-Z -]{2,}) (.+)/, v)
 | 
						|
      {lastname, firstname}
 | 
						|
    end)
 | 
						|
    {:ok, students}
 | 
						|
  end
 | 
						|
end
 |