/test/lib/cli/aux_cli_07_custom_option.e

http://github.com/tybor/Liberty · Specman e · 50 lines · 43 code · 7 blank · 0 comment · 1 complexity · d2876ffdc558c86a5d3c964b300e93d8 MD5 · raw file

  1. class AUX_CLI_07_CUSTOM_OPTION
  2. create {TEST_CLI_07}
  3. make
  4. feature {TEST_CLI_07}
  5. items: MAP[FIXED_STRING, FIXED_STRING]
  6. do
  7. Result := items_
  8. end
  9. feature {}
  10. make (val: STRING)
  11. local
  12. done: BOOLEAN
  13. key, value: FIXED_STRING
  14. do
  15. create items_.make
  16. from
  17. done := not pattern.match(val)
  18. until
  19. done
  20. loop
  21. check
  22. pattern.named_group_matched(once "key")
  23. end
  24. key := pattern.named_group_value(val, once "key").intern
  25. if pattern.named_group_matched(once "value") then
  26. value := pattern.named_group_value(val, once "value").intern
  27. else
  28. value := Void
  29. end
  30. items_.add(value, key)
  31. done := not pattern.match_next(val)
  32. end
  33. end
  34. pattern: REGULAR_EXPRESSION
  35. local
  36. re: REGULAR_EXPRESSION_BUILDER
  37. once
  38. Result := re.convert_python_pattern("\s*(?P<key>[^=;]+?)(?:\s*?=\s*(?P<value>[^;]*?))?\s*(?:;|$)")
  39. end
  40. items_: HASHED_DICTIONARY[FIXED_STRING, FIXED_STRING]
  41. invariant
  42. items_ /= Void
  43. end