Comments (2)
Right after posting this, I found that I could check with Table["Key"].IsTable
and that would return true only if the key exists, which does solve my problem. I am still curious what the use case for TomlLazy
is, however.
from tommy.
Hi, thanks for the question! Glad you managed to find the solution to your question.
TomlLazy
is mainly an abstraction over an array or a table that can be automatically created on access. The basic use case is to allow composing TOML files implicitly as such:
var toml = new TomlTable();
toml["array"][0] = "val1"; // toml["array"] returns a TomlLazy instance, but index access [0] automatically replaces TomlLazy with TomlArray
toml["array"][1] = "val2"; // toml["array"] now returns a TomlArray
The basic case is not really interesting, but the TomlLazy becomes useful when you use property initializiers, allowing you to construct the entire table in JSON-like syntax:
var toml = new TomlTable
{
["owner"] = // Here TomlLazy is implicitly created
{
["name"] = "Foo", // Here, TomlLazy is implicitly replaced with a TomlTable
["dob"] = "bar",
},
["array"] = { [0] = 1, [1] = 2 } // Same thing, but now TomlArray is created because of index access
};
This pattern was originally taken from SimpleJSON which at some point was a fairly popular JSON parser/writer for Unity games back when C# did not have.
Nowadays, I'd say that this implicit behaviour is somewhat cryptic, and it belongs to a separate library. Alas, I think it's a breaking change to remove it.
PS: TomlNode
has a HasKey
method to check whether it contains a key of certain name. If I understood your usecase correctly, Table.HasKey("Key")
should do the trick.
from tommy.
Related Issues (20)
- Generated TOML file contains unwanted hashtags between every line
- When saving an edited TOML file the last line is repeated to the next line corrupted HOT 6
- Different variable types in one array HOT 1
- TomlString doesn't allow specifying initial newline after delimiter HOT 4
- TommyExtensions MergeWith when using mergeNewValues bugged
- Nested inline TomlTable writes out of order
- Does this require a concrete class or can we set and get values directly? HOT 1
- Tommy does not properly handle ill-formed inline arrays HOT 1
- Unable to create TOML configuration from stream HOT 3
- 2.0.0 -> 3.1.1 performance degradation HOT 2
- Write layout - "As flat as possible option" HOT 2
- unable to load numbers without decimal places as double HOT 1
- Toml.WriteTo Custom Output support HOT 3
- Unable to write all nodes inside an array or a table
- Tables that are not loaded inline as write inline
- A way to make deep coppies of a TomlTable?
- Using an indexer on Table result in error
- Parse from a string rather than a file HOT 1
- Configuration binding of array leads to duplicate values
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tommy.