www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 23373] New: add uda (e.g. csvIgnore) support in std.csv to


          Issue ID: 23373
           Summary: add uda (e.g.  csvIgnore) support in std.csv to ignore
                    some field
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: phobos
          Assignee: nobody puremagic.com
          Reporter: mingwu gmail.com

https://forum.dlang.org/post/rfitvsooqjuvvbftqugv forum.dlang.org

Currently std.csv can only handle basic scalar types, that is fine, but we need
ways to allow user mark some (non-scalar) fields should be ignored:

I'm trying this example:


struct Layout
    string name;
    int value;
    double other;

    Layout* parent;  // add extra pointer

auto records = text.csvReader!Layout(';');

Right now, if we add this extra pointer, the compiler will error out:


/dlang/dmd/linux/bin64/../../src/phobos/std/conv.d(223): Error: template
std.conv.toImpl cannot deduce function from argument types !(Layout*)(string),
candidates are:

I think if we can add add uda (e.g.  csvIgnore) support in std.csv, it will
make the library more flexible to use.

I do run into this problem today, i.e. my struct need some extra
non-simple-scalar fields (e.g. SysTime) other than those defined in the csv
file, I'm wondering what kind of work-around people use in such situation?

Run into this problem yet again:
class Foo {
  Foo[] foos;  // how to mark this field to be csv ignored?

Any work around?


Sep 25 2022