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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user