diff options
author | bptato <nincsnevem662@gmail.com> | 2024-05-12 12:42:15 +0200 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2024-05-12 12:45:49 +0200 |
commit | 53079a080291889428071700f8c0919f84132534 (patch) | |
tree | 95cfcde7ed6a043ac3d0f38e7ad789ee074fb19d /src/html | |
parent | 911ec9a85fc7b773fcea4b005d926702020a551f (diff) | |
download | chawan-53079a080291889428071700f8c0919f84132534.tar.gz |
js: allow var instead of ptr
Diffstat (limited to 'src/html')
-rw-r--r-- | src/html/dom.nim | 40 | ||||
-rw-r--r-- | src/html/env.nim | 66 |
2 files changed, 53 insertions, 53 deletions
diff --git a/src/html/dom.nim b/src/html/dom.nim index 3e93de79..2293db90 100644 --- a/src/html/dom.nim +++ b/src/html/dom.nim @@ -1307,26 +1307,26 @@ func validateAttributeQName(name: string): Err[DOMException] = return errDOMException("Invalid character in attribute name", "InvalidCharacterError") -func hasprop(map: ptr DOMStringMap; name: string): bool {.jshasprop.} = - let name = map[].target.document.toAtom("data-" & name) - return map[].target.attrb(name) +func hasprop(map: var DOMStringMap; name: string): bool {.jshasprop.} = + let name = map.target.document.toAtom("data-" & name) + return map.target.attrb(name) -proc delete(map: ptr DOMStringMap; name: string): bool {.jsfunc.} = - let name = map[].target.document.toAtom("data-" & name.camelToKebabCase()) - let i = map[].target.findAttr(name) +proc delete(map: var DOMStringMap; name: string): bool {.jsfunc.} = + let name = map.target.document.toAtom("data-" & name.camelToKebabCase()) + let i = map.target.findAttr(name) if i != -1: - map[].target.delAttr(i) + map.target.delAttr(i) return i != -1 -func getter(map: ptr DOMStringMap; name: string): Option[string] +func getter(map: var DOMStringMap; name: string): Option[string] {.jsgetprop.} = - let name = map[].target.document.toAtom("data-" & name.camelToKebabCase()) - let i = map[].target.findAttr(name) + let name = map.target.document.toAtom("data-" & name.camelToKebabCase()) + let i = map.target.findAttr(name) if i != -1: - return some(map[].target.attrs[i].value) + return some(map.target.attrs[i].value) return none(string) -proc setter(map: ptr DOMStringMap; name, value: string): Err[DOMException] +proc setter(map: var DOMStringMap; name, value: string): Err[DOMException] {.jssetprop.} = var washy = false for c in name: @@ -1337,15 +1337,15 @@ proc setter(map: ptr DOMStringMap; name, value: string): Err[DOMException] "InvalidCharacterError") let name = "data-" & name.camelToKebabCase() ?name.validateAttributeName() - let aname = map[].target.document.toAtom(name) + let aname = map.target.document.toAtom(name) map.target.attr(aname, value) return ok() -func names(ctx: JSContext; map: ptr DOMStringMap): JSPropertyEnumList +func names(ctx: JSContext; map: var DOMStringMap): JSPropertyEnumList {.jspropnames.} = - var list = newJSPropertyEnumList(ctx, uint32(map[].target.attrs.len)) - for attr in map[].target.attrs: - let k = map[].target.document.toStr(attr.localName) + var list = newJSPropertyEnumList(ctx, uint32(map.target.attrs.len)) + for attr in map.target.attrs: + let k = map.target.document.toStr(attr.localName) if k.startsWith("data-") and AsciiUpperAlpha notin k: list.add(k["data-".len .. ^1].kebabToCamelCase()) return list @@ -3845,7 +3845,7 @@ proc createElement(document: Document; localName: string): proc createDocumentFragment(document: Document): DocumentFragment {.jsfunc.} = return newDocumentFragment(document) -proc createDocumentType(implementation: ptr DOMImplementation; qualifiedName, +proc createDocumentType(implementation: var DOMImplementation; qualifiedName, publicId, systemId: string): DOMResult[DocumentType] {.jsfunc.} = if not qualifiedName.matchQNameProduction(): return errDOMException("Invalid character in document type name", @@ -3853,7 +3853,7 @@ proc createDocumentType(implementation: ptr DOMImplementation; qualifiedName, let document = implementation.document return ok(document.newDocumentType(qualifiedName, publicId, systemId)) -proc createHTMLDocument(ctx: JSContext; implementation: ptr DOMImplementation; +proc createHTMLDocument(ctx: JSContext; implementation: var DOMImplementation; title = none(string)): Document {.jsfunc.} = let doc = newDocument(ctx) doc.contentType = "text/html" @@ -3870,7 +3870,7 @@ proc createHTMLDocument(ctx: JSContext; implementation: ptr DOMImplementation; #TODO set origin return doc -proc hasFeature(implementation: ptr DOMImplementation): bool {.jsfunc.} = +proc hasFeature(implementation: var DOMImplementation): bool {.jsfunc.} = return true proc createCDATASection(document: Document; data: string): diff --git a/src/html/env.nim b/src/html/env.nim index ef4b4658..dc63f790 100644 --- a/src/html/env.nim +++ b/src/html/env.nim @@ -29,27 +29,27 @@ import types/url import types/winattrs # NavigatorID -proc appCodeName(navigator: ptr Navigator): string {.jsfget.} = "Mozilla" -proc appName(navigator: ptr Navigator): string {.jsfget.} = "Netscape" -proc appVersion(navigator: ptr Navigator): string {.jsfget.} = "5.0 (Windows)" -proc platform(navigator: ptr Navigator): string {.jsfget.} = "Win32" -proc product(navigator: ptr Navigator): string {.jsfget.} = "Gecko" -proc productSub(navigator: ptr Navigator): string {.jsfget.} = "20100101" -proc userAgent(navigator: ptr Navigator): string {.jsfget.} = +proc appCodeName(navigator: var Navigator): string {.jsfget.} = "Mozilla" +proc appName(navigator: var Navigator): string {.jsfget.} = "Netscape" +proc appVersion(navigator: var Navigator): string {.jsfget.} = "5.0 (Windows)" +proc platform(navigator: var Navigator): string {.jsfget.} = "Win32" +proc product(navigator: var Navigator): string {.jsfget.} = "Gecko" +proc productSub(navigator: var Navigator): string {.jsfget.} = "20100101" +proc userAgent(navigator: var Navigator): string {.jsfget.} = #TODO TODO TODO this should be configurable "chawan" -proc vendor(navigator: ptr Navigator): string {.jsfget.} = "" -proc vendorSub(navigator: ptr Navigator): string {.jsfget.} = "" -proc taintEnabled(navigator: ptr Navigator): bool {.jsfget.} = false -proc oscpu(navigator: ptr Navigator): string {.jsfget.} = "Windows NT 10.0" +proc vendor(navigator: var Navigator): string {.jsfget.} = "" +proc vendorSub(navigator: var Navigator): string {.jsfget.} = "" +proc taintEnabled(navigator: var Navigator): bool {.jsfget.} = false +proc oscpu(navigator: var Navigator): string {.jsfget.} = "Windows NT 10.0" # NavigatorLanguage -proc language(navigator: ptr Navigator): string {.jsfget.} = "en-US" -proc languages(navigator: ptr Navigator): seq[string] {.jsfget.} = +proc language(navigator: var Navigator): string {.jsfget.} = "en-US" +proc languages(navigator: var Navigator): seq[string] {.jsfget.} = @["en-US"] #TODO frozen array? # NavigatorOnline -proc onLine(navigator: ptr Navigator): bool {.jsfget.} = +proc onLine(navigator: var Navigator): bool {.jsfget.} = true # at the very least, the terminal is on-line :) #TODO NavigatorContentUtils @@ -57,39 +57,39 @@ proc onLine(navigator: ptr Navigator): bool {.jsfget.} = # NavigatorCookies # "this website needs cookies to be enabled to function correctly" # It's probably better to lie here. -proc cookieEnabled(navigator: ptr Navigator): bool {.jsfget.} = true +proc cookieEnabled(navigator: var Navigator): bool {.jsfget.} = true # NavigatorPlugins -proc pdfViewerEnabled(navigator: ptr Navigator): bool {.jsfget.} = false -proc javaEnabled(navigator: ptr Navigator): bool {.jsfunc.} = false -proc namedItem(pluginArray: ptr PluginArray): string {.jsfunc.} = "" -proc namedItem(mimeTypeArray: ptr MimeTypeArray): string {.jsfunc.} = "" -proc item(pluginArray: ptr PluginArray): JSValue {.jsfunc.} = JS_NULL -proc length(pluginArray: ptr PluginArray): uint32 {.jsfget.} = 0 -proc item(mimeTypeArray: ptr MimeTypeArray): JSValue {.jsfunc.} = JS_NULL -proc length(mimeTypeArray: ptr MimeTypeArray): uint32 {.jsfget.} = 0 -proc getter(pluginArray: ptr PluginArray; i: uint32): Option[JSValue] +proc pdfViewerEnabled(navigator: var Navigator): bool {.jsfget.} = false +proc javaEnabled(navigator: var Navigator): bool {.jsfunc.} = false +proc namedItem(pluginArray: var PluginArray): string {.jsfunc.} = "" +proc namedItem(mimeTypeArray: var MimeTypeArray): string {.jsfunc.} = "" +proc item(pluginArray: var PluginArray): JSValue {.jsfunc.} = JS_NULL +proc length(pluginArray: var PluginArray): uint32 {.jsfget.} = 0 +proc item(mimeTypeArray: var MimeTypeArray): JSValue {.jsfunc.} = JS_NULL +proc length(mimeTypeArray: var MimeTypeArray): uint32 {.jsfget.} = 0 +proc getter(pluginArray: var PluginArray; i: uint32): Option[JSValue] {.jsgetprop.} = discard -proc getter(mimeTypeArray: ptr MimeTypeArray; i: uint32): Option[JSValue] +proc getter(mimeTypeArray: var MimeTypeArray; i: uint32): Option[JSValue] {.jsgetprop.} = discard # Screen -proc availWidth(screen: ptr Screen): int64 {.jsfget.} = +proc availWidth(screen: var Screen): int64 {.jsfget.} = #TODO this is a fingerprinting vector, but users should be able to allow it # selectively # for now just return something standard-ish 80 * 9 -proc availHeight(screen: ptr Screen): int64 {.jsfget.} = +proc availHeight(screen: var Screen): int64 {.jsfget.} = #TODO see above 24 * 18 -proc width(screen: ptr Screen): int64 {.jsfget.} = +proc width(screen: var Screen): int64 {.jsfget.} = screen.availWidth -proc height(screen: ptr Screen): int64 {.jsfget.} = +proc height(screen: var Screen): int64 {.jsfget.} = screen.availHeight -proc colorDepth(screen: ptr Screen): int64 {.jsfget.} = 24 -proc pixelDepth(screen: ptr Screen): int64 {.jsfget.} = screen.colorDepth +proc colorDepth(screen: var Screen): int64 {.jsfget.} = 24 +proc pixelDepth(screen: var Screen): int64 {.jsfget.} = screen.colorDepth proc addNavigatorModule(ctx: JSContext) = ctx.registerType(Navigator) @@ -122,9 +122,9 @@ proc screenY(window: Window): int64 {.jsfget.} = 0 proc screenLeft(window: Window): int64 {.jsfget.} = 0 proc screenTop(window: Window): int64 {.jsfget.} = 0 proc outerWidth(window: Window): int64 {.jsfget.} = - (addr window.screen).availWidth + window.screen.availWidth proc outerHeight(window: Window): int64 {.jsfget.} = - (addr window.screen).availHeight + window.screen.availHeight proc devicePixelRatio(window: Window): float64 {.jsfget.} = 1 proc setLocation(window: Window; s: string): Err[JSError] |