11package com.emberjs.resolver
22
3+ import com.emberjs.Ember
34import com.emberjs.cli.EmberCliProjectConfigurator
45import com.emberjs.utils.emberRoot
56import com.intellij.lang.javascript.DialectDetector
67import com.intellij.lang.javascript.frameworks.amd.JSModuleReference
78import com.intellij.lang.javascript.frameworks.modules.JSExactFileReference
89import com.intellij.lang.javascript.psi.resolve.JSModuleReferenceContributor
910import com.intellij.openapi.util.TextRange
10- import com.intellij.openapi.vfs.VirtualFile
1111import com.intellij.psi.PsiElement
1212import com.intellij.psi.PsiFileSystemItem
1313import com.intellij.psi.PsiReference
1414import com.intellij.psi.PsiReferenceProvider
1515import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReference
1616import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReferenceSet
17- import java.util.regex.Pattern
1817
1918/* *
2019 * Resolves absolute imports from the ember application root, e.g.
@@ -31,7 +30,7 @@ class EmberAppReferenceContributor : JSModuleReferenceContributor {
3130
3231 override fun getCommonJSModuleReferences (unquotedRefText : String , host : PsiElement , offset : Int , provider : PsiReferenceProvider ? ): Array <out PsiReference > {
3332 val appRoot = host.emberRoot ? : return emptyArray()
34- val appName = getAppName(appRoot) ? : return emptyArray()
33+ val appName = Ember . getAppName(appRoot) ? : return emptyArray()
3534
3635 val importPath = unquotedRefText.removePrefix(appName + " /" )
3736 if (unquotedRefText == importPath) {
@@ -59,20 +58,4 @@ class EmberAppReferenceContributor : JSModuleReferenceContributor {
5958 }
6059
6160 override fun isApplicable (host : PsiElement ): Boolean = DialectDetector .isES6(host)
62-
63- /* * Detect the name of the ember application */
64- private fun getAppName (appRoot : VirtualFile ): String? {
65- val env = appRoot.findFileByRelativePath(" config/environment.js" ) ? : return null
66- return env.inputStream.use { stream ->
67- stream.reader().useLines { lines ->
68- lines.mapNotNull { line ->
69- val matcher = ModulePrefixPattern .matcher(line)
70- if (matcher.find()) matcher.group(1 ) else null
71- }.firstOrNull()
72- }
73- }
74- }
75-
76- /* * Captures `my-app` from the string `modulePrefix: 'my-app'` */
77- private val ModulePrefixPattern = Pattern .compile(" modulePrefix:\\ s*['\" ](.+?)['\" ]" )
7861}
0 commit comments