Package org.jetbrains.plugins.clojure.psi.impl

Source Code of org.jetbrains.plugins.clojure.psi.impl.ClMetadataImpl

package org.jetbrains.plugins.clojure.psi.impl;

import com.intellij.lang.ASTNode;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.clojure.psi.ClojurePsiElement;
import org.jetbrains.plugins.clojure.psi.ClojurePsiElementImpl;
import org.jetbrains.plugins.clojure.psi.api.ClKeyword;
import org.jetbrains.plugins.clojure.psi.api.ClMap;
import org.jetbrains.plugins.clojure.psi.api.ClMetadata;

import java.util.Collections;
import java.util.List;

/**
* @author ilyas
*/
public class ClMetadataImpl extends ClojurePsiElementImpl implements ClMetadata {
  public ClMetadataImpl(ASTNode node) {
    super(node);
  }

  @Override
  public String toString() {
    return "ClMetadata";
  }

  @NotNull
  public List<ClKeyword> getKeys() {
    ClMap map = getUnderlyingMap();
    if (map == null) return Collections.emptyList();
    return ContainerUtil.map(map.getEntries(), new Function<ClMapEntry, ClKeyword>() {
      public ClKeyword fun(ClMapEntry clMapEntry) {
        return clMapEntry.getKeywordKey();
      }
    });
  }

  private ClMap getUnderlyingMap() {
    final ClMap map = findChildByClass(ClMap.class);
    if (map == null) return null;
    return map;
  }

  public ClojurePsiElement getValue(String key) {
    final ClMap map = getUnderlyingMap();
    if (map == null) return null;
    return map.getValue(key);
  }
}
TOP

Related Classes of org.jetbrains.plugins.clojure.psi.impl.ClMetadataImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.