rails/activesupport/test/inflector_test_cases.rb

387 lines
12 KiB
Ruby
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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",
"Accountsv2N2Test" => "accountsv2_n2_test",
}
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",
:product => "product",
}
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",
"employee id" => "Employee id",
"employee id etc" => "Employee id etc",
"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",
"employee id" => "Employee id",
"employee id etc" => "Employee id etc",
"_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é?",
"Freds" => "Freds",
"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