about summary refs log tree commit diff stats
path: root/src/html
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2024-05-12 12:42:15 +0200
committerbptato <nincsnevem662@gmail.com>2024-05-12 12:45:49 +0200
commit53079a080291889428071700f8c0919f84132534 (patch)
tree95cfcde7ed6a043ac3d0f38e7ad789ee074fb19d /src/html
parent911ec9a85fc7b773fcea4b005d926702020a551f (diff)
downloadchawan-53079a080291889428071700f8c0919f84132534.tar.gz
js: allow var instead of ptr
Diffstat (limited to 'src/html')
-rw-r--r--src/html/dom.nim40
-rw-r--r--src/html/env.nim66
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]