/**
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
/*
* Created on Sep 17, 2006
* @author Fabio
*/
package org.python.pydev.core;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public interface IGrammarVersionProvider {
/**
* Constants for knowing the version of a grammar (so that jython 2.1 and python 2.1 can be regarded
* as GRAMMAR_PYTHON_VERSION_2_1), so, in short, it does not differentiate among the many flavors of python
*
* They don't start at 0 because we don't want any accidents... ;-)
*/
public static final int GRAMMAR_PYTHON_VERSION_2_4 = 10;
public static final int GRAMMAR_PYTHON_VERSION_2_5 = 11;
public static final int GRAMMAR_PYTHON_VERSION_2_6 = 12;
public static final int GRAMMAR_PYTHON_VERSION_2_7 = 13;
public static final int LATEST_GRAMMAR_VERSION = GRAMMAR_PYTHON_VERSION_2_7;
/**
* Just in case you're wondering, Version 3.0 is not the latest... it's as if it's a new grammar entirely.
*/
public static final int GRAMMAR_PYTHON_VERSION_3_0 = 99;
/**
* So, no specific reason for the 777 number (just wanted something unique that wouldn't be close to the other grammars).
*/
public static final int GRAMMAR_PYTHON_VERSION_CYTHON = 777;
/**
* @return the version of the grammar as defined in IPythonNature.GRAMMAR_PYTHON_VERSION...
* @throws MisconfigurationException
*/
public int getGrammarVersion() throws MisconfigurationException;
public static List<Integer> grammarVersions = GrammarsIterator.createList();
public static Map<Integer, String> grammarVersionToRep = GrammarsIterator.createDict();
}
/**
* Just create a new class to initialize those values (we cannot do it in the interface)
*/
class GrammarsIterator {
public static List<Integer> createList() {
List<Integer> grammarVersions = new ArrayList<Integer>();
grammarVersions.add(IGrammarVersionProvider.GRAMMAR_PYTHON_VERSION_2_4);
grammarVersions.add(IGrammarVersionProvider.GRAMMAR_PYTHON_VERSION_2_5);
grammarVersions.add(IGrammarVersionProvider.GRAMMAR_PYTHON_VERSION_2_6);
grammarVersions.add(IGrammarVersionProvider.GRAMMAR_PYTHON_VERSION_2_7);
grammarVersions.add(IGrammarVersionProvider.GRAMMAR_PYTHON_VERSION_3_0);
return grammarVersions;
}
public static Map<Integer, String> createDict() {
HashMap<Integer, String> ret = new HashMap<Integer, String>();
ret.put(IGrammarVersionProvider.GRAMMAR_PYTHON_VERSION_2_4, "2.4");
ret.put(IGrammarVersionProvider.GRAMMAR_PYTHON_VERSION_2_5, "2.5");
ret.put(IGrammarVersionProvider.GRAMMAR_PYTHON_VERSION_2_6, "2.6");
ret.put(IGrammarVersionProvider.GRAMMAR_PYTHON_VERSION_2_7, "2.7");
ret.put(IGrammarVersionProvider.GRAMMAR_PYTHON_VERSION_3_0, "3.0");
return ret;
}
}