@@ -9,7 +9,8 @@ var gui = require('nw.gui')
99 , https = require ( 'https' )
1010 , request = require ( 'request' )
1111 , _ = require ( 'lodash' )
12-
12+ , encoding = require ( 'encoding' )
13+
1314window . onload = function ( ) {
1415 initializeClient ( ) ;
1516} ;
@@ -38,7 +39,7 @@ function initializeClient() {
3839 log ( 'Begin Polling...' ) ;
3940 pollClipboard ( ) ;
4041 pollLogs ( ) ;
41-
42+
4243 gui . Window . get ( ) . show ( ) ;
4344} ;
4445
@@ -52,7 +53,7 @@ function pollClipboard() {
5253 var clipboard = document . getElementById ( 'clipboard' )
5354 var event = { time : Util . getTime ( ) , type : 'sourcedClipboard' , data : text } ;
5455 cb . clear ( ) ;
55-
56+
5657 var renderedEvent = $ ( Templates . event ( { time : event . time , text : event . data } ) ) ;
5758 Data . ui . clipboard_list . prepend ( renderedEvent ) ;
5859 Data . state . datasources . local . getClient ( ) . publish ( '/events' , event ) ;
@@ -67,47 +68,63 @@ function pollClipboard() {
6768
6869function pollLogs ( ) {
6970 if ( ! Data . state . poll . logs ) return ;
70-
71+
7172 var log_dir = ( / ^ w i n / . test ( process . platform ) ) ? Data . state . datasources . logs . path . win : Data . state . datasources . logs . path . darwin ;
7273 var channels = [ ] ;
73-
74+
7475 for ( channel in Data . state . datasources . logs . channels ) {
75- if ( Data . state . datasources . logs . channels [ channel ] ) channels . push ( channel )
76+ if ( Data . state . datasources . logs . channels [ channel ] ) channels . push ( channel ) ;
7677 }
77-
78+
7879 if ( ! channels . length ) {
79- log ( 'No logs to parse' )
80+ log ( 'No logs to parse' ) ;
81+ var renderedEvent = $ ( Templates . event ( { 'time' : Util . getTime ( ) , type : 'error' , text : 'No logs to parse. Have you joined an intel channel today?' } ) ) ;
82+ Data . ui . logs_list . prepend ( renderedEvent ) ;
8083 return ;
8184 }
82-
85+
8386 var filename_match = '(' + channels . join ( '|' ) + ')_' ;
8487 // filename_match += moment().format('YYYYMMDD');
8588 filename_match += '20130627' ;
8689 filename_match += '_\\d+.txt' ;
8790
8891 fs . readdir ( log_dir , function ( err , list ) {
89- if ( err ) throw err ;
92+ if ( err ) {
93+ var renderedEvent = $ ( Templates . event ( { 'time' : Util . getTime ( ) , type : 'error' , text : 'Unable to poll logs: ' + err } ) ) ;
94+ Data . ui . logs_list . prepend ( renderedEvent ) ;
95+ return ;
96+ }
97+
9098 var regex = new RegExp ( filename_match ) ;
9199 list . forEach ( function ( file ) {
92100 if ( regex . test ( file ) ) {
93- var renderedEvent = $ ( Templates . event ( { 'time' : Util . getTime ( ) , 'type' : 'watchLog' , ' text' : 'Watching ' + file } ) ) ;
101+ var renderedEvent = $ ( Templates . event ( { 'time' : Util . getTime ( ) , text : 'Watching ' + file } ) ) ;
94102 Data . ui . logs_list . prepend ( renderedEvent ) ;
95103
96- t = new tail . startTailing ( path . join ( log_dir , file ) )
104+ t = new tail . startTailing ( path . join ( log_dir , file ) ) ;
97105 t . on ( 'line' , function ( line ) {
106+ if ( line . length === 1 ) return ;
107+
98108 processLine ( line , function ( event ) {
99109 if ( ! event ) return ;
100-
101- var renderedEvent = $ ( Templates . report ( event . data ) )
110+
111+ var renderedEvent = $ ( Templates . report ( event . data ) ) ;
102112 Data . ui . logs_list . prepend ( renderedEvent ) ;
103113 Data . state . datasources . local . getClient ( ) . publish ( '/events' , event ) ;
104114 } ) ;
105115 } ) ;
106116
107117 Data . state . datasources . logs . handles . push ( t ) ;
108118 }
109- } ) ;
119+ } ) ;
110120 } ) ;
121+
122+ if ( Data . state . datasources . logs . handles . length === 0 ) {
123+ var renderedEvent = $ ( Templates . event ( { 'time' : Util . getTime ( ) , type : 'error' , text : 'No logs to parse. Have you joined an intel channel today?' } ) ) ;
124+ Data . ui . logs_list . prepend ( renderedEvent ) ;
125+ return ;
126+ }
127+
111128} ;
112129
113130function resetLogPolling ( ) {
@@ -123,7 +140,7 @@ function resetLogPolling() {
123140
124141function log ( message ) {
125142 if ( ! Data . config . log ) return ;
126-
143+
127144 if ( Data . config . log === 'events' ) {
128145 EventList . addEvent ( {
129146 type : 'info' ,
@@ -139,7 +156,7 @@ var Dict = function() {
139156 "use strict" ;
140157 this . _root = { } ;
141158} ;
142-
159+
143160Dict . prototype = {
144161 /**
145162 * @param {string } word
@@ -160,7 +177,7 @@ Dict.prototype = {
160177 } ,
161178 compile : function compile ( ) {
162179 var queue = [ ] , entry , node , child , fall ;
163-
180+
164181 queue . push ( this . _root ) ;
165182 while ( queue . length > 0 ) {
166183 node = queue . shift ( ) ;
@@ -174,7 +191,7 @@ Dict.prototype = {
174191 queue . push ( node [ key ] ) ;
175192 }
176193 }
177-
194+
178195 this . _root . _fall = this . _root ;
179196 queue . push ( { char : null , node : this . _root } ) ;
180197 while ( queue . length > 0 ) {
@@ -267,40 +284,48 @@ request({url: Data.config.domain + '/data/map.json', json: true}, function (erro
267284 system_list = body . Systems ;
268285} ) ;
269286
270- var lineRegex = / \[ ( \d { 4 } \. \d { 2 } \. \d { 2 } \d { 2 } : \d { 2 } : \d { 2 } ) \] ( [ \w ] + ) > ( .* ) / i;
287+ // var lineRegex = /\[ (\d{4}\.\d{2}\.\d{2} \d{2}:\d{2}:\d{2}) \] ([\w ]+) > (.*)/i;
288+ var lineRegex = / \[ ( .* ) \] ( .* ) \> ? ( .* ) / i;
271289var killmailRegex = / K i l l : ( .* ) \( ( .* ) \) / i;
272290var characters = Object . create ( null ) ;
273291var charDict = new Dict ( ) ;
274-
292+
275293var processLine = function processLine ( line , next ) {
294+ Data . ui . logs_list . prepend ( $ ( Templates . event ( { time : Util . getTime ( ) , text : 'line: ' + line } ) ) ) ;
295+
276296 if ( line != undefined ) {
277- var result = lineRegex . exec ( line ) ;
297+
298+ // wtf are these? ��
299+ var buffer = encoding . convert ( line , 'utf-16' ) ;
300+ var result = lineRegex . exec ( buffer . toString ( ) ) ;
301+ Data . ui . logs_list . prepend ( $ ( Templates . event ( { time : Util . getTime ( ) , text : 'result: ' + result } ) ) ) ;
302+
278303 if ( result ) {
279- var timestamp = result [ 1 ] ;
280- var sender = result [ 2 ] ;
281- var text = result [ 3 ] ;
304+ var timestamp = result [ 1 ] . slice ( 2 , - 2 ) ;
305+ var sender = result [ 2 ] . slice ( 2 , - 2 ) ;
306+ var text = result [ 3 ] . slice ( 2 ) ;
282307 var requestList = [ ] ;
283308 var resolvedCharacters = { } ;
284309 var clear = false ;
285-
310+
286311 if ( sender === 'EVE System' ) {
287312 next ( ) ;
288313 return ;
289314 }
290-
315+
291316 if ( characters [ sender . toUpperCase ( ) ] === undefined ) {
292317 requestList . push ( sender ) ;
293318 }
294-
319+
295320 var killmailResult = killmailRegex . exec ( line ) ;
296321 if ( killmailResult ) {
297322 var deadCharacter = killmailResult [ 1 ] ;
298323 var lostShip = killmailResult [ 2 ] ;
299324 requestList . push ( deadCharacter ) ;
300-
325+
301326 var getCharIDsComplete = function getCharIDsComplete ( ) {
302327 next ( { time : Util . getTime ( ) , raw : line , type : 'sourcedKillmail' ,
303- data : { type : 'sourcedKillmail' , reporterId : characters [ sender . toUpperCase ( ) ] , reporterName : sender ,
328+ data : { type : 'sourcedKillmail' , reporterId : characters [ sender . toUpperCase ( ) ] , reporterName : sender ,
304329 pilots : { deadCharacter : characters [ deadCharacter . toUpperCase ( ) ] } , lostShip : lostShip } } ) ;
305330 } ;
306331 if ( requestList . length > 0 ) {
@@ -311,19 +336,22 @@ var processLine = function processLine(line, next) {
311336 }
312337 }
313338 else {
314- var split = text . split ( " " ) ;
339+ // var split = text.split(" ");
340+ var split = text . split ( / \s / ) ;
315341 var system ;
342+ Data . ui . logs_list . prepend ( $ ( Templates . event ( { time : Util . getTime ( ) , text : 'split: ' + split } ) ) ) ;
343+
316344 split . forEach ( function ( element ) {
317- var matched_system = _ . find ( system_list , function ( s ) {
318- var r = new RegExp ( s . name ) ;
345+ var matched_system = _ . find ( system_list , function ( s ) {
346+ var r = new RegExp ( s . name , 'i' ) ;
319347 return r . test ( element ) ;
320348 } ) ;
321-
349+
322350 if ( matched_system !== undefined ) {
323351 system = { systemName : matched_system . name , systemId : matched_system . id , regionId : matched_system . regionID } ;
324352 if ( element . toUpperCase ( ) === system . systemName . toUpperCase ( ) ) return ;
325353 }
326-
354+
327355 if ( characters [ element . toUpperCase ( ) ] === undefined ) {
328356 var searchResult = charDict . search ( element ) . sort ( function ( a , b ) { return b . length - a . length } ) . shift ( ) ;
329357 if ( searchResult !== undefined && characters [ searchResult . toUpperCase ( ) ] !== null ) {
@@ -340,8 +368,8 @@ var processLine = function processLine(line, next) {
340368 resolvedCharacters [ element ] = characters [ element . toUpperCase ( ) ] ;
341369 }
342370 } ) ;
343-
344- if ( system ) {
371+
372+ if ( system ) {
345373 var type = ( clear ) ? 'sourcedClear' : 'sourcedHostile' ;
346374 if ( requestList . length > 0 ) {
347375 var getCharIDsComplete = function getCharIDsComplete ( ) {
0 commit comments