Commit f3c3c546 authored by twanvl's avatar twanvl

Added add_extension function

Added ExportTemplate::byName
Use ExportTemplate::byName in main
parent c70f5032
......@@ -11,6 +11,7 @@
#include <data/game.hpp>
#include <data/set.hpp>
#include <data/field.hpp>
#include <util/io/package_manager.hpp>
// ----------------------------------------------------------------------------- : Export template, basics
......@@ -19,6 +20,10 @@ ExportTemplate::ExportTemplate()
, create_directory(false)
{}
ExportTemplateP ExportTemplate::byName(const String& name) {
return package_manager.open<ExportTemplate>(add_extension(name, _(".mse-export-template")));
}
String ExportTemplate::typeNameStatic() { return _("export-template"); }
String ExportTemplate::typeName() const { return _("export-template"); }
Version ExportTemplate::fileVersion() const { return file_version_export_template; }
......
......@@ -38,6 +38,10 @@ class ExportTemplate : public Packaged {
virtual String typeName() const;
Version fileVersion() const;
virtual void validate(Version = app_version);
/// Loads the export template with a particular name
static ExportTemplateP byName(const String& name);
private:
DECLARE_REFLECTION();
};
......
......@@ -269,7 +269,7 @@ int MSE::OnRun() {
throw Error(_("No input set file specified for --export"));
}
String export_template = args[1];
ExportTemplateP exp = package_manager.open<ExportTemplate>(export_template);
ExportTemplateP exp = ExportTemplate::byName(export_template);
SetP set = import_set(args[2]);
String out = args.size() >= 4 ? args[3] : _("");
ScriptValueP result = export_set(set, set->cards, exp, out);
......
......@@ -38,6 +38,14 @@ bool ignore_file(const String& name) {
return name == _("Thumbs.db"); // winXP explorer thumbnails
}
String add_extension(const String& filename, String const& extension) {
if (extension.size() <= filename.size() && is_substr(filename, filename.size() - extension.size(), extension)) {
return filename;
} else {
return filename + extension;
}
}
bool is_filename_char(Char c) {
return isAlnum(c) || c == _(' ') || c == _('_') || c == _('-') || c == _('.');
}
......
......@@ -25,6 +25,13 @@ String normalize_internal_filename(const String& filename);
/** true for hidden OS and version control files */
bool ignore_file(const String& name);
/// Add an extension to a filename if it is not already present
/** add_extension("test",".txt") == "test.txt"
* add_extension("test.txt",".txt") == "test.txt"
* add_extension("test.xyz",".txt") == "test.xyz.txt"
*/
String add_extension(const String& filename, String const& extension);
/// Make sure a string is safe to use as a filename
String clean_filename(const String& name);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment