refactor: add utility functions
This commit is contained in:
parent
04e769ea90
commit
983a7e3bdd
51
lib/functions.ts
Normal file
51
lib/functions.ts
Normal file
@ -0,0 +1,51 @@
|
||||
import { readFileSync } from "fs";
|
||||
import { resolve } from "path";
|
||||
// import chardet from "chardet";
|
||||
// import iconv from "iconv-lite";
|
||||
import { GridFSBucketReadStream } from "mongodb";
|
||||
import { stripHtml } from "string-strip-html";
|
||||
import { IStory } from "~/models/stories";
|
||||
import { ficsHidden } from "./server/ficmas";
|
||||
|
||||
// const { encode, decode } = iconv;
|
||||
|
||||
export function countWords(string: string) {
|
||||
return stripHtml(string).result.split(/W+/).length;
|
||||
}
|
||||
|
||||
export function populate(field: string) {
|
||||
return function (next: () => any) {
|
||||
this.populate(field);
|
||||
next();
|
||||
};
|
||||
}
|
||||
export function populateSelected(field: string, selection: string) {
|
||||
return function (next: () => any) {
|
||||
this.populate(field, selection);
|
||||
next();
|
||||
};
|
||||
}
|
||||
|
||||
export function isFicmasHidden(story: IStory): boolean {
|
||||
return (
|
||||
(story.ficmas.year == new Date().getFullYear() &&
|
||||
story.ficmas.anniversary &&
|
||||
new Date() < new Date(Date.parse("Aug 1 " + new Date().getFullYear()))) ||
|
||||
(story.ficmas.year == new Date().getFullYear() &&
|
||||
!story.ficmas.anniversary &&
|
||||
ficsHidden(Date.now()))
|
||||
);
|
||||
}
|
||||
|
||||
export function stringifyStream(
|
||||
stream: GridFSBucketReadStream,
|
||||
): Promise<string> {
|
||||
let chunks: Buffer[] = [];
|
||||
return new Promise((res, rej) => {
|
||||
stream.on("data", (c) => chunks.push(Buffer.from(c)));
|
||||
stream.on("error", (err) => {
|
||||
rej(err);
|
||||
});
|
||||
stream.on("end", () => res(Buffer.concat(chunks).toString("utf-8")));
|
||||
});
|
||||
}
|
Loading…
Reference in New Issue
Block a user