/*
* Copyright 2009 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.template.soy.shared.internal;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.inject.Key;
import com.google.template.soy.internal.i18n.BidiGlobalDir;
import com.google.template.soy.msgs.SoyMsgBundle;
import com.google.template.soy.shared.restricted.ApiCallScopeBindingAnnotations.LocaleString;
import javax.annotation.Nullable;
/**
* Shared utilities for working with the ApiCallScope.
*
* <p>Important: Do not use outside of Soy code (treat as superpackage-private).
*
*/
public class ApiCallScopeUtils {
private static final Key<String> LOCALE_STRING_KEY = Key.get(String.class, LocaleString.class);
private static final Key<BidiGlobalDir> GLOBAL_DIR_KEY = Key.get(BidiGlobalDir.class);
private ApiCallScopeUtils() {}
/**
* Helper utility to seed params shared by multiple backends.
*
* @param inScope The scope object that manages the API call scope.
* @param msgBundle The bundle of translated messages, or null to use the messages from the Soy
*/
public static void seedSharedParams(
GuiceSimpleScope.InScope inScope, @Nullable SoyMsgBundle msgBundle) {
seedSharedParams(inScope, msgBundle, null);
}
/**
* Helper utility to seed params shared by multiple backends.
*
* @param inScope The scope object that manages the API call scope.
* @param msgBundle The bundle of translated messages, or null to use the messages from the Soy
* @param bidiGlobalDir The bidi global directionality. If null, it is derived from the msgBundle
* locale, if any, otherwise ltr.
*/
public static void seedSharedParams(
GuiceSimpleScope.InScope inScope,
@Nullable SoyMsgBundle msgBundle,
@Nullable BidiGlobalDir bidiGlobalDir) {
String localeString = (msgBundle != null) ? msgBundle.getLocaleString() : null;
if (bidiGlobalDir == null) {
bidiGlobalDir = BidiGlobalDir.forStaticIsRtl(msgBundle == null ? false : msgBundle.isRtl());
}
seedSharedParams(inScope, bidiGlobalDir, localeString);
}
/**
* Helper utility to seed params shared by multiple backends.
*
* @param inScope The scope object that manages the API call scope.
* @param bidiGlobalDir The bidi global directionality.
* @param localeString The current locale.
*/
public static void seedSharedParams(
GuiceSimpleScope.InScope inScope,
BidiGlobalDir bidiGlobalDir,
@Nullable String localeString) {
inScope.seed(LOCALE_STRING_KEY, localeString);
inScope.seed(GLOBAL_DIR_KEY, checkNotNull(bidiGlobalDir));
}
}