diff --git a/vlib/toml/any.v b/vlib/toml/any.v index 3ebec30c07..e72ca04bda 100644 --- a/vlib/toml/any.v +++ b/vlib/toml/any.v @@ -221,11 +221,8 @@ pub fn (m map[string]Any) as_strings() map[string]string { pub fn (m map[string]Any) to_toml() string { mut toml_text := '' for k, v in m { - mut key := k - if key.contains(' ') { - key = '"${key}"' - } - toml_text += '${key} = ' + v.to_toml() + '\n' + key := if k.contains(' ') { '"${k}"' } else { k } + toml_text += '${key} = ${v.to_toml()}\n' } toml_text = toml_text.trim_right('\n') return toml_text @@ -235,12 +232,12 @@ pub fn (m map[string]Any) to_toml() string { // as an inline table encoded TOML `string`. pub fn (m map[string]Any) to_inline_toml() string { mut toml_text := '{' + mut i := 1 for k, v in m { - mut key := k - if key.contains(' ') { - key = '"${key}"' - } - toml_text += ' ${key} = ' + v.to_toml() + ',' + key := if k.contains(' ') { '"${k}"' } else { k } + delimeter := if i < m.len { ',' } else { '' } + toml_text += ' ${key} = ${v.to_toml()}${delimeter}' + i++ } return toml_text + ' }' } diff --git a/vlib/toml/tests/inline_test.v b/vlib/toml/tests/inline_test.v new file mode 100644 index 0000000000..f8ad6f5caf --- /dev/null +++ b/vlib/toml/tests/inline_test.v @@ -0,0 +1,16 @@ +import toml + +struct Address { + street string + city string +} + +fn test_inline() { + a := Address{'Elm Street', 'Springwood'} + + mut mp := map[string]toml.Any{} + mp['street'] = toml.Any(a.street) + mp['city'] = toml.Any(a.city) + + assert mp.to_inline_toml() == '{ street = "Elm Street", city = "Springwood" }' +}