summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/bjc/inflexion/InflectionData.java86
-rw-r--r--src/main/java/bjc/inflexion/InflectionUtils.java156
-rw-r--r--src/main/java/bjc/inflexion/NounInflector.java69
3 files changed, 140 insertions, 171 deletions
diff --git a/src/main/java/bjc/inflexion/InflectionData.java b/src/main/java/bjc/inflexion/InflectionData.java
new file mode 100644
index 0000000..bf5f02c
--- /dev/null
+++ b/src/main/java/bjc/inflexion/InflectionData.java
@@ -0,0 +1,86 @@
+/**
+ * (C) Copyright 2017 Benjamin Culkin.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package bjc.inflexion;
+
+/**
+ * Necessary data for inflection of various things.
+ *
+ * @author EVE
+ *
+ */
+public class InflectionData {
+ /**
+ * Check whether a word is a pronoun or not.
+ *
+ * @param word
+ * The possible pronoun.
+ *
+ * @return Whether or not the word is a pronoun.
+ */
+ public static boolean isPronoun(String word) {
+ /*
+ * TODO implement me.
+ */
+ return false;
+ }
+
+ /**
+ * Get the plural form of the specified pronoun.
+ *
+ * @param pronoun
+ * The pronoun to pluralize.
+ *
+ * @return The plural form of the pronoun.
+ */
+ public static String pluralPronoun(String pronoun) {
+ /*
+ * TODO implement me.
+ */
+ return null;
+ }
+
+ /**
+ * Check if the specified noun has an irregular plural.
+ *
+ * @param noun
+ * The noun to check for irregular plurals.
+ *
+ * @return The irregular plural for the noun.
+ */
+ public static boolean nounHasIrregularPlural(String noun) {
+ /*
+ * TODO implement me.
+ */
+ return false;
+ }
+
+ /**
+ * Get the irregular plural for the specified noun.
+ *
+ * @param noun
+ * The noun to retrieve the irregular plural for.
+ *
+ * @return The irregular plural for the noun.
+ */
+ public static String nounIrregularPlural(String noun) {
+ /*
+ * TODO implement me.
+ */
+ return null;
+ }
+
+
+} \ No newline at end of file
diff --git a/src/main/java/bjc/inflexion/InflectionUtils.java b/src/main/java/bjc/inflexion/InflectionUtils.java
index 69e359d..fd9a9df 100644
--- a/src/main/java/bjc/inflexion/InflectionUtils.java
+++ b/src/main/java/bjc/inflexion/InflectionUtils.java
@@ -1,108 +1,48 @@
-/**
- * (C) Copyright 2017 Benjamin Culkin.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package bjc.inflexion;
-
-/**
- * Utility functions for inflections.
- *
- * Whenever a suffix is mentioned, it should be provided in the format of a
- * leading '-', followed by a regular expression.
- *
- * @author bjculkin
- *
- */
-public class InflectionUtils {
- /**
- * Returns true if the given word ends in the given suffix.
- *
- * @param word
- * The word to check.
- *
- * @param suffix
- * The suffix to check for.
- *
- * @return Whether or not the provided word ends in the provided suffix.
- */
- public static boolean suffix(String word, String suffix) {
- /*
- * TODO implement me.
- */
- return false;
- }
-
- /**
- * Check if the given word inflects from the given singular suffix to the
- * given plural suffix.
- *
- * @param word
- * The word to check.
- *
- * @param singular
- * The singular suffix.
- *
- * @param plural
- * The plural suffix.
- *
- * @return Whether or not the provided word is in that inflection category.
- */
- public static boolean category(String word, String singular, String plural) {
- /*
- * TODO implement me.
- */
- return false;
- }
-
- /**
- * Replace the provided singular suffix in the word with the given plural
- * suffix.
- *
- * @param word
- * The word to inflect.
- *
- * @param singular
- * The singular suffix to remove.
- *
- * @param plural
- * The plural suffix to add. Unlike normal suffixes, this must be
- * a '-' followed by a string.
- *
- * @return The word with the suffix replaced.
- */
- public static String inflect(String word, String singular, String plural) {
- /*
- * TODO implement me.
- */
- return null;
- }
-
- /**
- * Remove the specified suffix from the word.
- *
- * @param word
- * The word to stem.
- *
- * @param suffix
- * The suffix to remove from the word.
- *
- * @return The word with the suffix removed.
- */
- public static String stem(String word, String suffix) {
- /*
- * TODO implement me.
- */
- return null;
- }
-} \ No newline at end of file
+/**
+ * (C) Copyright 2017 Benjamin Culkin.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package bjc.inflexion;
+
+/**
+ * @author EVE
+ *
+ */
+public class InflectionUtils {
+ /**
+ * Inflect a word, replacing the singular suffix with the plural suffix.
+ *
+ * @param word
+ * The word to inflect.
+ *
+ * @param singular
+ * The singular prefix for the word.
+ *
+ * @param plural
+ * The plural prefix for the word.
+ *
+ * @return The word, with the singular prefix replaced with the plural
+ * prefix.
+ */
+ public static String inflect(String word, String singular, String plural) {
+ /*
+ * Remove leading '-' from the patterns.
+ */
+ return replaceLast(word, singular.substring(1), plural.substring(1));
+ }
+
+ private static String replaceLast(String text, String regex, String replacement) {
+ return text.replaceFirst("(?s)(.*)" + regex, "$1" + replacement);
+ }
+}
diff --git a/src/main/java/bjc/inflexion/NounInflector.java b/src/main/java/bjc/inflexion/NounInflector.java
index 8f839f4..5ba39fb 100644
--- a/src/main/java/bjc/inflexion/NounInflector.java
+++ b/src/main/java/bjc/inflexion/NounInflector.java
@@ -15,79 +15,22 @@
*/
package bjc.inflexion;
-import static bjc.inflexion.InflectionUtils.*;
-
/**
- * Inflect English nouns.
+ * Inflect singular nouns to plural nouns.
*
- * @author student
+ * @author EVE
*
*/
public class NounInflector {
/**
- *
- */
- public static String inflectNoun(String noun) {
- if (isUserPlural(noun)) {
- return userPlural(noun);
- }
-
- if (dontPluralize(noun))
- return noun;
-
- return "";
- }
-
- /**
- * Check if a given noun shouldn't be pluralized.
+ * Inflect a singular noun to a plural form.
*
* @param noun
- * The noun to check.
+ * The singular noun.
*
- * @return Whether or not the noun has no plural.
+ * @return The plural form of the noun.
*/
- private static boolean dontPluralize(String noun) {
- String[] suffixes = new String[] { "-fish", "-ois", "-sheep", "-deer", "-pox", "-[A-Z].*ese", "-itis", };
-
- for (String sfx : suffixes) {
- if (suffix(noun, sfx))
- return true;
- }
-
- if (category(noun, "", ""))
- return true;
-
- return false;
- }
-
- /**
- * Inflect a noun according to a user-defined plural.
- *
- * @param noun
- * The noun to inflect.
- *
- * @return The noun, inflected by the user form.
- */
- private static String userPlural(String noun) {
- /*
- * TODO Auto-generated method stub
- */
+ public static String inflectNoun(String noun) {
return null;
}
-
- /**
- * Check if there is a user defined plural form for the given noun.
- *
- * @param noun
- * The noun to check.
- *
- * @return Whether or not a user-defined plural exists for a particular
- * noun.
- */
- private static boolean isUserPlural(String noun) {
- /*
- * TODO Auto-generated method stub
- */
- return false;
- }
}