mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-10-25 18:59:48 +00:00
0831d911b4
* M6: a date typed without separators fills a yyyymmdd field
parse_date read each run of digits as one number, so 20261018 in a
yyyymmdd field was a single number with nothing left for the month and
the day, and the keystroke check refused it. Every date field on forms
that use the YYYYMMDD date format (US Army forms such as DA Form 31 among
them) refused every valid date.
order() now records each field's fixed width (4 for yyyy; 2 for yy, mm,
dd, HH, MM and ss) and whether the next field follows with nothing in
between. parse_date keeps runs of digits as text and splits a run between
such joined fields by those widths. Formats with separators, month names,
literal digits (dd.mm.26) and two-digit years behave as before.
A run of digits too long for a u32 used to be dropped silently, which let
"2026 99999999999" pass for yyyy; it is now read like any other number and
refused when it is left over or does not fit.
* chore(contributors): credit Eric Kaden by real name
* M6: separated runs of digits stay whole in a joined date format
With separators each run of digits is one field's number, as before this
branch: "2026-10-18" in a yymmdd field reads the year 2026, where the
first commit split the run into 20 and 26 and refused the date. A run is
now split between joined fields only when fewer runs were typed than the
fields still to fill, so "2610" and "261018" still split.
* M6: what is left of a split run of digits fills its field exactly
"202610018" in a yyyymmdd field split off 2026 and 10 and read the rest,
018, as day 18, so a nine-digit date passed. The rest of a split run now
has to be its field's width; a number typed on its own ("2026 10 018")
keeps its leeway.
* M6: a number typed on its own is split only when its rest fills the next field
The optional time fields of a format like yyyymmddHHMM counted as fields
still to fill, so "2026 10 018" split the day 018 into 01 and 8 and was
refused; on main the time defaults to 00:00. A run typed on its own is
now split only when what is left can fill the next field; the rest of a
run that was already split is split as before.
* M6: describe the undelimited-date tests without naming one form
The tests and their comments now say what they check (fields written side by side, such as yyyymmdd) instead of naming the form that showed the problem, and use a generic field label.
* M6: count date and time fields apart when deciding to split a run
Optional time fields counted towards the fields still to fill, so
"2026-10-18" in a yymmddHHMM field split the year into 20 and 26 and was
refused, where main reads it with the time left out. A run typed on its
own is now matched against the fields of its own kind: date runs against
date fields, time runs against time fields. What is left of a split run
goes on being split along the fields written side by side, so
"20261018143005" still fills yyyymmddHHMMss. A mix such as
"2026 1018 1430" (year apart, month and day joined, then a time) is still
refused, as on main.
---------
Co-authored-by: Brandon Thomas <echelon@gmail.com>
156 lines
3.5 KiB
TOML
156 lines
3.5 KiB
TOML
# Contributor names for the About window (craftrules standards/contributors.md).
|
|
#
|
|
# Everyone who contributes is credited by GitHub username automatically. Anything more is up to
|
|
# you: add YOUR OWN entry below, in your own PR (commit it yourself). Never add someone else; a
|
|
# maintainer may add a person only when that person asked, recording where in consent_source.
|
|
#
|
|
# Easiest: python3 ../../craftrules/scripts/contributors.py --add-me . \
|
|
# [--real-name "Ada Lovelace"] [--display-name "Ada"] [--sync-github-name]
|
|
#
|
|
# Or copy this block, replacing your-github-username (every field is optional):
|
|
#
|
|
# [people.your-github-username]
|
|
# real_name = "Your Name" # shown when the viewer picks "Real name"
|
|
# display_name = "Nickname" # shown when the viewer picks "Display name"
|
|
# sync_github_name = true # or: use the name on your public GitHub profile as display name
|
|
#
|
|
# To remove your names, delete your entry (or set fields empty) in a PR. The next
|
|
# contributors.py run, and the next build, drop them.
|
|
|
|
[people.YouseifUS]
|
|
sync_github_name = true
|
|
|
|
[people.echelon]
|
|
real_name = "Brandon Thomas"
|
|
display_name = "Brandon Thomas"
|
|
sync_github_name = false
|
|
|
|
[people.edurbs]
|
|
real_name = "Eduardo Soares"
|
|
display_name = "Eduardo Soares"
|
|
sync_github_name = false
|
|
|
|
[people.jcl-bit]
|
|
real_name = "James Locke"
|
|
display_name = "James Locke"
|
|
sync_github_name = false
|
|
|
|
[people.switch87]
|
|
real_name = "Gert Pellin"
|
|
display_name = "Gert Pellin"
|
|
sync_github_name = false
|
|
|
|
[people.viator1969]
|
|
real_name = "Jose Antonio Abad"
|
|
display_name = "jaabadmi"
|
|
sync_github_name = false
|
|
|
|
[people.AutoHenry]
|
|
real_name = "Hal Goff"
|
|
display_name = "Hal Goff, HG Studio"
|
|
sync_github_name = false
|
|
|
|
[people.mlkonrad]
|
|
real_name = "Marlon Konrad"
|
|
display_name = "Marlon Konrad"
|
|
sync_github_name = false
|
|
|
|
[people.chiranjeevi-max]
|
|
real_name = "Chiranjeevi Uddanti"
|
|
display_name = "Chiranjeevi U"
|
|
sync_github_name = false
|
|
|
|
[people.cyfung1031]
|
|
real_name = "Chester Fung"
|
|
display_name = "Chester Fung"
|
|
sync_github_name = true
|
|
|
|
[people.amitabhthakur]
|
|
sync_github_name = true
|
|
|
|
[people.chent11]
|
|
real_name = "Tao Chen"
|
|
display_name = "Tao Chen"
|
|
sync_github_name = false
|
|
|
|
[people.Byxis]
|
|
sync_github_name = true
|
|
|
|
[people.Hathor875]
|
|
real_name = "Krzysztof Cieślik"
|
|
sync_github_name = true
|
|
|
|
[people.jay-tau]
|
|
sync_github_name = true
|
|
|
|
[people.Piohrun]
|
|
real_name = "Grzegorz Martens"
|
|
sync_github_name = true
|
|
|
|
[people.krinry]
|
|
sync_github_name = true
|
|
|
|
|
|
[people.arcanii]
|
|
real_name = "Bryan Mark"
|
|
display_name = "Arcanii"
|
|
sync_github_name = false
|
|
|
|
[people.atoslins]
|
|
real_name = "Atos Lins"
|
|
display_name = "Atos Lins"
|
|
sync_github_name = false
|
|
|
|
[people.mhadidi06]
|
|
display_name = "Mustafa Hadidi"
|
|
|
|
[people.LucasT-dev]
|
|
real_name = "Lucas"
|
|
display_name = "Lucas"
|
|
sync_github_name = true # use the name on your public GitHub profile as display name
|
|
|
|
[people.Losminek]
|
|
sync_github_name = true
|
|
|
|
[people.earlvanze]
|
|
sync_github_name = true
|
|
|
|
[people.rp6186030]
|
|
real_name = "Raj Patel"
|
|
sync_github_name = false
|
|
|
|
[people.yeniufuklar-com]
|
|
real_name = "Ufuk Efe"
|
|
display_name = "Ufuk Efe"
|
|
sync_github_name = true
|
|
|
|
[people.lollinoo]
|
|
sync_github_name = true
|
|
|
|
[people.JeremyYao]
|
|
real_name = "Jeremy Yao"
|
|
display_name = "Jeremy Yao"
|
|
sync_github_name = false
|
|
|
|
[people.webdevtodayjason]
|
|
display_name = "Jason Brashear"
|
|
|
|
[people.alexanderalber]
|
|
real_name = "Alexander Alber"
|
|
|
|
[people.mtlcl410]
|
|
display_name = "mtlcl410"
|
|
sync_github_name = false
|
|
|
|
[people.Silvertree2010]
|
|
display_name = "Netter"
|
|
sync_github_name = false
|
|
|
|
[people.MortenHusted]
|
|
sync_github_name = true
|
|
|
|
[people.EricKaden]
|
|
real_name = "Eric Kaden"
|
|
display_name = "Eric Kaden"
|
|
sync_github_name = false
|