XFA -- Add localset object (#12948)
- Specifications: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=943
This commit is contained in:
parent
7f7f22037e
commit
3787bd41ef
345
src/core/xfa/locale_set.js
Normal file
345
src/core/xfa/locale_set.js
Normal file
@ -0,0 +1,345 @@
|
||||
/* Copyright 2021 Mozilla Foundation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { $buildXFAObject, NamespaceIds } from "./namespaces.js";
|
||||
import {
|
||||
ContentObject,
|
||||
StringObject,
|
||||
XFAObject,
|
||||
XFAObjectArray,
|
||||
} from "./xfa_object.js";
|
||||
import { getInteger, getStringOption } from "./utils.js";
|
||||
|
||||
const LOCALE_SET_NS_ID = NamespaceIds.localeSet.id;
|
||||
|
||||
class CalendarSymbols extends XFAObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "calendarSymbols", /* hasChildren = */ true);
|
||||
this.name = "gregorian";
|
||||
this.dayNames = new XFAObjectArray(2);
|
||||
this.eraNames = null;
|
||||
this.meridiemNames = null;
|
||||
this.monthNames = new XFAObjectArray(2);
|
||||
}
|
||||
}
|
||||
|
||||
class CurrencySymbol extends StringObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "currencySymbol");
|
||||
this.name = getStringOption(attributes.name, [
|
||||
"symbol",
|
||||
"isoname",
|
||||
"decimal",
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
class CurrencySymbols extends XFAObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "currencySymbols", /* hasChildren = */ true);
|
||||
this.currencySymbol = new XFAObjectArray(3);
|
||||
}
|
||||
}
|
||||
|
||||
class DatePattern extends StringObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "datePattern");
|
||||
this.name = getStringOption(attributes.name, [
|
||||
"full",
|
||||
"long",
|
||||
"med",
|
||||
"short",
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
class DatePatterns extends XFAObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "datePatterns", /* hasChildren = */ true);
|
||||
this.datePattern = new XFAObjectArray(4);
|
||||
}
|
||||
}
|
||||
|
||||
class DateTimeSymbols extends ContentObject {
|
||||
// TODO: spec unclear about the format of the array.
|
||||
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "dateTimeSymbols");
|
||||
}
|
||||
}
|
||||
|
||||
class Day extends StringObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "day");
|
||||
}
|
||||
}
|
||||
|
||||
class DayNames extends XFAObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "dayNames", /* hasChildren = */ true);
|
||||
this.abbr = getInteger({
|
||||
data: attributes.abbr,
|
||||
defaultValue: 0,
|
||||
validate: x => x === 1,
|
||||
});
|
||||
this.day = new XFAObjectArray(7);
|
||||
}
|
||||
}
|
||||
|
||||
class Era extends StringObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "era");
|
||||
}
|
||||
}
|
||||
|
||||
class EraNames extends XFAObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "eraNames", /* hasChildren = */ true);
|
||||
this.era = new XFAObjectArray(2);
|
||||
}
|
||||
}
|
||||
|
||||
class Locale extends XFAObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "locale", /* hasChildren = */ true);
|
||||
this.desc = attributes.desc || "";
|
||||
this.name = "isoname";
|
||||
this.calendarSymbols = null;
|
||||
this.currencySymbols = null;
|
||||
this.datePatterns = null;
|
||||
this.dateTimeSymbols = null;
|
||||
this.numberPatterns = null;
|
||||
this.numberSymbols = null;
|
||||
this.timePatterns = null;
|
||||
this.typeFaces = null;
|
||||
}
|
||||
}
|
||||
|
||||
class LocaleSet extends XFAObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "localeSet", /* hasChildren = */ true);
|
||||
this.locale = new XFAObjectArray();
|
||||
}
|
||||
}
|
||||
|
||||
class Meridiem extends StringObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "meridiem");
|
||||
}
|
||||
}
|
||||
|
||||
class MeridiemNames extends XFAObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "meridiemNames", /* hasChildren = */ true);
|
||||
this.meridiem = new XFAObjectArray(2);
|
||||
}
|
||||
}
|
||||
|
||||
class Month extends StringObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "month");
|
||||
}
|
||||
}
|
||||
|
||||
class MonthNames extends XFAObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "monthNames", /* hasChildren = */ true);
|
||||
this.abbr = getInteger({
|
||||
data: attributes.abbr,
|
||||
defaultValue: 0,
|
||||
validate: x => x === 1,
|
||||
});
|
||||
this.month = new XFAObjectArray(12);
|
||||
}
|
||||
}
|
||||
|
||||
class NumberPattern extends StringObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "numberPattern");
|
||||
this.name = getStringOption(attributes.name, [
|
||||
"full",
|
||||
"long",
|
||||
"med",
|
||||
"short",
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
class NumberPatterns extends XFAObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "numberPatterns", /* hasChildren = */ true);
|
||||
this.numberPattern = new XFAObjectArray(4);
|
||||
}
|
||||
}
|
||||
|
||||
class NumberSymbol extends StringObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "numberSymbol");
|
||||
this.name = getStringOption(attributes.name, [
|
||||
"decimal",
|
||||
"grouping",
|
||||
"percent",
|
||||
"minus",
|
||||
"zero",
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
class NumberSymbols extends XFAObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "numberSymbols", /* hasChildren = */ true);
|
||||
this.numberSymbol = new XFAObjectArray(5);
|
||||
}
|
||||
}
|
||||
|
||||
class TimePattern extends StringObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "timePattern");
|
||||
this.name = getStringOption(attributes.name, [
|
||||
"full",
|
||||
"long",
|
||||
"med",
|
||||
"short",
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
class TimePatterns extends XFAObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "timePatterns", /* hasChildren = */ true);
|
||||
this.timePattern = new XFAObjectArray(4);
|
||||
}
|
||||
}
|
||||
|
||||
class TypeFace extends XFAObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "typeFace", /* hasChildren = */ true);
|
||||
this.name = attributes.name | "";
|
||||
}
|
||||
}
|
||||
|
||||
class TypeFaces extends XFAObject {
|
||||
constructor(attributes) {
|
||||
super(LOCALE_SET_NS_ID, "typeFaces", /* hasChildren = */ true);
|
||||
this.typeFace = new XFAObjectArray();
|
||||
}
|
||||
}
|
||||
|
||||
class LocaleSetNamespace {
|
||||
static [$buildXFAObject](name, attributes) {
|
||||
if (LocaleSetNamespace.hasOwnProperty(name)) {
|
||||
return LocaleSetNamespace[name](attributes);
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
static calendarSymbols(attrs) {
|
||||
return new CalendarSymbols(attrs);
|
||||
}
|
||||
|
||||
static currencySymbol(attrs) {
|
||||
return new CurrencySymbol(attrs);
|
||||
}
|
||||
|
||||
static currencySymbols(attrs) {
|
||||
return new CurrencySymbols(attrs);
|
||||
}
|
||||
|
||||
static datePattern(attrs) {
|
||||
return new DatePattern(attrs);
|
||||
}
|
||||
|
||||
static datePatterns(attrs) {
|
||||
return new DatePatterns(attrs);
|
||||
}
|
||||
|
||||
static dateTimeSymbols(attrs) {
|
||||
return new DateTimeSymbols(attrs);
|
||||
}
|
||||
|
||||
static day(attrs) {
|
||||
return new Day(attrs);
|
||||
}
|
||||
|
||||
static dayNames(attrs) {
|
||||
return new DayNames(attrs);
|
||||
}
|
||||
|
||||
static era(attrs) {
|
||||
return new Era(attrs);
|
||||
}
|
||||
|
||||
static eraNames(attrs) {
|
||||
return new EraNames(attrs);
|
||||
}
|
||||
|
||||
static locale(attrs) {
|
||||
return new Locale(attrs);
|
||||
}
|
||||
|
||||
static localeSet(attrs) {
|
||||
return new LocaleSet(attrs);
|
||||
}
|
||||
|
||||
static meridiem(attrs) {
|
||||
return new Meridiem(attrs);
|
||||
}
|
||||
|
||||
static meridiemNames(attrs) {
|
||||
return new MeridiemNames(attrs);
|
||||
}
|
||||
|
||||
static month(attrs) {
|
||||
return new Month(attrs);
|
||||
}
|
||||
|
||||
static monthNames(attrs) {
|
||||
return new MonthNames(attrs);
|
||||
}
|
||||
|
||||
static numberPattern(attrs) {
|
||||
return new NumberPattern(attrs);
|
||||
}
|
||||
|
||||
static numberPatterns(attrs) {
|
||||
return new NumberPatterns(attrs);
|
||||
}
|
||||
|
||||
static numberSymbol(attrs) {
|
||||
return new NumberSymbol(attrs);
|
||||
}
|
||||
|
||||
static numberSymbols(attrs) {
|
||||
return new NumberSymbols(attrs);
|
||||
}
|
||||
|
||||
static timePattern(attrs) {
|
||||
return new TimePattern(attrs);
|
||||
}
|
||||
|
||||
static timePatterns(attrs) {
|
||||
return new TimePatterns(attrs);
|
||||
}
|
||||
|
||||
static typeFace(attrs) {
|
||||
return new TypeFace(attrs);
|
||||
}
|
||||
|
||||
static typeFaces(attrs) {
|
||||
return new TypeFaces(attrs);
|
||||
}
|
||||
}
|
||||
|
||||
export { LocaleSetNamespace };
|
@ -14,11 +14,13 @@
|
||||
*/
|
||||
|
||||
import { ConfigNamespace } from "./config.js";
|
||||
import { LocaleSetNamespace } from "./locale_set.js";
|
||||
import { TemplateNamespace } from "./template.js";
|
||||
import { XdpNamespace } from "./xdp.js";
|
||||
|
||||
const NamespaceSetUp = {
|
||||
config: ConfigNamespace,
|
||||
localeSet: LocaleSetNamespace,
|
||||
template: TemplateNamespace,
|
||||
xdp: XdpNamespace,
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user