update name assignment part

Change-Id: I9655448b2d2ed927e36e55ac49357afa0470e507
diff --git a/src/name-assignments/assignment-param.cpp b/src/name-assignments/assignment-param.cpp
index e32665e..56da436 100644
--- a/src/name-assignments/assignment-param.cpp
+++ b/src/name-assignments/assignment-param.cpp
@@ -7,56 +7,30 @@
 namespace ndn {
 namespace ndncert {
 
-_LOG_INIT(ndncert.assignment.param);
-
 NDNCERT_REGISTER_FUNCFACTORY(AssignmentParam, "param");
 
-AssignmentParam::AssignmentParam()
-    : NameAssignmentFuncFactory("param")
+AssignmentParam::AssignmentParam(const std::string& format)
+  : NameAssignmentFuncFactory("param", format)
+{}
+
+std::vector<PartialName>
+AssignmentParam::assignName(const std::vector<std::tuple<std::string, std::string>>& params)
 {
-}
-
-NameAssignmentFunc
-AssignmentParam::getFunction(const std::string &factoryParam) {
-    std::list<std::string> paramList;
-    size_t index = 0, startIndex = 0;
-    while ((index = factoryParam.find("/", startIndex)) != std::string::npos) {
-        auto component = factoryParam.substr(startIndex, index - startIndex);
-        if (!component.empty()) {
-            paramList.push_back(component);
-        }
-        startIndex = index + 1;
+  std::vector<PartialName> resultList;
+  Name result;
+  for (const auto& item : m_nameFormat) {
+    auto it = std::find_if(params.begin(), params.end(),
+                           [&](const std::tuple<std::string, std::string>& e) { return std::get<0>(e) == item; });
+    if (it != params.end()) {
+      result.append(std::get<1>(*it));
     }
-    if (startIndex != factoryParam.size()) {
-        paramList.push_back(factoryParam.substr(startIndex));
+    else {
+      return resultList;
     }
-    return [paramList](const std::vector<std::tuple<std::string, std::string>> params){
-        if (params.size() > paramList.size() * 8) { // might be attack
-            BOOST_THROW_EXCEPTION(std::runtime_error("Too many extra parameters given"));
-        }
-        std::map<std::string, std::string> paramMap;
-        for (const auto& param : params) {
-            paramMap[std::get<0>(param)] = std::get<1>(param);
-            if (std::get<1>(param).size() == 0) { // empty parameter!
-                return std::vector<PartialName>();
-            }
-        }
-
-        //construct name
-        PartialName name;
-        for (const auto& field : paramList) {
-            auto it = paramMap.find(field);
-            if (it == paramMap.end()) {
-                return std::vector<PartialName>();
-            } else {
-                name.append(it->second);
-            }
-        }
-        std::vector<PartialName> nameList;
-        nameList.push_back(name);
-        return nameList;
-    };
+  }
+  resultList.push_back(std::move(result));
+  return resultList;
 }
 
-}
-}
+}  // namespace ndncert
+}  // namespace ndn