From e8ee490778b23998053e77ac9622fde00e62bb5d Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Thu, 20 Mar 2014 14:34:51 -0400 Subject: [PATCH] Extract breaking up a string into a separate file, include it in embedded view. --- .../javascripts/discourse/lib/formatter.js | 53 +++--------------- app/assets/javascripts/vendor.js | 1 + app/views/layouts/embed.html.erb | 11 ++++ vendor/assets/javascripts/break_string.js | 54 +++++++++++++++++++ 4 files changed, 73 insertions(+), 46 deletions(-) create mode 100644 vendor/assets/javascripts/break_string.js diff --git a/app/assets/javascripts/discourse/lib/formatter.js b/app/assets/javascripts/discourse/lib/formatter.js index 337a81f8dd2a5..8449fa23b23b2 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 e796c68b50df3..ed06b87727f69 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 31c44425a2777..d66a7f6d2785c 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' %>