diff --git a/f90nml/namelist.py b/f90nml/namelist.py index 3ea302e..d01ac17 100644 --- a/f90nml/namelist.py +++ b/f90nml/namelist.py @@ -914,7 +914,8 @@ def _var_strings(self, v_name, v_values, v_idx=None, v_start=None): val_strs.append(val_line.rstrip()) # Final null values must always precede a comma - if val_strs and (len(v_values) == 0 or v_values[-1] is None): + if (val_strs and (len(v_values) == 0 or v_values[-1] is None) + and not self.end_comma): # NOTE: val_strs has been rstrip-ed so lead with a space val_strs[-1] += ' ,' diff --git a/tests/null_target_end_comma.nml b/tests/null_target_end_comma.nml new file mode 100644 index 0000000..bd739e8 --- /dev/null +++ b/tests/null_target_end_comma.nml @@ -0,0 +1,12 @@ +&null_nml + null_value = , +/ + +&null_comma_nml + null_comma = , +/ + +&null_nocomma_rpt_nml + null_one = , + null_two = , +/ diff --git a/tests/test_f90nml.py b/tests/test_f90nml.py index cc886a9..96cc991 100644 --- a/tests/test_f90nml.py +++ b/tests/test_f90nml.py @@ -597,6 +597,12 @@ def test_null(self): self.assertEqual(self.null_nml, test_nml) self.assert_write(test_nml, 'null_target.nml') + def test_null_end_comma(self): + test_nml = f90nml.read('null.nml') + test_nml.end_comma = True + self.assertEqual(self.null_nml, test_nml) + self.assert_write(test_nml, 'null_target_end_comma.nml') + def test_unset(self): test_nml = f90nml.read('unset.nml') self.assertEqual(self.unset_nml, test_nml)