www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Chaining input

reply "Chris" <wendlec tcd.ie> writes:
I have the following code that converts input like

blah, blub, gobble, dygook

to string[]

auto f = File("file.txt", "r");
auto words = f.byLine
                  .map!(
                    a => a.to!(string)
                          .splitter(", ")
                          .filter!(a => a.length)
                    )
                    .copy(appender!(string[])).data;

I'm sure there is room for improvement.

D is pretty cool in this way. Once you get used to this kind of 
code, you're spoiled forever.
May 08 2015
parent reply "Robert burner Schadek" <rburners gmail.com> writes:
On Friday, 8 May 2015 at 11:00:01 UTC, Chris wrote:
 I'm sure there is room for improvement.
It looks like your reading some kind of comma seperated values (csv). have a look at std.csv of phobos ``` foreach(record; file.byLine.joiner("\n").csvReader!(Tuple!(string, string, int))) { writefln("%s works as a %s and earns $%d per year", record[0], record[1], record[2]); } ```
May 08 2015
parent "Chris" <wendlec tcd.ie> writes:
On Friday, 8 May 2015 at 11:14:43 UTC, Robert burner Schadek 
wrote:
 On Friday, 8 May 2015 at 11:00:01 UTC, Chris wrote:
 I'm sure there is room for improvement.
It looks like your reading some kind of comma seperated values (csv). have a look at std.csv of phobos ``` foreach(record; file.byLine.joiner("\n").csvReader!(Tuple!(string, string, int))) { writefln("%s works as a %s and earns $%d per year", record[0], record[1], record[2]); } ```
Yeah, I actually wanted to have a closer look at std.csv. But in this case the input format may change (comments, keywords etc.), so I might need a customized parser anyway.
May 08 2015