Skip to content

Instantly share code, notes, and snippets.

@htv04
Last active July 17, 2024 21:43
Show Gist options
  • Select an option

  • Save htv04/537fa65c05cc0c7600246bb2fe9a4bce to your computer and use it in GitHub Desktop.

Select an option

Save htv04/537fa65c05cc0c7600246bb2fe9a4bce to your computer and use it in GitHub Desktop.
Function wrapper for Moonscript/Yuescript's class system, written in Moonscript
-- moonclass v1.0.1
-- By HTV04
-- This is free and unencumbered software released into the public domain.
--
-- Anyone is free to copy, modify, publish, use, compile, sell, or
-- distribute this software, either in source code form or as a compiled
-- binary, for any purpose, commercial or non-commercial, and by any
-- means.
--
-- In jurisdictions that recognize copyright laws, the author or authors
-- of this software dedicate any and all copyright interest in the
-- software to the public domain. We make this dedication for the benefit
-- of the public at large and to the detriment of our heirs and
-- successors. We intend this dedication to be an overt act of
-- relinquishment in perpetuity of all present and future rights to this
-- software under copyright law.
--
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-- IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
-- OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-- ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-- OTHER DEALINGS IN THE SOFTWARE.
--
-- For more information, please refer to <https://unlicense.org/>
{
new: (name, init, values) ->
class moonclass
new: init
moonclass.__name = name
if values
for k,v in pairs values do moonclass[k] = v
moonclass
extend: (parent, name, values) ->
moonclass = class extends parent
moonclass.__name = name
if values
for k,v in pairs values do moonclass[k] = v
moonclass
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment