0.6.0
Two themes. A GEDCOM file is allowed to indent itself, and files in the wild do —
so those are now read, highlighted and folded like any other, whatever they indent
with. And the panels stop showing the reader the file's own shorthand: slashes
around a surname, F for a sex, a URL that cannot be clicked, a hover that
answers "Text."
Added
-
Indented files are read as first-class. The specification puts the level
number first on the line with nothing before it, but plenty of exporters
indent anyway to show the hierarchy, and such a file is now lexed,
highlighted, folded and validated exactly as a flat one is.detectIndentation
reports the habit — spaces, tabs or both, the width per level, and any line
that departs from it.A tab's width is the only thing a file cannot state. Where tabs and spaces are
mixed it is solved by search over the widths anything has ever defaulted to,
because the direct calculation needs a space-only line at the same level to
measure against and a file whose first levels are tabs never provides one. -
Seven
fixtures/style/files carrying the same family tree at one, two and
four spaces per level, at tabs, and at tabs-then-spaces with the tab standing
for two, four and eight columns. A test asserts all seven parse to the same
tree, which is the load-bearing claim: the level number states the hierarchy
and the whitespace states nothing. -
A sentence about what each tag is for, in hovers. The registry we vendor is
a machine's view of the format — tags, payload types, cardinalities, labels —
and carries no prose, so a hover overOCCUanswered with "Text.", which the
reader could see for themselves.
Roughly ninety structures now carry a written gloss, and the payload line is
dropped where the gloss has already said what belongs there. Across the fixture
corpus this takes the hovers that said nothing from several hundred to none. -
Links and image previews in the details panel. A URL anywhere in a field —
a media object'sFILE, aWWW, an address written into a note — is now a
link that opens in the browser, and media the file identifies as a picture is
shown as a thumbnail beneath its row.httpandhttpsonly. AFILEpayload is free text from a document the
reader may merely have been sent, andjavascript:,file:andvscode:URIs
would otherwise be handed to the machine by a click; the scheme is checked in
the extension host rather than trusted from the panel.Previews are on by default and
gedcom.details.imagePreviewsturns them off.
Off rewrites the panel's content security policy rather than merely suppressing
the<img>, so the panel is then unable to make a request rather than
disinclined to — the point of the setting is that a photograph hosted by a
genealogy site does not get to learn that the file is being read, and from
where. Even on, onlyhttpsis permitted.
Fixed
-
A media object written inline was reported as a broken pointer. GEDCOM
5.5.1 letsOBJE, among others, be written either as a pointer or with the
record's substructures in place of the payload, and the second form is common
in real files. Only the payload-less form is exempt:1 ASSO @I1@ dfis still
wrong however many substructures follow it. -
A date's time of day was dropped from the details panel.
TIMEhangs under
DATErather than beside it, in 5.5.1 and 7.0 alike, and the panel read only
the date — so a change record, whose entire purpose is to say when, showed
14 FEB 1998and threw away09:22:41. The parse tree was right throughout;
only the reading of it was wrong.
Changed
-
A name is read rather than copied. The slashes in
/Family/ Personalare
how GEDCOM marks the surname, not punctuation, and the details panel was
printing them. It now shows the name without them, in the order the file wrote
— that order is itself information, since the format exists to carry names from
cultures that write the surname first — and lists the parts beneath, from the
GIVNandSURNsubstructures where the file states them and from its own
reading of the string where it does not.Where a person holds several names, the
TYPEbeneath each becomes its label,
so two rows are no longer both called "Name". -
A structure carrying nothing says so.
1 _MAYBEwith no payload and nothing
beneath it used to render as "recorded", a word the file never said. It is now
marked as having no value, in italic and dimmed, so that a tag someone wrote and
left blank is visible as exactly that. -
Coded values are shown in English. The details panel expands an enumerated
payload to its meaning —Sex: Female, notSex: F— for every enumeration
the extension models, not onlySEX. Inlay hints capitalise the same labels,
since a hint is a caption beside the line rather than a clause continuing it. -
The details panel names a media object by its own title rather than by its tag,
and says what kind of file it is — read from theFORMwhere the file writes
one and from the path's extension where it does not. A residence with an
address but no place now shows the address instead of the word "recorded".