/*global Autolinker */ /** * @class Autolinker.match.Hashtag * @extends Autolinker.match.Match * * Represents a Hashtag match found in an input string which should be * Autolinked. * * See this class's superclass ({@link Autolinker.match.Match}) for more * details. */ Autolinker.match.Hashtag = Autolinker.Util.extend( Autolinker.match.Match, { /** * @cfg {String} serviceName (required) * * The service to point hashtag matches to. See {@link Autolinker#hashtag} * for available values. */ /** * @cfg {String} hashtag (required) * * The Hashtag that was matched, without the '#'. */ /** * Returns the type of match that this class represents. * * @return {String} */ getType : function() { return 'hashtag'; }, /** * Returns the matched hashtag. * * @return {String} */ getHashtag : function() { return this.hashtag; }, /** * Returns the anchor href that should be generated for the match. * * @return {String} */ getAnchorHref : function() { var serviceName = this.serviceName, hashtag = this.hashtag; switch( serviceName ) { case 'twitter' : return 'https://twitter.com/hashtag/' + hashtag; case 'facebook' : return 'https://www.facebook.com/hashtag/' + hashtag; case 'instagram' : return 'https://instagram.com/explore/tags/' + hashtag; default : // Shouldn't happen because Autolinker's constructor should block any invalid values, but just in case. throw new Error( 'Unknown service name to point hashtag to: ', serviceName ); } }, /** * Returns the anchor text that should be generated for the match. * * @return {String} */ getAnchorText : function() { return '#' + this.hashtag; } } );