Skip to content

Instantly share code, notes, and snippets.

View Groogy's full-sized avatar

Groogy Groogy

View GitHub Profile
abstract class Trashman::BaseRecord
abstract def callstack : CallStack
abstract def allocations : Uint64
abstract def deallocations : Uint64
abstract def untrack : Void
abstract def type_str : String
end
module Trashman::Statistics
@@records = [] of BaseRecord
module CrystalClear
macro included
def test_invariant_contracts(method="")
{% verbatim do %}
{% for c in Contracts::INVARIANTS %}
{% str = c[0]; condition = c[1] %}
test = CrystalClear.perform_test(self) {{condition}}
if !test
Contracts.on_contract_fail(:invariant, {{str}}, {{@type}}, method)
end
def fetch_method(klass : U) forall U
comp = fetch_method? klass # Return type is BaseClass | Nil
# I want to return with the type provided to find
end
class Boleite::GUI
class Window < Container
# ...
Cute.signal header_drag(pos : Vector2f)
def initialize
# ...
state_change.on &->update_header_size
class WidgetInput < InputReceiver
def initialize(widget)
register WidgetLeftClick ->widget.left_click.emit
end
end
class Boleite::GUI
abstract class Widget
Cute.signal mouse_enter
Cute.signal mouse_leave
Cute.signal mouse_over(x : Float64, y : Float64)
Cute.signal left_click(x : Float64, y : Float64)
Cute.signal right_click(x : Float64, y : Float64)
Cute.signal key_pressed
Cute.signal key_released
Cute.signal text_entered
abstract class Container < Widget
includes CrystalClear
@children = [] of Widget
requires child.parent.nil?
ensures @children.count child == 1
def add(child)
@children << child
child.parent = self
class Foo
include CrystalClear
def on_contract_fail(contract, condition, method) # some args with info
# Default behaviour but you can overide it in this method
raise CrystalClear::ContractError.new("Failed #{self.class} #{contract} contract: #{condition}"
end
end
@Groogy
Groogy / test.cr
Last active October 1, 2017 10:39
# Papierkorb suggestion
class Foo
include CrystalClear
requires var > 5
ensures result.query?
assert def foo # Apply contract semantics to method
# Code
end
@Groogy
Groogy / text_usage.cr
Last active September 24, 2017 20:27
font = Boleite::Font.new app.graphics, "/usr/share/fonts/TTF/arial.ttf"
text = Boleite::Text.new font, "Hello world?\nHello new line!"
text.size = 150u32
text.default_color = Boleite::Color.blue
text.position = Boleite::Vector2f.new 10.0, 10.0
text.formatter.add /(Hello)/, Boleite::Color.green
text.formatter.add /(\!|\?)/, Boleite::Color.black
renderer.draw text