GDL, упражнение 6. Создание специализированных версий
Упражнения
В упражнении 5 создайте три специализированные версии *POption для *PFeature: PaperSize.
Первая версия используется для параметров Papersize с именами экземпляров "Letter", "Legal" и "A4". Эти параметры будут иметь текущее поведение.
Вторая версия используется для параметров Papersize с именами экземпляров "Custom" и распознает следующие дополнительные атрибуты: *MinSize и *MaxSize.
Третья версия будет охватывать другие параметры создания документов, которые будут считаться определенными изготовителем оборудования и распознают дополнительный атрибут: *OEM_Info.
Внесите это изменение, не удаляя или не изменяя ранее определенные шаблоны. Создайте простой файл данных GDL, чтобы проверить правильность шаблонизации записей.
Решение
В следующем примере кода показан один возможный ответ.
*Template: MIN_SIZE
{
*Name: "*MinSize"
*Type: ATTRIBUTE
*ValueType: PAGE_DIM
}
*Template: MAX_SIZE
{
*Name: "*MaxSize"
*Type: ATTRIBUTE
*ValueType: PAGE_DIM
}
*Template: OEM_INFO
{
*Name: "*OEM_Info"
*Type: ATTRIBUTE
*ValueType: NORMAL_STRING
}
*Template: OEM_PAPERSIZE_OPTION
{
*Inherits: PAPERSIZE_OPTION2
*Members: (OEM_INFO)
*Instances: <ANY>
}
*Template: CUST_PAPERSIZE_OPTION
{
*Inherits: PAPERSIZE_OPTION2
*Members: (MIN_SIZE, MAX_SIZE)
*Instances: Custom
}
*Template: PREDEFINED_PAPERSIZE_OPTION
{
*Inherits: PAPERSIZE_OPTION2
*Instances: (Letter, Legal, A4)
}
В следующем примере кода показан пример файла данных GDL для проверки.
*PFeature: random
{
*Name: "Generic Feature"
*DefaultOption: First
*POption: First
{
*Name: "First Option"
*Command: "Select me"
}
}
*PFeature: PaperSize
{
*Name: "Paper Size"
*DefaultOption: Letter
*POption: Letter
{
*Name: "Letter"
*Command: "Select Letter"
*PaperSize: PAIR(8.5, 11) , inches
}
*POption: Legal
{
*Name: "Legal"
*Command: "Select Legal"
*PaperSize: PAIR(8.5, 14) , inches
}
*POption: A4
{
*Name: "A4"
*Command: "Select A4"
*PaperSize: PAIR(205, 317), mm
}
*POption: OEMName_Special_size
{
*Name: "OEMName size"
*Command: "Select OEMName size"
*PaperSize: PAIR(365, 487), mm
*OEM_Info: "<83 d4 93 ae>"
}
*POption: Custom
{
*Name: "Custom Size"
*Command: "Select Custom"
*MaxSize: PAIR(400, 500), mm
*MinSize: PAIR(100, 150), mm
}
}
*PFeature: InputTray
{
*Name: "Paper Source"
*DefaultOption: Upper
*POption: Upper
{
*Name: "Upper Tray"
*Command: "Select Upper Tray"
*Capacity: 2000 *% sheets
}
*POption: Lower
{
*Name: "Lower Tray"
*Command: "Select Lower Tray"
*Capacity: 500 *% sheets
}
}