Advanced XFA Picture Clauses
Zapněte TXFAWidgetRuntimeOptions.ScriptOptions.EnableJavaScript, chcete-li tyhle picture klauzule používat ve FormCalc událostech, calculate i validate skriptech přes dodávaný engine QuickJS
Format(picture, value) vytvoří zobrazovaný text a Parse(picture, text) kanonické hodnoty; výběr locale, citované literály i alternativy řídí FormCalc Locale a Picture funkce
Číselná přesnost a vědecká notace
| Symbol | Chování |
|---|---|
E | Formátuje znaménkový exponent základu 10 za mantisou; pozice úvodní i zlomkové číslice určují přesnost mantisy, přičemž carry při zaokrouhlování se aplikuje, dřív než se exponent emituje |
8 | Zachová vyjádřenou zlomkovou přesnost dodaného desetinného textu, tedy i závěrečné nuly; chybějící zlomkové číslice vynechají desetinný radix a série 8 symbolů může zachovat víc dodaných zlomkových číslic, než je její délka |
Vědecké mantisy použijí nejvýše 15 číselných pozic; velikosti exponentů i desetinná expanze jsou ohraničené na 10000 a nekonečné hodnoty vytvoří prázdný text
Picture přesnosti zachovají citované literály před i za zlomkovými pozicemi; procentuální škálování posune původní desetinný text, aniž by ztratil závěrečné nuly konverzí přes binární plovoucí řád
Předávejte desetinné řetězce, když na jejich vyjádřené přesnosti záleží; číselné hodnoty JavaScriptu už před formátováním prošly konverzí na binární plovoucí řád
Format("num{99.999E}", 12345) // 12.345E+3
Parse("num{99.999E}", "12.345E-2") // 0.12345
Format("num{zzz,zz9.8}", "12345.0000") // 12,345.0000
Parse("num{zz9.8}", "12.3400") // 12.3400
Format("num{zz9.8%}", "0.1250") // 12.50%
Ordinální a týdenní datumy
| Symbol | Chování |
|---|---|
J, JJJ | Den v roce, od 1 do 366; JJJ doplní na tři číslice a parsování validuje přestupné roky |
E | Číselný den v týdnu od 1 pro neděli do 7 pro sobotu; EEE a EEEE dál používají zkrácené i celé lokální názvy dnů |
e | ISO den v týdnu od 1 pro pondělí do 7 pro neděli |
WW | ISO týden od 01 do 53; týden 01 obsahuje 4. ledna a rok v té picture je ISO week year |
w | Týden v měsíci od 0 do 5, začínající nedělí; první týden musí obsahovat alespoň čtyři dny z měsíce |
Parsování ordinálních či týdenních datumů vrátí odpovídající ISO kalendářní datum; rozporné hodnoty dne, měsíce, dne v týdnu či týdne vrátí prázdný text
Čtyřčíselné rané roky se postaví bez JavaScript úpravy století, tedy i roky 0000 až 0099; historické alternativní éry zůstávají mimo tyhle picture klauzule
Format("date{YYYY-JJJ}", "2024-02-29") // 2024-060
Parse("date{YYYY-WW-e}", "2020-53-5") // 2021-01-01
Format("date{w}", "2004-07-03") // 0
Dodatečné varianty hodin
k a kk vyjadřují hodinu 0–11 v rámci meridiemu; K a KK hodinu 1–24 v rámci dne, přičemž 24 reprezentuje půlnoc
Použijte A s hodinami k k odlišení AM a PM; malé z formátuje ISO offset bez dvojtečky, zz s dvojtečkou a velké Z emituje GMT či GMT s explicitním offsetem
Globální picture symboly
| Symbol | Parsování vstupu | Formátování výstupu |
|---|---|---|
? | Konzumuje jeden Unicode code point | Vytvoří jednu mezeru |
* | Konzumuje nula či víc zlomitelných bílých znaků | Vytvoří jednu mezeru |
+ | Konzumuje jedna či víc zlomitelných bílých znaků | Vytvoří jednu mezeru |
Ty symboly fungují v picture klauzulích data, času, datetime, čísla i textu; citované symboly zůstávají literálními znaky, supplementární Unicode znaky se počítají jako jeden znak a nezlomitelné mezery se z porovnávání bílých znaků vylučují
Složené parsování vstupu
Složené klauzule data i času se zkombinují na kanonický ISO date-time text; opakované reprezentace téže hodnoty se musí shodovat a literální oddělovače se kontrolují, dřív než se vstup přijme
Opakované skalární klauzule musí vytvořit stejné kanonické číslo či text; nekompatibilní kombinace kategorií, rozporné hodnoty, nekompletní konzumace či víc odlišných kanonických výsledků vytvoří prázdný text
Složené parsování dovolí 64 částí, 8192 vstupních UTF-16 jednotek a 8192 pokusů o parse, při sdílení rozpočtů operací i uplynulého času runtime; jejich překročení zhatí transakci události
Parse("date{YYYY-MM-DD} time{HH:MM:SS}", "2024-02-29 12:34:56")
// 2024-02-29T12:34:56
Parse("date{YYYYMMDD}time{HHMMSS}", "20240229123456")
// 2024-02-29T12:34:56
Runtime chování a aktuální hranice
Calculated pole i události použijí tutéž implementaci i locale metadata; neúspěšné skripty obnoví hodnoty dokumentu i potvrzený JavaScript stav a uložená XDP data zachovají úspěšné výsledky
Kalendáře alternativních ér, ideografické i full-width reprezentace, lokalizované jen-zobrazovací symboly i kompletní seskupovací politiky zůstávají samostatnými cíli
Chování transakcí, replay i rozpočtů operací popisuje Interactive XFA Widget Runtime