Skip to content

Instantly share code, notes, and snippets.

@tobie

tobie/Inheriting "Mixins"

Last active Aug 29, 2017
Embed
What would you like to do?
WebIDL Mixins
# Here we're looking for NoInterfaceObjects that have a base class.
# Luckily the only one we could find is not used as a mixin.
# awk '/NoInterfaceObject/,/};/' *.webidl | grep -o "interface .*:.* {" | cut -d" " -f4 | sort -u
BoxObject
# This identifies all of the interfaces what have a NIO extended attribute.
# awk '/NoInterfaceObject/,/};/' *.webidl | grep -o "interface .* {" | cut -d" " -f2 | sort -u
ANGLE_instanced_arrays
AbstractWorker
Animatable
AudioNodePassThrough
Body
BrowserElement
BrowserElementCommon
BrowserElementPrivileged
CanvasCompositing
CanvasDrawImage
CanvasDrawPath
CanvasFillStrokeStyles
CanvasFilters
CanvasHitRegions
CanvasImageData
CanvasImageSmoothing
CanvasPathDrawingStyles
CanvasPathMethods
CanvasRect
CanvasShadowStyles
CanvasState
CanvasText
CanvasTextDrawingStyles
CanvasTransform
CanvasUserInterface
ChildNode
ContainerBoxObject
Coordinates
DOMRequestShared
DeviceAcceleration
DeviceRotationRate
DocumentAndElementEventHandlers
EXT_blend_minmax
EXT_color_buffer_float
EXT_disjoint_timer_query
Exception
FontFaceSetIterator
FontFaceSource
Geolocation
GeometryUtils
GetUserMediaRequest
GlobalCrypto
GlobalEventHandlers
GlobalU2F
HTMLHyperlinkElementUtils
ImageCaptureError
IntlUtils
LegacyMozTCPSocket
LegacyQueryInterface
LinkStyle
ListBoxObject
MOZ_debug
MediaStreamError
MozFrameLoaderOwner
MozImageLoadingContent
MozObjectLoadingContent
NavigatorConcurrentHardware
NavigatorContentUtils
NavigatorGeolocation
NavigatorID
NavigatorLanguage
NavigatorOnLine
NavigatorStorage
NavigatorStorageUtils
NonDocumentTypeChildNode
OES_standard_derivatives
OES_vertex_array_object
OnErrorEventHandlerForNodes
OnErrorEventHandlerForWindow
ParentNode
Position
PositionError
PromiseNativeHandler
RTCIdentityProviderRegistrar
SEManager
SVGAnimatedPathData
SVGAnimatedPoints
SVGFilterPrimitiveStandardAttributes
SVGFitToViewBox
SVGTests
SVGURIReference
SVGUnitTypeValues
SVGZoomAndPanValues
ScrollBoxObject
SpeechSynthesisGetter
TouchEventHandlers
TreeBoxObject
WEBGL_compressed_texture_astc
WEBGL_compressed_texture_s3tc_srgb
WEBGL_draw_buffers
WEBGL_lose_context
WebGLRenderingContextBase
WindowEventHandlers
WindowLocalStorage
WindowOrWorkerGlobalScope
WindowSessionStorage
# Truly LegacyNIO
# These never end-up on the RHS of an implements statement.
# comm -13 <(grep -o " implements .*;" *.webidl | cut -f3 -d" " | cut -f1 -d";" | sort -u) <(awk "/NoInterfaceObject/,/};/" *.webidl | grep -o "interface .* {" | cut -d" " -f2 | sort -u)
ANGLE_instanced_arrays
ContainerBoxObject
Coordinates
DeviceAcceleration
DeviceRotationRate
EXT_blend_minmax
EXT_color_buffer_float
EXT_disjoint_timer_query
Exception
FontFaceSetIterator
Geolocation
GetUserMediaRequest
ImageCaptureError
IntlUtils
LegacyMozTCPSocket
ListBoxObject
MOZ_debug
MediaStreamError
OES_standard_derivatives
OES_vertex_array_object
Position
PositionError
PromiseNativeHandler
RTCIdentityProviderRegistrar
SEManager
ScrollBoxObject
TreeBoxObject
WEBGL_compressed_texture_astc
WEBGL_compressed_texture_s3tc_srgb
WEBGL_draw_buffers
WEBGL_lose_context
Geolocation
Coordinates
Position
PositionError
DeviceAcceleration
DeviceRotationRate
ConstrainablePattern
WEBGL_compressed_texture_astc
WEBGL_compressed_texture_s3tc_srgb
WEBGL_draw_buffers.
WEBGL_lose_context
ANGLE_instanced_arrays
EXT_blend_minmax
EXT_color_buffer_float
EXT_disjoint_timer_query
OES_standard_derivatives
OES_vertex_array_object.
# constants
# awk -F, 'BEGIN { FS=" " }/NoInterfaceObject/{ f=1; }/};/{ if (member==1) print interface; member=0; f=0; }f==1 && /^interface /{ interface=$2 }f==1 && / const /{ member=1 }' *.webidl | sort
ANGLE_instanced_arrays
EXT_blend_minmax
EXT_color_buffer_half_float
EXT_disjoint_timer_query
EXT_sRGB
EXT_texture_filter_anisotropic
ImageCaptureError
MOZ_debug
MozImageLoadingContent
MozObjectLoadingContent
OES_standard_derivatives
OES_texture_half_float
OES_vertex_array_object
PositionError
SVGUnitTypeValues
SVGZoomAndPanValues
TreeView
WEBGL_color_buffer_float
WEBGL_compressed_texture_astc
WEBGL_compressed_texture_atc
WEBGL_compressed_texture_etc
WEBGL_compressed_texture_etc1
WEBGL_compressed_texture_pvrtc
WEBGL_compressed_texture_s3tc
WEBGL_compressed_texture_s3tc_srgb
WEBGL_debug_renderer_info
WEBGL_depth_texture
WEBGL_draw_buffers
WebGL2RenderingContextBase
WebGLRenderingContextBase
# getter
# awk -F, 'BEGIN { FS=" " }/NoInterfaceObject/{ f=1; }/};/{ if (member==1) print interface; member=0; f=0; }f==1 && /^interface /{ interface=$2 }f==1 && / getter /{ member=1 }' *.webidl | sort
# setter
# awk -F, 'BEGIN { FS=" " }/NoInterfaceObject/{ f=1; }/};/{ if (member==1) print interface; member=0; f=0; }f==1 && /^interface /{ interface=$2 }f==1 && / setter /{ member=1 }' *.webidl | sort
# deleter
# awk -F, 'BEGIN { FS=" " }/NoInterfaceObject/{ f=1; }/};/{ if (member==1) print interface; member=0; f=0; }f==1 && /^interface /{ interface=$2 }f==1 && / deleter /{ member=1 }' *.webidl | sort
# legacycaller
# awk -F, 'BEGIN { FS=" " }/NoInterfaceObject/{ f=1; }/};/{ if (member==1) print interface; member=0; f=0; }f==1 && /^interface /{ interface=$2 }f==1 && / legacycaller /{ member=1 }' *.webidl | sort
# inherit
# awk -F, 'BEGIN { FS=" " }/NoInterfaceObject/{ f=1; }/};/{ if (member==1) print interface; member=0; f=0; }f==1 && /^interface /{ interface=$2 }f==1 && / inherit /{ member=1 }' *.webidl | sort
# stringifier
# awk -F, 'BEGIN { FS=" " }/NoInterfaceObject/{ f=1; }/};/{ if (member==1) print interface; member=0; f=0; }f==1 && /^interface /{ interface=$2 }f==1 && / stringifier /{ member=1 }' *.webidl | sort
HTMLHyperlinkElementUtils
# iterable
# awk -F, 'BEGIN { FS=" " }/NoInterfaceObject/{ f=1; }/};/{ if (member==1) print interface; member=0; f=0; }f==1 && /^interface /{ interface=$2 }f==1 && / iterable/{ member=1 }' *.webidl | sort
# static
# awk -F, 'BEGIN { FS=" " }/NoInterfaceObject/{ f=1; }/};/{ if (member==1) print interface; member=0; f=0; }f==1 && /^interface /{ interface=$2 }f==1 && / static /{ member=1 }' *.webidl | sort
# maplike
# awk -F, 'BEGIN { FS=" " }/NoInterfaceObject/{ f=1; }/};/{ if (member==1) print interface; member=0; f=0; }f==1 && /^interface /{ interface=$2 }f==1 && / maplike/{ member=1 }' *.webidl | sort
# setlike
# awk -F, 'BEGIN { FS=" " }/NoInterfaceObject/{ f=1; }/};/{ if (member==1) print interface; member=0; f=0; }f==1 && /^interface /{ interface=$2 }f==1 && / setlike/{ member=1 }' *.webidl | sort
# Here we're looking for all NIO that end up on the RHS of an implements statement.
# These are truly mixins vs LegacyNIO.
# grep -o " implements .*;" *.webidl | cut -f3 -d" " | cut -f1 -d";" | sort -u
AbstractWorker
Animatable
AudioNodePassThrough
Body
BrowserElement
BrowserElementCommon
BrowserElementPrivileged
CanvasCompositing
CanvasDrawImage
CanvasDrawPath
CanvasFillStrokeStyles
CanvasFilters
CanvasHitRegions
CanvasImageData
CanvasImageSmoothing
CanvasPathDrawingStyles
CanvasPathMethods
CanvasRect
CanvasShadowStyles
CanvasState
CanvasText
CanvasTextDrawingStyles
CanvasTransform
CanvasUserInterface
ChildNode
ChromeWindow
DOMRequestShared
DocumentAndElementEventHandlers
ExceptionMembers
FontFaceSource
GeometryUtils
GlobalCrypto
GlobalEventHandlers
GlobalU2F
HTMLHyperlinkElementUtils
KeyEvent
LegacyQueryInterface
LinkStyle
MozFrameLoaderOwner
MozImageLoadingContent
MozObjectLoadingContent
NavigatorConcurrentHardware
NavigatorContentUtils
NavigatorGeolocation
NavigatorID
NavigatorLanguage
NavigatorOnLine
NavigatorStorage
NavigatorStorageUtils
NonDocumentTypeChildNode
OnErrorEventHandlerForNodes
OnErrorEventHandlerForWindow
ParentNode
SVGAnimatedPathData
SVGAnimatedPoints
SVGFilterPrimitiveStandardAttributes
SVGFitToViewBox
SVGTests
SVGURIReference
SVGUnitTypeValues
SVGZoomAndPanValues
SpeechSynthesisGetter
TouchEventHandlers
Transferable
TreeView
WebBrowserPersistable
WebGL2RenderingContextBase
WebGLRenderingContextBase
WindowEventHandlers
WindowLocalStorage
WindowOrWorkerGlobalScope
WindowSessionStorage
XPathEvaluator
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment