chore: update docs to cover python specifics (#4960)

This commit is contained in:
Pavel Feldman 2021-01-10 18:18:35 -08:00 committed by GitHub
parent e990a805a8
commit e67d89747a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 170 additions and 100 deletions

View File

@ -58,8 +58,8 @@ await browserContext.addCookies([cookieObject1, cookieObject2]);
### param: BrowserContext.addCookies.cookies ### param: BrowserContext.addCookies.cookies
- `cookies` <[Array]<[Object]>> - `cookies` <[Array]<[Object]>>
- `name` <[string]> **required** - `name` <[string]>
- `value` <[string]> **required** - `value` <[string]>
- `url` <[string]> either url or domain / path are required. Optional. - `url` <[string]> either url or domain / path are required. Optional.
- `domain` <[string]> either url or domain / path are required Optional. - `domain` <[string]> either url or domain / path are required Optional.
- `path` <[string]> either url or domain / path are required Optional. - `path` <[string]> either url or domain / path are required Optional.
@ -399,10 +399,9 @@ await browserContext.setGeolocation({latitude: 59.95, longitude: 30.31667});
pages to read its geolocation. pages to read its geolocation.
### param: BrowserContext.setGeolocation.geolocation ### param: BrowserContext.setGeolocation.geolocation
* langs: js
- `geolocation` <[null]|[Object]> - `geolocation` <[null]|[Object]>
- `latitude` <[float]> Latitude between -90 and 90. **required** - `latitude` <[float]> Latitude between -90 and 90.
- `longitude` <[float]> Longitude between -180 and 180. **required** - `longitude` <[float]> Longitude between -180 and 180.
- `accuracy` <[float]> Non-negative accuracy value. Defaults to `0`. - `accuracy` <[float]> Non-negative accuracy value. Defaults to `0`.
## async method: BrowserContext.setHTTPCredentials ## async method: BrowserContext.setHTTPCredentials
@ -412,8 +411,8 @@ Create a new browser context instead.
### param: BrowserContext.setHTTPCredentials.httpCredentials ### param: BrowserContext.setHTTPCredentials.httpCredentials
- `httpCredentials` <[null]|[Object]> - `httpCredentials` <[null]|[Object]>
- `username` <[string]> **required** - `username` <[string]>
- `password` <[string]> **required** - `password` <[string]>
## async method: BrowserContext.setOffline ## async method: BrowserContext.setOffline

View File

@ -23,7 +23,7 @@ This methods attaches Playwright to an existing browser instance.
### param: BrowserType.connect.params ### param: BrowserType.connect.params
- `params` <[Object]> - `params` <[Object]>
- `wsEndpoint` <[string]> A browser websocket endpoint to connect to. **required** - `wsEndpoint` <[string]> A browser websocket endpoint to connect to.
- `slowMo` <[float]> Slows down Playwright operations by the specified amount of milliseconds. Useful so that you can see what is going on. Defaults to 0. - `slowMo` <[float]> Slows down Playwright operations by the specified amount of milliseconds. Useful so that you can see what is going on. Defaults to 0.
- `logger` <[Logger]> Logger sink for Playwright logging. Optional. - `logger` <[Logger]> Logger sink for Playwright logging. Optional.
- `timeout` <[float]> Maximum time in milliseconds to wait for the connection to be established. Defaults to `30000` (30 seconds). Pass `0` to disable timeout. - `timeout` <[float]> Maximum time in milliseconds to wait for the connection to be established. Defaults to `30000` (30 seconds). Pass `0` to disable timeout.

View File

@ -1,6 +1,6 @@
# class: ChromiumBrowser # class: ChromiumBrowser
* extends: [Browser]
* langs: js * langs: js
* extends: [Browser]
Chromium-specific features including Tracing, service worker support, etc. You can use [`method: Chromium-specific features including Tracing, service worker support, etc. You can use [`method:
ChromiumBrowser.startTracing`] and [`method: ChromiumBrowser.stopTracing`] to create a trace file which can be ChromiumBrowser.startTracing`] and [`method: ChromiumBrowser.stopTracing`] to create a trace file which can be

View File

@ -1,4 +1,5 @@
# class: FirefoxBrowser # class: FirefoxBrowser
* langs: js
* extends: [Browser] * extends: [Browser]
Firefox browser instance does not expose Firefox-specific features. Firefox browser instance does not expose Firefox-specific features.

View File

@ -872,6 +872,7 @@ const frame = page.frame({ url: /.*domain.*/ });
``` ```
### param: Page.frame.frameSelector ### param: Page.frame.frameSelector
* langs: js
- `frameSelector` <[string]|[Object]> - `frameSelector` <[string]|[Object]>
- `name` <[string]> Frame name specified in the `iframe`'s `name` attribute. Optional. - `name` <[string]> Frame name specified in the `iframe`'s `name` attribute. Optional.
- `url` <[string]|[RegExp]|[function]\([URL]\):[boolean]> A glob pattern, regex pattern or predicate receiving frame's `url` as a [URL] object. Optional. - `url` <[string]|[RegExp]|[function]\([URL]\):[boolean]> A glob pattern, regex pattern or predicate receiving frame's `url` as a [URL] object. Optional.
@ -1467,8 +1468,8 @@ await page.goto('https://example.com');
### param: Page.setViewportSize.viewportSize ### param: Page.setViewportSize.viewportSize
- `viewportSize` <[Object]> - `viewportSize` <[Object]>
- `width` <[int]> page width in pixels. **required** - `width` <[int]> page width in pixels.
- `height` <[int]> page height in pixels. **required** - `height` <[int]> page height in pixels.
## async method: Page.tap ## async method: Page.tap

View File

@ -15,6 +15,7 @@ If request gets a 'redirect' response, the request is successfully finished with
request is issued to a redirected url. request is issued to a redirected url.
## method: Request.failure ## method: Request.failure
* langs: js
- returns: <[null]|[Object]> - returns: <[null]|[Object]>
- `errorText` <[string]> Human-readable error message, e.g. `'net::ERR_FAILED'`. - `errorText` <[string]> Human-readable error message, e.g. `'net::ERR_FAILED'`.

View File

@ -8,6 +8,7 @@
Returns the buffer with response body. Returns the buffer with response body.
## async method: Response.finished ## async method: Response.finished
* langs: js
- returns: <[null]|[Error]> - returns: <[null]|[Error]>
Waits for this response to finish, returns failure error if request failed. Waits for this response to finish, returns failure error if request failed.

View File

@ -49,6 +49,7 @@ Name that is used in selectors as a prefix, e.g. `{name: 'foo'}` enables `foo=my
contain `[a-zA-Z0-9_]` characters. contain `[a-zA-Z0-9_]` characters.
### param: Selectors.register.script ### param: Selectors.register.script
* langs: js
- `script` <[function]|[string]|[Object]> - `script` <[function]|[string]|[Object]>
- `path` <[path]> Path to the JavaScript file. If `path` is a relative path, then it is resolved relative to the current working directory. Optional. - `path` <[path]> Path to the JavaScript file. If `path` is a relative path, then it is resolved relative to the current working directory. Optional.
- `content` <[string]> Raw script content. Optional. - `content` <[string]> Raw script content. Optional.

View File

@ -1,4 +1,5 @@
# class: WebKitBrowser # class: WebKitBrowser
* langs: js
* extends: [Browser] * extends: [Browser]
WebKit browser instance does not expose WebKit-specific features. WebKit browser instance does not expose WebKit-specific features.

View File

@ -68,9 +68,9 @@ Defaults to `left`.
## input-files ## input-files
- `files` <[path]|[Array]<[path]>|[Object]|[Array]<[Object]>> - `files` <[path]|[Array]<[path]>|[Object]|[Array]<[Object]>>
- `name` <[string]> [File] name **required** - `name` <[string]> [File] name
- `mimeType` <[string]> [File] type **required** - `mimeType` <[string]> [File] type
- `buffer` <[Buffer]> File content **required** - `buffer` <[Buffer]> File content
## input-down-up-delay ## input-down-up-delay
- `delay` <[float]> - `delay` <[float]>
@ -101,8 +101,8 @@ Defaults to `'visible'`. Can be either:
## context-option-storage-state ## context-option-storage-state
- `storageState` <[path]|[Object]> - `storageState` <[path]|[Object]>
- `cookies` <[Array]<[Object]>> Optional cookies to set for context - `cookies` <[Array]<[Object]>> Optional cookies to set for context
- `name` <[string]> **required** - `name` <[string]>
- `value` <[string]> **required** - `value` <[string]>
- `url` <[string]> Optional either url or domain / path are required - `url` <[string]> Optional either url or domain / path are required
- `domain` <[string]> Optional either url or domain / path are required - `domain` <[string]> Optional either url or domain / path are required
- `path` <[string]> Optional either url or domain / path are required - `path` <[string]> Optional either url or domain / path are required
@ -135,12 +135,27 @@ Whether to ignore HTTPS errors during navigation. Defaults to `false`.
Toggles bypassing page's Content-Security-Policy. Toggles bypassing page's Content-Security-Policy.
## context-option-viewport ## context-option-viewport
* langs: js
- `viewport` <[null]|[Object]> - `viewport` <[null]|[Object]>
- `width` <[int]> page width in pixels. - `width` <[int]> page width in pixels.
- `height` <[int]> page height in pixels. - `height` <[int]> page height in pixels.
Sets a consistent viewport for each page. Defaults to an 1280x720 viewport. `null` disables the default viewport. Sets a consistent viewport for each page. Defaults to an 1280x720 viewport. `null` disables the default viewport.
## python-context-option-viewport
* langs: python
- `viewport` <[null]|[Object]>
- `width` <[int]> page width in pixels.
- `height` <[int]> page height in pixels.
Sets a consistent viewport for each page. Defaults to an 1280x720 viewport. `no_viewport` disables the fixed viewport.
## python-context-option-no-viewport
* langs: python
- `noViewport` <[boolean]>
Disables the default viewport.
## context-option-useragent ## context-option-useragent
- `userAgent` <[string]> - `userAgent` <[string]>
@ -233,6 +248,7 @@ Logger sink for Playwright logging.
**DEPRECATED** Use [`option: recordVideo`] instead. **DEPRECATED** Use [`option: recordVideo`] instead.
## context-option-recordhar ## context-option-recordhar
* langs: js
- `recordHar` <[Object]> - `recordHar` <[Object]>
- `omitContent` <[boolean]> Optional setting to control whether to omit request content from the HAR. Defaults to - `omitContent` <[boolean]> Optional setting to control whether to omit request content from the HAR. Defaults to
`false`. `false`.
@ -242,7 +258,20 @@ Enables [HAR](http://www.softwareishard.com/blog/har-12-spec) recording for all
specified, the HAR is not recorded. Make sure to await [`method: BrowserContext.close`] for the HAR to be specified, the HAR is not recorded. Make sure to await [`method: BrowserContext.close`] for the HAR to be
saved. saved.
## python-context-option-recordhar-omit-content
* langs: python
- `record_har_omit_content` <[boolean]>
Optional setting to control whether to omit request content from the HAR. Defaults to `false`.
## python-context-option-recordhar-path
* langs: python
- `record_har_path` <[path]>
Path on the filesystem to write the HAR file to.
## context-option-recordvideo ## context-option-recordvideo
* langs: js
- `recordVideo` <[Object]> - `recordVideo` <[Object]>
- `dir` <[path]> Path to the directory to put videos into. - `dir` <[path]> Path to the directory to put videos into.
- `size` <[Object]> Optional dimensions of the recorded videos. If not specified the size will be equal to `viewport`. - `size` <[Object]> Optional dimensions of the recorded videos. If not specified the size will be equal to `viewport`.
@ -254,6 +283,22 @@ saved.
Enables video recording for all pages into `recordVideo.dir` directory. If not specified videos are not recorded. Make Enables video recording for all pages into `recordVideo.dir` directory. If not specified videos are not recorded. Make
sure to await [`method: BrowserContext.close`] for videos to be saved. sure to await [`method: BrowserContext.close`] for videos to be saved.
## python-context-option-recordvideo-dir
* langs: python
- `record_video_dir` <[path]>
Path to the directory to put videos into.
## python-context-option-recordvideo-size
* langs: python
- `record_video_size` <[Object]>
If `viewport` is not configured explicitly the video size defaults to 1280x720. Actual picture of each page will be
scaled down if necessary to fit the specified size.
- `width` <[int]> Video frame width.
- `height` <[int]> Video frame height.
Optional dimensions of the recorded videos. If not specified the size will be equal to `viewport`.
## context-option-proxy ## context-option-proxy
- `proxy` <[Object]> - `proxy` <[Object]>
- `server` <[string]> Proxy to be used for all requests. HTTP and SOCKS proxies are supported, for example - `server` <[string]> Proxy to be used for all requests. HTTP and SOCKS proxies are supported, for example
@ -335,6 +380,8 @@ Optional.
- %%-context-option-ignorehttpserrors-%% - %%-context-option-ignorehttpserrors-%%
- %%-context-option-bypasscsp-%% - %%-context-option-bypasscsp-%%
- %%-context-option-viewport-%% - %%-context-option-viewport-%%
- %%-python-context-option-viewport-%%
- %%-python-context-option-no-viewport-%%
- %%-context-option-useragent-%% - %%-context-option-useragent-%%
- %%-context-option-devicescalefactor-%% - %%-context-option-devicescalefactor-%%
- %%-context-option-ismobile-%% - %%-context-option-ismobile-%%
@ -352,4 +399,8 @@ Optional.
- %%-context-option-videospath-%% - %%-context-option-videospath-%%
- %%-context-option-videosize-%% - %%-context-option-videosize-%%
- %%-context-option-recordhar-%% - %%-context-option-recordhar-%%
- %%-python-context-option-recordhar-path-%%
- %%-python-context-option-recordhar-omit-content-%%
- %%-context-option-recordvideo-%% - %%-context-option-recordvideo-%%
- %%-python-context-option-recordvideo-dir-%%
- %%-python-context-option-recordvideo-size-%%

View File

@ -57,29 +57,6 @@ Script to be evaluated in all pages in the browser context. Optional.
### param: Page.selectOption.value = %%-python-select-options-value-%% ### param: Page.selectOption.value = %%-python-select-options-value-%%
### param: Page.selectOption.label = %%-python-select-options-label-%% ### param: Page.selectOption.label = %%-python-select-options-label-%%
## async method: BrowserContext.resetGeolocation
* langs: python
Emulates position unavailable state.
### param: BrowserContext.setGeolocation.latitude
* langs: python
- `latitude` <[float]>
Latitude between -90 and 90. **required**
### param: BrowserContext.setGeolocation.longitude
* langs: python
- `longitude` <[float]>
Longitude between -180 and 180. **required**
### param: BrowserContext.setGeolocation.accuracy
* langs: python
- `accuracy` <[float]>
Non-negative accuracy value. Defaults to `0`. Optional.
### param: Page.emulateMedia.params ### param: Page.emulateMedia.params
* langs: python * langs: python
- `media` <[null]|"screen"|"print"> - `media` <[null]|"screen"|"print">
@ -96,6 +73,50 @@ Emulates `'prefers-colors-scheme'` media feature, supported values are `'light'`
`null` disables color scheme emulation. Omitting `colorScheme` or passing `undefined` does not change the emulated `null` disables color scheme emulation. Omitting `colorScheme` or passing `undefined` does not change the emulated
value. Optional. value. Optional.
### option: Page.frame.name
* langs: python
- `name` <[string]>
Frame name specified in the `iframe`'s `name` attribute. Optional.
### option: Page.frame.url
* langs: python
- `url` <[string]|[RegExp]|[function]\([URL]\):[boolean]>
A glob pattern, regex pattern or predicate receiving frame's `url` as a [URL] object. Optional.
### option: Selectors.register.script
* langs: python
- `path` <[path]>
Path to the JavaScript file. If `path` is a relative path, then it is resolved relative to the current working directory.
### option: Selectors.register.script
* langs: python
- `script` <[string]>
Raw script content.
## method: Request.failure
* langs: python
- returns: <[null]|[string]>
Returns human-readable error message, e.g. `'net::ERR_FAILED'`. The method returns `None` unless this request has
failed, as reported by `requestfailed` event.
Example of logging of all the failed requests:
```python
page.on('requestfailed', lambda request: print(request.url + ' ' + request.failure);
```
## async method: Response.finished
* langs: python
- returns: <[null]|[string]>
Waits for this response to finish, returns failure error if request failed.
### option: BrowserContext.waitForEvent.predicate = %%-python-wait-for-event-predicate-%% ### option: BrowserContext.waitForEvent.predicate = %%-python-wait-for-event-predicate-%%
### option: BrowserContext.waitForEvent.timeout = %%-python-wait-for-event-timeout-%% ### option: BrowserContext.waitForEvent.timeout = %%-python-wait-for-event-timeout-%%
### option: Page.waitForEvent.predicate = %%-python-wait-for-event-predicate-%% ### option: Page.waitForEvent.predicate = %%-python-wait-for-event-predicate-%%

View File

@ -267,15 +267,15 @@ const context = await browser.newContext({
```python-async ```python-async
context = await browser.new_context( context = await browser.new_context(
geolocation={ 'longitude': 48.858455, 'latitude': 2.294474 }, geolocation={"longitude": 48.858455, "latitude": 2.294474},
permissions=['geolocation'] permissions=["geolocation"]
) )
``` ```
```python-sync ```python-sync
context = browser.new_context( context = browser.new_context(
geolocation={ 'longitude': 48.858455, 'latitude': 2.294474 }, geolocation={"longitude": 48.858455, "latitude": 2.294474},
permissions=['geolocation'] permissions=["geolocation"]
) )
``` ```
@ -286,11 +286,11 @@ await context.setGeolocation({ longitude: 29.979097, latitude: 31.134256 });
``` ```
```python-async ```python-async
await context.set_geolocation(longitude=29.979097, latitude=31.134256) await context.set_geolocation({"longitude": 29.979097, "latitude": 31.134256})
``` ```
```python-sync ```python-sync
context.set_geolocation(longitude=29.979097, latitude=31.134256) context.set_geolocation({"longitude": 29.979097, "latitude": 31.134256})
``` ```
**Note** you can only change geolocation for all pages in the context. **Note** you can only change geolocation for all pages in the context.

82
types/types.d.ts vendored
View File

@ -2636,32 +2636,32 @@ export interface Page {
*/ */
setInputFiles(selector: string, files: string|Array<string>|{ setInputFiles(selector: string, files: string|Array<string>|{
/** /**
* [File] name **required** * [File] name
*/ */
name: string; name: string;
/** /**
* [File] type **required** * [File] type
*/ */
mimeType: string; mimeType: string;
/** /**
* File content **required** * File content
*/ */
buffer: Buffer; buffer: Buffer;
}|Array<{ }|Array<{
/** /**
* [File] name **required** * [File] name
*/ */
name: string; name: string;
/** /**
* [File] type **required** * [File] type
*/ */
mimeType: string; mimeType: string;
/** /**
* File content **required** * File content
*/ */
buffer: Buffer; buffer: Buffer;
}>, options?: { }>, options?: {
@ -2703,12 +2703,12 @@ export interface Page {
*/ */
setViewportSize(viewportSize: { setViewportSize(viewportSize: {
/** /**
* page width in pixels. **required** * page width in pixels.
*/ */
width: number; width: number;
/** /**
* page height in pixels. **required** * page height in pixels.
*/ */
height: number; height: number;
}): Promise<void>; }): Promise<void>;
@ -4279,32 +4279,32 @@ export interface Frame {
*/ */
setInputFiles(selector: string, files: string|Array<string>|{ setInputFiles(selector: string, files: string|Array<string>|{
/** /**
* [File] name **required** * [File] name
*/ */
name: string; name: string;
/** /**
* [File] type **required** * [File] type
*/ */
mimeType: string; mimeType: string;
/** /**
* File content **required** * File content
*/ */
buffer: Buffer; buffer: Buffer;
}|Array<{ }|Array<{
/** /**
* [File] name **required** * [File] name
*/ */
name: string; name: string;
/** /**
* [File] type **required** * [File] type
*/ */
mimeType: string; mimeType: string;
/** /**
* File content **required** * File content
*/ */
buffer: Buffer; buffer: Buffer;
}>, options?: { }>, options?: {
@ -4827,14 +4827,8 @@ export interface BrowserContext {
* @param cookies * @param cookies
*/ */
addCookies(cookies: Array<{ addCookies(cookies: Array<{
/**
* **required**
*/
name: string; name: string;
/**
* **required**
*/
value: string; value: string;
/** /**
@ -5121,12 +5115,12 @@ export interface BrowserContext {
*/ */
setGeolocation(geolocation: null|{ setGeolocation(geolocation: null|{
/** /**
* Latitude between -90 and 90. **required** * Latitude between -90 and 90.
*/ */
latitude: number; latitude: number;
/** /**
* Longitude between -180 and 180. **required** * Longitude between -180 and 180.
*/ */
longitude: number; longitude: number;
@ -5142,14 +5136,8 @@ export interface BrowserContext {
* @param httpCredentials * @param httpCredentials
*/ */
setHTTPCredentials(httpCredentials: null|{ setHTTPCredentials(httpCredentials: null|{
/**
* **required**
*/
username: string; username: string;
/**
* **required**
*/
password: string; password: string;
}): Promise<void>; }): Promise<void>;
@ -6131,32 +6119,32 @@ export interface ElementHandle<T=Node> extends JSHandle<T> {
*/ */
setInputFiles(files: string|Array<string>|{ setInputFiles(files: string|Array<string>|{
/** /**
* [File] name **required** * [File] name
*/ */
name: string; name: string;
/** /**
* [File] type **required** * [File] type
*/ */
mimeType: string; mimeType: string;
/** /**
* File content **required** * File content
*/ */
buffer: Buffer; buffer: Buffer;
}|Array<{ }|Array<{
/** /**
* [File] name **required** * [File] name
*/ */
name: string; name: string;
/** /**
* [File] type **required** * [File] type
*/ */
mimeType: string; mimeType: string;
/** /**
* File content **required** * File content
*/ */
buffer: Buffer; buffer: Buffer;
}>, options?: { }>, options?: {
@ -7438,14 +7426,8 @@ export interface Browser extends EventEmitter {
* Optional cookies to set for context * Optional cookies to set for context
*/ */
cookies?: Array<{ cookies?: Array<{
/**
* **required**
*/
name: string; name: string;
/**
* **required**
*/
value: string; value: string;
/** /**
@ -8218,32 +8200,32 @@ export interface FileChooser {
*/ */
setFiles(files: string|Array<string>|{ setFiles(files: string|Array<string>|{
/** /**
* [File] name **required** * [File] name
*/ */
name: string; name: string;
/** /**
* [File] type **required** * [File] type
*/ */
mimeType: string; mimeType: string;
/** /**
* File content **required** * File content
*/ */
buffer: Buffer; buffer: Buffer;
}|Array<{ }|Array<{
/** /**
* [File] name **required** * [File] name
*/ */
name: string; name: string;
/** /**
* [File] type **required** * [File] type
*/ */
mimeType: string; mimeType: string;
/** /**
* File content **required** * File content
*/ */
buffer: Buffer; buffer: Buffer;
}>, options?: { }>, options?: {
@ -9461,14 +9443,8 @@ export interface BrowserContextOptions {
* Optional cookies to set for context * Optional cookies to set for context
*/ */
cookies?: Array<{ cookies?: Array<{
/**
* **required**
*/
name: string; name: string;
/**
* **required**
*/
value: string; value: string;
/** /**
@ -9712,7 +9688,7 @@ export interface LaunchOptions {
export interface ConnectOptions { export interface ConnectOptions {
/** /**
* A browser websocket endpoint to connect to. **required** * A browser websocket endpoint to connect to.
*/ */
wsEndpoint: string; wsEndpoint: string;

View File

@ -258,8 +258,6 @@ function guessRequired(comment) {
required = false; required = false;
if (comment.toLowerCase().includes('if available')) if (comment.toLowerCase().includes('if available'))
required = false; required = false;
if (comment.includes('**required**'))
required = true;
return required; return required;
} }

View File

@ -319,6 +319,9 @@ Documentation.Member = class {
if (arg.langs.aliases && arg.langs.aliases[lang]) if (arg.langs.aliases && arg.langs.aliases[lang])
arg.alias = arg.langs.aliases[lang]; arg.alias = arg.langs.aliases[lang];
arg.filterForLanguage(lang); arg.filterForLanguage(lang);
arg.type.filterForLanguage(lang);
if (arg.name === 'options' && !arg.type.properties.length)
continue;
argsArray.push(arg); argsArray.push(arg);
} }
this.argsArray = argsArray; this.argsArray = argsArray;
@ -478,6 +481,22 @@ Documentation.Type = class {
return []; return [];
} }
/**
* @param {string} lang
*/
filterForLanguage(lang) {
if (!this.properties)
return;
const properties = [];
for (const prop of this.properties) {
if (prop.langs.only && !prop.langs.only.includes(lang))
continue;
prop.filterForLanguage(lang);
properties.push(prop);
}
this.properties = properties;
}
/** /**
* @param {Documentation.Type[]} result * @param {Documentation.Type[]} result
*/ */