/
web-search-builder.ts
33 lines (27 loc) · 1.28 KB
/
web-search-builder.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import { WebSearch } from "../web-search";
import { WebSearchHelpers } from "../helpers/web-search-helper";
import { SearchResultItem } from "../search-result-item";
export class WebSearchBuilder {
public static buildSearchTerm(userInput: string, webSearch: WebSearch): string {
return userInput.replace(`${webSearch.prefix}${WebSearchHelpers.webSearchSeparator}`, "");
}
public static buildExecutionUrl(userInput: string, webSearch: WebSearch): string {
const searchTerm = this.buildSearchTerm(userInput, webSearch);
return `${webSearch.url}${searchTerm.trim()}`;
}
public static buildSearchResultItem(userInput: string, webSearch: WebSearch): SearchResultItem {
const searchTerm = WebSearchBuilder.buildSearchTerm(userInput, webSearch);
const searchResultItemName = searchTerm.length > 0
? `Search ${webSearch.name} for '${searchTerm.trim()}'`
: `Search ${webSearch.name}`;
const executionArgument = WebSearchBuilder.buildExecutionUrl(userInput, webSearch);
return {
description: executionArgument,
executionArgument,
icon: webSearch.icon,
name: searchResultItemName,
searchable: [],
tags: [],
} as SearchResultItem;
}
}