Skip to content

Instantly share code, notes, and snippets.

@sufiiiyan
Forked from rishabhmhjn/tweetLinky.js
Last active April 7, 2020 07:07
Show Gist options
  • Save sufiiiyan/9c0ee0503190b23275f7540caf093be0 to your computer and use it in GitHub Desktop.
Save sufiiiyan/9c0ee0503190b23275f7540caf093be0 to your computer and use it in GitHub Desktop.
This is an AngularJS filter to linkify #hashtags and @mention texts into respective Twitter URLsDemo - http://plnkr.co/edit/vrdgxU?p=preview
app.filter('hashtags',['$filter', '$sce',
function($filter, $sce) {
return function(text, target, type) {
if (!text) return text;
var replacedText = $filter('linky')(text, target);
var targetAttr = "";
if (angular.isDefined(target)) {
targetAttr = ' target="' + target + '"';
}
if(type === 'twitter'){
// replace #hashtags and send them to twitter
var replacePattern1 = /(^|\s)#(\w*[a-zA-Z_]+\w*)/gim;
replacedText = text.replace(replacePattern1, '$1<a class="hashtag" href="https://twitter.com/search?q=%23$2"' + targetAttr + '>#$2</a>');
// replace @mentions but keep them to our site
var replacePattern2 = /(^|\s)\@(\w*[a-zA-Z_]+\w*)/gim;
replacedText = replacedText.replace(replacePattern2, '$1<a class="hashtag" href="https://twitter.com/$2"' + targetAttr + '>@$2</a>');
} else if(type === 'facebook'){
// replace #hashtags and send them to facebook
var replacePattern1 = /(^|\s)#(\w*[a-zA-Z_]+\w*)/gim;
replacedText = text.replace(replacePattern1, '$1<a class="hashtag" href="https://facebook.com/hashtag/$2"' + targetAttr + '>#$2</a>');
}
$sce.trustAsHtml(replacedText);
return replacedText;
};
}
var app = angular.module('tLinky', ['ngSanitize']);
app.filter('tweetLinky',['$filter', '$sce',
function($filter, $sce) {
return function(text, target) {
if (!text) return text;
var replacedText = $filter('linky')(text, target);
var targetAttr = "";
if (angular.isDefined(target)) {
targetAttr = ' target="' + target + '"';
}
// replace #hashtags
var replacePattern1 = /(^|\s)#(\w*[a-zA-Z_]+\w*)/gim;
replacedText = replacedText.replace(replacePattern1, '$1<a href="https://twitter.com/search?q=%23$2"' + targetAttr + '>#$2</a>');
// replace @mentions
var replacePattern2 = /(^|\s)\@(\w*[a-zA-Z_]+\w*)/gim;
replacedText = replacedText.replace(replacePattern2, '$1<a href="https://twitter.com/$2"' + targetAttr + '>@$2</a>');
$sce.trustAsHtml(replacedText);
return replacedText;
};
}
]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment