aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/inflector_test.rb
Commit message (Collapse)AuthorAgeFilesLines
* Parameterize with options to preserve case of stringSwaathi K2015-11-071-2/+20
| | | | | | | | | | | | | | | | | | | | | | | | Added test cases Using kwargs instead of three seperate functions Updated parameterize in transliterate.rb Updated parameterize in transliterate.rb Added deprecation warnings and updating RDoc+Guide Misspelled separtor. Fixed. Deprecated test cases and added support to parameterize with keyword parameters Squashing commits. Fixed test cases and added deprecated test cases Small changes to Gemfile.lock and CHANGELOG Update Gemfile.lock
* Fix inflector test by using dup inflections when it needs to be changedRoque Pinel2015-06-151-86/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is not something that is failing at the moment, but can do it eventually. I had the issue with db62081 as the HEAD and with the following change: ``` --- a/activesupport/test/inflector_test.rb +++ b/activesupport/test/inflector_test.rb @@ -101,6 +101,7 @@ class InflectorTest < ActiveSupport::TestCase def test_acronyms ActiveSupport::Inflector.inflections do |inflect| inflect.acronym("API") + inflect.acronym("HTM") inflect.acronym("HTML") inflect.acronym("HTTP") inflect.acronym("RESTful") ``` I was expecting only `test_acronyms` to fail, but with a specific `seed` others were also failing: `ruby -w -I"lib:test" test/inflector_test.rb --seed 4313`. Now, `inflections` instance is duplicated on `setup` and restored on `teardown`. I decided to benchmark and check the impact of the patch and it seems to me to be fine. ``` Calculating ------------------------------------- without changes 1.000 i/100ms with setup dup 1.000 i/100ms with block dup 1.000 i/100ms ------------------------------------------------- without changes 0.817 (± 0.0%) i/s - 5.000 in 6.119916s with setup dup 0.784 (± 0.0%) i/s - 4.000 with block dup 0.797 (± 0.0%) i/s - 4.000 ``` Where `with setup dup` duplicates on setup for each test and `with block` duplicates for just for tests that actually modify `inflections`.
* Replace Enumerable#reverse.each with Enumerable#reverse_eachErik Michaels-Ober2014-10-131-2/+2
|
* Fix underscore inflector handling of adjacent acronymsJames Le Cuirot2014-10-031-0/+3
| | | | | | | | | | | | | I suspect that positive lookbehind would have been used in the original implementation had it been available in supported Ruby versions at the time. Now that Rails requires Ruby 1.9.2 or above, this is no longer an issue. This fixes #14146 for acronyms such as APIRESTful. This technique also addresses namespaced acronyms that are not entirely uppercased. This was broken when the commit was originally written but has since been fixed in ccbb481. The latter does not deal with adjacent acronyms so this commit wins.
* Fix for inflector's incorrect camelCase replacement for acronymsMatthew Draper2014-09-061-0/+1
| | | | | | Fixes #8015, #9756. [Fred Wu & Matthew Draper]
* Make the apply_inflections method case-sensitiveRobin Dupret2014-06-261-0/+8
| | | | | | | | | | | | | | | | | | | Since d3071db1, the apply_inflections method check if the downcased version of a string is contained inside the "whitelist" of uncountable words. However, if the word is composed of capital letters, it won't be matched in the list while it should. We can't simply revert to the previous behavior as there is a performance concern (benchmarked over /usr/share/dict/words): Before d3071db1 135.610000 0.290000 135.900000 (137.807081) Since d3071db1 22.170000 0.020000 22.190000 ( 22.530005) With the patch 22.060000 0.020000 22.080000 ( 22.125771) Benchmarked with http://git.io/aFnWig This way, the solution is to put the down-case version of words inside the @uncountables array.
* Merge pull request #15316 from akshay-vishnoi/test-casesYves Senn2014-05-261-7/+8
|\ | | | | | | Fix test cases for inflector.rb
| * Fix test cases for inflector.rbAkshay Vishnoi2014-05-251-7/+8
|/ | | | | | `yield` was missing in #with_dup, due to which 57 assertions were not running in real, and all tests were passing by default. Error was introduced in commit - 31ceb5e.
* Add more test case for #demodulize, Improve documentationAkshay Vishnoi2014-04-111-0/+1
|
* wrap test that changes inflections in with_dupLihan Li2013-11-281-4/+5
|
* Add +capitalize+ option to Inflector.humanizeclaudiob2013-11-061-0/+6
| | | | | | | So strings can be humanized without being capitalized: 'employee_salary'.humanize # => "Employee salary" 'employee_salary'.humanize(capitalize: false) # => "employee salary"
* Skip few of the ActiveSupport'sinflector test on JRubyGaurish Sharma2013-08-211-0/+10
|
* Avoid calling define_method with non-english chars in InflectorTestGaurish Sharma2013-08-031-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When we call define_method with non-english chars like ¿por qué? it errors out on JRuby as of 1.7.4 & would leave out the following error invalid byte sequence in US-ASCII To work around this issue, I have switched to define_test method call define method with fixed string & the index of the hash. the index was added because otherwise, ruby will raise method redefined warning. As far as I can see there are no side-effect of this change for other implementations. For readbility I have added a message to asssert_equal informing for which word/phase the test has passed. Before this Change: JRuby: Tests terminated suddenly with an error. no reported of Failues or errors MRI: All Green. After this Change, JRuby: the `ActiveSupport` TestsSuite gracefully fails with report at the end which test failed & why. MRI: All Green(no change)
* Don't mutate the original inflections instance in the testsAndrew White2013-07-301-19/+22
|
* Revert "Merge pull request #10158 from steveklabnik/issue_10125"Rafael Mendonça França2013-04-101-17/+0
| | | | | | | | This reverts commit fa3ef8e82ab2f96cf15ef9bc885b2468fad77621, reversing changes made to e0af93dd3a5eeee2e2a67b05f34afb66cc80c00b. Reason: Routes, Active Record and the rendering stack should not depend on the default locale
* Fix inflector to respect default locale.Nick Cox2013-04-101-0/+17
| | | | | | | | The inflector was made aware of locales in 7db0b073fec6bc3e6f213b58c76e7f43fcc2ab97, but it defaulted to :en. That should actually be our default locale instead. Fixes #10125
* fix repeat of test; remove unused variable by use of each_keyVipul A M2013-03-181-1/+1
|
* Revert "Merge pull request #8156 from fredwu/acronym_fix-master"Steve Klabnik2013-03-161-2/+0
| | | | | | | | | This reverts commit 867dc1700f32aae6f98c4651bd501597e6b52bc0, reversing changes made to 9a421aaa8285cf2a7ecb1af370748b0337818930. This breaks anyone who's using ForceSSL: https://travis-ci.org/rails-api/rails-api/jobs/5556065 Please see comments on #8156 for some discussion.
* Fixed a bug where the inflector would replace camelCase strings and ↵Fred Wu2013-03-171-0/+2
| | | | disregarding specified acronyms, fixes #8015
* Cleanup tests for unused variablesVipul A M2013-03-111-2/+0
|
* Remove assert_nothing_raisedRafael Mendonça França2013-01-031-1/+1
|
* Fix ActiveSupport tests that depend on run orderFrancesco Rodriguez2012-08-231-2/+2
|
* Make ActiveSupport::Inflector locale aware and multilingualDavid Celis2012-07-301-1/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Inflector is currently not very supportive of internationalized websites. If a user wants to singularize and/or pluralize words based on any locale other than English, they must define each case in locale files. Rather than create large locale files with mappings between singular and plural words, why not allow the Inflector to accept a locale? This patch makes ActiveSupport::Inflector locale aware and uses `:en`` unless otherwise specified. Users will still be provided a list of English (:en) inflections, but they may additionally define inflection rules for other locales. Each list is kept separately and permanently. There is no reason to limit users to one list of inflections: ActiveSupport::Inflector.inflections(:es) do |inflect| inflect.plural(/$/, 's') inflect.plural(/([^aeéiou])$/i, '\1es') inflect.plural(/([aeiou]s)$/i, '\1') inflect.plural(/z$/i, 'ces') inflect.plural(/á([sn])$/i, 'a\1es') inflect.plural(/é([sn])$/i, 'e\1es') inflect.plural(/í([sn])$/i, 'i\1es') inflect.plural(/ó([sn])$/i, 'o\1es') inflect.plural(/ú([sn])$/i, 'u\1es') inflect.singular(/s$/, '') inflect.singular(/es$/, '') inflect.irregular('el', 'los') end 'ley'.pluralize(:es) # => "leyes" 'ley'.pluralize(:en) # => "leys" 'avión'.pluralize(:es) # => "aviones" 'avión'.pluralize(:en) # => "avións" A multilingual Inflector should be of use to anybody that is tasked with internationalizing their Rails application. Signed-off-by: David Celis <david@davidcelis.com>
* Adds missing inflector tests to ensure idempotencyGodfrey Chan2012-06-211-0/+10
| | | | | | | | | | | | | This is a follow up to #4719. It appears that singularize and pluralize are supposed to be idempotent - i.e. when you call singularize or pluralize multiple times on the same string, you should get the same result. (At least for the "officially supported" cases that the stock inflector is designed to handle.) #4719 added the missing tests for regular cases, and this commit added the missing tests for the irregularities. While I'm at that, I also synced up the irregularity test cases with the current set of irregularity cases that we ship out-of-the-box.
* decouples the implementation of the inflector from its test suiteXavier Noria2012-02-241-73/+66
| | | | | | | | Trying alternative implementations of the inflections is hard because the suite is coupled with the current one, setting ivars by hand etc. This commit relies on initialize_dup, as long as you maintain that one you can tweak the implementation.
* Merge pull request #4719 from markmcspadden/singularize_words_that_end_in_ssXavier Noria2012-02-101-0/+8
|\ | | | | Add Inflection test (and fixes) to ensure singularizing a singular actually give you the correct singular in more cases
| * Add Inflection test (and fixes) to ensure singularizing a singular actually ↵Mark McSpadden2012-01-271-0/+8
| | | | | | | | give you the correct singular in more cases
* | Add ActiveSupport::Inflector.ordinal and Integer#ordinalTim Gildea2012-02-041-0/+6
|/
* use AS::TestCase as the base classAaron Patterson2012-01-051-1/+1
|
* defines Module#qualified_const_(defined?|get|set) and String#deconstantizeXavier Noria2011-10-291-0/+12
| | | | | | | | | | This commit also implements a faster version of #demodulize I was unable to isolate with git add --patch. Not a big fan of the name #deconstantize. It complements #demodulize getting rid of the rightmost constant, hence the name, but it is unrelated to the well-known #constantize. So unsure. Could not come with anything better, please feel free to rename.
* let demodulize do less work, and add testsXavier Noria2011-10-291-0/+2
| | | | This is also faster on 1.9.
* Added ActiveSupport::Inflector.safe_constantize and String#safe_constantize; ↵Ryan Oblak2011-09-231-17/+10
| | | | refactored common constantize tests into ConstantizeTestCases
* Revert removing gsub and sub from safe buffer.José Valim2011-09-081-9/+13
|
* remove support of symbols on classify and camelizeDamien Mathieu2011-09-081-13/+9
|
* Add acronym support to Inflector; Issue #1366David Lee2011-06-111-0/+82
|
* Test retain delimiter in parameterization inflectorDavid Lee2011-06-111-2/+2
|
* proper reset all inflector scopesStefan Huber2011-04-251-12/+30
|
* Remove warnings about redefined test methodsSam Elliott2011-03-011-4/+4
| | | | | | [#6490 state:committed] Signed-off-by: Santiago Pastorino <santiago@wyeworks.com>
* handle double pluralization for irregular pluralsDan Pickett2011-02-161-0/+7
| | | | | | [#6363] Signed-off-by: Santiago Pastorino <santiago@wyeworks.com>
* Ensure that uncountable are removed after testPiotr Sarnacki2010-12-221-5/+6
|
* Added a word boundary to uncountable inflection regex for #singularize so ↵John Paul Ashenfelter2010-12-221-0/+27
| | | | short inflections like ors do not affect larger words like sponsors [#6093 state:resolved]
* refactor evals and adds some __FILE__ and __LINE__Santiago Pastorino2010-05-201-2/+2
| | | | Signed-off-by: José Valim <jose.valim@gmail.com>
* Fix that irregular plural inflections should not be double-pluralized: ↵Prem Sichanugrist2009-08-091-0/+10
| | | | | | | | 'people'.pluralize should return 'people' not 'peoples'. [#1183 state:committed] Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
* ensure Inflector.camelize works with symbols [#2856 state:resolved]Yehuda Katz + Carl Lerche2009-07-011-0/+6
| | | Signed-off-by: Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>
* Fix dependencies revealed by testing in isolationJeremy Kemper2009-04-221-0/+2
|
* Make Inflector#parameterize correctly squeeze multi-character separators ↵Henrik N2009-03-101-0/+6
| | | | | | [#1489 state:resolved] Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
* Ruby 1.9 compat: rename deprecated assert_raises to assert_raise.Jeremy Kemper2009-03-081-4/+4
| | | | [#1617 state:resolved]
* Ruby 1.9 compat: no Unicode normalization support yetJeremy Kemper2008-11-261-0/+6
|
* Modified ActiveSupport::Inflector#parameterize with code from slugalizer ↵Adam Cigánek2008-09-231-0/+6
| | | | | | | | | (http://github.com/henrik/slugalizer) Handles trailing and leading slashes, and squashes repeated separators into a single character. Signed-off-by: Michael Koziarski <michael@koziarski.com> [#1034 state:committed]
* Added Inflector#parameterize for easy slug generation ("Donald E. ↵David Heinemeier Hansson2008-09-101-0/+6
| | | | Knuth".parameterize => "donald-e-knuth") #713 [Matt Darby]