Coder Social home page Coder Social logo

Comments (8)

nartc avatar nartc commented on September 2, 2024 1

My initial thought that that would not be possible given that the library needs to ship Flatten capability. But I'll think about this a little bit more then I'll get back to you.

from mapper.

nartc avatar nartc commented on September 2, 2024

https://automapper.netlify.app/docs/usages/features/naming-convention have you checked out this docs?

from mapper.

AliYusuf95 avatar AliYusuf95 commented on September 2, 2024

@nartc Yes I did, the thing that I have to use a naming convention for the source/distention but in my case I don't have a fixed convention.

I thing the default behavior should map between the properties that having same name unless we specify a naming convention or the library should ship with it an implementation for such behavior.

from mapper.

AliYusuf95 avatar AliYusuf95 commented on September 2, 2024

@nartc for now I implemented this convention to solve my problem, but I'm not sure if it'll cover all scenarios

class FlattenConvention implements NamingConvention {
  separatorCharacter: '';
  splittingExpression: RegExp = /(^.+)/i;
  transformPropertyName(sourcePropNameParts: string[]): string {
    return sourcePropNameParts.join('');
  }
}

Mapper.withGlobalSettings({
  sourceNamingConvention: FlattenConvention,
  destinationNamingConvention: FlattenConvention,
});

from mapper.

nartc avatar nartc commented on September 2, 2024

What exactly does this naming convention do?

from mapper.

AliYusuf95 avatar AliYusuf95 commented on September 2, 2024

In my case, I don't want to use naming conventions for automatically mapping.
I just want to map whatever key on the source to its corresponding key in the destination and if I have customization I'll use forMember to do it.
For example if I have these classes:

class Company {
  @AutoMap()
  camelCase: string;
  @AutoMap()
  PascalCase: string;
  @AutoMap()
  snake_case: string;
  @AutoMap()
  ['Some_Complex.Key| string']: string;
}
class CompanyVm {
  @AutoMap()
  camelCase: string;
  @AutoMap()
  PascalCase: string;
  @AutoMap()
  snake_case: string;
  @AutoMap()
  ['Some_Complex.Key| string']: string;
}

I expect that mapping will work without any extra configuration.
That's what I'm trying to achieve with my FlattenConvention, and it works fine unless there is . in the keys.

from mapper.

nartc avatar nartc commented on September 2, 2024

@AliYusuf95 I see. I might be able to provide a MixedConvention mode for cases like yours. But it's gotta be a configuration because I need to keep the CamelCaseNamingConvention as default.

from mapper.

nartc avatar nartc commented on September 2, 2024

Closing this due to #243 . I won't be adding this to the current @nartc/automapper as stated in the announcement. That said, this will be available in the new version. Sorry for any inconvenience.

from mapper.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.