/*
* Copyright 2005, 2006, 2007 Florian Schmitz
*
* This file is part of CSSTidy.
*
* CSSTidy is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* CSSTidy is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see .
*/
using namespace std;
#include "csspp_globals.hpp"
#include "prepare.hpp"
map< string, vector > predefined_templates;
int main(int argc, char *argv[])
{
prepare();
predefined_templates["high"].push_back("");
predefined_templates["high"].push_back(" {\n");
predefined_templates["high"].push_back("");
predefined_templates["high"].push_back("{");
predefined_templates["high"].push_back("");
predefined_templates["high"].push_back("");
predefined_templates["high"].push_back(";");
predefined_templates["high"].push_back("}");
predefined_templates["high"].push_back("\n");
predefined_templates["high"].push_back("\n}\n");
predefined_templates["high"].push_back("");
predefined_templates["high"].push_back(""); //after comment
predefined_templates["high"].push_back("\n"); // after last line @-rule
predefined_templates["highest"].push_back("");
predefined_templates["highest"].push_back("{");
predefined_templates["highest"].push_back("");
predefined_templates["highest"].push_back("{");
predefined_templates["highest"].push_back("");
predefined_templates["highest"].push_back("");
predefined_templates["highest"].push_back(";");
predefined_templates["highest"].push_back("}");
predefined_templates["highest"].push_back("");
predefined_templates["highest"].push_back("}");
predefined_templates["highest"].push_back("");
predefined_templates["highest"].push_back(""); //after comment
predefined_templates["highest"].push_back(""); // after last line @-rule
predefined_templates["low"].push_back("");
predefined_templates["low"].push_back(" {\n");
predefined_templates["low"].push_back("");
predefined_templates["low"].push_back("\n{\n");
predefined_templates["low"].push_back("\t");
predefined_templates["low"].push_back("");
predefined_templates["low"].push_back(";\n");
predefined_templates["low"].push_back("}");
predefined_templates["low"].push_back("\n\n");
predefined_templates["low"].push_back("\n}\n\n");
predefined_templates["low"].push_back("\t");
predefined_templates["low"].push_back("\n"); //after comment
predefined_templates["low"].push_back("\n"); // after last line @-rule
csstidy csst;
if(argc > 1)
{
string filein = argv[1];
if(filein != "-" && !file_exists(argv[1]))
{
cout << "The file \"" << filein << "\" does not exist." << endl;
return EXIT_FAILURE;
}
string output_filename;
for(int i = 2; i < argc; ++i)
{
bool output_file = true;
for(map::iterator j = csst.settings.begin(); j != csst.settings.end(); ++j )
{
if(trim(argv[i]) == "--" + j->first + "=false" || trim(argv[i]) == "--" + j->first + "=0")
{
csst.settings[j->first] = 0;
output_file = false;
}
else if(trim(argv[i]) == "--" + j->first + "=true" || trim(argv[i]) == "--" + j->first + "=1")
{
csst.settings[j->first] = 1;
output_file = false;
}
else if(trim(argv[i]) == "--" + j->first + "=2")
{
csst.settings[j->first] = 2;
output_file = false;
}
}
if(trim(argv[i]).substr(0,12) == "--css_level=")
{
csst.css_level = strtoupper(trim(argv[i]).substr(12));
output_file = false;
}
else if(trim(argv[i]).substr(0,11) == "--template=")
{
string template_value = trim(argv[i]).substr(11);
if(template_value == "high" || template_value == "highest" || template_value == "low")
{
csst.csstemplate = predefined_templates[template_value];
}
else if(template_value != "default")
{
string tpl_content = file_get_contents(template_value);
if(tpl_content != "")
{
vector tpl_arr = explode("|",tpl_content,true);
csst.csstemplate = tpl_arr;
}
}
output_file = false;
}
if(output_file)
{
output_filename = trim(argv[i]);
}
}
string css_file;
if(filein == "-") {
string temp;
do {
getline(cin, temp, '\n');
css_file += (temp + "\n");
} while(cin);
} else {
css_file = file_get_contents(argv[1]);
}
csst.parse_css(css_file);
// Print CSS to screen if no output file is specified
if(output_filename == "")
{
csst.print_css();
}
else
{
csst.print_css(output_filename);
}
return EXIT_SUCCESS;
}
cout << endl << "Usage:" << endl << endl << "csstidy input_filename [\n";
for(map::iterator j = csst.settings.begin(); j != csst.settings.end(); ++j )
{
if (j->first == "optimise_shorthands" || j->first == "merge_selectors"
|| j->first == "case_properties") {
continue;
}
cout << " --" << j->first;
if(j->second == true)
{
cout << "=[true|false] |\n";
}
else
{
cout << "=[false|true] |\n";
}
}
cout << " --merge_selectors=[2|1|0] |\n";
cout << " --case_properties=[0|1|2] |\n";
cout << " --optimise_shorthands=[1|2|0] |\n";
cout << " --template=[default|filename|low|high|highest] |\n";
cout << " output_filename ]*" << endl;
return EXIT_SUCCESS;
}