diff --git a/test/tests.js b/test/tests.js index abb25d1..1cc77d2 100644 --- a/test/tests.js +++ b/test/tests.js @@ -46,4 +46,18 @@ test("twttr.txt.autolink", function() { ok(twttr.txt.autoLink("#hi", { hash: "!" }).match(/]+>!hi<\/a>/), "Override hash"); ok(twttr.txt.autoLink("#hi", { preText: "" }).match(/]+>#hi<\/a>/), "Override preText"); ok(twttr.txt.autoLink("#hi", { postText: "" }).match(/]+>#hi<\/b><\/a>/), "Override postText"); -}); \ No newline at end of file + + // url entities + ok(twttr.txt.autoLink("http://t.co/0JG5Mcq", { + urlEntities: [{ + "url": "http://t.co/0JG5Mcq", + "display_url": "blog.twitter.com/2011/05/twitte…", + "expanded_url": "http://blog.twitter.com/2011/05/twitter-for-mac-update.html", + "indices": [ + 84, + 103 + ] + }] + }).match(/]+>blog.twitter.com\/2011\/05\/twitte…<\/a>/), 'Use display url from url entities'); + +}); diff --git a/twitter-text.js b/twitter-text.js index 8382902..3d18b27 100644 --- a/twitter-text.js +++ b/twitter-text.js @@ -408,6 +408,15 @@ if (!window.twttr) { delete options.urlClass; } + // remap url entities to hash + var urlEntities, i, len; + if(options.urlEntities) { + urlEntities = {}; + for(i = 0, len = options.urlEntities.length; i < len; i++) { + urlEntities[options.urlEntities[i].url] = options.urlEntities[i]; + } + } + delete options.suppressNoFollow; delete options.suppressDataScreenName; delete options.listClass; @@ -427,7 +436,7 @@ if (!window.twttr) { var d = { before: before, htmlAttrs: htmlAttrs, - url: twttr.txt.htmlEscape(url) + url: twttr.txt.htmlEscape((urlEntities && (url in urlEntities)) ? urlEntities[url].display_url : url ) }; return stringSupplant("#{before}#{url}", d);