-
Notifications
You must be signed in to change notification settings - Fork 3
/
lib.coffee
119 lines (94 loc) · 2.95 KB
/
lib.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
@Unionize = {}
@s = 'L()'
@user = 'wiber' # unless Meteor.user() #this () killed
@WIFound = (id) ->
smite id, 'scouting nemo' , eval s
found = WI.find(
_id: id
,
limit: 1
).count()
smite id, found, 'finding nemo' , eval s
return found
@WFound = (id) ->
smite id, 'scouting nemo' , eval s
found = W.find(
_id: id
,
limit: 1
).count()
smite id, found, 'finding nemo' , eval s
return foun
# TODO should be called with start and end time parameter for exact timings
#nuff said
@smite = do ->
context = 's' #dif[-1..][0] # - ti #'' #can be dynamic ?
# it would be great if this actually executed so we'd have an exact time since start of app
# for some reason it's 'stuck' in th object instead of being re calculated.. closure
# find a package that does this right...
Function::bind.call console.log, console, context#, arguments.callee.caller.toString().match(/(unionize.{10}.*?)/)#,t(), context, dif[0] , dif[-1..][0] #, new Date().getTime()
console.warn = -> #this kills the warns from prior
# The main collection. Only inserts allowed. Unless by cron or hook.
#Client and server..
# need a shared function that validates w objects
# that they follow rules..
# need a shared bunch of react functions for making html out of W
# shorthand log function also a timer lapsed
# [ 1, 552 ]
arrowofhrt = false
@daff = () ->
if Meteor.isServer and arrowofhrt
@time = process.hrtime()
d = process.hrtime(time)
d = d[1]+d[0] * 1e9
return d
else
new Date().getTime()
@dif = []
@consoling = true
@t = ->
dif.push daff()
unless Meteor.isServer and consoling
console.timeEnd 'elapsed'
console.time 'elapsed'
console.log d= dif[-1..][0] - dif[0]
return d #dif[0] - dif[-1..][0] #"arguments.callee.caller.toString().match(/(unionize.{20}.*?)/)[0]"
Meteor.methods
"t" : () ->
return L()
# eval('L()') brings this function into local scope so we get correct line numbers on server.
@L = ->
t()
if Meteor.isClient
return ''
else
getErrorObject = ->
try
throw Error('')
catch err
return err
return
err = getErrorObject()
caller_line = err.stack.split('\n')[4]
index = caller_line.indexOf('at ')
clean = caller_line.slice(index + 2, caller_line.length)
# TODO will need to depend on your path untill a proper split function is created
pathChars = 38
start = clean.length-pathChars
end = start+32
r = clean[start..end]+' '+t()
return r
@smiter = do ->
context = eval s
Function::bind.call console.log, console, context#, arguments.callee.caller.toString().match(/(unionize.{10}.*?)/)#,t(), context, dif[0] , dif[-1..][0] #, new Date().getTime()
for i in '123'
smite eval(s), dif, dif[0]-dif[-1..][0], i, 'counting to three t()'
if Meteor.isServer # thros error on client
new smiter i
@W = new Meteor.Collection 'W'
@WI = new Meteor.Collection 'WI'
#@WI = Ground.Collection(WI)
@Unionize.W = W
@Unionize.WI = WI
eval 'smiter("lives")'
smite 'smiter live!', eval s