Refactor Travis.Helpers to prepare it for ES6 modules

In order to make it easy to switch to ember-cli I'm starting changing a series
of refactorings that will prepare the codebase to the switch. Here I'm:

1. Assign all of the external objects and functions to variables in order to
   make it easy to change them to imports in the feature
2. Extract functions from Travis.Helpers into local functions and create the
   object at the end of file to prepare it for exporting
This commit is contained in:
Piotr Sarnacki 2015-01-14 12:55:17 +01:00
parent 2b86e93d13
commit ec8d93f8cf

View File

@ -1,40 +1,49 @@
require 'config/emoij'
@Travis.Helpers =
COLORS:
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
colors = {
default: 'yellow'
passed: 'green'
failed: 'red'
errored: 'gray'
canceled: 'gray'
}
compact: (object) ->
compact = (object) ->
result = {}
(result[key] = value unless $.isEmpty(value)) for key, value of object || {}
(result[key] = value unless Ember.isEmpty(value)) for key, value of object || {}
result
safe: (string) ->
new Handlebars.SafeString(string)
safe = (string) ->
new Ember.Handlebars.SafeString(string)
colorForState: (state) ->
Travis.Helpers.COLORS[state] || Travis.Helpers.COLORS['default']
colorForState = (state) ->
colors[state] || colors['default']
formatCommit: (sha, branch) ->
Travis.Helpers.formatSha(sha) + if branch then " (#{branch})" else ''
formatCommit = (sha, branch) ->
formatSha(sha) + if branch then " (#{branch})" else ''
formatSha: (sha) ->
formatSha = (sha) ->
(sha || '').substr(0, 7)
formatConfig: (config) ->
config = $.only config, Object.keys(Travis.CONFIG_KEYS_MAP)
values = $.map config, (value, key) ->
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 Travis.CONFIG_KEYS_MAP[key], value
'%@: %@'.fmt config_keys_map[key], value
if values.length == 0 then '-' else values.join(', ')
formatMessage: (message, options) ->
formatMessage = (message, options) ->
message = message || ''
message = message.split(/\n/)[0] if options.short
message = @_emojize(@_escape(message))
@ -44,18 +53,18 @@ require 'config/emoij'
message = message.replace /\n/g, '<br/>'
message
pathFrom: (url) ->
pathFrom = (url) ->
(url || '').split('/').pop()
timeAgoInWords: (date) ->
$.timeago.distanceInWords date
timeAgoInWords = (date) ->
timeago.distanceInWords date
durationFrom: (started, finished) ->
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
timeInWords: (duration) ->
timeInWords = (duration) ->
days = Math.floor(duration / 86400)
hours = Math.floor(duration % 86400 / 3600)
minutes = Math.floor(duration % 3600 / 60)
@ -71,7 +80,7 @@ require 'config/emoij'
result.push seconds + ' sec' if seconds > 0
if result.length > 0 then result.join(' ') else '-'
githubify: (text, owner, repo) ->
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 } )
@ -81,51 +90,77 @@ require 'config/emoij'
self._githubCommitReferenceLink(reference, { owner: owner, repo: repo }, { owner: matchedOwner, repo: matchedRepo, sha: matchedSHA })
text
_githubReferenceRegexp: new RegExp("([\\w-]+)?\\/?([\\w-]+)?(?:#|gh-)(\\d+)", 'g')
_githubReferenceRegexp = new RegExp("([\\w-]+)?\\/?([\\w-]+)?(?:#|gh-)(\\d+)", 'g')
_githubReferenceLink: (reference, current, matched) ->
_githubReferenceLink = (reference, current, matched) ->
owner = matched.owner || current.owner
repo = matched.repo || current.repo
"<a href=\"#{Travis.config.source_endpoint}/#{owner}/#{repo}/issues/#{matched.number}\">#{reference}</a>"
"<a href=\"#{config.source_endpoint}/#{owner}/#{repo}/issues/#{matched.number}\">#{reference}</a>"
_githubUserRegexp: new RegExp("\\B@([\\w-]+)", 'g')
_githubUserRegexp = new RegExp("\\B@([\\w-]+)", 'g')
_githubUserLink: (reference, username) ->
"<a href=\"#{Travis.config.source_endpoint}/#{username}\">#{reference}</a>"
_githubUserLink = (reference, username) ->
"<a href=\"#{config.source_endpoint}/#{username}\">#{reference}</a>"
_githubCommitReferenceRegexp: new RegExp("([\\w-]+)?\\/([\\w-]+)?@([0-9A-Fa-f]+)", 'g')
_githubCommitReferenceRegexp = new RegExp("([\\w-]+)?\\/([\\w-]+)?@([0-9A-Fa-f]+)", 'g')
_githubCommitReferenceLink: (reference, current, matched) ->
_githubCommitReferenceLink = (reference, current, matched) ->
owner = matched.owner || current.owner
repo = matched.repo || current.repo
url = "#{Travis.Urls.githubCommit("#{owner}/#{repo}", matched.sha)}"
url = "#{githubCommitUrl("#{owner}/#{repo}", matched.sha)}"
"<a href=\"#{url}\">#{reference}</a>"
_normalizeDateString: (string) ->
_normalizeDateString = (string) ->
if window.JHW
string = string.replace('T', ' ').replace(/-/g, '/')
string = string.replace('Z', '').replace(/\..*$/, '')
string
_nowUtc: ->
@_toUtc Travis.currentDate()
_nowUtc = ->
@_toUtc currentDate()
_toUtc: (date) ->
_toUtc = (date) ->
Date.UTC date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()
_emojize: (text) ->
_emojize = (text) ->
emojis = text.match(/:\S+?:/g)
if emojis isnt null
$.each emojis.uniq(), (ix, emoji) ->
emojis.uniq().each (emoji, ix) ->
strippedEmoji = emoji.substring(1, emoji.length - 1)
unless EmojiDictionary.indexOf(strippedEmoji) is -1
image = '<img class=\'emoji\' title=\'' + emoji + '\' alt=\'' + emoji + '\' src=\'' + '/images/emoji/' + strippedEmoji + '.png\'/>'
text = text.replace(new RegExp(emoji, 'g'), image)
text
_escape: (text) ->
_escape = (text) ->
text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace />/g, '&gt;'
configKeys: (config) ->
configKeys = (config) ->
return [] unless config
$.intersect($.keys(config), Object.keys(Travis.CONFIG_KEYS_MAP))
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