/*
* mxp.cpp
* Functions that deal with mxp
* ____ _
* | _ \ ___ __ _| |_ __ ___ ___
* | |_) / _ \/ _` | | '_ ` _ \/ __|
* | _ < __/ (_| | | | | | | \__ \
* |_| \_\___|\__,_|_|_| |_| |_|___/
*
* Permission to use, modify and distribute is granted via the
* Creative Commons - Attribution - Non Commercial - Share Alike 3.0 License
* http://creativecommons.org/licenses/by-nc-sa/3.0/
*
* Copyright (C) 2007-2012 Jason Mitchell, Randi Mitchell
* Contributions by Tim Callahan, Jonathan Hseu
* Based on Mordor (C) Brooke Paul, Brett J. Vickers, John P. Freeman
*
*/
#include "mud.h"
#include "mxp.h"
bstring MxpElement::getName() {
return(name);
}
bstring MxpElement::getColor() {
return(color);
}
bool MxpElement::isColor() {
return(!color.empty());
}
//***********************************************************************
// defineMXP
//***********************************************************************
// TODO: Put this in a lookup table
void Socket::defineMxp() {
if(!this || !getMxp())
return;
bprint(MXP_BEG "VERSION" MXP_END);
bprint(MXP_BEG "SUPPORT" MXP_END);
for(MxpElementMap::value_type p : gConfig->mxpElements) {
std::cout << p.second->getDefineString() << std::endl;
bprint(p.second->getDefineString());
}
}
void Config::clearMxpElements() {
for(MxpElementMap::value_type p : mxpElements) {
delete p.second;
}
mxpElements.clear();
mxpColors.clear();
}
bstring& Config::getMxpColorTag(bstring str) {
return(mxpColors[str]);
}
bstring MxpElement::getDefineString() {
std::ostringstream oStr;
oStr << MXP_BEG;
oStr << "!ELEMENT " << name;
oStr << " \"<";
if(mxpType == "send")
oStr << "send href='";
oStr << command;
if(mxpType == "send")
oStr << "'";
if(!hint.empty())
oStr << " hint='" << hint << "'";
if(!expire.empty())
oStr << " expire='" << expire << "'";
if(prompt)
oStr << " PROMPT";
oStr << ">\"";
if(!attributes.empty())
oStr << " ATT='" << attributes << "'";
oStr << MXP_END;
return(oStr.str());
}