diff --git a/assets/scripts/app/helpers/handlebars.coffee b/assets/scripts/app/helpers/handlebars.coffee index f6fbf3f2..8dfda033 100644 --- a/assets/scripts/app/helpers/handlebars.coffee +++ b/assets/scripts/app/helpers/handlebars.coffee @@ -28,8 +28,8 @@ Ember.registerBoundHelper 'formatSha', (sha, options) -> Ember.registerBoundHelper 'pathFrom', (url, options) -> safe Travis.Helpers.pathFrom(url) -Ember.registerBoundHelper 'formatMessage', (message, options) -> - safe Travis.Helpers.formatMessage(message, options) +Ember.Handlebars.helper 'formatMessage', (message, options) -> + safe Travis.Helpers.formatMessage(message, options.hash) Ember.registerBoundHelper 'formatConfig', (config, options) -> safe Travis.Helpers.formatConfig(config) diff --git a/assets/scripts/app/helpers/helpers.coffee b/assets/scripts/app/helpers/helpers.coffee index 2b68dbd4..0fd8a46e 100644 --- a/assets/scripts/app/helpers/helpers.coffee +++ b/assets/scripts/app/helpers/helpers.coffee @@ -37,7 +37,10 @@ require 'config/emoij' formatMessage: (message, options) -> message = message || '' message = message.split(/\n/)[0] if options.short - @_emojize(@_escape(message)).replace /\n/g, '
' + message = @_emojize(@_escape(message)) + if !!options.repo + message = @githubify(message, options.repo.get('owner'), options.repo.get('name')) + message.replace /\n/g, '
' pathFrom: (url) -> (url || '').split('/').pop() @@ -66,6 +69,26 @@ require 'config/emoij' result.push seconds + ' sec' if seconds > 0 if result.length > 0 then result.join(' ') else '-' + githubify: (text, owner, repo) -> + refferences = text.match(@_githubRefferenceRegexp('g')) + if !!refferences + self = this + for refference in refferences + do (refference) -> + text = text.replace refference, (refference) -> + self._githubRefferenceLink(refference, owner, repo) + + text + + _githubRefferenceLink: (refference, owner, repo) -> + [newOwner, newRepo, issue] = refference.match(@_githubRefferenceRegexp())[1..3] + actualOwner = if newOwner? then newOwner else owner + actualRepo = if newRepo? then newRepo else repo + "#{refference}" + + _githubRefferenceRegexp: (flags) -> + new RegExp("([\\w-]+)?\\/?([\\w-]+)?#(\\d+)", flags) + _normalizeDateString: (string) -> if window.JHW string = string.replace('T', ' ').replace(/-/g, '/') diff --git a/assets/scripts/app/templates/builds/list.hbs b/assets/scripts/app/templates/builds/list.hbs index 41e7a038..cbedfa5e 100644 --- a/assets/scripts/app/templates/builds/list.hbs +++ b/assets/scripts/app/templates/builds/list.hbs @@ -32,7 +32,7 @@ {{/if}} - {{{formatMessage commit.message short="true"}}} + {{{formatMessage commit.message short="true" repoBinding=build.repo}}} diff --git a/assets/scripts/app/templates/builds/show.hbs b/assets/scripts/app/templates/builds/show.hbs index 302ba6a1..282c44d1 100644 --- a/assets/scripts/app/templates/builds/show.hbs +++ b/assets/scripts/app/templates/builds/show.hbs @@ -45,7 +45,7 @@ {{/with}}
{{t builds.message}}
-
{{formatMessage build.commit.message}}
+
{{formatMessage build.commit.message repoBinding=build.repo}}
{{#unless isMatrix}}
{{t builds.config}}
diff --git a/assets/scripts/app/templates/jobs/show.hbs b/assets/scripts/app/templates/jobs/show.hbs index 79558480..fd233cc2 100644 --- a/assets/scripts/app/templates/jobs/show.hbs +++ b/assets/scripts/app/templates/jobs/show.hbs @@ -43,7 +43,7 @@ {{/with}}
{{t jobs.message}}
-
{{formatMessage job.commit.message}}
+
{{formatMessage job.commit.message repoBinding=job.repo}}
{{t jobs.config}}
{{formatConfig job.config}}
diff --git a/assets/scripts/spec/unit/helpers_spec.coffee b/assets/scripts/spec/unit/helpers_spec.coffee new file mode 100644 index 00000000..1a5eea80 --- /dev/null +++ b/assets/scripts/spec/unit/helpers_spec.coffee @@ -0,0 +1,31 @@ +module "Travis.Helpers.githubify" + +test 'replaces #Num with github issues link', -> + message = 'Solved #11hey' + result = Travis.Helpers.githubify(message, 'travis-ci', 'travis-web') + expected = 'Solved
#11hey' + + equal(result, expected, "#num should be converted to a link") + +test 'replaces User#Num with github issues link to forked repo', -> + message = 'Solved test#11hey' + result = Travis.Helpers.githubify(message, 'travis-ci', 'travis-web') + expected = 'Solved test#11hey' + + equal(result, expected, "user#num should be converted to a link") + +test 'replaces User#Num with github issues link to another repo', -> + message = 'Solved test/testing#11hey' + result = Travis.Helpers.githubify(message, 'travis-ci', 'travis-web') + expected = 'Solved test/testing#11hey' + + equal(result, expected, "owner/repo#num should be converted to a link") + +test 'replaces multiple refferences with github issues links', -> + message = 'Try #1 and test#2 and test/testing#3' + result = Travis.Helpers.githubify(message, 'travis-ci', 'travis-web') + expected = 'Try #1 and ' + expected += 'test#2 and ' + expected += 'test/testing#3' + + equal(result, expected, "references should be converted to links")