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