aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar Alex Elsayed <eternaleye@gmail.com> 2011-06-28 17:02:42 -0700
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2011-06-30 10:27:28 +0100
commite83a3ad0f53a5bd48e6f4cfdabac24914705b2ff (patch)
treeb6f406b4e7c3741b9c67a1ce7b6ecef3726a7d74
parent0b3117db9a5baed87bf08ce571777e1a401c1814 (diff)
downloadpaludis-e83a3ad0f53a5bd48e6f4cfdabac24914705b2ff.tar.gz
paludis-e83a3ad0f53a5bd48e6f4cfdabac24914705b2ff.tar.xz
Factor out format_package_id (but don't use it yet)
-rw-r--r--src/clients/cave/format_package_id.cc56
-rw-r--r--src/clients/cave/format_package_id.hh42
2 files changed, 98 insertions, 0 deletions
diff --git a/src/clients/cave/format_package_id.cc b/src/clients/cave/format_package_id.cc
new file mode 100644
index 0000000..e229ec8
--- /dev/null
+++ b/src/clients/cave/format_package_id.cc
@@ -0,0 +1,56 @@
+/* vim: set sw=4 sts=4 et foldmethod=syntax : */
+
+/*
+ * Copyright (c) 2011 Alex Elsayed
+ * Based in part on format_plain_metadata_key.hh, which is
+ * Copyright (c) 2008, 2010 Ciaran McCreesh
+ *
+ * This file is part of the Paludis package manager. Paludis is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU General
+ * Public License version 2, as published by the Free Software Foundation.
+ *
+ * Paludis 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 General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "format_package_id.hh"
+#include "format_string.hh"
+
+#include <paludis/metadata_key.hh>
+#include <paludis/name.hh>
+#include <paludis/util/attributes.hh>
+#include <paludis/util/map.hh>
+#include <paludis/util/stringify.hh>
+#include <paludis/package_id.hh>
+#include <paludis/version_spec.hh>
+#include <string>
+
+using namespace paludis;
+using namespace cave;
+
+std::string
+paludis::cave::format_package_id(
+ const std::shared_ptr<const PackageID> & id,
+ const std::string & format)
+{
+ std::shared_ptr<Map<char, std::string> > m(std::make_shared<Map<char, std::string>>());
+ m->insert('c', stringify(id->name().category()));
+ m->insert('p', stringify(id->name().package()));
+ m->insert('v', stringify(id->version()));
+ m->insert('s', id->slot_key() ? stringify(id->slot_key()->parse_value()) : "");
+ m->insert(':', id->slot_key() ? ":" : "");
+ m->insert('r', stringify(id->repository_name()));
+ m->insert('F', id->canonical_form(idcf_full));
+ m->insert('V', id->canonical_form(idcf_version));
+ m->insert('W', id->canonical_form(idcf_no_version));
+ m->insert('N', id->canonical_form(idcf_no_name));
+ return format_string(format, m);
+}
+
+
diff --git a/src/clients/cave/format_package_id.hh b/src/clients/cave/format_package_id.hh
new file mode 100644
index 0000000..7cb81c2
--- /dev/null
+++ b/src/clients/cave/format_package_id.hh
@@ -0,0 +1,42 @@
+/* vim: set sw=4 sts=4 et foldmethod=syntax : */
+
+/*
+ * Copyright (c) 2011 Alex Elsayed
+ * Based in part on format_plain_metadata_key.hh, which is
+ * Copyright (c) 2008, 2010 Ciaran McCreesh
+ *
+ * This file is part of the Paludis package manager. Paludis is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU General
+ * Public License version 2, as published by the Free Software Foundation.
+ *
+ * Paludis 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 General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef PALUDIS_GUARD_SRC_CLIENTS_CAVE_FORMAT_PACKAGE_ID_HH
+#define PALUDIS_GUARD_SRC_CLIENTS_CAVE_FORMAT_PACKAGE_ID_HH 1
+
+#include <paludis/util/attributes.hh>
+#include <paludis/package_id-fwd.hh>
+#include <memory>
+#include <string>
+
+namespace paludis
+{
+ namespace cave
+ {
+ std::string format_package_id(
+ const std::shared_ptr<const PackageID> & id,
+ const std::string & format)
+ PALUDIS_VISIBLE PALUDIS_ATTRIBUTE((warn_unused_result));
+ }
+}
+
+#endif
+