Commit 18f1cd1b authored by Paul Asmuth's avatar Paul Asmuth
Browse files

consistent key configuration

parent 9380de4f
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -189,5 +189,19 @@ ReturnCode configure_data_frame(
  return ERROR_INVALID_ARGUMENT;
}

ParserFn configure_key(std::string* key) {
  return [key] (const plist::Property& prop) -> ReturnCode {
    if (plist::is_value(prop) && prop.value.size() > 0 && prop.value[0] == '$') {
      *key = prop.value.substr(1);
      return OK;
    } else {
      return ReturnCode::errorf(
          "EARG",
          "invalid value '$0'; keys must start with a dollar sign ($)",
          prop.value);
    }
  };
}

} // namespace plotfx
+2 −0
Original line number Diff line number Diff line
@@ -105,6 +105,8 @@ ParserFn configure_slot(Slot<T>* slot);

ParserFn configure_multiprop(const std::vector<ParserFn>& parsers);

ParserFn configure_key(std::string* key);

ReturnCode configure_measure_rel(
    const plist::Property& prop,
    double dpi,
+3 −3
Original line number Diff line number Diff line
@@ -160,9 +160,9 @@ ReturnCode configure(

  static const ParserDefinitions pdefs = {
    {"data", std::bind(&configure_data_frame, std::placeholders::_1, &config.data)},
    {"group", std::bind(&configure_string, std::placeholders::_1, &config.default_group_key)},
    {"x", std::bind(&configure_string, std::placeholders::_1, &config.default_x_key)},
    {"y", std::bind(&configure_string, std::placeholders::_1, &config.default_y_key)},
    {"group", configure_key(&config.default_group_key)},
    {"x", configure_key(&config.default_x_key)},
    {"y", configure_key(&config.default_y_key)},
    {"axis-x-type", std::bind(&domain_configure, std::placeholders::_1, domain_x)},
    {"axis-x-min", std::bind(&configure_float_opt, std::placeholders::_1, &domain_x->min)},
    {"axis-x-max", std::bind(&configure_float_opt, std::placeholders::_1, &domain_x->max)},
+2 −2
Original line number Diff line number Diff line
@@ -151,9 +151,9 @@ ReturnCode configure(
  layer.group_key = config->default_group_key;

  static const ParserDefinitions pdefs = {
    {"x", std::bind(&configure_string, std::placeholders::_1, &layer.x_key)},
    {"x", configure_key(&layer.x_key)},
    {"x-scale", std::bind(&configure_string, std::placeholders::_1, &layer.x_scale)},
    {"y", std::bind(&configure_string, std::placeholders::_1, &layer.y_key)},
    {"y", configure_key(&layer.y_key)},
    {"y-scale", std::bind(&configure_string, std::placeholders::_1, &layer.y_scale)},
    {"group", std::bind(&configure_string, std::placeholders::_1, &layer.group_key)},
    {"line-color", configure_slot(&layer.line_color)},
+2 −2
Original line number Diff line number Diff line
@@ -120,9 +120,9 @@ ReturnCode configure(const plist::Property& prop, const Document& doc, PlotConfi
  layer.y_key = config->default_y_key;

  static const ParserDefinitions pdefs = {
    {"x", std::bind(&configure_string, std::placeholders::_1, &layer.x_key)},
    {"x", configure_key(&layer.x_key)},
    {"x-scale", std::bind(&configure_string, std::placeholders::_1, &layer.x_scale)},
    {"y", std::bind(&configure_string, std::placeholders::_1, &layer.y_key)},
    {"y", configure_key(&layer.y_key)},
    {"y-scale", std::bind(&configure_string, std::placeholders::_1, &layer.y_scale)},
    {"point-color", configure_slot(&layer.point_color)},
  };