!function(mod){"object"==typeof exports&&"object"==typeof module?mod(require("../lib/infer"),require("../lib/tern"),require("acorn-walk")):"function"==typeof define&&define.amd?define(["../lib/infer","../lib/tern","acorn-walk/dist/walk"],mod):mod(tern,tern,acorn.walk)}(function(infer,tern,walk){"use strict";function postParse(ast){var data=infer.cx().parent.mod.completeStrings;walk.simple(ast,{Literal:function(node){"string"==typeof node.value&&node.value&&node.value.lengthbefore.length&&0==str.indexOf(before))if(query.types||query.docs||query.urls||query.origins){var rec={name:JSON.stringify(str),displayName:str};matches.push(rec),query.types&&(rec.type="string"),query.origins&&(rec.origin=seen[str])}else matches.push(JSON.stringify(str));return matches.length?{start:tern.outputPos(query,file,lit.node.start),end:tern.outputPos(query,file,pos+(file.text.charAt(pos)==file.text.charAt(lit.node.start)?1:0)),isProperty:!1,completions:matches}:void 0}}tern.registerPlugin("complete_strings",function(server,options){server.mod.completeStrings={maxLen:options&&options.maxLength||15,seen:Object.create(null)},server.on("reset",function(){server.mod.completeStrings.seen=Object.create(null)}),server.on("postParse",postParse),server.on("completion",complete)})});