Skip to content

Releases: jacobwilliams/json-fortran

6.9.0

29 Jul 14:05
Compare
Choose a tag to compare

See also

Summary

  • Some efficiency improvements when parsing strings.
    • Speed up the unescape_string() routine.
    • Some cleanup and efficiency improvements for hex string validation.
  • Various updates to error message reporting.
    • The two arguments to json_file_check_for_errors() are now optional to match the core routine.
    • Some adjustments to error messages for invalid hex strings. Validation of hex strings is now done in the unescape_string() routine.
    • A string that ends in an escape character \ is now flagged as invalid.
  • Fixed a bug in the annotate_invalid_json() routine. 🐞
  • Fixed an issue with the jf_test_06 unit test failing on Windows. 🐞

6.8.0

20 Jul 00:53
Compare
Choose a tag to compare

See also

Summary

  • Added some additional checks so that the destroy method could still be used to destroy some malformed JSON linked lists. Also updated the validate method to check for circular references.
  • Added missing arguments (trim_str and adjustl_str) to some of the string wrapper routines.
  • Fixed a dangling pointer bug in the destroy method that was causing unpredictable behavior in this routine which could cause a crash for some compilers. 🪲
  • Various minor changes to remove some compiler warnings and a line length standards violation.
  • Various documentation string updates.

6.7.0

10 Jul 13:14
Compare
Choose a tag to compare

See also

Summary

  • Made the two arguments to json_check_for_errors() optional, so now either or both can be used. Note that if no error has been raised, then error_msg is now returned unallocated.
  • Added an additional error check in json_value_print() to check for an unassociated pointer.
  • Added remove() method to json_file
  • Added additional error checks to json_value_add_member(). Now it will raise an exception if try to add a child to a non-array or non-object.
  • Added some additional unit tests to increase coverage.
  • Fixed a bug in json_value_clone_func() where it could crash if attempting to clone an array element. Updated this routine to improve behavior when cloning an array element (the subsequent entries are no longer cloned). 🐞

6.6.0

02 Jul 01:55
Compare
Choose a tag to compare

See also

Summary

  • Now, attempting to get a string variable as an integer, double, or logical will attempt to convert it from a string if strict_type_checking=False. Formerly these cases would raise an exception.
  • Fixed an inconsistency in json_get_by_path(). Now if using the optional found argument, any exceptions raised by this routine are cleared.
  • Changed the name argument in json_value_remove_if_present() to 'path' to be consistent with other routines since it is really a path.
  • Fixed a bug in wrap_json_get_path() where an optional argument was being used without checking if it was present. 🐞
  • Various documentation string updates.

6.5.0

24 Jun 04:12
Compare
Choose a tag to compare

See also

Summary

  • Added optional trim and adjustl arguments to all the various routines for adding strings and string vectors to JSON.
  • The trailing_spaces_significant flag is now respected for name keys when creating a JSON structure.

6.4.0

10 Jun 14:02
Compare
Choose a tag to compare

See also

Summary

  • Added optional stop_on_error argument to the various initialize() routines to immediately stop the program if an exception is raised (the default is False).
  • Added routines to check if a name key is present in a json_file object, which is also available using the .in. operator (e.g., if ('key' .in. json) ...).
  • Added routines to rename a JSON variable by specifying the path.
  • Added a Fobis rule for running the test programs. Run using: FoBis.py rule --execute tests -f json-fortran.fobis

6.3.0

21 Apr 01:50
Compare
Choose a tag to compare

See also

Summary

  • Fixed a bug in the escaping logic where / characters in strings would not be printed under some circumstances. This bug was introduced in the 6.2.0 release.
  • Added a FoBiS configuration file that can be used to build the library, tests, and documentation.
  • CMake produced Visual Studio Project works now.
  • Minor changes: renamed some of the example files and reverted back to older versions of FoBiS and markdown for documentation building on Travis-CI.

6.2.0

10 Mar 19:53
c58c71e
Compare
Choose a tag to compare

See also

Summary

  • Added a new option escape_solidus to specify if the forward slash ("/") is to be escaped when serializing JSON. By default, it is no longer escaped (this changes the behavior introduced in 6.0.0)
  • Allow the unit tests to be run from within the Visual Studio solution
  • Compiling now works for the CMake-produced Visual Studio solution on Windows (note that the CMake-produced solution is a bit different from the other one provided).
  • Fixed an issue causing a problem with the NAG compiler.

6.1.0

05 Nov 15:28
Compare
Choose a tag to compare

See also

Summary

  • Added an optional allow_duplicate_keys argument to the various initialize routines. This is True by default. If False, then duplicate keys are considered an error. Also added check_for_duplicate_keys and check_children_for_duplicate_keys methods that can be called.
  • Added support for JSONPath "bracket-notation" mode for specifying paths to JSON variables.
  • Replaced CMAKE_INSTALL_LIBDIR with INSTALL_LIB_DIR in the CMake project.
  • Fixed bug in the lowercase_string routine that could cause a crash for Debug builds.

6.0.0

24 Aug 20:54
Compare
Choose a tag to compare

See also

Summary

  • Added a routine (json_value_reverse) to reverse an array or object.
  • Fixed a bug where using no_whitespace mode could still print line breaks in some cases.
  • Strings (name key and value) were not being properly escaped/unescaped in some contexts. This change introduces a small backward incompatibility (formerly, if keys contained escape characters, the user would have to include them when getting their value). Now, the string variables in all user-facing API calls are unescaped (i.e., the user does not have to manually escape the keys to get their associated value). All strings are also now properly returned unescaped, no matter how the JSON structure was constructed. Escaping is now done in all cases if necessary when the JSON is printed to a string, file or the console.