GivenStory.java
- package org.jbehave.core.model;
- import static java.util.regex.Pattern.DOTALL;
- import static java.util.regex.Pattern.compile;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.commons.lang3.builder.ToStringBuilder;
- import org.apache.commons.lang3.builder.ToStringStyle;
- public class GivenStory {
- private static final String PATH_REGEX = "(.*)\\#\\{(.*?)\\}";
- private static final String PARAMETERS_REGEX = ".*(\\:|\\;).*";
- private final String givenStoryAsString;
- private Map<String, String> parameters = new HashMap<>();
- private String path;
- private String anchor;
- public GivenStory(String givenStoryAsString) {
- this.givenStoryAsString = givenStoryAsString.trim();
- parse();
- }
- private void parse() {
- Pattern pattern = compile(PATH_REGEX, DOTALL);
- Matcher matcher = pattern.matcher(givenStoryAsString.trim());
- if (matcher.matches()) {
- path = matcher.group(1).trim();
- anchor = matcher.group(2).trim();
- } else {
- path = givenStoryAsString;
- anchor = "";
- }
- }
- public String getPath() {
- return path;
- }
- public String getAnchor() {
- return anchor;
- }
- public boolean hasAnchor() {
- return !StringUtils.isBlank(anchor);
- }
- public boolean hasAnchorParameters() {
- return hasAnchor() && anchor.matches(PARAMETERS_REGEX);
- }
- public boolean hasAnchorWithExamplesReference() {
- return hasAnchor() && !anchor.matches(PARAMETERS_REGEX);
- }
- public Map<String, String> getAnchorParameters() {
- Map<String,String> parameters = new HashMap<>();
- for (String pair : anchor.trim().split(";")) {
- String[] split = pair.split(":");
- if (split.length > 1) {
- parameters.put(split[0], split[1]);
- }
- }
- return parameters;
- }
- public Map<String, String> getParameters() {
- return parameters;
- }
- public void useParameters(Map<String, String> parameters) {
- this.parameters = parameters;
- }
- public String asString() {
- return givenStoryAsString;
- }
- public String toString() {
- return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
- }
- }