/mstdn2birdsite_wo_btnm_truncation.ts
Forked from nullkal/mstdn2birdsite_wo_btnm.ts
Last active Jan 8, 2018
Mastodon2Twitter without boost and reply. Truncation strings.
/* | |
* mstdn2birdsite.ts - The filter code of "Mastodon → Twitter" | |
* Written in 2017 by nullkal <nullkal@nil.nu> | |
* | |
* To the extent possible under law, the author(s) have dedicated all copyright | |
* and related and neighboring rights to this software to the public domain | |
* worldwide. This software is distributed without any warranty. | |
* You should have received a copy of the CC0 Public Domain Dedication along | |
* with this software. If not, see | |
* <http://creativecommons.org/publicdomain/zero/1.0/>. | |
*/ | |
type HandleFunc = (match: Array<string>) => string; | |
interface Handler { | |
pattern: RegExp; | |
func: HandleFunc; | |
}; | |
class FeedFilter { | |
private handlers: Handler[]; | |
constructor() { | |
this.handlers = []; | |
} | |
public addHandler(pattern: RegExp, func: HandleFunc) { | |
this.handlers.push({ pattern, func }); | |
} | |
public exec() { | |
for (const i in this.handlers) { | |
const handler = this.handlers[i]; | |
const match = handler.pattern.exec(Feed.newFeedItem.EntryTitle); | |
if (match !== null) { | |
Twitter.postNewTweet.setTweet(handler.func(match)); | |
return; | |
} | |
} | |
Twitter.postNewTweet.skip(); | |
} | |
}; | |
function formatContent(content: string) { | |
var str = content | |
.replace(/<br\s*\/?>/g, "\n") | |
.replace(/<.*?>/g, ''); | |
// Truncation | |
if(str.length > 116){ | |
content = str.slice(0,114) + '……'; | |
}else{ | |
content = str; | |
} | |
return content; | |
} | |
/* | |
function formatContent(content: string) { | |
return content | |
.replace(/<br:\s*\/?>/g, "\n") | |
.replace(/<.*?>/g, ''); | |
} | |
*/ | |
let f = new FeedFilter(); | |
f.addHandler(/^New status by /, (match) => { | |
const content = formatContent(Feed.newFeedItem.EntryContent); | |
const url = Feed.newFeedItem.EntryUrl; | |
if (/((?:[^\w]|^)[@@])(\w+)/.test(content)) { | |
Twitter.postNewTweet.skip(); | |
} | |
return `${content} ${url}`; | |
}); | |
/*f.addHandler( | |
/^\w+ shared a status by (\w+(?:@[a-z0-9\.\-]+[a-z0-9]+))/, | |
(match) => { | |
const originalPoster = Feed.newFeedItem.EntryUrl; | |
const content = formatContent(Feed.newFeedItem.EntryContent); | |
return `BT ${originalPoster}\n${content}`; | |
} | |
);*/ | |
f.exec(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment