# frozen_string_literal: true module InflectorTestCases SingularToPlural = { "search" => "searches", "switch" => "switches", "fix" => "fixes", "box" => "boxes", "process" => "processes", "address" => "addresses", "case" => "cases", "stack" => "stacks", "wish" => "wishes", "fish" => "fish", "jeans" => "jeans", "funky jeans" => "funky jeans", "my money" => "my money", "category" => "categories", "query" => "queries", "ability" => "abilities", "agency" => "agencies", "movie" => "movies", "archive" => "archives", "index" => "indices", "wife" => "wives", "safe" => "saves", "half" => "halves", "move" => "moves", "salesperson" => "salespeople", "person" => "people", "spokesman" => "spokesmen", "man" => "men", "woman" => "women", "basis" => "bases", "diagnosis" => "diagnoses", "diagnosis_a" => "diagnosis_as", "datum" => "data", "medium" => "media", "stadium" => "stadia", "analysis" => "analyses", "my_analysis" => "my_analyses", "node_child" => "node_children", "child" => "children", "experience" => "experiences", "day" => "days", "comment" => "comments", "foobar" => "foobars", "newsletter" => "newsletters", "old_news" => "old_news", "news" => "news", "series" => "series", "miniseries" => "miniseries", "species" => "species", "quiz" => "quizzes", "perspective" => "perspectives", "ox" => "oxen", "photo" => "photos", "buffalo" => "buffaloes", "tomato" => "tomatoes", "dwarf" => "dwarves", "elf" => "elves", "information" => "information", "equipment" => "equipment", "bus" => "buses", "status" => "statuses", "status_code" => "status_codes", "mouse" => "mice", "louse" => "lice", "house" => "houses", "octopus" => "octopi", "virus" => "viri", "alias" => "aliases", "portfolio" => "portfolios", "vertex" => "vertices", "matrix" => "matrices", "matrix_fu" => "matrix_fus", "axis" => "axes", "taxi" => "taxis", # prevents regression "testis" => "testes", "crisis" => "crises", "rice" => "rice", "shoe" => "shoes", "horse" => "horses", "prize" => "prizes", "edge" => "edges", "database" => "databases", # regression tests against improper inflection regexes "|ice" => "|ices", "|ouse" => "|ouses", "slice" => "slices", "police" => "police" } CamelToUnderscore = { "Product" => "product", "SpecialGuest" => "special_guest", "ApplicationController" => "application_controller", "Area51Controller" => "area51_controller", "AppCDir" => "app_c_dir" } UnderscoreToLowerCamel = { "product" => "product", "special_guest" => "specialGuest", "application_controller" => "applicationController", "area51_controller" => "area51Controller" } SymbolToLowerCamel = { product: "product", special_guest: "specialGuest", application_controller: "applicationController", area51_controller: "area51Controller" } CamelToUnderscoreWithoutReverse = { "HTMLTidy" => "html_tidy", "HTMLTidyGenerator" => "html_tidy_generator", "FreeBSD" => "free_bsd", "HTML" => "html", "ForceXMLController" => "force_xml_controller", } CamelWithModuleToUnderscoreWithSlash = { "Admin::Product" => "admin/product", "Users::Commission::Department" => "users/commission/department", "UsersSection::CommissionDepartment" => "users_section/commission_department", } ClassNameToForeignKeyWithUnderscore = { "Person" => "person_id", "MyApplication::Billing::Account" => "account_id" } ClassNameToForeignKeyWithoutUnderscore = { "Person" => "personid", "MyApplication::Billing::Account" => "accountid" } ClassNameToTableName = { "PrimarySpokesman" => "primary_spokesmen", "NodeChild" => "node_children", "Calculu" => "calculus" # Singular names are not handled correctly } StringToParameterized = { "Donald E. Knuth" => "donald-e-knuth", "Random text with *(bad)* characters" => "random-text-with-bad-characters", "Allow_Under_Scores" => "allow_under_scores", "Trailing bad characters!@#" => "trailing-bad-characters", "!@#Leading bad characters" => "leading-bad-characters", "Squeeze separators" => "squeeze-separators", "Test with + sign" => "test-with-sign", "Test with malformed utf8 \251" => "test-with-malformed-utf8" } StringToParameterizedPreserveCase = { "Donald E. Knuth" => "Donald-E-Knuth", "Random text with *(bad)* characters" => "Random-text-with-bad-characters", "Allow_Under_Scores" => "Allow_Under_Scores", "Trailing bad characters!@#" => "Trailing-bad-characters", "!@#Leading bad characters" => "Leading-bad-characters", "Squeeze separators" => "Squeeze-separators", "Test with + sign" => "Test-with-sign", "Test with malformed utf8 \xA9" => "Test-with-malformed-utf8" } StringToParameterizeWithNoSeparator = { "Donald E. Knuth" => "donaldeknuth", "With-some-dashes" => "with-some-dashes", "Random text with *(bad)* characters" => "randomtextwithbadcharacters", "Trailing bad characters!@#" => "trailingbadcharacters", "!@#Leading bad characters" => "leadingbadcharacters", "Squeeze separators" => "squeezeseparators", "Test with + sign" => "testwithsign", "Test with malformed utf8 \251" => "testwithmalformedutf8" } StringToParameterizePreserveCaseWithNoSeparator = { "Donald E. Knuth" => "DonaldEKnuth", "With-some-dashes" => "With-some-dashes", "Random text with *(bad)* characters" => "Randomtextwithbadcharacters", "Trailing bad characters!@#" => "Trailingbadcharacters", "!@#Leading bad characters" => "Leadingbadcharacters", "Squeeze separators" => "Squeezeseparators", "Test with + sign" => "Testwithsign", "Test with malformed utf8 \xA9" => "Testwithmalformedutf8" } StringToParameterizeWithUnderscore = { "Donald E. Knuth" => "donald_e_knuth", "Random text with *(bad)* characters" => "random_text_with_bad_characters", "With-some-dashes" => "with-some-dashes", "Retain_underscore" => "retain_underscore", "Trailing bad characters!@#" => "trailing_bad_characters", "!@#Leading bad characters" => "leading_bad_characters", "Squeeze separators" => "squeeze_separators", "Test with + sign" => "test_with_sign", "Test with malformed utf8 \251" => "test_with_malformed_utf8" } StringToParameterizePreserveCaseWithUnderscore = { "Donald E. Knuth" => "Donald_E_Knuth", "Random text with *(bad)* characters" => "Random_text_with_bad_characters", "With-some-dashes" => "With-some-dashes", "Allow_Under_Scores" => "Allow_Under_Scores", "Trailing bad characters!@#" => "Trailing_bad_characters", "!@#Leading bad characters" => "Leading_bad_characters", "Squeeze separators" => "Squeeze_separators", "Test with + sign" => "Test_with_sign", "Test with malformed utf8 \xA9" => "Test_with_malformed_utf8" } StringToParameterizedAndNormalized = { "Malmö" => "malmo", "Garçons" => "garcons", "Ops\331" => "opsu", "Ærøskøbing" => "aeroskobing", "Aßlar" => "asslar", "Japanese: 日本語" => "japanese" } UnderscoreToHuman = { "employee_salary" => "Employee salary", "employee_id" => "Employee", "underground" => "Underground", "_id" => "Id", "_external_id" => "External" } UnderscoreToHumanWithKeepIdSuffix = { "this_is_a_string_ending_with_id" => "This is a string ending with id", "employee_id" => "Employee id", "employee_id_something_else" => "Employee id something else", "underground" => "Underground", "_id" => "Id", "_external_id" => "External id" } UnderscoreToHumanWithoutCapitalize = { "employee_salary" => "employee salary", "employee_id" => "employee", "underground" => "underground" } MixtureToTitleCaseWithKeepIdSuffix = { "this_is_a_string_ending_with_id" => "This Is A String Ending With Id", "EmployeeId" => "Employee Id", "Author Id" => "Author Id" } MixtureToTitleCase = { "active_record" => "Active Record", "ActiveRecord" => "Active Record", "action web service" => "Action Web Service", "Action Web Service" => "Action Web Service", "Action web service" => "Action Web Service", "actionwebservice" => "Actionwebservice", "Actionwebservice" => "Actionwebservice", "david's code" => "David's Code", "David's code" => "David's Code", "david's Code" => "David's Code", "sgt. pepper's" => "Sgt. Pepper's", "i've just seen a face" => "I've Just Seen A Face", "maybe you'll be there" => "Maybe You'll Be There", "¿por qué?" => "¿Por Qué?", "Fred’s" => "Fred’s", "Fred`s" => "Fred`s", "this was 'fake news'" => "This Was 'Fake News'", "new name(s)" => "New Name(s)", "new (names)" => "New (Names)", "their (mis)deeds" => "Their (Mis)deeds", ActiveSupport::SafeBuffer.new("confirmation num") => "Confirmation Num" } OrdinalNumbers = { "-1" => "-1st", "-2" => "-2nd", "-3" => "-3rd", "-4" => "-4th", "-5" => "-5th", "-6" => "-6th", "-7" => "-7th", "-8" => "-8th", "-9" => "-9th", "-10" => "-10th", "-11" => "-11th", "-12" => "-12th", "-13" => "-13th", "-14" => "-14th", "-20" => "-20th", "-21" => "-21st", "-22" => "-22nd", "-23" => "-23rd", "-24" => "-24th", "-100" => "-100th", "-101" => "-101st", "-102" => "-102nd", "-103" => "-103rd", "-104" => "-104th", "-110" => "-110th", "-111" => "-111th", "-112" => "-112th", "-113" => "-113th", "-1000" => "-1000th", "-1001" => "-1001st", "0" => "0th", "1" => "1st", "2" => "2nd", "3" => "3rd", "4" => "4th", "5" => "5th", "6" => "6th", "7" => "7th", "8" => "8th", "9" => "9th", "10" => "10th", "11" => "11th", "12" => "12th", "13" => "13th", "14" => "14th", "20" => "20th", "21" => "21st", "22" => "22nd", "23" => "23rd", "24" => "24th", "100" => "100th", "101" => "101st", "102" => "102nd", "103" => "103rd", "104" => "104th", "110" => "110th", "111" => "111th", "112" => "112th", "113" => "113th", "1000" => "1000th", "1001" => "1001st" } UnderscoresToDashes = { "street" => "street", "street_address" => "street-address", "person_street_address" => "person-street-address" } Irregularities = { "person" => "people", "man" => "men", "child" => "children", "sex" => "sexes", "move" => "moves", "cow" => "kine", # Test inflections with different starting letters "zombie" => "zombies", "genus" => "genera" } end