Search in sources :

Example 1 with QuotableKeywordPair

use of org.elixir_lang.psi.QuotableKeywordPair in project intellij-elixir by KronicDeth.

the class Exception method putQuotableKeywordList.

private void putQuotableKeywordList(Map<PsiElement, PsiElement> defaultValueElementByKeyElement, QuotableKeywordList quotableKeywordList) {
    for (QuotableKeywordPair quotableKeywordPair : quotableKeywordList.quotableKeywordPairList()) {
        PsiElement keyElement = quotableKeywordPair.getKeywordKey();
        PsiElement valueElement = quotableKeywordPair.getKeywordValue();
        defaultValueElementByKeyElement.put(keyElement, valueElement);
    }
}
Also used : QuotableKeywordPair(org.elixir_lang.psi.QuotableKeywordPair) PsiElement(com.intellij.psi.PsiElement)

Example 2 with QuotableKeywordPair

use of org.elixir_lang.psi.QuotableKeywordPair in project intellij-elixir by KronicDeth.

the class Overridable method getChildren.

/**
     * Returns the list of children of the tree element.
     *
     * @return the list of children.
     */
@NotNull
@Override
public TreeElement[] getChildren() {
    QuotableKeywordList keywordArguments = ElixirPsiImplUtil.keywordArguments(navigationItem);
    TreeElement[] children;
    if (keywordArguments != null) {
        List<QuotableKeywordPair> quotableKeywordPairList = keywordArguments.quotableKeywordPairList();
        List<TreeElement> treeElementList = new ArrayList<TreeElement>(quotableKeywordPairList.size());
        for (QuotableKeywordPair quotableKeywordPair : quotableKeywordPairList) {
            Quotable keywordKey = quotableKeywordPair.getKeywordKey();
            OtpErlangObject quotedKeywordKey = keywordKey.quote();
            String name;
            if (quotedKeywordKey instanceof OtpErlangAtom) {
                OtpErlangAtom keywordKeyAtom = (OtpErlangAtom) quotedKeywordKey;
                name = keywordKeyAtom.atomValue();
            } else {
                name = keywordKey.getText();
            }
            Quotable keywordValue = quotableKeywordPair.getKeywordValue();
            OtpErlangObject quotedKeywordValue = keywordValue.quote();
            Integer arity = null;
            if (quotedKeywordValue instanceof OtpErlangLong) {
                OtpErlangLong keywordValueErlangLong = (OtpErlangLong) quotedKeywordValue;
                try {
                    arity = keywordValueErlangLong.intValue();
                } catch (OtpErlangRangeException e) {
                    arity = null;
                }
            }
            boolean overridable = true;
            //noinspection ConstantConditions
            treeElementList.add(new CallReference(modular, quotableKeywordPair, Timed.Time.RUN, overridable, name, arity));
        }
        children = treeElementList.toArray(new TreeElement[treeElementList.size()]);
    } else {
        children = new TreeElement[0];
    }
    return children;
}
Also used : OtpErlangLong(com.ericsson.otp.erlang.OtpErlangLong) ArrayList(java.util.ArrayList) OtpErlangRangeException(com.ericsson.otp.erlang.OtpErlangRangeException) OtpErlangAtom(com.ericsson.otp.erlang.OtpErlangAtom) TreeElement(com.intellij.ide.util.treeView.smartTree.TreeElement) Quotable(org.elixir_lang.psi.Quotable) OtpErlangObject(com.ericsson.otp.erlang.OtpErlangObject) QuotableKeywordList(org.elixir_lang.psi.QuotableKeywordList) QuotableKeywordPair(org.elixir_lang.psi.QuotableKeywordPair) NotNull(org.jetbrains.annotations.NotNull)

Example 3 with QuotableKeywordPair

use of org.elixir_lang.psi.QuotableKeywordPair in project intellij-elixir by KronicDeth.

the class Model method isSuitable.

@Override
protected boolean isSuitable(PsiElement element) {
    boolean suitable = false;
    // checks if the class is good
    if (super.isSuitable(element)) {
        // calls can be nested in calls, so need to check for sure
        if (element instanceof Call) {
            Call call = (Call) element;
            suitable = isSuitable(call);
        } else if (element instanceof ElixirAtom) {
            ElixirAtom atom = (ElixirAtom) element;
            suitable = Field.is(atom);
        } else if (element instanceof QuotableKeywordPair) {
            QuotableKeywordPair quotableKeywordPair = (QuotableKeywordPair) element;
            suitable = FieldWithDefaultValue.is(quotableKeywordPair);
        }
    }
    return suitable;
}
Also used : Call(org.elixir_lang.psi.call.Call) ElixirAtom(org.elixir_lang.psi.ElixirAtom) QuotableKeywordPair(org.elixir_lang.psi.QuotableKeywordPair)

Aggregations

QuotableKeywordPair (org.elixir_lang.psi.QuotableKeywordPair)3 OtpErlangAtom (com.ericsson.otp.erlang.OtpErlangAtom)1 OtpErlangLong (com.ericsson.otp.erlang.OtpErlangLong)1 OtpErlangObject (com.ericsson.otp.erlang.OtpErlangObject)1 OtpErlangRangeException (com.ericsson.otp.erlang.OtpErlangRangeException)1 TreeElement (com.intellij.ide.util.treeView.smartTree.TreeElement)1 PsiElement (com.intellij.psi.PsiElement)1 ArrayList (java.util.ArrayList)1 ElixirAtom (org.elixir_lang.psi.ElixirAtom)1 Quotable (org.elixir_lang.psi.Quotable)1 QuotableKeywordList (org.elixir_lang.psi.QuotableKeywordList)1 Call (org.elixir_lang.psi.call.Call)1 NotNull (org.jetbrains.annotations.NotNull)1