Giter Site home page Giter Site logo

Comments (9)

shanimal avatar shanimal commented on July 29, 2024

I have the same problem with one of our legacy .properties i18n files. I just want to point out that fixing this issue (assign keys to a String) might cause issues for people who are using this to convert the object to JSON.

var s = new String("foo");
s.bar = "bar"
console.log(""+s) // VM199:4 foo
console.log(s.bar) // VM199:5 bar
JSON.stringify(s) // "foo" (note that bar is not represented in the final object)

The fix of course might be to resolve those issues in the properties files...
app.name=My App
app.version=2

from properties.

steveukx avatar steveukx commented on July 29, 2024

My current plan is to interpret the object for .path() at the time it is requested rather than as the properties object is built, deferring this TypeError out of construction.

Adding an option to ignore the property tree of primitives would probably resolve this case -

properties = {};
properties.a = new String('a');
properties.a.b = 'b';

JSON.stringify(properties); // {"a": "a"}
properties.a.b === 'b'; // true

from properties.

shanimal avatar shanimal commented on July 29, 2024

Also, two problems exist. The first is when we try to assign an object to a string (which throws an error) the other is when the object already exists an we try to assign a string to it.

app.version=2
app=My App

Honestly it would make sense to have some kind of option we could add that would tell the parser to not error and/or handle primitive assignments.

In my case since I'm ultimately creating a JSON file, I might be rather bewildered when some of my keys are missing. :)

from properties.

richardsimko avatar richardsimko commented on July 29, 2024

What's the ETA on this? I'm working on a fix but I'm afraid it won't quite be up to the standard of making a PR.

from properties.

steveukx avatar steveukx commented on July 29, 2024

Apologies about the delay, I've had a lot of other things on - festive break seems like as good a time as any to work on this.

from properties.

richardsimko avatar richardsimko commented on July 29, 2024

No worries, I'll keep tuned :)

from properties.

richardsimko avatar richardsimko commented on July 29, 2024

What would be a reasonable default when trying to get this property? I.e. what should properties.get('app') give in the original example? The string "My app" or the object containing all values below?

I feel like the first one makes more sense but they both have their uses.

from properties.

steveukx avatar steveukx commented on July 29, 2024

I am of the opinion that overwriting the original string value with an object should mean that the original string is replaced so the returned value would be the object.

from properties.

richardsimko avatar richardsimko commented on July 29, 2024

That does make sense. The way get is implemented currently it primarily looks in the _properties object which means that 'app' will resolve to "My app" in the example.

I have implemented what seems to be a functioning solution in terms of the parsing at least, I'll make a PR so you can have a look at it if you like. If you have any ideas about how to modify the getter then I'd love to hear them!

from properties.

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.