package org.jetbrains.plugins.ruby.motion; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiElement; import com.jetbrains.cidr.CocoaDocumentationManager; import com.jetbrains.cidr.DocSet; import com.jetbrains.cidr.xcode.Xcode; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.File; /** * @author Dennis.Ushakov */ public class MotionDocumentationManager extends CocoaDocumentationManager { private DocSet myCachedDocSet; private String myCachedSdkVersion; public MotionDocumentationManager(@NotNull Project project) { super(project); } @Nullable @Override public DocSet getDocSet(@NotNull PsiElement targetElement) { final Module module = RubyMotionUtil.getInstance().getModuleWithMotionSupport(getProject()); if (module != null) { final String sdkVersion = RubyMotionUtil.getInstance().getInstance().getSdkVersion(module); if (sdkVersion == null) { return null; } if (myCachedDocSet != null && sdkVersion.equals(myCachedSdkVersion)) { return myCachedDocSet; } File docSet = Xcode.getSubFile("Platforms/iPhoneOS.platform/Developer/Documentation/DocSets/com.apple.adc.documentation.AppleiOS" + sdkVersion + ".iOSLibrary.docset"); if (!docSet.exists()) { docSet = RubyMotionUtil.getInstance().isOSX(module) ? Xcode.getSubFile("Documentation/DocSets/com.apple.adc.documentation.AppleOSX" + sdkVersion + ".CoreReference.docset") : Xcode.getSubFile("Documentation/DocSets/com.apple.adc.documentation.AppleiOS" + sdkVersion + ".iOSLibrary.docset"); } if (!docSet.exists()) { docSet = RubyMotionUtil.getInstance().isOSX(module) ? Xcode.getSubFile("Documentation/DocSets/com.apple.adc.documentation.OSX.docset") : Xcode.getSubFile("Documentation/DocSets/com.apple.adc.documentation.iOS.docset"); } myCachedDocSet = DocSet.read(docSet); myCachedSdkVersion = sdkVersion; return myCachedDocSet; } return null; } }