From c1117de95091f18b6f848d22bbd5acbf1c6d6b3e Mon Sep 17 00:00:00 2001 From: byteface Date: Sat, 5 Apr 2025 09:21:30 +0100 Subject: [PATCH 01/20] Update __init__.py using Github Copilot advice on what to improve in this file --- domonic/constants/__init__.py | 251 ++++++++++++++++------------------ 1 file changed, 116 insertions(+), 135 deletions(-) diff --git a/domonic/constants/__init__.py b/domonic/constants/__init__.py index 5407dddb..0e9449c1 100644 --- a/domonic/constants/__init__.py +++ b/domonic/constants/__init__.py @@ -1,11 +1,11 @@ """ - domonic.constants - ==================================== - +domonic.constants +==================================== +This module defines various constants used in the domonic package. """ -#: namespaces -namespaces: dict = { +# Namespaces +namespaces: dict[str, str] = { "xml": "http://www.w3.org/XML/1998/namespace", "svg": "http://www.w3.org/2000/svg", "xlink": "http://www.w3.org/1999/xlink", @@ -19,17 +19,9 @@ "html": "http://www.w3.org/1999/xhtml", } - -#: document types -doctypes: dict = { +# Document Types +doctypes: dict[str, str] = { "HTML5": "", - # XHTML 1.1 - # XHTML 1.1 Strict - # XHTML 1.1 Transitional - # XHTML 1.1 Frameset - # XHTML 1.0 Strict - # XHTML 1.0 Transitional - # XHTML_1_0_Frameset = '' "HTML4_01_Strict": '', "HTML4_01_Transitional": '', "HTML4_01_Frameset": '', @@ -37,126 +29,115 @@ "HTML2": '', } +# HTTP Response Status Codes +from enum import Enum -#: html response status codes -http_response_status_codes: dict = { - 200: "200 OK", - 201: "201 Created", - 202: "202 Accepted", - 203: "203 Non-Authoritative Information", - 204: "204 No Content", - 205: "205 Reset Content", - 206: "206 Partial Content", - 207: "207 Multi-Status", - 208: "208 Already Reported", - 226: "226 IM Used", - 300: "300 Multiple Choices", - 301: "301 Moved Permanently", - 302: "302 Found", - 303: "303 See Other", - 304: "304 Not Modified", - 305: "305 Use Proxy", - 306: "306 Switch Proxy", - 307: "307 Temporary Redirect", - 308: "308 Permanent Redirect", - 400: "400 Bad Request", - 401: "401 Unauthorized", - 402: "402 Payment Required", - 403: "403 Forbidden", - 404: "404 Not Found", - 405: "405 Method Not Allowed", - 406: "406 Not Acceptable", - 407: "407 Proxy Authentication Required", - 408: "408 Request Timeout", - 409: "409 Conflict", - 410: "410 Gone", - 411: "411 Length Required", - 412: "412 Precondition Failed", - 413: "413 Payload Too Large", - 414: "414 URI Too Long", - 415: "415 Unsupported Media Type", - 416: "416 Range Not Satisfiable", - 417: "417 Expectation Failed", - 418: "418 I'm a teapot", - 421: "421 Misdirected Request", - 422: "422 Unprocessable Entity", - 423: "423 Locked", - 424: "424 Failed Dependency", - 426: "426 Upgrade Required", - 428: "428 Precondition Required", - 429: "429 Too Many Requests", - 431: "431 Request Header Fields Too Large", - 451: "451 Unavailable For Legal Reasons", - 499: "499 Client Closed Request", - 500: "500 Internal Server Error", - 501: "501 Not Implemented", - 502: "502 Bad Gateway", - 503: "503 Service Unavailable", - 504: "504 Gateway Timeout", - 505: "505 HTTP Version Not Supported", - 506: "506 Variant Also Negotiates", - 507: "507 Insufficient Storage", - 508: "508 Loop Detected", - 510: "510 Not Extended", - 511: "511 Network Authentication Required", -} +class HTTPStatus(Enum): + OK = 200 + CREATED = 201 + ACCEPTED = 202 + NON_AUTHORITATIVE_INFORMATION = 203 + NO_CONTENT = 204 + RESET_CONTENT = 205 + PARTIAL_CONTENT = 206 + MULTI_STATUS = 207 + ALREADY_REPORTED = 208 + IM_USED = 226 + MULTIPLE_CHOICES = 300 + MOVED_PERMANENTLY = 301 + FOUND = 302 + SEE_OTHER = 303 + NOT_MODIFIED = 304 + USE_PROXY = 305 + SWITCH_PROXY = 306 + TEMPORARY_REDIRECT = 307 + PERMANENT_REDIRECT = 308 + BAD_REQUEST = 400 + UNAUTHORIZED = 401 + PAYMENT_REQUIRED = 402 + FORBIDDEN = 403 + NOT_FOUND = 404 + METHOD_NOT_ALLOWED = 405 + NOT_ACCEPTABLE = 406 + PROXY_AUTHENTICATION_REQUIRED = 407 + REQUEST_TIMEOUT = 408 + CONFLICT = 409 + GONE = 410 + LENGTH_REQUIRED = 411 + PRECONDITION_FAILED = 412 + PAYLOAD_TOO_LARGE = 413 + URI_TOO_LONG = 414 + UNSUPPORTED_MEDIA_TYPE = 415 + RANGE_NOT_SATISFIABLE = 416 + EXPECTATION_FAILED = 417 + IM_A_TEAPOT = 418 + MISDIRECTED_REQUEST = 421 + UNPROCESSABLE_ENTITY = 422 + LOCKED = 423 + FAILED_DEPENDENCY = 424 + UPGRADE_REQUIRED = 426 + PRECONDITION_REQUIRED = 428 + TOO_MANY_REQUESTS = 429 + REQUEST_HEADER_FIELDS_TOO_LARGE = 431 + UNAVAILABLE_FOR_LEGAL_REASONS = 451 + CLIENT_CLOSED_REQUEST = 499 + INTERNAL_SERVER_ERROR = 500 + NOT_IMPLEMENTED = 501 + BAD_GATEWAY = 502 + SERVICE_UNAVAILABLE = 503 + GATEWAY_TIMEOUT = 504 + HTTP_VERSION_NOT_SUPPORTED = 505 + VARIANT_ALSO_NEGOTIATES = 506 + INSUFFICIENT_STORAGE = 507 + LOOP_DETECTED = 508 + NOT_EXTENDED = 510 + NETWORK_AUTHENTICATION_REQUIRED = 511 +http_response_status_codes = {status.value: status.name.replace('_', ' ').title() for status in HTTPStatus} -# file_extensions = { -# "html": "text/html", -# "htm": "text/html", -# "xhtml": "application/xhtml+xml", -# "xml": "application/xml", -# "svg": "image/svg+xml", -# "css": "text/css", -# "js": "application/javascript", -# "json": "application/json", -# "txt": "text/plain", -# "pdf": "application/pdf", -# "png": "image/png", -# "jpg": "image/jpeg", -# "jpeg": "image/jpeg", -# "gif": "image/gif", -# "ico": "image/x-icon", -# "tiff": "image/tiff", -# "tif": "image/tiff", -# "bmp": "image/bmp", -# "mp3": "audio/mpeg", -# "mp4": "video/mp4", -# "mpeg": "video/mpeg", -# "mpg": "video/mpeg", -# "mov": "video/quicktime", -# "qt": "video/quicktime", -# "avi": "video/x-msvideo", -# "wmv": "video/x-ms-wmv", -# "flv": "video/x-flv", -# "swf": "application/x-shockwave-flash", -# "zip": "application/zip", -# "gz": "application/x-gzip", -# "bz2": "application/x-bzip2", -# "rar": "application/x-rar-compressed", -# "tar": "application/x-tar", -# "7z": "application/x-7z-compressed", -# "exe": "application/x-msdownload", -# "msi": "application/x-msdownload", -# "cab": "application/vnd.ms-cab-compressed", -# "doc": "application/msword", -# "docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", -# "xls": "application/vnd.ms-excel", -# "xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", -# "ppt": "application/vnd.ms-powerpoint", -# "pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation", -# } - -# """ -# tag_states = { -# 'a' : { -# 'hover' : 'a:hover', -# 'visited' : 'a:visited', -# 'link' : 'a:link', -# 'active' : 'a:active', -# 'focus' : 'a:focus', -# # 'not' : 'a:not', -# } -# } -# """ +# Common MIME Types +file_extensions: dict[str, str] = { + "html": "text/html", + "htm": "text/html", + "xhtml": "application/xhtml+xml", + "xml": "application/xml", + "svg": "image/svg+xml", + "css": "text/css", + "js": "application/javascript", + "json": "application/json", + "txt": "text/plain", + "pdf": "application/pdf", + "png": "image/png", + "jpg": "image/jpeg", + "jpeg": "image/jpeg", + "gif": "image/gif", + "ico": "image/x-icon", + "tiff": "image/tiff", + "tif": "image/tiff", + "bmp": "image/bmp", + "mp3": "audio/mpeg", + "mp4": "video/mp4", + "mpeg": "video/mpeg", + "mpg": "video/mpeg", + "mov": "video/quicktime", + "qt": "video/quicktime", + "avi": "video/x-msvideo", + "wmv": "video/x-ms-wmv", + "flv": "video/x-flv", + "swf": "application/x-shockwave-flash", + "zip": "application/zip", + "gz": "application/x-gzip", + "bz2": "application/x-bzip2", + "rar": "application/x-rar-compressed", + "tar": "application/x-tar", + "7z": "application/x-7z-compressed", + "exe": "application/x-msdownload", + "msi": "application/x-msdownload", + "cab": "application/vnd.ms-cab-compressed", + "doc": "application/msword", + "docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + "xls": "application/vnd.ms-excel", + "xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "ppt": "application/vnd.ms-powerpoint", + "pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation", +} From 4d89ea86855bd4fab236216823565a089eb3d3b4 Mon Sep 17 00:00:00 2001 From: byteface Date: Sat, 5 Apr 2025 09:30:04 +0100 Subject: [PATCH 02/20] Update keyboard.py using Github Copilot --- domonic/constants/keyboard.py | 235 ++++++++++++++++++---------------- 1 file changed, 124 insertions(+), 111 deletions(-) diff --git a/domonic/constants/keyboard.py b/domonic/constants/keyboard.py index 0e34a4e1..ffa9f720 100644 --- a/domonic/constants/keyboard.py +++ b/domonic/constants/keyboard.py @@ -1,124 +1,137 @@ """ domonic.constants.keyboard =================================== - """ - class KeyCode: + """Class representing keyboard key codes.""" - A: str = "65" #: - ALTERNATE: str = "18" #: - B: str = "66" #: - BACKQUOTE: str = "192" #: - BACKSLASH: str = "220" #: - BACKSPACE: str = "8" #: - C: str = "67" #: - CAPS_LOCK: str = "20" #: - COMMA: str = "188" #: - COMMAND: str = "15" #: - CONTROL: str = "17" #: - D: str = "68" #: - DELETE: str = "46" #: - DOWN: str = "40" #: - E: str = "69" #: - END: str = "35" #: - - ENTER: str = "13" #: - RETURN: str = "13" #: - - EQUAL: str = "187" #: - ESCAPE: str = "27" #: - F: str = "70" #: - F1: str = "112" #: - F10: str = "121" #: - F11: str = "122" #: - F12: str = "123" #: - F13: str = "124" #: - F14: str = "125" #: - F15: str = "126" #: - F2: str = "113" #: - F3: str = "114" #: - F4: str = "115" #: - F5: str = "116" #: - F6: str = "117" #: - F7: str = "118" #: - F8: str = "119" #: - F9: str = "120" #: - G: str = "71" #: - H: str = "72" #: - HOME: str = "36" #: - I: str = "73" #: - INSERT: str = "45" #: - J: str = "74" #: - K: str = "75" #: - L: str = "76" #: - LEFT: str = "37" #: - LEFTBRACKET: str = "219" #: - M: str = "77" #: - MINUS: str = "189" #: - N: str = "78" #: - NUMBER_0: str = "48" #: - NUMBER_1: str = "49" #: - NUMBER_2: str = "50" #: - NUMBER_3: str = "51" #: - NUMBER_4: str = "52" #: - NUMBER_5: str = "53" #: - NUMBER_6: str = "54" #: - NUMBER_7: str = "55" #: - NUMBER_8: str = "56" #: - NUMBER_9: str = "57" #: - NUMPAD: str = "21" #: - NUMPAD_0: str = "96" #: - NUMPAD_1: str = "97" #: - NUMPAD_2: str = "98" #: - NUMPAD_3: str = "99" #: - NUMPAD_4: str = "100" #: - NUMPAD_5: str = "101" #: - NUMPAD_6: str = "102" #: - NUMPAD_7: str = "103" #: - NUMPAD_8: str = "104" #: - NUMPAD_9: str = "105" #: - NUMPAD_ADD: str = "107" #: - NUMPAD_DECIMAL: str = "110" #: - NUMPAD_DIVIDE: str = "111" #: - NUMPAD_ENTER: str = "108" #: - NUMPAD_MULTIPLY: str = "106" #: - NUMPAD_SUBTRACT: str = "109" #: - O: str = "79" #: - P: str = "80" #: - PAGE_DOWN: str = "34" #: - PAGE_UP: str = "33" #: - PERIOD: str = "190" #: - Q: str = "81" #: - QUOTE: str = "222" #: - R: str = "82" #: - RIGHT: str = "39" #: - RIGHTBRACKET: str = "221" #: - S: str = "83" #: - SEMICOLON: str = "186" #: + A: str = "65" + ALTERNATE: str = "18" + B: str = "66" + BACKQUOTE: str = "192" + BACKSLASH: str = "220" + BACKSPACE: str = "8" + C: str = "67" + CAPS_LOCK: str = "20" + COMMA: str = "188" + COMMAND: str = "15" + CONTROL: str = "17" + D: str = "68" + DELETE: str = "46" + DOWN: str = "40" + E: str = "69" + END: str = "35" + ENTER: str = "13" + RETURN: str = "13" + EQUAL: str = "187" + ESCAPE: str = "27" + F: str = "70" + F1: str = "112" + F10: str = "121" + F11: str = "122" + F12: str = "123" + F13: str = "124" + F14: str = "125" + F15: str = "126" + F2: str = "113" + F3: str = "114" + F4: str = "115" + F5: str = "116" + F6: str = "117" + F7: str = "118" + F8: str = "119" + F9: str = "120" + G: str = "71" + H: str = "72" + HOME: str = "36" + I: str = "73" + INSERT: str = "45" + J: str = "74" + K: str = "75" + L: str = "76" + LEFT: str = "37" + LEFTBRACKET: str = "219" + M: str = "77" + MINUS: str = "189" + N: str = "78" + NUMBER_0: str = "48" + NUMBER_1: str = "49" + NUMBER_2: str = "50" + NUMBER_3: str = "51" + NUMBER_4: str = "52" + NUMBER_5: str = "53" + NUMBER_6: str = "54" + NUMBER_7: str = "55" + NUMBER_8: str = "56" + NUMBER_9: str = "57" + NUMPAD: str = "21" + NUMPAD_0: str = "96" + NUMPAD_1: str = "97" + NUMPAD_2: str = "98" + NUMPAD_3: str = "99" + NUMPAD_4: str = "100" + NUMPAD_5: str = "101" + NUMPAD_6: str = "102" + NUMPAD_7: str = "103" + NUMPAD_8: str = "104" + NUMPAD_9: str = "105" + NUMPAD_ADD: str = "107" + NUMPAD_DECIMAL: str = "110" + NUMPAD_DIVIDE: str = "111" + NUMPAD_ENTER: str = "108" + NUMPAD_MULTIPLY: str = "106" + NUMPAD_SUBTRACT: str = "109" + O: str = "79" + P: str = "80" + PAGE_DOWN: str = "34" + PAGE_UP: str = "33" + PERIOD: str = "190" + Q: str = "81" + QUOTE: str = "222" + R: str = "82" + RIGHT: str = "39" + RIGHTBRACKET: str = "221" + S: str = "83" + SEMICOLON: str = "186" SHIFT: str = "16" #: ?? left or right or both? - SLASH: str = "191" #: - SPACE: str = "32" #: - T: str = "84" #: - TAB: str = "9" #: - U: str = "85" #: - UP: str = "38" #: - V: str = "86" #: - W: str = "87" #: - X: str = "88" #: - Y: str = "89" #: - Z: str = "9" #: + SLASH: str = "191" + SPACE: str = "32" + T: str = "84" + TAB: str = "9" + U: str = "85" + UP: str = "38" + V: str = "86" + W: str = "87" + X: str = "88" + Y: str = "89" + Z: str = "90" + + LEFT_SHIFT: str = "16L" + RIGHT_SHIFT: str = "16R" + LEFT_CONTROL: str = "17L" + RIGHT_CONTROL: str = "17R" + LEFT_ALT: str = "18L" + RIGHT_ALT: str = "18R" + LEFT_COMMAND: str = "91L" # Left Apple/Command key + RIGHT_COMMAND: str = "93R" # Right Apple/Command key + FN: str = "255" # Fn key - # TODO - do the modifiers + # Media Control Keys + VOLUME_UP: str = "175" + VOLUME_DOWN: str = "174" + MUTE: str = "173" + PLAY_PAUSE: str = "179" + NEXT_TRACK: str = "176" + PREVIOUS_TRACK: str = "177" - # find attribute by value - # def get_letter(self, attr): - # for key, value in self.__dict__.iteritems(): - # if value: str == attr: - # return key - # return None + # Special Keys + WINDOWS: str = "91" # Windows key + MENU: str = "93" # Menu key + PRINT_SCREEN: str = "44" + SCROLL_LOCK: str = "145" + PAUSE_BREAK: str = "19" def __init__(self) -> None: - """constructor for the KeyCode class""" + """Constructor for the KeyCode class.""" pass From edfe25af997fa5a1d3fec8b48c582912ea5352ed Mon Sep 17 00:00:00 2001 From: byteface Date: Sat, 5 Apr 2025 09:31:37 +0100 Subject: [PATCH 03/20] Update keyboard.py to be organised into groups --- domonic/constants/keyboard.py | 106 +++++++++++++++++----------------- 1 file changed, 54 insertions(+), 52 deletions(-) diff --git a/domonic/constants/keyboard.py b/domonic/constants/keyboard.py index ffa9f720..e37b2c7f 100644 --- a/domonic/constants/keyboard.py +++ b/domonic/constants/keyboard.py @@ -1,60 +1,35 @@ -""" - domonic.constants.keyboard - =================================== -""" - class KeyCode: """Class representing keyboard key codes.""" + # Alphabet keys A: str = "65" - ALTERNATE: str = "18" B: str = "66" - BACKQUOTE: str = "192" - BACKSLASH: str = "220" - BACKSPACE: str = "8" C: str = "67" - CAPS_LOCK: str = "20" - COMMA: str = "188" - COMMAND: str = "15" - CONTROL: str = "17" D: str = "68" - DELETE: str = "46" - DOWN: str = "40" E: str = "69" - END: str = "35" - ENTER: str = "13" - RETURN: str = "13" - EQUAL: str = "187" - ESCAPE: str = "27" F: str = "70" - F1: str = "112" - F10: str = "121" - F11: str = "122" - F12: str = "123" - F13: str = "124" - F14: str = "125" - F15: str = "126" - F2: str = "113" - F3: str = "114" - F4: str = "115" - F5: str = "116" - F6: str = "117" - F7: str = "118" - F8: str = "119" - F9: str = "120" G: str = "71" H: str = "72" - HOME: str = "36" I: str = "73" - INSERT: str = "45" J: str = "74" K: str = "75" L: str = "76" - LEFT: str = "37" - LEFTBRACKET: str = "219" M: str = "77" - MINUS: str = "189" N: str = "78" + O: str = "79" + P: str = "80" + Q: str = "81" + R: str = "82" + S: str = "83" + T: str = "84" + U: str = "85" + V: str = "86" + W: str = "87" + X: str = "88" + Y: str = "89" + Z: str = "90" + + # Numeric keys NUMBER_0: str = "48" NUMBER_1: str = "49" NUMBER_2: str = "50" @@ -65,6 +40,8 @@ class KeyCode: NUMBER_7: str = "55" NUMBER_8: str = "56" NUMBER_9: str = "57" + + # Numpad keys NUMPAD: str = "21" NUMPAD_0: str = "96" NUMPAD_1: str = "97" @@ -82,31 +59,56 @@ class KeyCode: NUMPAD_ENTER: str = "108" NUMPAD_MULTIPLY: str = "106" NUMPAD_SUBTRACT: str = "109" - O: str = "79" - P: str = "80" + + # Function keys + F1: str = "112" + F2: str = "113" + F3: str = "114" + F4: str = "115" + F5: str = "116" + F6: str = "117" + F7: str = "118" + F8: str = "119" + F9: str = "120" + F10: str = "121" + F11: str = "122" + F12: str = "123" + F13: str = "124" + F14: str = "125" + F15: str = "126" + + # Control keys + BACKSPACE: str = "8" + CAPS_LOCK: str = "20" + COMMA: str = "188" + COMMAND: str = "15" + CONTROL: str = "17" + DELETE: str = "46" + DOWN: str = "40" + END: str = "35" + ENTER: str = "13" + RETURN: str = "13" + EQUAL: str = "187" + ESCAPE: str = "27" + HOME: str = "36" + INSERT: str = "45" + LEFT: str = "37" + LEFTBRACKET: str = "219" + MINUS: str = "189" PAGE_DOWN: str = "34" PAGE_UP: str = "33" PERIOD: str = "190" - Q: str = "81" QUOTE: str = "222" - R: str = "82" RIGHT: str = "39" RIGHTBRACKET: str = "221" - S: str = "83" SEMICOLON: str = "186" SHIFT: str = "16" #: ?? left or right or both? SLASH: str = "191" SPACE: str = "32" - T: str = "84" TAB: str = "9" - U: str = "85" UP: str = "38" - V: str = "86" - W: str = "87" - X: str = "88" - Y: str = "89" - Z: str = "90" + # Modifier keys LEFT_SHIFT: str = "16L" RIGHT_SHIFT: str = "16R" LEFT_CONTROL: str = "17L" From bdca7e2c4f0e95236a582d85673ba83da56fb617 Mon Sep 17 00:00:00 2001 From: byteface Date: Sat, 5 Apr 2025 09:40:33 +0100 Subject: [PATCH 04/20] Update keyboard.py using Github Copilot to add special characters --- domonic/constants/keyboard.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/domonic/constants/keyboard.py b/domonic/constants/keyboard.py index e37b2c7f..3afd3ef6 100644 --- a/domonic/constants/keyboard.py +++ b/domonic/constants/keyboard.py @@ -60,6 +60,28 @@ class KeyCode: NUMPAD_MULTIPLY: str = "106" NUMPAD_SUBTRACT: str = "109" + # Special characters + EXCLAMATION: str = "49" # Shift + 1 + AT: str = "50" # Shift + 2 + HASH: str = "51" # Shift + 3 + DOLLAR: str = "52" # Shift + 4 + PERCENT: str = "53" # Shift + 5 + CARET: str = "54" # Shift + 6 + AMPERSAND: str = "55" # Shift + 7 + STAR: str = "56" # Shift + 8 + LEFT_PARENTHESIS: str = "57" # Shift + 9 + RIGHT_PARENTHESIS: str = "48" # Shift + 0 + UNDERSCORE: str = "189" # Shift + - + PLUS: str = "187" # Shift + = + LEFT_CURLY_BRACKET: str = "219" # Shift + [ + RIGHT_CURLY_BRACKET: str = "221" # Shift + ] + PIPE: str = "220" # Shift + \ + COLON: str = "186" # Shift + ; + DOUBLE_QUOTE: str = "222" # Shift + ' + LESS_THAN: str = "188" # Shift + , + GREATER_THAN: str = "190" # Shift + . + QUESTION_MARK: str = "191" # Shift + / + # Function keys F1: str = "112" F2: str = "113" From dfc9361b37e1a84d55e53a83dba411097b34447b Mon Sep 17 00:00:00 2001 From: byteface Date: Sat, 5 Apr 2025 09:53:09 +0100 Subject: [PATCH 05/20] Update CDN.py to bump the js libs --- domonic/CDN.py | 41 +++++++++++++++++------------------------ 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/domonic/CDN.py b/domonic/CDN.py index 9db0e832..a1d79700 100644 --- a/domonic/CDN.py +++ b/domonic/CDN.py @@ -1,37 +1,30 @@ """ domonic.CDN ==================================== - For quick reference when prototyping you can use the CDN package. - (Don't rely on a CDN package for production code. wget a local copy.) - - TODO - integrity/cross origin/module? + For quick reference when prototyping """ class CDN_JS: """ - js libs + JavaScript libraries """ - JQUERY_3_5_1: str = "https://code.jquery.com/jquery-3.5.1.min.js" #: - JQUERY: str = "https://code.jquery.com/jquery-3.6.0.min.js" #: latest - JQUERY_UI: str = "https://code.jquery.com/ui/1.12.0/jquery-ui.min.js" #: - UNDERSCORE: str = "https://cdn.jsdelivr.net/npm/underscore@1.11.0/underscore-min.js" #: - BOOTSTRAP_4: str = "https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" #: - POPPER_1_16_1: str = "https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" #: - BOOTSTRAP_5_ALPHA: str = "https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js" #: - BOOTSTRAP_5 = "https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js" #: latest - D3_6_1_0: str = "https://cdnjs.cloudflare.com/ajax/libs/d3/6.1.0/d3.min.js" #: - D3: str = "https://cdnjs.cloudflare.com/ajax/libs/d3/7.4.3/d3.min.js" #: latest - MODERNIZER_2_8_3: str = "https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js" #: - MOMENT_2_27_0: str = "https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js" #: - PIXI_5_3_3: str = "https://cdnjs.cloudflare.com/ajax/libs/pixi.js/5.3.3/pixi.min.js" #: - SOCKET_1_4_5: str = "https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.5/socket.io.min.js" #: - X3DOM: str = "https://www.x3dom.org/download/x3dom.js" #: - AFRAME_1_2: str = "https://aframe.io/releases/1.2.0/aframe.min.js" #: - BRYTHON_3_9_5: str = "https://cdnjs.cloudflare.com/ajax/libs/brython/3.9.5/brython.min.js" #: - MATHML: str = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=MML_HTMLorMML" #: - HTMX: str = "https://unpkg.com/htmx.org@1.7.0" #: latest + JQUERY: str = "https://code.jquery.com/jquery-3.6.4.min.js" + JQUERY_UI: str = "https://code.jquery.com/ui/1.13.2/jquery-ui.min.js" + UNDERSCORE: str = "https://cdn.jsdelivr.net/npm/underscore@1.13.6/underscore-min.js" + BOOTSTRAP: str = "https://stackpath.bootstrapcdn.com/bootstrap/5.3.0/js/bootstrap.min.js" + POPPER: str = "https://cdn.jsdelivr.net/npm/popper.js@2.11.7/dist/umd/popper.min.js" + D3: str = "https://cdnjs.cloudflare.com/ajax/libs/d3/7.8.4/d3.min.js" + MODERNIZER: str = "https://cdnjs.cloudflare.com/ajax/libs/modernizr/3.11.7/modernizr.min.js" + MOMENT: str = "https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment.min.js" + PIXI: str = "https://cdnjs.cloudflare.com/ajax/libs/pixi.js/7.1.0/pixi.min.js" + SOCKET: str = "https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.6.1/socket.io.min.js" + X3DOM: str = "https://www.x3dom.org/download/x3dom.js" + AFRAME: str = "https://aframe.io/releases/1.3.0/aframe.min.js" + BRYTHON: str = "https://cdnjs.cloudflare.com/ajax/libs/brython/3.11.1/brython.min.js" + MATHML: str = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.2/es5/tex-mml-chtml.min.js" + HTMX: str = "https://unpkg.com/htmx.org@1.9.0" class CDN_CSS: From 49ece2acf00f2e661174aefebfbf38f59b52c901 Mon Sep 17 00:00:00 2001 From: byteface Date: Sat, 5 Apr 2025 09:57:42 +0100 Subject: [PATCH 06/20] Update CDN.py css libraries --- domonic/CDN.py | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/domonic/CDN.py b/domonic/CDN.py index a1d79700..5b5883cc 100644 --- a/domonic/CDN.py +++ b/domonic/CDN.py @@ -4,7 +4,6 @@ For quick reference when prototyping """ - class CDN_JS: """ JavaScript libraries @@ -25,27 +24,30 @@ class CDN_JS: BRYTHON: str = "https://cdnjs.cloudflare.com/ajax/libs/brython/3.11.1/brython.min.js" MATHML: str = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.2/es5/tex-mml-chtml.min.js" HTMX: str = "https://unpkg.com/htmx.org@1.9.0" - + LODASH: str = "https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js" + AXIOS: str = "https://cdn.jsdelivr.net/npm/axios@0.21.1/dist/axios.min.js" + DAY_JS: str = "https://cdn.jsdelivr.net/npm/dayjs@1.10.4/dayjs.min.js" + CHART_JS: str = "https://cdn.jsdelivr.net/npm/chart.js@2.9.4/dist/Chart.min.js" + ANIME_JS: str = "https://cdn.jsdelivr.net/npm/animejs@3.2.1/lib/anime.min.js" + VALIDATOR_JS: str = "https://cdn.jsdelivr.net/npm/validator@13.6.0/validator.min.js" class CDN_CSS: """ - Preferably use version numbers if available. - use LATEST if it always gets the latest + CSS Libraries """ - BOOTSTRAP_5_ALPHA: str = "https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js" #: - BOOTSTRAP_4: str = "https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" #: - MARX: str = "https://unpkg.com/marx-css/css/marx.min.css" #: - MVP: str = "https://unpkg.com/mvp.css" #: - WATER_LATEST: str = "https://cdn.jsdelivr.net/gh/kognise/water.css@latest/water.min.css" #: - BALLOON: str = "https://unpkg.com/balloon-css/balloon.min.css" #: - THREE_DOTS_0_2_0: str = "https://cdnjs.cloudflare.com/ajax/libs/three-dots/0.2.0/three-dots.min.css" #: - MILLIGRAM_1_3_0: str = "https://cdnjs.cloudflare.com/ajax/libs/milligram/1.3.0/milligram.css" #: - X3DOM: str = "https://www.x3dom.org/download/x3dom.css" #: - FONTAWESOME_5_7_1: str = "https://use.fontawesome.com/releases/v5.7.1/css/all.css" #: - MDI_5_4_55: str = "https://cdn.materialdesignicons.com/5.4.55/css/materialdesignicons.min.css" #: - TAILWIND_2_2_15: str = "https://unpkg.com/tailwindcss@^2.2.15/dist/tailwind.min.css" #: - SIMPLE: str = "https://cdn.simplecss.org/simple.min.css" #: + BOOTSTRAP: str = "https://stackpath.bootstrapcdn.com/bootstrap/5.3.0/css/bootstrap.min.css" + MARX: str = "https://unpkg.com/marx-css/css/marx.min.css" + MVP: str = "https://unpkg.com/mvp.css" + WATER: str = "https://cdn.jsdelivr.net/gh/kognise/water.css@latest/water.min.css" + BALLOON: str = "https://unpkg.com/balloon-css/balloon.min.css" + THREE_DOTS: str = "https://cdnjs.cloudflare.com/ajax/libs/three-dots/0.2.0/three-dots.min.css" + MILLIGRAM: str = "https://cdnjs.cloudflare.com/ajax/libs/milligram/1.3.0/milligram.css" + X3DOM: str = "https://www.x3dom.org/download/x3dom.css" + FONTAWESOME: str = "https://use.fontawesome.com/releases/v5.7.1/css/all.css" + MDI: str = "https://cdn.materialdesignicons.com/5.4.55/css/materialdesignicons.min.css" + TAILWIND: str = "https://unpkg.com/tailwindcss@^2.2.15/dist/tailwind.min.css" + SIMPLE: str = "https://cdn.simplecss.org/simple.min.css" class CDN_IMG: From f2b1cf74570bb557edfb13b8906d2da4b76cadd4 Mon Sep 17 00:00:00 2001 From: byteface Date: Sat, 5 Apr 2025 10:02:40 +0100 Subject: [PATCH 07/20] Update .gitignore --- .gitignore | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 926b741c..5437263b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,31 @@ +# macOS .DS_Store .Trashes + +# VSCode .vscode -*.pyc -venv -winvenv + +# Python +*.py[cod] __pycache__/ +*.so +.Python +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ +*.pyc +winvenv/ -build -dist -domonic.egg-info +# Distribution / packaging +build/ +dist/ +domonic.egg-info/ -# sphinx +# Sphinx documentation docs/_build/ -.coverage \ No newline at end of file +# Coverage reports +.coverage +.coverage.* From 38d142896df661f02371ae9e83d7652846d41ab5 Mon Sep 17 00:00:00 2001 From: byteface Date: Sat, 5 Apr 2025 10:11:15 +0100 Subject: [PATCH 08/20] Update __init__.py copilot wasn't aware of backwards compatibility --- domonic/constants/__init__.py | 68 ++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 33 deletions(-) diff --git a/domonic/constants/__init__.py b/domonic/constants/__init__.py index 0e9449c1..c794066b 100644 --- a/domonic/constants/__init__.py +++ b/domonic/constants/__init__.py @@ -1,3 +1,5 @@ +from typing import Dict + """ domonic.constants ==================================== @@ -5,7 +7,7 @@ """ # Namespaces -namespaces: dict[str, str] = { +namespaces: Dict[str, str] = { "xml": "http://www.w3.org/XML/1998/namespace", "svg": "http://www.w3.org/2000/svg", "xlink": "http://www.w3.org/1999/xlink", @@ -20,7 +22,7 @@ } # Document Types -doctypes: dict[str, str] = { +doctypes: Dict[str, str] = { "HTML5": "", "HTML4_01_Strict": '', "HTML4_01_Transitional": '', @@ -59,44 +61,44 @@ class HTTPStatus(Enum): NOT_FOUND = 404 METHOD_NOT_ALLOWED = 405 NOT_ACCEPTABLE = 406 - PROXY_AUTHENTICATION_REQUIRED = 407 - REQUEST_TIMEOUT = 408 + PROXY_AUTHENTICATION REQUIRED = 407 + REQUEST TIMEOUT = 408 CONFLICT = 409 GONE = 410 - LENGTH_REQUIRED = 411 - PRECONDITION_FAILED = 412 - PAYLOAD_TOO_LARGE = 413 - URI_TOO_LONG = 414 - UNSUPPORTED_MEDIA_TYPE = 415 - RANGE_NOT_SATISFIABLE = 416 - EXPECTATION_FAILED = 417 - IM_A_TEAPOT = 418 - MISDIRECTED_REQUEST = 421 - UNPROCESSABLE_ENTITY = 422 + LENGTH REQUIRED = 411 + PRECONDITION FAILED = 412 + PAYLOAD TOO LARGE = 413 + URI TOO LONG = 414 + UNSUPPORTED MEDIA TYPE = 415 + RANGE NOT SATISFIABLE = 416 + EXPECTATION FAILED = 417 + IM A TEAPOT = 418 + MISDIRECTED REQUEST = 421 + UNPROCESSABLE ENTITY = 422 LOCKED = 423 - FAILED_DEPENDENCY = 424 - UPGRADE_REQUIRED = 426 - PRECONDITION_REQUIRED = 428 - TOO_MANY_REQUESTS = 429 - REQUEST_HEADER_FIELDS_TOO_LARGE = 431 - UNAVAILABLE_FOR_LEGAL_REASONS = 451 - CLIENT_CLOSED_REQUEST = 499 - INTERNAL_SERVER_ERROR = 500 - NOT_IMPLEMENTED = 501 - BAD_GATEWAY = 502 - SERVICE_UNAVAILABLE = 503 - GATEWAY_TIMEOUT = 504 - HTTP_VERSION_NOT_SUPPORTED = 505 - VARIANT_ALSO_NEGOTIATES = 506 - INSUFFICIENT_STORAGE = 507 - LOOP_DETECTED = 508 - NOT_EXTENDED = 510 - NETWORK_AUTHENTICATION_REQUIRED = 511 + FAILED DEPENDENCY = 424 + UPGRADE REQUIRED = 426 + PRECONDITION REQUIRED = 428 + TOO MANY REQUESTS = 429 + REQUEST HEADER FIELDS TOO LARGE = 431 + UNAVAILABLE FOR LEGAL REASONS = 451 + CLIENT CLOSED REQUEST = 499 + INTERNAL SERVER ERROR = 500 + NOT IMPLEMENTED = 501 + BAD GATEWAY = 502 + SERVICE UNAVAILABLE = 503 + GATEWAY TIMEOUT = 504 + HTTP VERSION NOT SUPPORTED = 505 + VARIANT ALSO NEGOTIATES = 506 + INSUFFICIENT STORAGE = 507 + LOOP DETECTED = 508 + NOT EXTENDED = 510 + NETWORK AUTHENTICATION REQUIRED = 511 http_response_status_codes = {status.value: status.name.replace('_', ' ').title() for status in HTTPStatus} # Common MIME Types -file_extensions: dict[str, str] = { +file_extensions: Dict[str, str] = { "html": "text/html", "htm": "text/html", "xhtml": "application/xhtml+xml", From 22e8a8c953ff2c86b53dc65fec80470ad1e50aae Mon Sep 17 00:00:00 2001 From: byteface Date: Sat, 5 Apr 2025 10:15:08 +0100 Subject: [PATCH 09/20] Update test_CDN.py refactor test --- tests/test_CDN.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tests/test_CDN.py b/tests/test_CDN.py index 4a2e207d..8f537792 100644 --- a/tests/test_CDN.py +++ b/tests/test_CDN.py @@ -12,12 +12,10 @@ class TestCase(unittest.TestCase): def test_domonic_CDN(self): - myjs = script(_src=CDN_JS.JQUERY_3_5_1) - assert str(myjs) == '' + myjs = script(_src=CDN_JS.JQUERY) + assert str(myjs) == '' mycss = link(_href=CDN_CSS.MARX) assert str(mycss) == '' - mycss = link(_rel="stylesheet", _href=CDN_JS.JQUERY_3_5_1) - assert str(mycss) == '' myimg = img(_src=CDN_IMG.PLACEHOLDER(100, 100)) assert str(myimg) == '' From 6e60fdfdea52f87172c136f171cdbe250bd2c7f2 Mon Sep 17 00:00:00 2001 From: byteface Date: Sat, 5 Apr 2025 10:19:50 +0100 Subject: [PATCH 10/20] Update __init__.py 2 years of AI and it still cant check its own syntax on variable names --- domonic/constants/__init__.py | 60 +++++++++++++++++------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/domonic/constants/__init__.py b/domonic/constants/__init__.py index c794066b..f64ee14a 100644 --- a/domonic/constants/__init__.py +++ b/domonic/constants/__init__.py @@ -61,39 +61,39 @@ class HTTPStatus(Enum): NOT_FOUND = 404 METHOD_NOT_ALLOWED = 405 NOT_ACCEPTABLE = 406 - PROXY_AUTHENTICATION REQUIRED = 407 - REQUEST TIMEOUT = 408 + PROXY_AUTHENTICATION_REQUIRED = 407 + REQUEST_TIMEOUT = 408 CONFLICT = 409 GONE = 410 - LENGTH REQUIRED = 411 - PRECONDITION FAILED = 412 - PAYLOAD TOO LARGE = 413 - URI TOO LONG = 414 - UNSUPPORTED MEDIA TYPE = 415 - RANGE NOT SATISFIABLE = 416 - EXPECTATION FAILED = 417 - IM A TEAPOT = 418 - MISDIRECTED REQUEST = 421 - UNPROCESSABLE ENTITY = 422 + LENGTH_REQUIRED = 411 + PRECONDITION_FAILED = 412 + PAYLOAD_TOO_LARGE = 413 + URI_TOO_LONG = 414 + UNSUPPORTED_MEDIA TYPE = 415 + RANGE_NOT_SATISFIABLE = 416 + EXPECTATION_FAILED = 417 + IM_A_TEAPOT = 418 + MISDIRECTED_REQUEST = 421 + UNPROCESSABLE_ENTITY = 422 LOCKED = 423 - FAILED DEPENDENCY = 424 - UPGRADE REQUIRED = 426 - PRECONDITION REQUIRED = 428 - TOO MANY REQUESTS = 429 - REQUEST HEADER FIELDS TOO LARGE = 431 - UNAVAILABLE FOR LEGAL REASONS = 451 - CLIENT CLOSED REQUEST = 499 - INTERNAL SERVER ERROR = 500 - NOT IMPLEMENTED = 501 - BAD GATEWAY = 502 - SERVICE UNAVAILABLE = 503 - GATEWAY TIMEOUT = 504 - HTTP VERSION NOT SUPPORTED = 505 - VARIANT ALSO NEGOTIATES = 506 - INSUFFICIENT STORAGE = 507 - LOOP DETECTED = 508 - NOT EXTENDED = 510 - NETWORK AUTHENTICATION REQUIRED = 511 + FAILED_DEPENDENCY = 424 + UPGRADE_REQUIRED = 426 + PRECONDITION_REQUIRED = 428 + TOO_MANY_REQUESTS = 429 + REQUEST_HEADER_FIELDS_TOO_LARGE = 431 + UNAVAILABLE_FOR_LEGAL_REASONS = 451 + CLIENT_CLOSED_REQUEST = 499 + INTERNAL_SERVER_ERROR = 500 + NOT_IMPLEMENTED = 501 + BAD_GATEWAY = 502 + SERVICE_UNAVAILABLE = 503 + GATEWAY_TIMEOUT = 504 + HTTP_VERSION_NOT_SUPPORTED = 505 + VARIANT_ALSO_NEGOTIATES = 506 + INSUFFICIENT_STORAGE = 507 + LOOP_DETECTED = 508 + NOT_EXTENDED = 510 + NETWORK_AUTHENTICATION_REQUIRED = 511 http_response_status_codes = {status.value: status.name.replace('_', ' ').title() for status in HTTPStatus} From 08ac6a6b6456a2213c46327c7772ddf58474baee Mon Sep 17 00:00:00 2001 From: byteface Date: Sat, 5 Apr 2025 10:36:44 +0100 Subject: [PATCH 11/20] Update __init__.py --- domonic/constants/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/domonic/constants/__init__.py b/domonic/constants/__init__.py index f64ee14a..a9d162f8 100644 --- a/domonic/constants/__init__.py +++ b/domonic/constants/__init__.py @@ -69,7 +69,7 @@ class HTTPStatus(Enum): PRECONDITION_FAILED = 412 PAYLOAD_TOO_LARGE = 413 URI_TOO_LONG = 414 - UNSUPPORTED_MEDIA TYPE = 415 + UNSUPPORTED_MEDIA_TYPE = 415 RANGE_NOT_SATISFIABLE = 416 EXPECTATION_FAILED = 417 IM_A_TEAPOT = 418 From 0ce9b6bc30093ed0f8711b8ef67b6fca0a8fcff5 Mon Sep 17 00:00:00 2001 From: byteface Date: Fri, 11 Apr 2025 23:02:22 +0100 Subject: [PATCH 12/20] Fix typos and formatting --- README.md | 94 +++++++++++++++++++++++-------------------------------- 1 file changed, 39 insertions(+), 55 deletions(-) diff --git a/README.md b/README.md index c5b4ed25..4751a782 100755 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![byteface github](https://img.shields.io/badge/GitHub-byteface-181717.svg?style=flat&logo=github)](https://github.com/byteface) -#### A DOM for making HTML with python 3! (and more) +#### A DOM for making HTML with Python 3! (and more) ### Install @@ -27,7 +27,7 @@ print(html(body(h1('Hello, World!')))) #

Hello, World!

``` -or to pretty format and insert the doctype, use an f-string: +to pretty format and insert the doctype, use an f-string: ```python mydom = html(body(h1('Hello, World!'), a("somelink", _href="somepage.html"))) @@ -44,16 +44,14 @@ print(f"{mydom}") ``` -### parsing html - -Basic useage... +### Parsing html ```bash from domonic import domonic mydom = domonic.parseString(' ``` -### rendering DOM objects +### Rendering DOM objects -domonic is a pure python dom whos tree is composed of objects. i.e +domonic is a pure Python dom whos tree is composed of objects. i.e ```python div() @@ -155,7 +151,7 @@ DOM manipulation with python. ### createElement -to create your own elements use the DOM API +Create your own elements with the DOM API ```python from domonic.dom import * @@ -198,9 +194,9 @@ from domonic.dom import document print(document) ``` -### javascript +### Javascript -There is a javascript package that mimics the js API: +There is a Javascript package that mimics the js API: ```python from domonic.javascript import Math @@ -284,7 +280,7 @@ print(atag) # ``` -For writing and using regular javascript, load from a src... +For writing and using regular Javascript, load from a src... ```python script(_src="/docs/5.0/dist/js/bootstrap.bundle.min.js", _integrity="sha384-1234", _crossorigin="anonymous"), @@ -330,7 +326,7 @@ style(""" """), ``` -### decorators +### Decorators use decorators to wrap elements around function results @@ -354,7 +350,7 @@ It returns the tag object by default. You can pass True as a second param to the ### data-tags -python doesn't allow hyphens in parameter names. so use variable keyword argument syntax for custom data-tags +Python doesn't allow hyphens in parameter names. so use variable keyword argument syntax for custom data-tags ```python div("test", **{"_data-test":"test"} ) @@ -371,7 +367,7 @@ str(t) ### JSON (utils) -decorate any function that returns python objects to return json instead +Decorate any function that returns Python objects to return json instead ```python from domonic.decorators import as_json @@ -473,7 +469,7 @@ _webpage = html(head(),body( render( _webpage, 'hello.html' ) ``` -### dQuery (NEW) +### dQuery dQuery uses the ΒΊ symbol (alt+0). @@ -497,7 +493,7 @@ print(b) Only recently started so check to see what's implemented. -### terminal +### Terminal There is a command line package that can call bash/unix/posix and other apps on the command line: @@ -574,31 +570,31 @@ To view the online the docs: domonic -h ``` -To see the version: +See the version: ```bash domonic -v ``` -To quickly create a domonic project for prototyping: +Quickly create a domonic project for prototyping: ```bash domonic -p myproject ``` -To evaluate some domonic pyml: +Evaluate some domonic pyml: ```bash domonic -e 'html(head(),body(div()))' ``` -To use xpath on a website from the command line: +Use xpath on a website from the command line: ```bash domonic -x https://google.com '//a' ``` -To use css selectors on a website from the command line: +Use css selectors on a website from the command line: ```bash domonic -q https://google.com 'a' @@ -618,21 +614,7 @@ Checkout [the docs](https://domonic.readthedocs.io/) for more examples i.e. gene There's also several useage examples in the repo so pull and have a look. -### Join-In - -Feel free to contribute if you find it useful. (I'd be grateful for help on all fronts) - -Email me, message me directly if you like or create a discussion on here. Or join the [discord](https://discord.gg/a9pSZv4V5f). - -If there are any methods you want that are missing or not complete yet or you think you can help make it better just update the code and send a pull request. I'll merge and releaese asap. - -In the repo there's a requirements-dev.txt which is mostly the libs used in the examples. - -requirements.txt are the libs used for packaging just the lib. - -See also the CONTRIBUTING.md - -### running examples +### Running the examples ```bash . venv/bin/activate @@ -641,7 +623,7 @@ cd examples python lifecalendar.py ``` -### run tests +### Run the tests There are tests used during dev. They are useful as code examples and to see what still needs doing. @@ -651,7 +633,7 @@ See Makefile to run all tests: make test # default tests ubuntu. so will fail on window when terminal test runs. comment out locally if that's the case ``` -or to test a single function: +Testing a single function: ```bash python -m unittest tests.test_javascript.TestCase.test_javascript_array @@ -660,7 +642,7 @@ python -m unittest tests.test_geom.TestCase.test_vec2 python3 -m unittest tests.test_cmd.TestCase.test_cmd_dir # only windows ``` -or to test a whole module +Test a whole module ```bash python -m unittest tests.test_html @@ -681,9 +663,11 @@ pip install pytest pytest tests ``` +## Contributing +Contributions are welcome! If you'd like to contribute, please follow these steps: +1. Fork the repository. +2. Create a new branch for your feature or bug fix. +3. Write your code and add tests if applicable. +4. Submit a pull request with a clear description of your changes. -### Disclaimer - -There's several more widely supported libraries doing HTML generation, DOM reading/manipulation, terminal wrappers etc. Maybe use one of those for production due to strictness and support. - -This is more of a fast prototyping library. +For more details, see the [CONTRIBUTING.md](CONTRIBUTING.md) file. From 112153e62665a48800d195615deeb1cba2d94fb9 Mon Sep 17 00:00:00 2001 From: byteface Date: Fri, 11 Apr 2025 23:07:46 +0100 Subject: [PATCH 13/20] Bump requirements --- requirements.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements.txt b/requirements.txt index b1b6e8a9..543eb3c9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ -elementpath~=4.6.0 +elementpath~=4.8.0 python-dateutil==2.9.0.post0 requests~=2.32.3 -urllib3~=2.2.3 +urllib3~=2.4.0 html5lib~=1.1 -cssselect~=1.2.0 \ No newline at end of file +cssselect~=1.3.0 From 2f45ea1e52095f1852e342d6d2e9167e79b48a32 Mon Sep 17 00:00:00 2001 From: byteface Date: Sat, 17 Jan 2026 20:13:59 +0000 Subject: [PATCH 14/20] Add Python 3.14 to workflow matrix --- .github/workflows/python-package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 4a98a920..aea2e548 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -17,7 +17,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - python-version: [3.8, 3.9, "3.10", 3.11, 3.12, 3.13] #, pypy3] + python-version: [3.8, 3.9, "3.10", 3.11, 3.12, 3.13, 3.14] #, pypy3] steps: - uses: actions/checkout@v2 From 2a3cafd3bddbdf0ebb313fe3bdeff4beae69eaef Mon Sep 17 00:00:00 2001 From: byteface Date: Sat, 17 Jan 2026 22:43:47 +0000 Subject: [PATCH 15/20] Update package versions in requirements.txt --- requirements.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/requirements.txt b/requirements.txt index 543eb3c9..d7db877f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ -elementpath~=4.8.0 -python-dateutil==2.9.0.post0 -requests~=2.32.3 -urllib3~=2.4.0 -html5lib~=1.1 -cssselect~=1.3.0 +elementpath>=4.8,<5 +python-dateutil>=2.9,<3 +requests>=2.32,<3 +urllib3>=2.4,<3 +html5lib>=1.1,<2 +cssselect>=1.3,<2 From d1232163a5f4e74978bd2615a36ed9a58c8910af Mon Sep 17 00:00:00 2001 From: byteface Date: Sat, 17 Jan 2026 22:50:00 +0000 Subject: [PATCH 16/20] Enhance .gitignore with new entries Updated .gitignore to include additional OS, editor, and environment files. --- .gitignore | 71 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 64 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 5437263b..137b1355 100644 --- a/.gitignore +++ b/.gitignore @@ -1,31 +1,88 @@ -# macOS +# OS .DS_Store .Trashes +Thumbs.db +ehthumbs.db +Desktop.ini -# VSCode -.vscode +# Editors / IDEs +.vscode/ +.idea/ +*.sublime-workspace +*.sublime-project # Python *.py[cod] +*.pyo +*.pyd __pycache__/ -*.so +*.pyc +*.pyd .Python +pip-selfcheck.json + +# Virtual environments env/ venv/ ENV/ env.bak/ venv.bak/ -*.pyc +.venv/ winvenv/ -# Distribution / packaging +# Packaging / distribution build/ dist/ +*.egg +*.egg-info/ +.domonic-egg-info/ # keep original name pattern if needed domonic.egg-info/ +.eggs/ +pip-wheel-metadata/ +wheels/ +*.whl # Sphinx documentation docs/_build/ +build/docs/ -# Coverage reports +# Coverage and test outputs .coverage .coverage.* +htmlcov/ +.pytest_cache/ +nosetests.xml +coverage.xml +*.cover + +# Type checkers / caches +.mypy_cache/ +.pytype/ +.pyre/ +.cache/ + +# C extensions / compiled artifacts +*.so +*.dylib +*.dll + +# Jupyter notebooks +.ipynb_checkpoints + +# Environment files / secrets +.env +.env.* +local.settings.json + +# Logs and runtime files +*.log +*.tmp +*.pid + +# Misc +*.pot +*.mo + +Pipfile.lock +poetry.lock +.cache/pypoetry/ From 67dd983a1cab9ea05de7e17806c439dabaf971ff Mon Sep 17 00:00:00 2001 From: byteface Date: Sat, 17 Jan 2026 22:50:35 +0000 Subject: [PATCH 17/20] Remove original name pattern for domonic-egg-info --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 137b1355..de7c4376 100644 --- a/.gitignore +++ b/.gitignore @@ -35,7 +35,7 @@ build/ dist/ *.egg *.egg-info/ -.domonic-egg-info/ # keep original name pattern if needed +.domonic-egg-info/ domonic.egg-info/ .eggs/ pip-wheel-metadata/ From 38d98f86f1c71da9d4a3ce6f240d5bdfc8bb93bc Mon Sep 17 00:00:00 2001 From: byteface Date: Sat, 17 Jan 2026 23:00:00 +0000 Subject: [PATCH 18/20] Update setup.py --- setup.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/setup.py b/setup.py index e9a3ee6d..b59a5fa7 100644 --- a/setup.py +++ b/setup.py @@ -68,13 +68,12 @@ def get_requirements(filename: str = "requirements.txt"): "Programming Language :: Python :: 3", "Programming Language :: JavaScript", "Programming Language :: Python", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Development Status :: 4 - Beta", "Environment :: Web Environment", "Intended Audience :: Developers", From 5bb670ba1d8ef710afd83c96c1b6aee96c3a3ac4 Mon Sep 17 00:00:00 2001 From: byteface Date: Sat, 17 Jan 2026 23:00:34 +0000 Subject: [PATCH 19/20] Update python-package.yml --- .github/workflows/python-package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index aea2e548..eef9624c 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -17,7 +17,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - python-version: [3.8, 3.9, "3.10", 3.11, 3.12, 3.13, 3.14] #, pypy3] + python-version: [3.9, "3.10", 3.11, 3.12, 3.13, 3.14] #, pypy3] steps: - uses: actions/checkout@v2 From 249bc583965aa27e9d20c9a36687dca77d1cce61 Mon Sep 17 00:00:00 2001 From: byteface Date: Sat, 17 Jan 2026 23:02:23 +0000 Subject: [PATCH 20/20] Delete archive directory --- archive/bs5_test_carousel.html | 15 -- archive/bs5_test_checkout.html | 15 -- archive/bs5_test_dashboard.html | 15 -- archive/domonic.jpg | Bin 182762 -> 0 bytes archive/poc.py | 68 -------- archive/poc1.py | 278 -------------------------------- archive/project.sh | 55 ------- archive/test.py | 179 -------------------- 8 files changed, 625 deletions(-) delete mode 100644 archive/bs5_test_carousel.html delete mode 100644 archive/bs5_test_checkout.html delete mode 100644 archive/bs5_test_dashboard.html delete mode 100644 archive/domonic.jpg delete mode 100644 archive/poc.py delete mode 100644 archive/poc1.py delete mode 100644 archive/project.sh delete mode 100644 archive/test.py diff --git a/archive/bs5_test_carousel.html b/archive/bs5_test_carousel.html deleted file mode 100644 index b23bd94f..00000000 --- a/archive/bs5_test_carousel.html +++ /dev/null @@ -1,15 +0,0 @@ -Carousel Template Β· Bootstrap
Carousel
  • Example headline.

    Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

    Sign up today

    Another example headline.

    Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

    Learn more

    One more for good measure.

    Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

    Browse gallery

    PreviousNext140x140

    Heading

    Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna.

    View details »

    140x140

    Heading

    Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh.

    View details »

    140x140

    Heading

    Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.

    View details »


    First featurette heading.It’ll blow your mind.

    Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.

    500x500

    Oh yeah, it’s that good.See for yourself.

    Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.

    500x500

    Checkmate.And lastly, this one.

    Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.

    500x500

    Back to top

    © 2017-2020 Company, Inc. ·Privacy·Terms

    \ No newline at end of file diff --git a/archive/bs5_test_checkout.html b/archive/bs5_test_checkout.html deleted file mode 100644 index d51e2d0e..00000000 --- a/archive/bs5_test_checkout.html +++ /dev/null @@ -1,15 +0,0 @@ -Checkout example Β· Bootstrap

    Checkout form

    Below is an example form built entirely with Bootstrap’s form controls. Each required form group has a validation state that can be triggered by attempting to submit the form without completing it.

    Your cart3
    Product name
    Brief description
    $12
    Second product
    Brief description
    $8
    Third item
    Brief description
    $5
    Promo code
    EXAMPLECODEβˆ’$5Total (USD)$20

    Billing address

    Valid first name is required.
    Valid last name is required.
    @
    Your username is required.
    Please enter a valid email address for shipping updates.
    Please enter your shipping address.
    Please select a valid country.
    Please provide a valid state.
    Zip code required.


    Payment

    Full name as displayed on card
    Name on card is required
    Credit card number is required
    Expiration date required
    Security code required

    © 2020 Company Name

  • Privacy
  • Terms
  • Support
  • \ No newline at end of file diff --git a/archive/bs5_test_dashboard.html b/archive/bs5_test_dashboard.html deleted file mode 100644 index 0e4d31ca..00000000 --- a/archive/bs5_test_dashboard.html +++ /dev/null @@ -1,15 +0,0 @@ -Dashboard Template Β· BootstrapCompany nameSaved reports

    Dashboard

    Section title

    #HeaderHeaderHeaderHeader1, 001Loremipsumdolorsit1, 002ametconsecteturadipiscingelit1, 003IntegernecodioPraesent1, 003liberoSedcursusante1, 004dapibusdiamSednisi1, 005Nullaquissemat1, 006nibhelementumimperdietDuis1, 007sagittisipsumPraesentmauris1, 008Fuscenectellussed1, 009auguesemperportaMauris1, 010massaVestibulumlaciniaarcu1, 011egetnullaClassaptent1, 012tacitisociosquadlitora1, 013torquentperconubianostra1, 014perinceptoshimenaeosCurabitur1, 015sodalesligula in libero \ No newline at end of file diff --git a/archive/domonic.jpg b/archive/domonic.jpg deleted file mode 100644 index 62d29303c09454d204d655dc5794a76913f9fde8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182762 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⁡jkbSsW-Rf6nu`f)LvhJ6dpi5x26P71pyZU$n?H` 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%0A6lqd~`1VF2JXb4*jUL%L`~FUnO}faZ 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

    kf!;V1mpsOI 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 diff --git a/archive/poc.py b/archive/poc.py deleted file mode 100644 index dacee1af..00000000 --- a/archive/poc.py +++ /dev/null @@ -1,68 +0,0 @@ -def render(inp, outp=""): - print(inp) - return str(inp) - - -class tag: - def __init__(self, *args, **kwargs): - self.content = "".join([each.__str__() for each in args]) - self.attributes = "".join([''' %s="%s"''' % (key.split("_")[1], value) for key, value in kwargs.items()]) - - # def __enter__(self): - # return self - - # def __exit__(self, type, value, tb): - # pass - - def __str__(self): - return f"<{self.name}{self.attributes}>{self.content}" - - -html = type("html", (tag,), {"name": "html"}) -body = type("body", (tag,), {"name": "body"}) -head = type("head", (tag,), {"name": "head"}) -script = type("script", (tag,), {"name": "script"}) -style = type("style", (tag,), {"name": "style"}) -h1 = type("h1", (tag,), {"name": "h1"}) -h2 = type("h2", (tag,), {"name": "h2"}) -h3 = type("h3", (tag,), {"name": "h3"}) -h4 = type("h4", (tag,), {"name": "h4"}) -h5 = type("h5", (tag,), {"name": "h5"}) -h6 = type("h6", (tag,), {"name": "h6"}) -p = type("p", (tag,), {"name": "p"}) -i = type("i", (tag,), {"name": "i"}) -b = type("b", (tag,), {"name": "b"}) -a = type("a", (tag,), {"name": "a"}) -ul = type("ul", (tag,), {"name": "ul"}) -ol = type("ol", (tag,), {"name": "ol"}) -li = type("li", (tag,), {"name": "li"}) -hr = type("hr", (tag,), {"name": "hr"}) -img = type("img", (tag,), {"name": "img"}) -div = type("div", (tag,), {"name": "div"}) -span = type("span", (tag,), {"name": "span"}) -strong = type("strong", (tag,), {"name": "strong"}) -blockquote = type("blockquote", (tag,), {"name": "blockquote"}) -table = type("table", (tag,), {"name": "table"}) -tr = type("tr", (tag,), {"name": "tr"}) -td = type("td", (tag,), {"name": "td"}) -title = type("title", (tag,), {"name": "title"}) -meta = type("meta", (tag,), {"name": "meta"}) - - -output = render( - html( - head( - style(), - script(), - ), - body( - div("hello world"), - a("this is a link", _href="http://www.somesite.com", _style="font-size:10px;"), - ol("".join([f"{li()}" for thing in range(5)])), - h1("test", _class="test"), - ), - ) -) - -# from html5print import HTMLBeautifier -# print(HTMLBeautifier.beautify(output, 4)) diff --git a/archive/poc1.py b/archive/poc1.py deleted file mode 100644 index f1210c72..00000000 --- a/archive/poc1.py +++ /dev/null @@ -1,278 +0,0 @@ -""" -from jizz import * - -render( html( head( script(), style() ), body(f"hello world") ) ) - -TODO - use args/kwargs for -TODO - when done. post here? .. https://stackoverflow.com/questions/6748559/generating-html-documents-in-python -TODO - throw warnings if wrong tags are used.. i.e if someone puts not li element in a ul - -TODO - consider a setting to auto render html tags.. 'asumptions=on' or something -TODO - formatting 'on' for newlines -TODO - mutlitple classnames. i.e. h1 = H1 - -""" - -# TODO - a base class to capture attributes that others can call super on. -# TODO - maybe different types of base. i.e. list containers could extend arrays -# class tag: -# def __init__(self, content='' ): -# self.content = content - -# def __str__(self): -# return str(f"{self.content}") - -# class tag: -# def __init__(self, content=''): -# self.content = content -# def __str__(self): -# return str(f"<{self.tag()}>{self.content}") -# def tag(self): -# return self.__str__().split('<')[1].split('>')[0] - - -class html: # (tag): - def __init__(self, content="", *args, **kwargs): - self.content = content # + ''.join(args) - - def __str__(self): - return str(f"{self.content}") - - -class head: - def __init__(self, content="", *args, **kwargs): - self.content = content # + ''.join([str(each.__str__()) for each in args]) - - def __str__(self): - return f"{self.content}" - - -class body: - def __init__(self, content="", *args, **kwargs): - self.content = content - self.args = args - - def __str__(self): - return f"{self.content}{''.join([each.__str__() for each in self.args])}" - - -class script: - def __init__(self, content="", *args, **kwargs): - self.content = content - - def __str__(self): - return f"" - - -class style: - def __init__(self, content="", *args, **kwargs): - self.content = content - - def __str__(self): - return f"" - - -class img: - def __init__(self, src="", *args, **kwargs): - self.content = content - - def __str__(self): - return f"" - - -class div: - def __init__(self, content="", *args, **kwargs): - self.content = content - self.args = args - - def __str__(self): - # return f"

    {self.content}
    " - return f"
    {self.content}{''.join([each.__str__() for each in self.args])}
    " - - -class a: - def __init__(self, content="", attr=[], *args, **kwargs): - self.content = content - self.args = args - self.kwargs = kwargs - self.attr = attr - - def __str__(self): - # return f"{self.content}" - return f"{self.content}" - - -class footer: - def __init__(self, content="", *args, **kwargs): - self.content = content - - def __str__(self): - return f"
    {self.content}
    " - - -class header: - def __init__(self, content="", *args, **kwargs): - self.content = content - - def __str__(self): - return f"
    {self.content}
    " - - -class ul: - def __init__(self, content="", *args, **kwargs): - self.content = content - - def __str__(self): - return f"
      {self.content}
    " - - -class li: - def __init__(self, content="", *args, **kwargs): - self.content = content - - def __str__(self): - return f"
    {self.content}
    " - - -class p: - def __init__(self, content="", *args, **kwargs): - self.content = content - - def __str__(self): - return f"

    {self.content}

    " - - -class H1: - def __init__(self, content="", *args, **kwargs): - self.content = content - - def __str__(self): - return f"

    {self.content}

    " - - -# TODO- -def render(inp, outp=""): - print(inp) - return inp - - -# render( html( head( script(), style() ), body(f"hello world") ) ) - -# render( html() ) -# render( div("hello world") ) -# render( html(body(div("hello world"))) ) - -# render( -# html( -# body( -# div("hello world"), -# div("hello world"), -# a( "this is a link", attr={"href":"http://www.fuckoff.com", "waf":"cheese"}) -# ))) - - -class tag: - def __init__(self, *args, **kwargs): - self.args = args - - def __str__(self): - return f"<{self.name}>{''.join([each.__str__() for each in self.args])}" - - -# obj = type('obj', (object,), {'propertyName' : 'propertyValue'}) -# type(obj) -span = type("span", (tag,), {"name": "span"}) -ol = type("ol", (tag,), {"name": "ol"}) - - -def get_tag(name=""): - return type(f"{name}", (tag,), {"name": f"{name}"}) - - -anything = get_tag("anything") - - -# render( -# html( -# body( -# div("hello world"), -# div("hello world"), -# a( "this is a link", href="http://www.fuckoff.com", style="font-size:10px;"), -# span("fuck"), -# ol(), -# anything() -# ))) - - -# render( -# html( -# body( -# div("hello world"), -# div("hello world"), -# a( "this is a link", href="http://www.fuckoff.com", style="font-size:10px;"), -# span("fuck"), -# ol(), -# [f'{anything()}' for thing in range(10)] -# ))) - - -# divs = [div("hello world"),div("hello world")] - -# render( -# html( -# body(divs))) - - -# TODO- -def render(inp, outp=""): - print(inp) - return inp - - -class tag: - def __init__(self, *args, **kwargs): - self.args = args - - def __str__(self): - return f"<{self.name} {[ '''%s=%s''' % (key, value) for key, value in self.kwargs.items() ]}> \ - {''.join([each.__str__() for each in self.args])}" - - -html = type("html", (tag,), {"name": "html"}) -body = type("body", (tag,), {"name": "body"}) -head = type("head", (tag,), {"name": "head"}) -script = type("script", (tag,), {"name": "script"}) -style = type("style", (tag,), {"name": "style"}) -h1 = type("h1", (tag,), {"name": "h1"}) -h2 = type("h2", (tag,), {"name": "h2"}) -h3 = type("h3", (tag,), {"name": "h3"}) -h4 = type("h4", (tag,), {"name": "h4"}) -h5 = type("h5", (tag,), {"name": "h5"}) -h6 = type("h6", (tag,), {"name": "h6"}) -p = type("p", (tag,), {"name": "p"}) -i = type("i", (tag,), {"name": "i"}) -b = type("b", (tag,), {"name": "b"}) -a = type("a", (tag,), {"name": "a"}) -ul = type("ul", (tag,), {"name": "ul"}) -ol = type("ol", (tag,), {"name": "ol"}) -li = type("li", (tag,), {"name": "li"}) -blockquote = type("blockquote", (tag,), {"name": "blockquote"}) -hr = type("hr", (tag,), {"name": "hr"}) -img = type("img", (tag,), {"name": "img"}) -div = type("div", (tag,), {"name": "div"}) -span = type("span", (tag,), {"name": "span"}) -strong = type("strong", (tag,), {"name": "strong"}) - - -render( - html( - body( - div("hello world"), - div("hello world"), - a("this is a link", href="http://www.somesite.com", style="font-size:10px;"), - span("hi"), - ol(), - [f"{anything()}" for thing in range(10)], - ) - ) -) diff --git a/archive/project.sh b/archive/project.sh deleted file mode 100644 index 5daa22ff..00000000 --- a/archive/project.sh +++ /dev/null @@ -1,55 +0,0 @@ -function project(){ - - PROJECT_NAME=$1 - - NAME="byteface" - EMAIL="" - GITHUB="byteface" - LICENSE="MIT" - - echo $PROJECT_NAME - mkdir $PROJECT_NAME - cd $PROJECT_NAME - - mkdir static - mkdir static/js - mkdir static/css - mkdir static/img - mkdir static/data - - mkdir archive - - touch app.py - touch README.md - touch LICENSE - touch setup.py - touch TODO - touch index.html - touch MakeFile - touch fab.py - touch sitemap.xml - - git init - touch .gitignore - - touch db.sqlite - - touch static/js/master.js - touch static/css/styles.css - touch static/data/data.json - - python3 -m venv venv - . venv/bin/activate - - pip3 install requests - pip3 install fabric - pip3 install domonic - - pip3 freeze >> requirements.txt - - chmod -R 777 static - open . - -} - -project $1 \ No newline at end of file diff --git a/archive/test.py b/archive/test.py deleted file mode 100644 index 98640910..00000000 --- a/archive/test.py +++ /dev/null @@ -1,179 +0,0 @@ -from domonic.html import * - -# TODO - finish example using every tag - -# mycss = inlcude('static/css/mystyle.css') -# myjs = inlcude('static/js/script.js') - -repo = "http://www.github.com/byteface/domonic" -css = ".titleStyle{color:lime;}" -js = "setTimeout( function(){alert('python is fun!')}, 2000 );" - -output = html( - head( - title("domonic", _id="title"), - link( - _rel="stylesheet", - _type="text/css", - _href="https://cdnjs.cloudflare.com/ajax/libs/milligram/1.3.0/milligram.css", - ), - style(css), - script(js), - ), - body( - header( - a( - img( - _width="149", - _height="149", - _src="https://github.blog/wp-content/uploads/2008/12/forkme_right_white_ffffff.png?resize=149%2C149", - _class="attachment-full size-full", - _alt="Fork me on GitHub", - _style="float:right;", - **{"_data-recalc-dims": "1"}, - ), - _href=repo, - ) - ), - article( - h1("domonic!", _class="titleStyle"), - # h2(":)"),h3(":)"),h4(":)"),h5(":)"),h6(":)"), - div("This webpage was created with ", a("domonic", _href=repo)), - code("python3 -m pip install domonic"), - # code("pip3 install domonic"), - a(" go to the repo >>", _href=repo, _style="font-size:15px;"), - br(), - br(), - nav("Nav:", a("Go back to here again", _href=""), "|", a("repo", _href=repo)), - br(), - img(_src="http://placekitten.com/400/400", _alt="some text", _title="some text"), - br(), - ol("".join([f'{li("some item")}' for thing in range(5)])), - table( - tr(th("A"), th("B"), th("C")), - tr(td("test"), td("test"), td("test")), - tr(td("test"), td("test"), td("test")), - _style="width:100%", - ), - span("spaf", _style="color:fuchsia"), - ), - section( - figure( - img(_src="http://placekitten.com/200/200", _alt="some text", _title="some text"), - br(), - ), - figcaption("a cat"), - br(), - dl(dt("coffee"), dd("hot drink"), dt("milk"), dd("cold drink")), - form( - label("this is a label:", _for="some_input"), - br(), - input(_id="some_input", _name="some_input", _type="text", _placeholder="cool"), - br(), - input(" yer or no?", _type="radio"), - br(), - input(_value="send", _type="button"), - comment("This webpage was created with 'domonic'"), - ), - ), - iframe("test", _data_test="test", _src="https://www.google.com"), - noscript("Your browser does not support javascript"), - footer( - address("Where: Earth"), - select(option("test1", _value="test1"), option("test2", _value="test2"), option("test3", _value="test3")), - button("cool button"), - sup("sup!"), - sub("sub!"), - textarea("test"), - details(summary(small("domonic 2020."))), - ), - p(var("a"), "(", var("b"), "+", var("c"), ")=", var("ab"), "+", var("ac")), - tbody("test"), - thead("test"), - tfoot("test"), - aside("test"), - hgroup("test"), - pre("test"), - em("test"), - s("test"), - cite("test"), - q("test"), - dfn("test"), - abbr("test"), - var("test"), - samp("test"), - kbd("test"), - i("test"), - b("test"), - u("test"), - mark("test"), - ruby("test"), - rt("test"), - rp("test"), - bdi("test"), - bdo("test"), - ins("test"), - video("test"), - audio("test"), - canvas("test"), - caption("test"), - colgroup("test"), - fieldset("test"), - legend("test"), - datalist("test"), - optgroup("test"), - option("test"), - output("test"), # shite ----- - progress("test"), - meter("test"), - menu("test"), - font("test", **{"_data-test": "test"}), - # map("test"), - # del("test"), - # object("test"), - # time("test"), - ), - _lang="", -) - - -# def dom_console_log_test(): -# mydom = dom.document(output) -# mydom.console.log("test") - - -# print( "output.baseURI:", output.baseURI ) -# print( "output.body:", output.body ) -# print( "output.forms:", output.forms ) -# print( "output.images:", output.images ) -# print( "output.scripts:", output.scripts ) -# print( "output.title:", output.title ) -print("output._get_tags:", output._get_tags("li")) -print("output._get_tags:", output._get_tags("input")) -print("output._get_tags:", output._get_tags("div")) -print("output._get_tags:", output._get_tags("style")) - - -# TODO - add some methods to do cool stuff - -# print(output[0]) - -# for each in output: -# print(each) - -# print(output.content) -# print(output.attributes) - -# print(output.args) -# print(output.kwargs) - -# print(output.args[1].args[1].args[0]) - -# print(output.content[1].content[1].content[0]) -# print(output.content[1].content[2].attributes[0]) - -print(render(output)) - -# TODO - prettify by using newlines in returned content to save installing this? -# from html5print import HTMLBeautifier -# render(HTMLBeautifier.beautify(render(output), 4), 'index.html')