www.digitalmars.com         C & C++   DMDScript  

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

https://issues.dlang.org/show_bug.cgi?id=23373

          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:

https://dlang.org/phobos/std_csv.html

```
struct Layout
{
    string name;
    int value;
    double other;

     csvIgnore
    Layout* parent;  // add extra pointer
}

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

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

https://run.dlang.io/is/EvU6Ee

/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?

Thanks.

--
Sep 25 2022