diff --git a/assets/scripts/app/helpers/helpers.coffee b/assets/scripts/app/helpers/helpers.coffee
index 34db8467..a0651ee2 100644
--- a/assets/scripts/app/helpers/helpers.coffee
+++ b/assets/scripts/app/helpers/helpers.coffee
@@ -1,131 +1,166 @@
require 'config/emoij'
-@Travis.Helpers =
- COLORS:
- default: 'yellow'
- passed: 'green'
- failed: 'red'
- errored: 'gray'
- canceled: 'gray'
+config_keys_map = Travis.CONFIG_KEYS_MAP
+config = Travis.config
+githubCommitUrl = Travis.Urls.githubCommit
+currentDate = Travis.currentDate
+timeago = $.timeago
+intersect = $.intersect
+only = $.only
+mapObject = $.map
- compact: (object) ->
- result = {}
- (result[key] = value unless $.isEmpty(value)) for key, value of object || {}
- result
+colors = {
+ default: 'yellow'
+ passed: 'green'
+ failed: 'red'
+ errored: 'gray'
+ canceled: 'gray'
+}
- safe: (string) ->
- new Handlebars.SafeString(string)
+compact = (object) ->
+ result = {}
+ (result[key] = value unless Ember.isEmpty(value)) for key, value of object || {}
+ result
- colorForState: (state) ->
- Travis.Helpers.COLORS[state] || Travis.Helpers.COLORS['default']
+safe = (string) ->
+ new Ember.Handlebars.SafeString(string)
- formatCommit: (sha, branch) ->
- Travis.Helpers.formatSha(sha) + if branch then " (#{branch})" else ''
+colorForState = (state) ->
+ colors[state] || colors['default']
- formatSha: (sha) ->
- (sha || '').substr(0, 7)
+formatCommit = (sha, branch) ->
+ formatSha(sha) + if branch then " (#{branch})" else ''
- formatConfig: (config) ->
- config = $.only config, Object.keys(Travis.CONFIG_KEYS_MAP)
- values = $.map config, (value, key) ->
- value = (if value && value.join then value.join(', ') else value) || ''
- if key == 'rvm' && "#{value}".match(/^\d+$/)
- value = "#{value}.0"
- '%@: %@'.fmt Travis.CONFIG_KEYS_MAP[key], value
- if values.length == 0 then '-' else values.join(', ')
+formatSha = (sha) ->
+ (sha || '').substr(0, 7)
- formatMessage: (message, options) ->
- message = message || ''
- message = message.split(/\n/)[0] if options.short
- message = @_emojize(@_escape(message))
- if !!options.repo
- message = @githubify(message, options.repo.get('owner'), options.repo.get('name'))
- if !!options.pre
- message = message.replace /\n/g, '
'
- message
+formatConfig = (config) ->
+ config = only config, Object.keys(config_keys_map)
+ values = mapObject config, (value, key) ->
+ value = (if value && value.join then value.join(', ') else value) || ''
+ if key == 'rvm' && "#{value}".match(/^\d+$/)
+ value = "#{value}.0"
+ '%@: %@'.fmt config_keys_map[key], value
+ if values.length == 0 then '-' else values.join(', ')
- pathFrom: (url) ->
- (url || '').split('/').pop()
+formatMessage = (message, options) ->
+ message = message || ''
+ message = message.split(/\n/)[0] if options.short
+ message = @_emojize(@_escape(message))
+ if !!options.repo
+ message = @githubify(message, options.repo.get('owner'), options.repo.get('name'))
+ if !!options.pre
+ message = message.replace /\n/g, '
'
+ message
- timeAgoInWords: (date) ->
- $.timeago.distanceInWords date
+pathFrom = (url) ->
+ (url || '').split('/').pop()
- durationFrom: (started, finished) ->
- started = started and @_toUtc(new Date(@_normalizeDateString(started)))
- finished = if finished then @_toUtc(new Date(@_normalizeDateString(finished))) else @_nowUtc()
- if started && finished then Math.round((finished - started) / 1000) else 0
+timeAgoInWords = (date) ->
+ timeago.distanceInWords date
- timeInWords: (duration) ->
- days = Math.floor(duration / 86400)
- hours = Math.floor(duration % 86400 / 3600)
- minutes = Math.floor(duration % 3600 / 60)
- seconds = duration % 60
+durationFrom = (started, finished) ->
+ started = started and @_toUtc(new Date(@_normalizeDateString(started)))
+ finished = if finished then @_toUtc(new Date(@_normalizeDateString(finished))) else @_nowUtc()
+ if started && finished then Math.round((finished - started) / 1000) else 0
- if days > 0
- 'more than 24 hrs'
- else
- result = []
- result.push hours + ' hr' if hours is 1
- result.push hours + ' hrs' if hours > 1
- result.push minutes + ' min' if minutes > 0
- result.push seconds + ' sec' if seconds > 0
- if result.length > 0 then result.join(' ') else '-'
+timeInWords = (duration) ->
+ days = Math.floor(duration / 86400)
+ hours = Math.floor(duration % 86400 / 3600)
+ minutes = Math.floor(duration % 3600 / 60)
+ seconds = duration % 60
- githubify: (text, owner, repo) ->
- self = this
- text = text.replace @_githubReferenceRegexp, (reference, matchedOwner, matchedRepo, matchedNumber) ->
- self._githubReferenceLink(reference, { owner: owner, repo: repo }, { owner: matchedOwner, repo: matchedRepo, number: matchedNumber } )
- text = text.replace @_githubUserRegexp, (reference, username) ->
- self._githubUserLink(reference, username)
- text = text.replace @_githubCommitReferenceRegexp, (reference, matchedOwner, matchedRepo, matchedSHA) ->
- self._githubCommitReferenceLink(reference, { owner: owner, repo: repo }, { owner: matchedOwner, repo: matchedRepo, sha: matchedSHA })
- text
+ if days > 0
+ 'more than 24 hrs'
+ else
+ result = []
+ result.push hours + ' hr' if hours is 1
+ result.push hours + ' hrs' if hours > 1
+ result.push minutes + ' min' if minutes > 0
+ result.push seconds + ' sec' if seconds > 0
+ if result.length > 0 then result.join(' ') else '-'
- _githubReferenceRegexp: new RegExp("([\\w-]+)?\\/?([\\w-]+)?(?:#|gh-)(\\d+)", 'g')
+githubify = (text, owner, repo) ->
+ self = this
+ text = text.replace @_githubReferenceRegexp, (reference, matchedOwner, matchedRepo, matchedNumber) ->
+ self._githubReferenceLink(reference, { owner: owner, repo: repo }, { owner: matchedOwner, repo: matchedRepo, number: matchedNumber } )
+ text = text.replace @_githubUserRegexp, (reference, username) ->
+ self._githubUserLink(reference, username)
+ text = text.replace @_githubCommitReferenceRegexp, (reference, matchedOwner, matchedRepo, matchedSHA) ->
+ self._githubCommitReferenceLink(reference, { owner: owner, repo: repo }, { owner: matchedOwner, repo: matchedRepo, sha: matchedSHA })
+ text
- _githubReferenceLink: (reference, current, matched) ->
- owner = matched.owner || current.owner
- repo = matched.repo || current.repo
- "#{reference}"
+_githubReferenceRegexp = new RegExp("([\\w-]+)?\\/?([\\w-]+)?(?:#|gh-)(\\d+)", 'g')
- _githubUserRegexp: new RegExp("\\B@([\\w-]+)", 'g')
+_githubReferenceLink = (reference, current, matched) ->
+ owner = matched.owner || current.owner
+ repo = matched.repo || current.repo
+ "#{reference}"
- _githubUserLink: (reference, username) ->
- "#{reference}"
+_githubUserRegexp = new RegExp("\\B@([\\w-]+)", 'g')
- _githubCommitReferenceRegexp: new RegExp("([\\w-]+)?\\/([\\w-]+)?@([0-9A-Fa-f]+)", 'g')
+_githubUserLink = (reference, username) ->
+ "#{reference}"
- _githubCommitReferenceLink: (reference, current, matched) ->
- owner = matched.owner || current.owner
- repo = matched.repo || current.repo
- url = "#{Travis.Urls.githubCommit("#{owner}/#{repo}", matched.sha)}"
- "#{reference}"
+_githubCommitReferenceRegexp = new RegExp("([\\w-]+)?\\/([\\w-]+)?@([0-9A-Fa-f]+)", 'g')
- _normalizeDateString: (string) ->
- if window.JHW
- string = string.replace('T', ' ').replace(/-/g, '/')
- string = string.replace('Z', '').replace(/\..*$/, '')
- string
+_githubCommitReferenceLink = (reference, current, matched) ->
+ owner = matched.owner || current.owner
+ repo = matched.repo || current.repo
+ url = "#{githubCommitUrl("#{owner}/#{repo}", matched.sha)}"
+ "#{reference}"
- _nowUtc: ->
- @_toUtc Travis.currentDate()
+_normalizeDateString = (string) ->
+ if window.JHW
+ string = string.replace('T', ' ').replace(/-/g, '/')
+ string = string.replace('Z', '').replace(/\..*$/, '')
+ string
- _toUtc: (date) ->
- Date.UTC date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()
+_nowUtc = ->
+ @_toUtc currentDate()
- _emojize: (text) ->
- emojis = text.match(/:\S+?:/g)
- if emojis isnt null
- $.each emojis.uniq(), (ix, emoji) ->
- strippedEmoji = emoji.substring(1, emoji.length - 1)
- unless EmojiDictionary.indexOf(strippedEmoji) is -1
- image = '
'
- text = text.replace(new RegExp(emoji, 'g'), image)
- text
+_toUtc = (date) ->
+ Date.UTC date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()
- _escape: (text) ->
- text.replace(/&/g, '&').replace(//g, '>'
+_emojize = (text) ->
+ emojis = text.match(/:\S+?:/g)
+ if emojis isnt null
+ emojis.uniq().each (emoji, ix) ->
+ strippedEmoji = emoji.substring(1, emoji.length - 1)
+ unless EmojiDictionary.indexOf(strippedEmoji) is -1
+ image = '
'
+ text = text.replace(new RegExp(emoji, 'g'), image)
+ text
- configKeys: (config) ->
- return [] unless config
- $.intersect($.keys(config), Object.keys(Travis.CONFIG_KEYS_MAP))
+_escape = (text) ->
+ text.replace(/&/g, '&').replace(//g, '>'
+
+configKeys = (config) ->
+ return [] unless config
+ intersect(Object.keys(config), Object.keys(config_keys_map))
+
+Travis.Helpers =
+ configKeys: configKeys
+ _escape: _escape
+ _emojize: _emojize
+ _toUtc: _toUtc
+ _nowUtc: _nowUtc
+ _normalizeDateString: _normalizeDateString
+ _githubCommitReferenceLink: _githubCommitReferenceLink
+ _githubCommitReferenceRegexp: _githubCommitReferenceRegexp
+ _githubUserLink: _githubUserLink
+ _githubUserRegexp: _githubUserRegexp
+ _githubReferenceLink: _githubReferenceLink
+ _githubReferenceRegexp: _githubReferenceRegexp
+ githubify: githubify
+ timeInWords: timeInWords
+ durationFrom: durationFrom
+ timeAgoInWords: timeAgoInWords
+ pathFrom: pathFrom
+ formatMessage: formatMessage
+ formatConfig: formatConfig
+ formatSha: formatSha
+ formatCommit: formatCommit
+ colorForState: colorForState
+ safe: safe
+ compact: compact