@Override public int getItemCnt() { return getKeys().size(); }
@Override public int size() { return getKeys().size(); }
@Override public int getItemCnt() { return getKeys().size(); }
@Override @Nonnull public Iterable<StringData> getItemKeys() { Set<String> internalKeys = getKeys(); List<StringData> keys = Lists.newArrayListWithCapacity(internalKeys.size()); for (String internalKey : internalKeys) { keys.add(StringData.forValue(internalKey)); } return keys; }
@Override @Nonnull public Iterable<StringData> getItemKeys() { Set<String> internalKeys = getKeys(); List<StringData> keys = Lists.newArrayListWithCapacity(internalKeys.size()); for (String internalKey : internalKeys) { keys.add(StringData.forValue(internalKey)); } return keys; }
@Override public SoyData compute(List<SoyData> args) { SoyData arg = args.get(0); if (! (arg instanceof SoyMapData)) { throw new IllegalArgumentException("Argument to keys() function is not SoyMapData."); } return new SoyListData(((SoyMapData) arg).getKeys()); }
@Override public SoyData compute(List<SoyData> args) { SoyData arg0 = args.get(0); SoyData arg1 = args.get(1); Preconditions.checkArgument(arg0 instanceof SoyMapData, "First argument to augmentMap() function is not SoyMapData."); Preconditions.checkArgument(arg1 instanceof SoyMapData, "Second argument to augmentMap() function is not SoyMapData."); AugmentedSoyMapData augmentedMap = new AugmentedSoyMapData((SoyMapData) arg0); SoyMapData additionalMap = (SoyMapData) arg1; for (String key : additionalMap.getKeys()) { augmentedMap.putSingle(key, additionalMap.getSingle(key)); } return augmentedMap; }
/** * Merge two SoyMapData resources. If the two maps to merge contain duplicate key names, source * s2 will overwrite s1. * @param s1 1st resource map. * @param s2 2nd resource map. * @return A new SoyMapData object containing data from both source. */ public static SoyMapData mergeSoyMapData(SoyMapData s1, SoyMapData s2) { Preconditions.checkNotNull(s1); Preconditions.checkNotNull(s2); SoyMapData merged = new SoyMapData(); for (String key: s1.getKeys()) { merged.putSingle(key, s1.getSingle(key)); } for (String key: s2.getKeys()) { merged.putSingle(key, s2.getSingle(key)); } return merged; }