正在查看: Perplexity v2.48.1 应用的 AttributionParser.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: Perplexity v2.48.1 应用的 AttributionParser.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package com.mapbox.maps.attribution;
import android.content.Context;
import android.text.Html;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.style.URLSpan;
import com.mapbox.maps.R;
import com.mapbox.maps.plugin.attribution.Attribution;
import gm.i;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Pattern;
import kotlin.Metadata;
import kotlin.jvm.JvmOverloads;
import kotlin.jvm.internal.DefaultConstructorMarker;
import kotlin.jvm.internal.Intrinsics;
@Metadata(d1 = {"\u0000R\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000e\n\u0000\n\u0002\u0010\u000b\n\u0002\b\u0006\n\u0002\u0010#\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0002\b\u0003\n\u0002\u0010\"\n\u0002\b\t\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010 \n\u0002\b\u0007\b\u0016\u0018\u0000 +2\u00020\u0001:\u0002+,BE\b\u0000\u0012\f\u0010\u0002\u001a\b\u0012\u0004\u0012\u00020\u00040\u0003\u0012\u0006\u0010\u0005\u001a\u00020\u0006\u0012\u0006\u0010\u0007\u001a\u00020\b\u0012\u0006\u0010\t\u001a\u00020\b\u0012\u0006\u0010\n\u001a\u00020\b\u0012\u0006\u0010\u000b\u001a\u00020\b\u0012\u0006\u0010\f\u001a\u00020\b¢\u0006\u0002\u0010\rJ\b\u0010\u0011\u001a\u00020\u0012H\u0002J\u0012\u0010\u0013\u001a\u00020\u00062\b\b\u0002\u0010\u0014\u001a\u00020\bH\u0007J\f\u0010\u0015\u001a\b\u0012\u0004\u0012\u00020\u00100\u0016J\u0010\u0010\u0017\u001a\u00020\b2\u0006\u0010\u0018\u001a\u00020\u0006H\u0002J\u0010\u0010\u0019\u001a\u00020\b2\u0006\u0010\u001a\u001a\u00020\u0006H\u0002J\u0010\u0010\u001b\u001a\u00020\b2\u0006\u0010\u001a\u001a\u00020\u0006H\u0002J\u0010\u0010\u001c\u001a\u00020\b2\u0006\u0010\u001a\u001a\u00020\u0006H\u0002J\b\u0010\u001d\u001a\u00020\u0012H\u0004J\u0018\u0010\u001e\u001a\u00020\u00062\u0006\u0010\u001f\u001a\u00020 2\u0006\u0010!\u001a\u00020\"H\u0002J\b\u0010#\u001a\u00020\u0012H\u0002J\u0016\u0010$\u001a\u00020\u00122\f\u0010%\u001a\b\u0012\u0004\u0012\u00020\u00060&H\u0002J\u0018\u0010'\u001a\u00020\u00122\u0006\u0010\u001f\u001a\u00020 2\u0006\u0010!\u001a\u00020\"H\u0002J\u0010\u0010(\u001a\u00020\u00062\u0006\u0010)\u001a\u00020\u0006H\u0002J\u0010\u0010*\u001a\u00020\u00062\u0006\u0010)\u001a\u00020\u0006H\u0002R\u000e\u0010\u0005\u001a\u00020\u0006X\u0082\u0004¢\u0006\u0002\n\u0000R\u0014\u0010\u000e\u001a\b\u0012\u0004\u0012\u00020\u00100\u000fX\u0082\u0004¢\u0006\u0002\n\u0000R\u0014\u0010\u0002\u001a\b\u0012\u0004\u0012\u00020\u00040\u0003X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\t\u001a\u00020\bX\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0007\u001a\u00020\bX\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u000b\u001a\u00020\bX\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\f\u001a\u00020\bX\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\n\u001a\u00020\bX\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006-"}, d2 = {"Lcom/mapbox/maps/attribution/AttributionParser;", AttributionParser.EMPTY_STRING, "context", "Ljava/lang/ref/WeakReference;", "Landroid/content/Context;", "attributionData", AttributionParser.EMPTY_STRING, "withImproveMap", AttributionParser.EMPTY_STRING, "withCopyrightSign", "withTelemetryAttribution", "withMapboxAttribution", "withMapboxPrivacyPolicy", "(Ljava/lang/ref/WeakReference;Ljava/lang/String;ZZZZZ)V", "attributions", AttributionParser.EMPTY_STRING, "Lcom/mapbox/maps/plugin/attribution/Attribution;", "addAdditionalAttributions", AttributionParser.EMPTY_STRING, "createAttributionString", "shortenedOutput", "getAttributions", AttributionParser.EMPTY_STRING, "isImproveThisMapAnchor", "anchor", "isUrlValid", "url", "isValidForImproveThisMap", "isValidForMapbox", "parse", "parseAnchorValue", "htmlBuilder", "Landroid/text/SpannableStringBuilder;", "urlSpan", "Landroid/text/style/URLSpan;", "parseAttributions", "parseStringLiteralToAttributions", "stringLiteralList", AttributionParser.EMPTY_STRING, "parseUrlSpan", "stripCopyright", "anchorString", "translateImproveThisMapAnchor", "Companion", "Options", "sdk_release"}, k = 1, mv = {1, 7, 1}, xi = 48)
public class AttributionParser {
private static final String COPYRIGHT = "© ";
public static final Companion INSTANCE = new Companion(null);
private static final String EMPTY_STRING = "";
private static final List<String> IMPROVE_MAP_URLS;
private static final String IMPROVE_THIS_MAP = "Improve this map";
private final String attributionData;
private final Set<Attribution> attributions;
private final WeakReference<Context> context;
private final boolean withCopyrightSign;
private final boolean withImproveMap;
private final boolean withMapboxAttribution;
private final boolean withMapboxPrivacyPolicy;
private final boolean withTelemetryAttribution;
@Metadata(d1 = {"\u0000$\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\u000e\n\u0002\b\u0002\n\u0002\u0010!\n\u0002\b\u0004\n\u0002\u0018\u0002\n\u0002\b\u0002\b\u0086\u0003\u0018\u00002\u00020\u0001B\u0007\b\u0002¢\u0006\u0002\u0010\u0002J\u0010\u0010\u000b\u001a\u00020\f2\u0006\u0010\r\u001a\u00020\u0004H\u0002R\u000e\u0010\u0003\u001a\u00020\u0004X\u0082T¢\u0006\u0002\n\u0000R\u000e\u0010\u0005\u001a\u00020\u0004X\u0082T¢\u0006\u0002\n\u0000R\u0017\u0010\u0006\u001a\b\u0012\u0004\u0012\u00020\u00040\u0007¢\u0006\b\n\u0000\u001a\u0004\b\b\u0010\tR\u000e\u0010\n\u001a\u00020\u0004X\u0082T¢\u0006\u0002\n\u0000¨\u0006\u000e"}, d2 = {"Lcom/mapbox/maps/attribution/AttributionParser$Companion;", AttributionParser.EMPTY_STRING, "()V", "COPYRIGHT", AttributionParser.EMPTY_STRING, "EMPTY_STRING", "IMPROVE_MAP_URLS", AttributionParser.EMPTY_STRING, "getIMPROVE_MAP_URLS", "()Ljava/util/List;", "IMPROVE_THIS_MAP", "fromHtml", "Landroid/text/Spanned;", "html", "sdk_release"}, k = 1, mv = {1, 7, 1}, xi = 48)
public static final class Companion {
public Companion(DefaultConstructorMarker defaultConstructorMarker) {
this();
}
public final Spanned fromHtml(String html) {
Spanned fromHtml = Html.fromHtml(html, 0);
Intrinsics.g(fromHtml, "{\n Html.fromHtml(…HTML_MODE_LEGACY)\n }");
return fromHtml;
}
public final List<String> getIMPROVE_MAP_URLS() {
return AttributionParser.IMPROVE_MAP_URLS;
}
private Companion() {
}
}
@Metadata(d1 = {"\u00008\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u0011\n\u0002\u0010\u000e\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010!\n\u0000\n\u0002\u0010\u000b\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0002\b\n\u0018\u0000 \u001c2\u00020\u0001:\u0001\u001cB\r\u0012\u0006\u0010\u0002\u001a\u00020\u0003¢\u0006\u0002\u0010\u0004J\u0006\u0010\u0012\u001a\u00020\u0013J\u0010\u0010\u0014\u001a\u00020\r2\u0006\u0010\u0015\u001a\u00020\u0007H\u0002J\u001b\u0010\u0016\u001a\u00020\u00072\f\u0010\u0017\u001a\b\u0012\u0004\u0012\u00020\u00070\u0006H\u0002¢\u0006\u0002\u0010\u0018J\u001f\u0010\u0019\u001a\u00020\u00002\u0012\u0010\u001a\u001a\n\u0012\u0006\b\u0001\u0012\u00020\u00070\u0006\"\u00020\u0007¢\u0006\u0002\u0010\u001bJ\u000e\u0010\f\u001a\u00020\u00002\u0006\u0010\f\u001a\u00020\rJ\u000e\u0010\u000e\u001a\u00020\u00002\u0006\u0010\u000e\u001a\u00020\rJ\u000e\u0010\u000f\u001a\u00020\u00002\u0006\u0010\u000f\u001a\u00020\rJ\u000e\u0010\u0010\u001a\u00020\u00002\u0006\u0010\u0010\u001a\u00020\rJ\u000e\u0010\u0011\u001a\u00020\u00002\u0006\u0010\u0011\u001a\u00020\rR\u0018\u0010\u0005\u001a\n\u0012\u0004\u0012\u00020\u0007\u0018\u00010\u0006X\u0082\u000e¢\u0006\u0004\n\u0002\u0010\bR\u0014\u0010\u0002\u001a\b\u0012\u0004\u0012\u00020\u00030\tX\u0082\u0004¢\u0006\u0002\n\u0000R\u0014\u0010\n\u001a\b\u0012\u0004\u0012\u00020\u00070\u000bX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\f\u001a\u00020\rX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u000e\u001a\u00020\rX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u000f\u001a\u00020\rX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u0010\u001a\u00020\rX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u0011\u001a\u00020\rX\u0082\u000e¢\u0006\u0002\n\u0000¨\u0006\u001d"}, d2 = {"Lcom/mapbox/maps/attribution/AttributionParser$Options;", AttributionParser.EMPTY_STRING, "context", "Landroid/content/Context;", "(Landroid/content/Context;)V", "attributionDataStringArray", AttributionParser.EMPTY_STRING, AttributionParser.EMPTY_STRING, "[Ljava/lang/String;", "Ljava/lang/ref/WeakReference;", "stringLiteralArray", AttributionParser.EMPTY_STRING, "withCopyrightSign", AttributionParser.EMPTY_STRING, "withImproveMap", "withMapboxAttribution", "withMapboxPrivacyPolicy", "withTelemetryAttribution", "build", "Lcom/mapbox/maps/attribution/AttributionParser;", "hasValidHTMLTag", "htmlStr", "parseAttribution", "attribution", "([Ljava/lang/String;)Ljava/lang/String;", "withAttributionData", "attributionData", "([Ljava/lang/String;)Lcom/mapbox/maps/attribution/AttributionParser$Options;", "Companion", "sdk_release"}, k = 1, mv = {1, 7, 1}, xi = 48)
public static final class Options {
private static final Companion Companion = new Companion(null);
@Deprecated
public static final String HTML_STYLE_REGEX = "<(\"[^\"]*\"|'[^']*'|[^'\">])*>";
private String[] attributionDataStringArray;
private final WeakReference<Context> context;
private List<String> stringLiteralArray;
private boolean withCopyrightSign;
private boolean withImproveMap;
private boolean withMapboxAttribution;
private boolean withMapboxPrivacyPolicy;
private boolean withTelemetryAttribution;
@Metadata(d1 = {"\u0000\u0012\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\u000e\n\u0000\b\u0082\u0003\u0018\u00002\u00020\u0001B\u0007\b\u0002¢\u0006\u0002\u0010\u0002R\u000e\u0010\u0003\u001a\u00020\u0004X\u0086T¢\u0006\u0002\n\u0000¨\u0006\u0005"}, d2 = {"Lcom/mapbox/maps/attribution/AttributionParser$Options$Companion;", AttributionParser.EMPTY_STRING, "()V", "HTML_STYLE_REGEX", AttributionParser.EMPTY_STRING, "sdk_release"}, k = 1, mv = {1, 7, 1}, xi = 48)
public static final class Companion {
public Companion(DefaultConstructorMarker defaultConstructorMarker) {
this();
}
private Companion() {
}
}
public Options(Context context) {
Intrinsics.h(context, "context");
this.context = new WeakReference<>(context);
this.withImproveMap = true;
this.withCopyrightSign = true;
this.withMapboxAttribution = true;
this.withMapboxPrivacyPolicy = true;
this.stringLiteralArray = new ArrayList();
}
private final boolean hasValidHTMLTag(String htmlStr) {
return Pattern.compile(HTML_STYLE_REGEX).matcher(htmlStr).find();
}
private final String parseAttribution(String[] attribution) {
StringBuilder sb = new StringBuilder();
for (String str : attribution) {
if (str.length() > 0) {
if (hasValidHTMLTag(str)) {
sb.append(str);
} else {
this.stringLiteralArray.add(str);
}
}
}
String sb2 = sb.toString();
Intrinsics.g(sb2, "builder.toString()");
return sb2;
}
public final AttributionParser build() {
String[] strArr = this.attributionDataStringArray;
if (strArr == null) {
throw new IllegalStateException("Using builder without providing attribution data");
}
Intrinsics.e(strArr);
AttributionParser attributionParser = new AttributionParser(this.context, parseAttribution(strArr), this.withImproveMap, this.withCopyrightSign, this.withTelemetryAttribution, this.withMapboxAttribution, this.withMapboxPrivacyPolicy);
attributionParser.parse();
attributionParser.parseStringLiteralToAttributions(this.stringLiteralArray);
return attributionParser;
}
public final Options withAttributionData(String... attributionData) {
Intrinsics.h(attributionData, "attributionData");
this.attributionDataStringArray = (String[]) Arrays.copyOf(attributionData, attributionData.length);
return this;
}
public final Options withCopyrightSign(boolean withCopyrightSign) {
this.withCopyrightSign = withCopyrightSign;
return this;
}
public final Options withImproveMap(boolean withImproveMap) {
this.withImproveMap = withImproveMap;
return this;
}
public final Options withMapboxAttribution(boolean withMapboxAttribution) {
this.withMapboxAttribution = withMapboxAttribution;
return this;
}
public final Options withMapboxPrivacyPolicy(boolean withMapboxPrivacyPolicy) {
this.withMapboxPrivacyPolicy = withMapboxPrivacyPolicy;
return this;
}
public final Options withTelemetryAttribution(boolean withTelemetryAttribution) {
this.withTelemetryAttribution = withTelemetryAttribution;
return this;
}
}
static {
ArrayList arrayList = new ArrayList();
IMPROVE_MAP_URLS = arrayList;
arrayList.add("https://www.mapbox.com/feedback/");
arrayList.add("https://www.mapbox.com/map-feedback/");
arrayList.add("https://apps.mapbox.com/feedback/");
}
public AttributionParser(WeakReference<Context> weakReference, String str, boolean z, boolean z2, boolean z3, boolean z4, boolean z5) {
Intrinsics.h(weakReference, "context");
Intrinsics.h(str, "attributionData");
this.context = weakReference;
this.attributionData = str;
this.withImproveMap = z;
this.withCopyrightSign = z2;
this.withTelemetryAttribution = z3;
this.withMapboxAttribution = z4;
this.withMapboxPrivacyPolicy = z5;
this.attributions = new LinkedHashSet();
}
private final void addAdditionalAttributions() {
Context context = this.context.get();
if (this.withTelemetryAttribution) {
Set<Attribution> set = this.attributions;
String string = context != null ? context.getString(R.string.mapbox_telemetrySettings) : Attribution.TELEMETRY_SETTINGS;
Intrinsics.g(string, "if (context != null) con…bution.TELEMETRY_SETTINGS");
set.add(new Attribution(string, Attribution.ABOUT_TELEMETRY_URL));
}
if (this.withMapboxPrivacyPolicy) {
Set<Attribution> set2 = this.attributions;
String string2 = context != null ? context.getString(R.string.mapbox_privacy_policy) : Attribution.PRIVACY_POLICY;
Intrinsics.g(string2, "if (context != null) con…ttribution.PRIVACY_POLICY");
set2.add(new Attribution(string2, Attribution.PRIVACY_POLICY_URL));
}
}
public static String createAttributionString$default(AttributionParser attributionParser, boolean z, int i, Object obj) {
if (obj != null) {
throw new UnsupportedOperationException("Super calls with default arguments not supported in this target, function: createAttributionString");
}
if ((i & 1) != 0) {
z = false;
}
return attributionParser.createAttributionString(z);
}
private final boolean isImproveThisMapAnchor(String anchor) {
return Intrinsics.c(anchor, IMPROVE_THIS_MAP);
}
private final boolean isUrlValid(String url) {
return isValidForImproveThisMap(url) && isValidForMapbox(url);
}
private final boolean isValidForImproveThisMap(String url) {
return this.withImproveMap || !IMPROVE_MAP_URLS.contains(url);
}
private final boolean isValidForMapbox(String url) {
return this.withMapboxAttribution || !Intrinsics.c(url, Attribution.ABOUT_MAPS_URL);
}
private final String parseAnchorValue(SpannableStringBuilder htmlBuilder, URLSpan urlSpan) {
int spanStart = htmlBuilder.getSpanStart(urlSpan);
int spanEnd = htmlBuilder.getSpanEnd(urlSpan);
char[] cArr = new char[spanEnd - spanStart];
htmlBuilder.getChars(spanStart, spanEnd, cArr, 0);
return stripCopyright(new String(cArr));
}
private final void parseAttributions() {
Spanned fromHtml = INSTANCE.fromHtml(this.attributionData);
Intrinsics.f(fromHtml, "null cannot be cast to non-null type android.text.SpannableStringBuilder");
SpannableStringBuilder spannableStringBuilder = (SpannableStringBuilder) fromHtml;
URLSpan[] uRLSpanArr = (URLSpan[]) spannableStringBuilder.getSpans(0, spannableStringBuilder.length(), URLSpan.class);
Intrinsics.g(uRLSpanArr, "urlSpans");
for (URLSpan uRLSpan : uRLSpanArr) {
Intrinsics.g(uRLSpan, "urlSpan");
parseUrlSpan(spannableStringBuilder, uRLSpan);
}
}
public final void parseStringLiteralToAttributions(List<String> stringLiteralList) {
Iterator<String> it = stringLiteralList.iterator();
while (it.hasNext()) {
String obj = INSTANCE.fromHtml(it.next()).toString();
if (!this.withCopyrightSign) {
obj = stripCopyright(obj);
}
this.attributions.add(new Attribution(obj, EMPTY_STRING));
}
}
private final void parseUrlSpan(SpannableStringBuilder htmlBuilder, URLSpan urlSpan) {
String url = urlSpan.getURL();
Intrinsics.g(url, "url");
if (isUrlValid(url)) {
String parseAnchorValue = parseAnchorValue(htmlBuilder, urlSpan);
if (isImproveThisMapAnchor(parseAnchorValue)) {
parseAnchorValue = translateImproveThisMapAnchor(parseAnchorValue);
}
this.attributions.add(new Attribution(parseAnchorValue, url));
}
}
private final String stripCopyright(String anchorString) {
if (this.withCopyrightSign || !i.P(anchorString, COPYRIGHT, false)) {
return anchorString;
}
String substring = anchorString.substring(2, anchorString.length());
Intrinsics.g(substring, "this as java.lang.String…ing(startIndex, endIndex)");
return substring;
}
private final String translateImproveThisMapAnchor(String anchorString) {
Context context = this.context.get();
if (context == null) {
return anchorString;
}
String string = context.getString(R.string.mapbox_telemetryImproveMap);
Intrinsics.g(string, "context.getString(R.stri…pbox_telemetryImproveMap)");
return string;
}
@JvmOverloads
public final String createAttributionString() {
return createAttributionString$default(this, false, 1, null);
}
public final Set<Attribution> getAttributions() {
return this.attributions;
}
public final void parse() {
parseAttributions();
addAdditionalAttributions();
}
@JvmOverloads
public final String createAttributionString(boolean shortenedOutput) {
boolean isEmpty = this.attributions.isEmpty();
String str = EMPTY_STRING;
if (isEmpty) {
return EMPTY_STRING;
}
if (!this.withCopyrightSign) {
str = COPYRIGHT;
}
StringBuilder sb = new StringBuilder(str);
int i = 0;
for (Attribution attribution : this.attributions) {
i++;
sb.append(!shortenedOutput ? attribution.getTitle() : attribution.getTitleAbbreviated());
if (i != this.attributions.size()) {
sb.append(" / ");
}
}
String sb2 = sb.toString();
Intrinsics.g(sb2, "stringBuilder.toString()");
return sb2;
}
}