Synthia
Generic and flexible data structure generator
RandomTrim.java
Go to the documentation of this file.
1 package ca.uqac.lif.synthia.string;
2 
3 import ca.uqac.lif.synthia.Picker;
7 
8 /**
9  * A combination of {@link RandomPrefix} and {@link RandomSuffix}. This
10  * {@link ca.uqac.lif.synthia.Picker} first calculates a prefix of the string and on this prefix,
11  * then calculates a suffix and returns the resulting string.
12  * @author Marc-Antoine Plourde
13  * @ingroup API
14  */
15 public class RandomTrim extends RandomPrefix
16 {
17  protected RandomTrim(String string, RandomInteger prefix_size)
18  {
19  super(string, prefix_size);
20  }
21 
22  public RandomTrim(String string)
23  {
24  super(string);
25  }
26 
27  @Override
28  public Shrinkable<String> shrink(String element, Picker<Float> decision, float magnitude)
29  {
30  if(element.isEmpty())
31  {
32  return new NothingPicker<>();
33  }
34  return new RandomTrim(element, m_prefixSize.duplicate(true));
35  }
36 
37  @Override
38  public String pick()
39  {
40  String s = super.pick();
41  m_prefixSize.setInterval(0, s.length() + 1);
42  int start_index = m_prefixSize.pick();
43 
44  m_prefixSize.setInterval(0, m_string.length()+1); // reset index interval before next pick
45 
46  return s.substring(start_index, s.length());
47  }
48 
49  @Override
50  public RandomTrim duplicate(boolean with_state)
51  {
52  return new RandomTrim(m_string, m_prefixSize.duplicate(with_state));
53  }
54 }
ca.uqac.lif.synthia.Picker
Picks an object.
Definition: Picker.java:36
ca.uqac.lif.synthia.string.RandomTrim
A combination of RandomPrefix and RandomSuffix.
Definition: RandomTrim.java:15
ca.uqac.lif.synthia.Shrinkable
Interface signaling that a picker can be shrunk.
Definition: Shrinkable.java:36
ca.uqac.lif.synthia.string.RandomPrefix.m_string
String m_string
The string used to generate prefixes.
Definition: RandomPrefix.java:28
ca.uqac.lif.synthia.util
Miscellaneous pickers performing various functions.
Definition: ArrayPicker.java:19
ca.uqac.lif.synthia.string.RandomTrim.RandomTrim
RandomTrim(String string)
Definition: RandomTrim.java:22
ca.uqac.lif.synthia.string.RandomPrefix
Like RandomSubString, but this time, the Picker returns a prefix of the original strings of randomly ...
Definition: RandomPrefix.java:17
ca.uqac
ca.uqac.lif.synthia.random
Pickers that produce pseudo-random objects such as numbers.
Definition: AffineTransform.java:19
ca.uqac.lif.synthia
Definition: Bounded.java:19
ca.uqac.lif.synthia.string.RandomTrim.pick
String pick()
Picks an object.
Definition: RandomTrim.java:38
ca.uqac.lif.synthia.random.RandomInteger.setInterval
RandomInteger setInterval(int min, int max)
Sets the interval in which integers are picked.
Definition: RandomInteger.java:84
ca.uqac.lif
ca.uqac.lif.synthia.util.NothingPicker
A RelativePicker that only throws a NoMoreElementException when the pick() method is called.
Definition: NothingPicker.java:36
ca.uqac.lif.synthia.random.RandomInteger
Picks an integer uniformly in an interval.
Definition: RandomInteger.java:31
ca.uqac.lif.synthia.random.RandomInteger.pick
Integer pick()
Picks a random integer.
Definition: RandomInteger.java:118
ca
ca.uqac.lif.synthia.random.RandomInteger.duplicate
RandomInteger duplicate(boolean with_state)
Creates a copy of the RandomInteger picker.
Definition: RandomInteger.java:133
ca.uqac.lif.synthia.string.RandomTrim.RandomTrim
RandomTrim(String string, RandomInteger prefix_size)
Definition: RandomTrim.java:17
ca.uqac.lif.synthia.string.RandomTrim.duplicate
RandomTrim duplicate(boolean with_state)
Creates a copy of the picker.
Definition: RandomTrim.java:50
ca.uqac.lif.synthia.string.RandomPrefix.m_prefixSize
RandomInteger m_prefixSize
RandomInteger picker to select the size of a generated prefix.
Definition: RandomPrefix.java:23
ca.uqac.lif.synthia.string.RandomTrim.shrink
Shrinkable< String > shrink(String element, Picker< Float > decision, float magnitude)
Create a new RandomPrefix picker based on a given string.
Definition: RandomTrim.java:28