From f83faaa6ce61ea886e9c1d67e4bc9c2a09725bf7 Mon Sep 17 00:00:00 2001 From: Ozbolt Menegatti Date: Mon, 11 Nov 2019 23:01:07 +0100 Subject: [PATCH] WIP: browser and window now cleanly implemented via proxy --- src/browser/__init__.py | 7 ++++--- src/browser/internal.py | 16 ++++++++++------ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/browser/__init__.py b/src/browser/__init__.py index 1347603..c286cf9 100644 --- a/src/browser/__init__.py +++ b/src/browser/__init__.py @@ -1,4 +1,5 @@ -from browser.internal import Document, Window # type: ignore +import browser.internal -document = Document() -window = Window() \ No newline at end of file + +document = browser.internal._document +window = browser.internal._window diff --git a/src/browser/internal.py b/src/browser/internal.py index 3f41733..68303c5 100644 --- a/src/browser/internal.py +++ b/src/browser/internal.py @@ -1,15 +1,19 @@ # type: ignore -class Document: +class Proxy: + def __init__(self, proxied): + self.proxied = proxied + def __getattr__(self, attr): - return lambda x: document[attr](x) + if callable(self.proxied[attr]): + return lambda *x: self.proxied[attr](*x) + else: + return self.proxied[attr] -class Window: - def __getattr__(self, attr): - return lambda x: window[attr](x) - +_document = Proxy(document) +_window = Proxy(window)