Sha256: 1d5232e53d9c3272b9b5d7a5dff4ad7aba2fbd1b7d81a3b250335b98d78333f7
Contents?: true
Size: 1.3 KB
Versions: 23
Compression:
Stored size: 1.3 KB
Contents
class Chunk constructor: (@raw) -> rawText: -> @raw text: -> @_text ||= AnsiStream.strip(@raw) rawLines: -> @_rawLines ||= @raw.split(/\r?\n/) lines: -> @_lines ||= @text().split(/\r?\n/) class @Stream INTERVAL = 1000 MAX_RETRIES = 15 constructor: -> @url = null @eventListeners = {} @retries = 0 @status = 'running' init: ({url, text, status}) -> @status = status @broadcastOutput(text) @start(url) poll: => jQuery.ajax @url, success: @success error: @error success: (response) => @retries = 0 @broadcastOutput(response.output, response) @broadcastStatus(response.status, response) @start(response.url || false) broadcastStatus: (status, args...) -> if status != @status @status = status for handler in @listeners('status') handler(status, args...) broadcastOutput: (raw, args...) -> chunk = new Chunk(raw) for handler in @listeners('chunk') handler(chunk, args...) error: (response) => @start() if 600 > response.status >= 500 && (@retries += 1) < MAX_RETRIES start: (url = @url) -> if @url = url setTimeout(@poll, INTERVAL) addEventListener: (type, handler) -> @listeners(type).push(handler) listeners: (type) -> @eventListeners[type] ||= []
Version data entries
23 entries across 23 versions & 1 rubygems