| // Copyright 2010 Google Inc. All Rights Reserved. |
| |
| package com.googlecode.android_scripting; |
| |
| import android.content.Context; |
| |
| import java.net.MalformedURLException; |
| import java.net.URL; |
| import java.util.ArrayList; |
| import java.util.Collections; |
| import java.util.HashMap; |
| import java.util.List; |
| import java.util.Map; |
| |
| public class FeaturedInterpreters { |
| private static final Map<String, FeaturedInterpreter> mNameMap = |
| new HashMap<String, FeaturedInterpreter>(); |
| private static final Map<String, FeaturedInterpreter> mExtensionMap = |
| new HashMap<String, FeaturedInterpreter>(); |
| |
| static { |
| try { |
| FeaturedInterpreter interpreters[] = |
| { |
| new FeaturedInterpreter("BeanShell 2.0b4", ".bsh", |
| "http://android-scripting.googlecode.com/files/beanshell_for_android_r2.apk"), |
| new FeaturedInterpreter("JRuby", ".rb", |
| "https://github.com/downloads/ruboto/sl4a_jruby_interpreter/JRubyForAndroid_r2dev.apk"), |
| new FeaturedInterpreter("Lua 5.1.4", ".lua", |
| "http://android-scripting.googlecode.com/files/lua_for_android_r1.apk"), |
| new FeaturedInterpreter("Perl 5.10.1", ".pl", |
| "http://android-scripting.googlecode.com/files/perl_for_android_r1.apk"), |
| new FeaturedInterpreter("Python 2.6.2", ".py", |
| "http://python-for-android.googlecode.com/files/PythonForAndroid_r5.apk"), |
| new FeaturedInterpreter("Rhino 1.7R2", ".js", |
| "http://android-scripting.googlecode.com/files/rhino_for_android_r2.apk"), |
| new FeaturedInterpreter("PHP 5.3.3", ".php", |
| "http://php-for-android.googlecode.com/files/phpforandroid_r1.apk") }; |
| for (FeaturedInterpreter interpreter : interpreters) { |
| mNameMap.put(interpreter.mmName, interpreter); |
| mExtensionMap.put(interpreter.mmExtension, interpreter); |
| } |
| } catch (MalformedURLException e) { |
| Log.e(e); |
| } |
| } |
| |
| public static List<String> getList() { |
| ArrayList<String> list = new ArrayList<String>(mNameMap.keySet()); |
| Collections.sort(list); |
| return list; |
| } |
| |
| public static URL getUrlForName(String name) { |
| if (!mNameMap.containsKey(name)) { |
| return null; |
| } |
| return mNameMap.get(name).mmUrl; |
| } |
| |
| public static String getInterpreterNameForScript(String fileName) { |
| String extension = getExtension(fileName); |
| if (extension == null || !mExtensionMap.containsKey(extension)) { |
| return null; |
| } |
| return mExtensionMap.get(extension).mmName; |
| } |
| |
| public static boolean isSupported(String fileName) { |
| String extension = getExtension(fileName); |
| return (extension != null) && (mExtensionMap.containsKey(extension)); |
| } |
| |
| public static int getInterpreterIcon(Context context, String key) { |
| String packageName = context.getPackageName(); |
| String name = "_icon"; |
| if (key.contains(".")) { |
| name = key.substring(key.lastIndexOf('.') + 1) + name; |
| } else { |
| name = key + name; |
| } |
| return context.getResources().getIdentifier(name, "drawable", packageName); |
| } |
| |
| private static String getExtension(String fileName) { |
| int dotIndex = fileName.lastIndexOf('.'); |
| if (dotIndex == -1) { |
| return null; |
| } |
| return fileName.substring(dotIndex); |
| } |
| |
| private static class FeaturedInterpreter { |
| private final String mmName; |
| private final String mmExtension; |
| private final URL mmUrl; |
| |
| private FeaturedInterpreter(String name, String extension, String url) |
| throws MalformedURLException { |
| mmName = name; |
| mmExtension = extension; |
| mmUrl = new URL(url); |
| } |
| } |
| |
| } |