@Nullable private String expandMacroSet( String str, boolean firstQueueExpand, DataContext dataContext, Iterator<Macro> macros) throws Macro.ExecutionCancelledException { if (str == null) return null; while (macros.hasNext()) { Macro macro = macros.next(); if (macro instanceof SecondQueueExpandMacro && firstQueueExpand) continue; String name = "$" + macro.getName() + "$"; String macroNameWithParamStart = "$" + macro.getName() + "("; if (str.contains(name)) { String expanded = macro.expand(dataContext); // if (dataContext instanceof DataManagerImpl.MyDataContext) { // // hack: macro.expand() can cause UI events such as showing dialogs ('Prompt' macro) // which may 'invalidate' the datacontext // // since we know exactly that context is valid, we need to update its event count // // ((DataManagerImpl.MyDataContext)dataContext).setEventCount(IdeEventQueue.getInstance().getEventCount()); // } if (expanded == null) { expanded = ""; } str = StringUtil.replace(str, name, expanded); } else if (str.contains(macroNameWithParamStart)) { String macroNameWithParamEnd = ")$"; Map<String, String> toReplace = null; int i = str.indexOf(macroNameWithParamStart); while (i != -1) { int j = str.indexOf(macroNameWithParamEnd, i + macroNameWithParamStart.length()); if (j > i) { String param = str.substring(i + macroNameWithParamStart.length(), j); if (toReplace == null) toReplace = new THashMap<String, String>(); String expanded = macro.expand(dataContext, param); if (expanded == null) { expanded = ""; } toReplace.put(macroNameWithParamStart + param + macroNameWithParamEnd, expanded); i = j + macroNameWithParamEnd.length(); } else { break; } } if (toReplace != null) { for (Map.Entry<String, String> entry : toReplace.entrySet()) { str = StringUtil.replace(str, entry.getKey(), entry.getValue()); } } } } return str; }
private void save() { try { File macroFolder = new File(MACRO_FOLDER); if (!macroFolder.exists()) { macroFolder.mkdir(); } for (Macro macro : macros.values()) { if (!macro.isTransient()) { // write JSON to config file File file = new File(MACRO_FOLDER + "/" + macro.getName() + ".json"); FileWriter fileWriter = new FileWriter(file); try { fileWriter.write(macro.toJSON().toJSONString()); } finally { // close file fileWriter.close(); } } } } catch (IOException e) { // deal with exception e.printStackTrace(); } }
public void addMacro(Macro macro) { try { cpp.addMacro(macro.getName(), FeatureExprLib.True(), macro.getValue()); } catch (LexerException e) { throw new BuildException(e); } }
public void load(Reader reader) { try { JSONParser jsonParser = new JSONParser(); JSONObject jsonMacro = (JSONObject) jsonParser.parse(reader); Macro macro = Macro.fromJSON(jsonMacro); macros.put(macro.getName(), macro); } catch (Exception e) { e.printStackTrace(); } }
public Macro get(String name) { Map m = db.getMap(NAME); Macro c; for (Iterator i = m.values().iterator(); i.hasNext(); ) { c = (Macro) i.next(); if (c.getName().equals(name)) { return c; } } return null; }
/** * @see * org.alfresco.contentcraft.command.BaseCommandExecuter#onCommandImpl(org.bukkit.command.CommandSender, * org.bukkit.command.Command, java.lang.String, java.lang.String[]) */ @Override public void onCommandImpl(CommandSender sender, Command command, String label, String[] args) throws CommandUsageException { String operation = args[0]; if (operation.equalsIgnoreCase(CMD_LIST)) { StringBuilder builder = new StringBuilder("Available macros:\n"); for (String name : macros.keySet()) { builder.append(" - " + name + "\n"); } sender.sendMessage(builder.toString()); // temp save(); } else if (operation.equalsIgnoreCase(CMD_STOP)) { // stop recording the currently recording macro if (recordingMacro != null) { recordingMacro.stop(); recordingMacro = null; save(); } else { for (Macro macro : macros.values()) { macro.stop(); } } } else { String name = args[1]; Macro macro = macros.get(name); if (operation.equalsIgnoreCase(CMD_START)) { if (recordingMacro == null) { if (macro == null) { macro = Macro.startNew(name); macros.put(name, macro); } else { macro.clear(); macro.start(); } // store the currently recording macro recordingMacro = macro; } else { // a macro is already recording sender.sendMessage( "Can't start macro, because " + recordingMacro.getName() + " is currently being recorded."); } } else if (operation.equalsIgnoreCase(CMD_RUN)) { if (macro != null) { boolean runRepeat = false; if (args.length == 3 && "-R".equals(args[2])) { runRepeat = true; } macro.runPending(runRepeat); } } else if (operation.equalsIgnoreCase(CMD_DELETE)) { if (macro != null) { macros.remove(name); save(); } } } }
public String toString() { return myMacro.getName() + " - " + myMacro.getDescription(); }
private void registerMacro(Macro macro) { assert PathMacrosImpl.getToolMacroNames().contains(macro.getName()) : "Macro '" + macro.getName() + "' should be registered in PathMacros!"; myMacrosMap.put(macro.getName(), macro); }