Skip to content

Instantly share code, notes, and snippets.

View asterite's full-sized avatar

Ary Borenszweig asterite

  • NoRedInk
  • Buenos Aires, Argentina
View GitHub Profile
abstract class Observer(T)
abstract def notify(obj : T)
end
module Observable(T)
def add_observer(observer : Observer(T))
observers = @observers ||= [] of Observer(T)
observers << observer
end
require "benchmark"
def foo(&block)
bar(&block)
end
def bar
yield
end
def with_pipe
read, write = IO.pipe
yield read, write
ensure
read.close if read rescue nil
write.close if write rescue nil
end
with_pipe do |read, write|
thread = Thread.new do
require "json"
class Object
macro def_find_by_name
{{:macro.id}} def self.find_by_name(name) : {{@type.name.id}}.class
case name
\{% for subclass in {{@type.name.id}}.all_subclasses %}
when \{{subclass.name}}
\{{subclass.name.id}}
\{% end %}
require "json"
abstract class Plugin
macro def self.find_by_name(name) : Plugin.class
case name
{% for subclass in Plugin.all_subclasses %}
when {{subclass.name}}
{{subclass.name.id}}
{% end %}
else
require "json"
abstract class Plugin
ALL = {} of String => Plugin.class
macro inherited
ALL[{{@type.name}}] = {{@type.name.id}}
end
end
def foo(x : T)
T::Baz
end
foo(1 || 1.5)
/usr/include/arpa/ftp.h:#define ERROR 5 /* permanent negative completion */
/usr/include/arpa/telnet.h:#define EL 248 /* erase the current line */
/usr/include/arpa/telnet.h:#define EC 247 /* erase the current character */
/usr/include/arpa/telnet.h:#define EOR 239 /* end of record (transparent mode) */
/usr/include/arpa/tftp.h:#define ERROR 05 /* error code */
/usr/include/arpa/tftp.h:#define EUNDEF 0 /* not defined */
/usr/include/arpa/tftp.h:#define ENOTFOUND 1 /* file not found */
/usr/include/arpa/tftp.h:#define EACCESS 2 /* access violation */
/usr/include/arpa/tftp.h:#define ENOSPACE 3 /* disk full or allocation exceeded */
/usr/include/arpa/tftp.h:#define EBADOP 4 /* illegal TFTP operation */
class Tuple
def +(other)
Tuple.new *self, *other
end
end
a = {1, 'a'}
b = {"hey", 1.5}
c = a + b
puts c
struct ThreadSafe(T)
def initialize(@obj : T)
@mutex = Mutex.new
end
macro method_missing(name, args, block)
@mutex.synchronize do
@obj.{{name.id}}({{*args}}) {{block}}
end
end