From e8da184531c774a6388576dab3dbe4182eab9473 Mon Sep 17 00:00:00 2001 From: bptato Date: Tue, 19 Sep 2023 16:11:37 +0200 Subject: update chame and with that, resolve the unknown input type issue --- src/html/enums.nim | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/html/enums.nim (limited to 'src/html/enums.nim') diff --git a/src/html/enums.nim b/src/html/enums.nim new file mode 100644 index 00000000..54de6af6 --- /dev/null +++ b/src/html/enums.nim @@ -0,0 +1,44 @@ +import strutils +import tables + +import chame/tags + +type + InputType* = enum + INPUT_TEXT, INPUT_BUTTON, INPUT_CHECKBOX, INPUT_COLOR, INPUT_DATE, + INPUT_DATETIME_LOCAL, INPUT_EMAIL, INPUT_FILE, INPUT_HIDDEN, INPUT_IMAGE, + INPUT_MONTH, INPUT_NUMBER, INPUT_PASSWORD, INPUT_RADIO, INPUT_RANGE, + INPUT_RESET, INPUT_SEARCH, INPUT_SUBMIT, INPUT_TEL, INPUT_TIME, INPUT_URL, + INPUT_WEEK + + ButtonType* = enum + BUTTON_SUBMIT, BUTTON_RESET, BUTTON_BUTTON + +#TODO support all the other ones +const SupportedFormAssociatedElements* = { + TAG_BUTTON, TAG_INPUT, TAG_SELECT, TAG_TEXTAREA +} + +const InputTypeWithSize* = { + INPUT_SEARCH, INPUT_TEXT, INPUT_EMAIL, INPUT_PASSWORD, INPUT_URL, INPUT_TEL +} + +const AutocapitalizeInheritingElements* = { + TAG_BUTTON, TAG_FIELDSET, TAG_INPUT, TAG_OUTPUT, TAG_SELECT, TAG_TEXTAREA +} + +const LabelableElements* = { + # input only if type not hidden + TAG_BUTTON, TAG_INPUT, TAG_METER, TAG_OUTPUT, TAG_PROGRESS, TAG_SELECT, TAG_TEXTAREA +} + +func getInputTypeMap(): Table[string, InputType] = + for i in InputType: + let enumname = $InputType(i) + let tagname = enumname.split('_')[1..^1].join("_").toLowerAscii() + result[tagname] = InputType(i) + +const inputTypeMap = getInputTypeMap() + +func inputType*(s: string): InputType = + return inputTypeMap.getOrDefault(s.toLowerAscii()) -- cgit 1.4.1-2-gfad0