/** * Copyright (c) 2013-2016 Angelo ZERR. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation */ package tern.server.protocol.completions; import tern.server.protocol.JsonHelper; import tern.server.protocol.TernQuery; /** * Tern completion query. * * <cite> Asks the server for a set of completions at the given point. </cite> * * @see http://ternjs.net/doc/manual.html#req_completions */ public class TernCompletionsQuery extends TernQuery { private static final long serialVersionUID = 1L; private static final String COMPLETIONS_TYPE_QUERY = "completions"; private static final String TYPES_FIELD_NAME = "types"; private static final String DOCS_FIELD_NAME = "docs"; private static final String URLS_FIELD_NAME = "urls"; private static final String ORIGINS_FIELD_NAME = "origins"; private static final String CASEINSENSITIVE_FIELD_NAME = "caseInsensitive"; private static final String EXPANDWORDFORWARD_FIELD_NAME = "expandWordForward"; private static final String OMIT_OBJECT_PROTOTYPE_FIELD_NAME = "omitObjectPrototype"; private static final String GUESS_FIELD_NAME = "guess"; public TernCompletionsQuery(String file, Integer pos) { super(COMPLETIONS_TYPE_QUERY); setFile(file); setEnd(pos); } /** * Whether to include the types of the completions in the result data. * * @param types */ public void setTypes(boolean types) { super.add(TYPES_FIELD_NAME, types); } /** * Whether to include the types of the completions in the result data. * * @return */ public boolean isTypes() { return JsonHelper.getBoolean(this, TYPES_FIELD_NAME, false); } public void setDocs(boolean docs) { super.add(DOCS_FIELD_NAME, docs); } public boolean isDocs() { return JsonHelper.getBoolean(this, DOCS_FIELD_NAME, false); } public void setUrls(boolean urls) { super.add(URLS_FIELD_NAME, urls); } public boolean isUrls() { return JsonHelper.getBoolean(this, URLS_FIELD_NAME, false); } public void setOrigins(boolean origins) { super.add(ORIGINS_FIELD_NAME, origins); } public boolean isOrigins() { return JsonHelper.getBoolean(this, ORIGINS_FIELD_NAME, false); } /** * Whether to use a case-insensitive compare between the current word and * potential completions. * * @param caseInsensitive */ public void setCaseInsensitive(boolean caseInsensitive) { super.add(CASEINSENSITIVE_FIELD_NAME, caseInsensitive); } /** * Whether to use a case-insensitive compare between the current word and * potential completions. * * @return */ public boolean isCaseInsensitive() { return JsonHelper.getBoolean(this, CASEINSENSITIVE_FIELD_NAME, false); } /** * When disabled, only the text before the given position is considered part * of the word. When enabled (the default), the whole variable name that the * cursor is on will be included. * * @param expandWordForward */ public void setExpandWordForward(boolean expandWordForward) { super.add(EXPANDWORDFORWARD_FIELD_NAME, expandWordForward); } /** * When disabled, only the text before the given position is considered part * of the word. When enabled (the default), the whole variable name that the * cursor is on will be included. * * @return */ public boolean isExpandWordForward() { return JsonHelper.getBoolean(this, EXPANDWORDFORWARD_FIELD_NAME, true); } /** * Whether to ignore the properties of Object.prototype unless they have * been spelled out by at least to characters. * * @param omitObjectPrototype */ public void setOmitObjectPrototype(boolean omitObjectPrototype) { super.add(OMIT_OBJECT_PROTOTYPE_FIELD_NAME, omitObjectPrototype); } /** * Whether to ignore the properties of Object.prototype unless they have * been spelled out by at least to characters. * * @return */ public boolean isOmitObjectPrototype() { return JsonHelper.getBoolean(this, OMIT_OBJECT_PROTOTYPE_FIELD_NAME, true); } /** * When completing a property and no completions are found, Tern will use * some heuristics to try and return some properties anyway. Set this to * false to turn that off. * * @param guess */ public void setGuess(boolean guess) { super.add(GUESS_FIELD_NAME, guess); } /** * When completing a property and no completions are found, Tern will use * some heuristics to try and return some properties anyway. Set this to * false to turn that off. * * @return */ public boolean isGuess() { return JsonHelper.getBoolean(this, GUESS_FIELD_NAME, true); } /** * Returns true if the given query type is "completions" and false * otherwise. * * @param queryType * the query type. * @return true if the given query type is "completions" and false * otherwise. */ public static boolean isQueryType(String queryType) { return COMPLETIONS_TYPE_QUERY.equals(queryType); } }