Skip to content

Instantly share code, notes, and snippets.

@bcardarella
Last active August 10, 2025 17:44
Show Gist options
  • Save bcardarella/237a9adabc237ba2f493dccee3ee0d01 to your computer and use it in GitHub Desktop.
Save bcardarella/237a9adabc237ba2f493dccee3ee0d01 to your computer and use it in GitHub Desktop.

I want you to implement all of the missing Event classes drived from the "Interfaces based on Event" list in the Event MDN page: https://developer.mozilla.org/en-US/docs/Web/API/Event#interfaces_based_on_event

First start by analyzing GenDOM.Event in lib/gen_dom/event.ex, GenDOM.UIEvent in lib/gen_dom/ui_event.ex, GenDOM.MouseEvent in lib/gen_dom/mouse_event.ex and GenDOM.PointerEvent in lib/gen_dom/pointer_event.ex see how they inherit from one another using GenObject who's docs are at: https://hexdocs.pm/gen_object/index.html

when converting from the spec to Elixir you convert camelcased named like fooBar into snakecase like foo_bar. any unused variables in a function from the function defintion should have a leading underscore to prevent warnings use the list from the Interfaces based on Event list and find all of the unimplemented classes. Then create elixir files for each in lib/gen_dom corresponding to the name'd class and create modules in each file nested under GenDOM.

I want you to visit the MDN page for each class in the list and derivce the instance properties, instance methods, and documentation from that page

implemente the proper module to inherit from using GenObject's inheritance model. Implement all of the instance properties in the fields of the use statement.

Analyze and implement all of the instance methods for the class being implementedMDN DOM specification locatated at: camel-cased functions should be converted to snake case soo fooBar converts to foo_bar. Because this is using GenObject it means that all functions should take the event_pid as the first argument. Documentation for each function should be taken from each function defintion defined in the MDN specification linked previously. Do not implement any of the functions. Just leave them return :not_implemented and ensure the unused function arguments start with an

I want you to ensure the documentation written for each module matches the style of documentation in the GenDOM.UIEvent, GenDOM.MouseEvent, and GenDOM.PointerEvent modules. Analyze the documentation in each and including the GenDom.Element module and make the documentation in elixir modules you're writing at the same quality along with linking out to the orginal MDN url for each function

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment