summaryrefslogtreecommitdiff
path: root/src/org/unitConverter/converterGUI/DefaultPrefixRepetitionRule.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/unitConverter/converterGUI/DefaultPrefixRepetitionRule.java')
-rw-r--r--src/org/unitConverter/converterGUI/DefaultPrefixRepetitionRule.java42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/org/unitConverter/converterGUI/DefaultPrefixRepetitionRule.java b/src/org/unitConverter/converterGUI/DefaultPrefixRepetitionRule.java
new file mode 100644
index 0000000..34d8467
--- /dev/null
+++ b/src/org/unitConverter/converterGUI/DefaultPrefixRepetitionRule.java
@@ -0,0 +1,42 @@
+/**
+ * @since 2020-08-26
+ */
+package org.unitConverter.converterGUI;
+
+import java.util.List;
+import java.util.function.Predicate;
+
+import org.unitConverter.unit.UnitPrefix;
+
+/**
+ * A rule that specifies whether prefix repetition is allowed
+ *
+ * @since 2020-08-26
+ */
+enum DefaultPrefixRepetitionRule implements Predicate<List<UnitPrefix>> {
+ NO_REPETITION {
+ @Override
+ public boolean test(List<UnitPrefix> prefixes) {
+ return prefixes.size() <= 1;
+ }
+ },
+ NO_RESTRICTION {
+ @Override
+ public boolean test(List<UnitPrefix> prefixes) {
+ return true;
+ }
+ },
+ /**
+ * You are allowed to have any number of Yotta/Yocto followed by possibly one
+ * Kilo-Zetta/Milli-Zepto followed by possibly one Deca/Hecto. Same for
+ * reducing prefixes, don't mix magnifying and reducing. Non-metric
+ * (including binary) prefixes can't be repeated.
+ */
+ COMPLEX_REPETITION {
+ @Override
+ public boolean test(List<UnitPrefix> prefixes) {
+ // TODO method stub
+ return false;
+ }
+ };
+}