export function linkifyHashtags (text, slug) { // this takes plain text and returns html. // It makes links out of hashtags but ignores urls return linkifyString(text, merge(linkifyjsOptions(slug), { validate: (value, type) => type === 'hashtag' })) }
request.onload = function() { var parent = document.getElementById("textBox"); parent.innerHTML = ''; var data = JSON.parse(request.responseText); for (var i = 0; i < data.length; i++) { var chatOutput = document.createElement('p'); chatOutput.textContent = data[i]; parent.appendChild(chatOutput).innerHTML = moment(data[i].when).format('LT') + ' [' + data[i].user.toUpperCase() + '] ' + linkifyStr(data[i].message); } //end for console.log(data[i]); };
function tranformElementValue(ev) { /* If a string, `ev` is prepared for display by linking urls and cleaning certain persona identifiers. */ // regexp pattern to replace identifiers: 'Reviewer1234' with 'Reviewer' const personaPattern = /(Reviewer|Researcher)\d+/ let transformedValue = ev || null if (_.isString(transformedValue)) { transformedValue = transformedValue.replace(personaPattern, '$1') transformedValue = new Handlebars.SafeString(linkifyStr(transformedValue, linkifyOptions)) } return transformedValue }
node.contents().map((i, el) => { if (el.type === 'text') return linkifyString(el.data, linkifyjsOptions(slug)) if (el.name === 'br') return $.html(el) if (el.name === 'a') return cleanupLink($, el, slug) return recurse($, el, run) }).get().join('')
getRows: function(filter) { var BaseAvatar = sdk.getComponent('avatars.BaseAvatar'); if (!this.state.publicRooms) return []; var rooms = this.state.publicRooms.filter(function(a) { // FIXME: if incrementally typing, keep narrowing down the search set // incrementally rather than starting over each time. return (((a.name && a.name.toLowerCase().search(filter.toLowerCase()) >= 0) || (a.aliases && a.aliases[0].toLowerCase().search(filter.toLowerCase()) >= 0)) && a.num_joined_members > 0); }).sort(function(a,b) { return a.num_joined_members - b.num_joined_members; }); var rows = []; var self = this; var guestRead, guestJoin, perms; for (var i = 0; i < rooms.length; i++) { var alias = rooms[i].canonical_alias || (rooms[i].aliases ? rooms[i].aliases[0] : ""); var name = rooms[i].name || alias || "Unnamed room"; guestRead = null; guestJoin = null; if (rooms[i].world_readable) { guestRead = ( <div className="mx_RoomDirectory_perm">World readable</div> ); } if (rooms[i].guest_can_join) { guestJoin = ( <div className="mx_RoomDirectory_perm">Guests can join</div> ); } perms = null; if (guestRead || guestJoin) { perms = <div className="mx_RoomDirectory_perms">{guestRead} {guestJoin}</div>; } var topic = rooms[i].topic || ''; topic = linkifyString(sanitizeHtml(topic)); rows.unshift( <tr key={ rooms[i].room_id } onClick={self.showRoom.bind(null, rooms[i].room_id)}> <td className="mx_RoomDirectory_roomAvatar"> <BaseAvatar width={24} height={24} resizeMethod='crop' name={ name } idName={ name } url={ ContentRepo.getHttpUriForMxc( MatrixClientPeg.get().getHomeserverUrl(), rooms[i].avatar_url, 24, 24, "crop") } /> </td> <td className="mx_RoomDirectory_roomDescription"> <div className="mx_RoomDirectory_name">{ name }</div> { perms } <div className="mx_RoomDirectory_topic" onClick={ function(e) { e.stopPropagation() } } dangerouslySetInnerHTML={{ __html: topic }}/> <div className="mx_RoomDirectory_alias">{ alias }</div> </td> <td className="mx_RoomDirectory_roomMemberCount"> { rooms[i].num_joined_members } </td> </tr> ); } return rows; },
enhancedContent: function () { return linkifyStr((this.content || '')) },