hassamullah

hassamullah

Cannot figure out NimbleCSV parser

In the first code snippet in the NimbleCSV Docs

NimbleCSV.define(MyParser, separator: “\t”, escape: “"”)

I don’t know where the MyParser variable comes form, kindly guide me

FYI, I’m new to elixir and still figuring out its ways

Most Liked

sodapopcan

sodapopcan

Hello and welcome to the forums!

NimbleCSV uses a pattern that isn’t too common amongst libraries so your confusion is certainly understandable. MyParser is not a variable but an atom. What that line is doing is actually defining a module called MyParser which you can then use like so: MyParser.parse_string("foo,bar"). You can call MyParser whatever you want.

kip

kip

ex_cldr Core Team

MyParser isn’t a variable. It’s a module name (module names are also atoms).

The docs for nimble_csv show that NimbleCsv.define/2 actually defines a new module, using the name you provide (in the example, its MyParser) that implements a parser using the options you pass.

Thats why you call MyParser.parse_string/1 to do the actual parsing of some CSV data. MyParser is just a regular Elixir module that just happened to be generated for you.

Where Next?

Popular in Questions Top

Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? Ecto.Repo — Ecto v3.14.0 has exampl...
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New

Other popular topics Top

dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
gausby
I asked this very same question on twitter and got some interesting feedback, but I thought it would be a good question to ask here as we...
1207 40082 209
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New
AstonJ
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New

We're in Beta

About us Mission Statement