Guard clauses reduce indentation and help when reading code as they
remove a variable and indentation level that the reader would otherwise
need to keep track of
With the previous formatting changes there is no reason to leave key as
possibly a string anywhere, as it was already being converted to an int
everywhere anyway
Most of this is just de-pyramiding the code, removing else clauses that
are unneeded (or making the if such that the else is not needed).
Rationale is simple, every level of indentation adds more that the
reader needs to keep track of.
This works by creating a temp file at config.app_dir and storing the
link in there, followed by directing the local browser to open the file.
HTML meta tags are then used to direct the browser to refresh to a URL
of our choosing (which is HTML escaped, just in case someone tries
something clever)
This should work everywhere, and on any browser (as the file:// format
is defined at https://tools.ietf.org/html/rfc1738 which was posted in
1994).
The URI used (`file://localhost/path`) ensures that we only ever
ask for a localhost file at our path.
The HTML format should be completely compliant with all major browsers
as well, ensuring that behaviour is consistent (assuming they support
HTML meta tags)
Doing so causes the ShipType to not be used in the UI, so you get a
'link' with just a space for the text.
Any user who purposefully sets their ship's name to a single space
can live with seeing the model name instead. Yes, I checked, the game
allows it.
* Use same state logic as Inara plugin now has.
* this.system_link for the Tk item, this.system is the system name.
* Ensure station text+link set on prefs change.
# Add a set of future TODO items.
* Use same state logic as Inara plugin now has.
* this.system_link for the Tk item, this.system is the system name.
* List some tests to pass (and later to be implemented as unittests).
* Be paranoid about URIs, quote them.
* Ensure station text+link set on prefs change.
* Track all of: this.system_address, this.system_population,
this.system_marketid
* Use this.system_address if set (only from journal) for no-dupes Inara
system URL.
* Added the "'x' if undocked and show system info" functionality from
EDDB plugin.
* This version will set target station name/link if you request docking
with it, whether that succeeds or not. Cleared not only on Undock, but
also FSDJump and SupercruiseEntry (in case you never actually docked).
* No longer bothering setting system and station URLs from Inara API
response as we have working ones anyway. So even those without Inara
API Key set get the functionality now.
* Artie added a 'by-systemaddress' system lookup, use it.
* This means we probably no longer need to update URLs in the
inara_notify_location() function.