diff --git a/app/assets/javascripts/discourse/lib/formatter.js b/app/assets/javascripts/discourse/lib/formatter.js index 337a81f8d..8449fa23b 100644 --- a/app/assets/javascripts/discourse/lib/formatter.js +++ b/app/assets/javascripts/discourse/lib/formatter.js @@ -1,8 +1,10 @@ +/* global BreakString:true */ + var updateRelativeAge, autoUpdatingRelativeAge, relativeAge, relativeAgeTiny, relativeAgeMedium, relativeAgeMediumSpan, longDate, toTitleCase, - shortDate, shortDateNoYear, tinyDateYear, breakUp, relativeAgeTinyShowsYear; + shortDate, shortDateNoYear, tinyDateYear, relativeAgeTinyShowsYear; - /* +/* * memoize.js * by @philogb and @addyosmani * with further optimizations by @mathias @@ -44,50 +46,9 @@ var cappedMemoize = function ( fn, max ) { }; }; -breakUp = function(str, hint){ - var rval = []; - var prev = str[0]; - var cur; - var brk = "​"; - - var hintPos = []; - if(hint) { - hint = hint.toLowerCase().split(/\s+/).reverse(); - var current = 0; - while(hint.length > 0) { - var word = hint.pop(); - if(word !== str.substr(current, word.length).toLowerCase()) { - break; - } - current += word.length; - hintPos.push(current); - } - } - - rval.push(prev); - for (var i=1;i1 && prev.match(/[A-Z]/) && cur.match(/[a-z]/)){ - rval.pop(); - rval.push(brk); - rval.push(prev); - } else if(prev.match(/[^A-Za-z0-9]/) && cur.match(/[a-zA-Z0-9]/)){ - rval.push(brk); - } else if(hintPos.indexOf(i) > -1) { - rval.push(brk); - } - - rval.push(cur); - prev = cur; - } - - return rval.join(""); - -}; - -breakUp = cappedMemoize(breakUp, 100); +var breakUp = cappedMemoize(function(str, hint){ + return new BreakString(str).break(hint); +}, 100); shortDate = function(date){ return moment(date).format(I18n.t("dates.medium.date_year")); diff --git a/app/assets/javascripts/vendor.js b/app/assets/javascripts/vendor.js index e796c68b5..ed06b8772 100644 --- a/app/assets/javascripts/vendor.js +++ b/app/assets/javascripts/vendor.js @@ -38,3 +38,4 @@ //= require show-html.js //= require lock-on.js //= require ember-cloaking +//= require break_string diff --git a/app/views/layouts/embed.html.erb b/app/views/layouts/embed.html.erb index 31c44425a..d66a7f6d2 100644 --- a/app/views/layouts/embed.html.erb +++ b/app/views/layouts/embed.html.erb @@ -2,6 +2,7 @@ <%= stylesheet_link_tag 'embed' %> + <%= javascript_include_tag 'break_string' %>