Open dandelany opened 1 week ago
From my meeting with @cohansen and @goetzrrGit, we came up with the idea of adding an abstraction layer that implements the following interface (wip):
interface ISequence {
public sequenceCompletion: (string) => string;
public sequenceLinter
public sequenceTooltip
public sequenceUpdate
public toOutputFormat: (string) => string;
}
and for the adaptations we'll go with a similar abstraction layer for the globals:
interface ISequenceAdaptation {
CONDITIONAL_KEYWORDS?: { ELSE: string; ELSE_IF?: string[]; END_IF: string; IF: string[] };
LOOP_KEYWORDS?: {
BREAK: string;
CONTINUE: string;
END_WHILE_LOOP: string;
WHILE_LOOP: string[];
};
ARG_DELEGATOR?: ArgDelegator[];
LINT: (commandDictionary, view, node);
TO_FORMAT?: (string, parameterDictionaries, channelDictionary);
PARSE_FORMAT?: (string, parameterDictionaries, channelDictionary);
}
Describe the feature request
We met today with @bduran @joswig @mattdailis @goetzrrGit and @cohansen to discuss future plans for the Phoenix editor and our plans to make it more general and less mission-specific in the future. Eventually we'd like to support additional features in the sequence adaptation file, as well as support for other languages such as VML.
In the short-term, @bduran suggested that we take a first pass at separating any code in Phoenix which is language-specific (ie. specific to the SeqN or SeqJSON file formats) from the core Phoenix code, ie. some form of abstraction layer which would allow us to use a different language(s) down the road without modifying too much core code. We don't need to have a full plan yet for how to support other languages, but it will make that future step easier if our codebase makes a clear distinction between the two.
Assigning to @duranb to add any additional details/specific ideas.