package org.angularjs.service.protocol;
import com.intellij.lang.javascript.ecmascript6.TypeScriptUtil;
import com.intellij.lang.javascript.service.JSLanguageServiceUtil;
import com.intellij.lang.typescript.compiler.TypeScriptCompilerSettings;
import com.intellij.lang.typescript.compiler.languageService.protocol.TypeScriptServiceStandardOutputProtocol;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.util.Consumer;
import org.angularjs.lang.AngularJSLanguage;
import org.jetbrains.annotations.NotNull;
import java.io.File;
public class Angular2LanguageServiceProtocol extends TypeScriptServiceStandardOutputProtocol {
public static final String NG_LANGUAGE_SERVICE = "ngLanguageService";
private final String myNgServicePath;
public Angular2LanguageServiceProtocol(@NotNull Project project,
@NotNull String ngServicePath,
@NotNull TypeScriptCompilerSettings settings,
@NotNull Consumer<?> readyConsumer) {
super(project, settings, readyConsumer);
myNgServicePath = ngServicePath;
}
@Override
public Angular2InitialStateObject createState() {
Angular2InitialStateObject state = new Angular2InitialStateObject();
fillState(state);
state.pluginName = "angular 2 language service";
File directory = JSLanguageServiceUtil.getPluginDirectory(AngularJSLanguage.class, NG_LANGUAGE_SERVICE);
state.typescriptPluginPath =
TypeScriptUtil.getTypeScriptCompilerFolderFile().getAbsolutePath() + File.separator + "typescript" + File.separator;
//override plugin path
state.pluginPath = new File(directory, "angular-plugin.js").getAbsolutePath();
state.ngServicePath = FileUtil.toSystemDependentName(myNgServicePath);
return state;
}
}