Skip to content

Instantly share code, notes, and snippets.

@metaquanta
Last active July 6, 2017 09:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save metaquanta/eb26bde53c9356d23a6337af8c9ee862 to your computer and use it in GitHub Desktop.
Save metaquanta/eb26bde53c9356d23a6337af8c9ee862 to your computer and use it in GitHub Desktop.
load chrome search engines snippet (WiP/RIP/old Chrome only)
(function() {
const mySearchEngines =
{
'domain': SEARCH_DOMAIN,
'engines': [
{
'keyword': 'maps.google.com',
'name': 'Maps',
'url': 'https://www.google.com/maps/search/%s',
},
{
'keyword': 'wikipedia',
'name': 'Wikipedia',
'url': 'https://en.wikipedia.org/w/index.php?search=%s',
},
{
'keyword': 'alpha',
'name': 'WolframAlpha',
'url': 'https://www.wolframalpha.com/input/?i=%s',
},
{
'url':
'https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=%s',
},
{
'url':
'https://scholar.google.com/scholar?hl=en&q=%s',
},
{
'keyword': 'b',
'url': 'chrome://bookmarks/?#q=%s',
},
{
'keyword': 'h',
'url': 'chrome://history/?#q=%s',
},
{'url': 'https://github.com/search?q=%s'}
]
}
function defaultKeyword(url) {
const searchDomain = mySearchEngines.domain;
_stripDomain = (string, domain) =>
(string.indexOf(searchDomain) ==
(string.length - searchDomain.length)) ?
string.slice(0, -searchDomain.length - 1) :
string;
_stripWww = (string) =>
(string.indexOf('www') == 0) ? string.slice(3) : string
return _stripWww(_stripDomain(
new URL(url).hostname, mySearchEngines['domain']));
}
function build(eng) {
console.log(eng)
return {
...{
canBeDefault: true,
canBeEdited: false,
canBeRemoved: false,
default: false,
isOmniboxExtension: false,
urlLocked: false,
get displayName() {
return this.name
},
get name() {
return eng.keyword.split('.')[0]
}
},
...eng
};
}
function iterator(engines) {
return (function* () {
for (const engine of engines) {
if (engine.keyword) {
for (const keyword of (engine.keyword instanceof Array) ?
engine.keyword :
[engine.keyword]) {
yield build({...engine, ...{keyword}});
}
} else {
const lastKeyword = defaultKeyword(engine.url);
const opts = {...engine, ...{keyword: lastKeyword}}
yield build({...engine, ...{keyword: lastKeyword}});
}
}
})();
}
arr = Array.from(iterator(mySearchEngines.engines));
console.log(arr)
// const semInst = SearchEngineManager.getInstance();
// SearchEngineManager.updateSearchEngineList(
// sem.defaultsList_.dataModel_.array_,
// myEngines,
// sem.extensionList_.dataModel_.array_);
})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment