glassesneo / OOlib

A nimble package for object-oriented programming
Do What The F*ck You Want To Public License
66 stars 4 forks source link
metaprogramming nim nimble oop

👑OOlib

license test contributors stars

OOlib is currently work in progress🔥

🗺Overview

OOlib is a nimble package for object oriented programming.

📜Usage

class

import oolib

class Person:
  var
    name: string
    age = 0

  proc greet =
    echo "hello, I'm ", self.name

let steve = Person.new(name = "Steve")
let tony = Person.new(name = "Tony", age = 30)

steve.greet()
tony.greet()

protocol

import oolib

protocol Readable:
  var text: string

protocol Writable:
  var text: string
  proc `text=`(value: string)

protocol Product:
  var price: int

protocol pub Writer:
  proc write(text: string)

class Book impl (Readable, Product):
  var
    text: string = ""
    price: int

class Diary impl (Readable, Writable, Product):
  var text {.initial.}: string = ""
  var price: int
  proc `text=`(value: string) =
    self.text = value

class HTMLWriter impl Writer:
  var writable: Writable
  proc write(text: string) =
    self.writable.text = text

See doc.md for more details

✨Features

💭Planning

Changelog

See CHANGELOG

License

Copyright © 2024 Neo glassesneo@protonmail.com This work is free. You can redistribute it and/or modify it under the terms of the Do What The Fuck You Want To Public License, Version 2, as published by Sam Hocevar. See http://www.wtfpl.net/ for more details.