{"id":28627,"date":"2018-06-12T03:36:00","date_gmt":"2018-06-12T01:36:00","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=28627"},"modified":"2018-06-12T03:36:00","modified_gmt":"2018-06-12T01:36:00","slug":"inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/","title":{"rendered":"Inflected &#8211; a port of ActiveSupport&#8217;s inflector to Node.js and the browser"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p>For the last few years I have been heavily involved in building web applications with <a href=\"https:\/\/cakephp.org\/\">the CakePHP framework<\/a>.\u00a0 Apart from all the usual MVC, ORM, and so on, and so forth, features, I am a big fan of the CakePHP utilities.\u00a0 And among all of them, my long time favorite is the <a href=\"https:\/\/book.cakephp.org\/3.0\/en\/core-libraries\/inflector.html\">Inflector class<\/a>.<\/p>\n<p>The Inflector class makes makes word transformations a breeze &#8211; camel-casing, snake-casing, plural, singular, and so on &#8211; work like a charm at least for the English language.\u00a0 It&#8217;s also possible to use the same functionality for other languages, but that would require quite a bit of the linguistic expertise.<\/p>\n<p>I&#8217;ve got so used to the inflections that I miss them every single time I have to step out of the CakePHP framework.\u00a0 This doesn&#8217;t happen very often for me in the PHP domain, but JavaScript is a totally different story.<\/p>\n<p>The other day I came across <a href=\"https:\/\/github.com\/martinandert\/inflected\">the inflected library<\/a>, which brings most of the CakePHP&#8217;s Inflector to JavaScript, via either a Node.JS NPM package, or a simple inclusion of the JavaScript file to the page source and laying off all the hard work on to the browser.<\/p>\n<p>I&#8217;m a lot happier with my universe now.<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>For the last few years I have been heavily involved in building web applications with the CakePHP framework.\u00a0 Apart from all the usual MVC, ORM, and so on, and so forth, features, I am a big fan of the CakePHP utilities.\u00a0 And among all of them, my long time favorite is the Inflector class. The &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Inflected &#8211; a port of ActiveSupport&#8217;s inflector to Node.js and the browser<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Inflected - a port of ActiveSupport's inflector to Node.js and the browser #WebDev #PHP #JavaScript #CakePHP #NodeJS #language","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false,"_links_to":"","_links_to_target":""},"categories":[1,18,62,1334],"tags":[1537,3063,1139,243,3209,38,1330],"keyring_services":[],"class_list":["post-28627","post","type-post","status-publish","format-standard","hentry","category-general","category-programming","category-technology","category-web-work","tag-cakephp","tag-frameworks","tag-javascript","tag-language","tag-nodejs","tag-php","tag-web-development"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"For the last few years I have been heavily involved in building web applications with the CakePHP framework. Apart from all the usual MVC, ORM, and so on, and so forth, features, I am a big fan of the CakePHP utilities. And among all of them, my long time favorite is the Inflector class. The\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Leonid Mamchenkov\"\/>\n\t<meta name=\"google-site-verification\" content=\"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Leonid Mamchenkov - Life, universe, and everything else\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Inflected \u2013 a port of ActiveSupport\u2019s inflector to Node.js and the browser - Leonid Mamchenkov\" \/>\n\t\t<meta property=\"og:description\" content=\"For the last few years I have been heavily involved in building web applications with the CakePHP framework. Apart from all the usual MVC, ORM, and so on, and so forth, features, I am a big fan of the CakePHP utilities. And among all of them, my long time favorite is the Inflector class. The\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2018-06-12T01:36:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2018-06-12T01:36:00+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/MamchenkovBlog\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Inflected \u2013 a port of ActiveSupport\u2019s inflector to Node.js and the browser - Leonid Mamchenkov\" \/>\n\t\t<meta name=\"twitter:description\" content=\"For the last few years I have been heavily involved in building web applications with the CakePHP framework. Apart from all the usual MVC, ORM, and so on, and so forth, features, I am a big fan of the CakePHP utilities. And among all of them, my long time favorite is the Inflector class. The\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/06\\\/12\\\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\\\/#blogposting\",\"name\":\"Inflected \\u2013 a port of ActiveSupport\\u2019s inflector to Node.js and the browser - Leonid Mamchenkov\",\"headline\":\"Inflected &#8211; a port of ActiveSupport&#8217;s inflector to Node.js and the browser\",\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/06\\\/12\\\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\\\/#articleImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"},\"datePublished\":\"2018-06-12T03:36:00+02:00\",\"dateModified\":\"2018-06-12T03:36:00+02:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/06\\\/12\\\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/06\\\/12\\\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\\\/#webpage\"},\"articleSection\":\"All, Programming, Technology, Web work, CakePHP, frameworks, JavaScript, language, NodeJS, PHP, web development\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/06\\\/12\\\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"position\":2,\"name\":\"Technology\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"position\":3,\"name\":\"Programming\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/06\\\/12\\\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\\\/#listItem\",\"name\":\"Inflected &#8211; a port of ActiveSupport&#8217;s inflector to Node.js and the browser\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/06\\\/12\\\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\\\/#listItem\",\"position\":4,\"name\":\"Inflected &#8211; a port of ActiveSupport&#8217;s inflector to Node.js and the browser\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/06\\\/12\\\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/06\\\/12\\\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/06\\\/12\\\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\\\/#webpage\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/06\\\/12\\\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\\\/\",\"name\":\"Inflected \\u2013 a port of ActiveSupport\\u2019s inflector to Node.js and the browser - Leonid Mamchenkov\",\"description\":\"For the last few years I have been heavily involved in building web applications with the CakePHP framework. Apart from all the usual MVC, ORM, and so on, and so forth, features, I am a big fan of the CakePHP utilities. And among all of them, my long time favorite is the Inflector class. The\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2018\\\/06\\\/12\\\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"datePublished\":\"2018-06-12T03:36:00+02:00\",\"dateModified\":\"2018-06-12T03:36:00+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/\",\"name\":\"Blog of Leonid Mamchenkov\",\"description\":\"Life, universe, and everything else\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Inflected \u2013 a port of ActiveSupport\u2019s inflector to Node.js and the browser - Leonid Mamchenkov","description":"For the last few years I have been heavily involved in building web applications with the CakePHP framework. Apart from all the usual MVC, ORM, and so on, and so forth, features, I am a big fan of the CakePHP utilities. And among all of them, my long time favorite is the Inflector class. The","canonical_url":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/#blogposting","name":"Inflected \u2013 a port of ActiveSupport\u2019s inflector to Node.js and the browser - Leonid Mamchenkov","headline":"Inflected &#8211; a port of ActiveSupport&#8217;s inflector to Node.js and the browser","author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"},"image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/#articleImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"},"datePublished":"2018-06-12T03:36:00+02:00","dateModified":"2018-06-12T03:36:00+02:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/#webpage"},"isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/#webpage"},"articleSection":"All, Programming, Technology, Web work, CakePHP, frameworks, JavaScript, language, NodeJS, PHP, web development"},{"@type":"BreadcrumbList","@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","position":1,"name":"Home","item":"https:\/\/mamchenkov.net\/wordpress","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","position":2,"name":"Technology","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","position":3,"name":"Programming","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/#listItem","name":"Inflected &#8211; a port of ActiveSupport&#8217;s inflector to Node.js and the browser"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/#listItem","position":4,"name":"Inflected &#8211; a port of ActiveSupport&#8217;s inflector to Node.js and the browser","previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"}}]},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/#person","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author","url":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"WebPage","@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/#webpage","url":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/","name":"Inflected \u2013 a port of ActiveSupport\u2019s inflector to Node.js and the browser - Leonid Mamchenkov","description":"For the last few years I have been heavily involved in building web applications with the CakePHP framework. Apart from all the usual MVC, ORM, and so on, and so forth, features, I am a big fan of the CakePHP utilities. And among all of them, my long time favorite is the Inflector class. The","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#website"},"breadcrumb":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/#breadcrumblist"},"author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"creator":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"datePublished":"2018-06-12T03:36:00+02:00","dateModified":"2018-06-12T03:36:00+02:00"},{"@type":"WebSite","@id":"https:\/\/mamchenkov.net\/wordpress\/#website","url":"https:\/\/mamchenkov.net\/wordpress\/","name":"Blog of Leonid Mamchenkov","description":"Life, universe, and everything else","inLanguage":"en-US","publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"}}]},"og:locale":"en_US","og:site_name":"Leonid Mamchenkov - Life, universe, and everything else","og:type":"article","og:title":"Inflected \u2013 a port of ActiveSupport\u2019s inflector to Node.js and the browser - Leonid Mamchenkov","og:description":"For the last few years I have been heavily involved in building web applications with the CakePHP framework. Apart from all the usual MVC, ORM, and so on, and so forth, features, I am a big fan of the CakePHP utilities. And among all of them, my long time favorite is the Inflector class. The","og:url":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/","og:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:secure_url":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:width":1024,"og:image:height":1024,"article:published_time":"2018-06-12T01:36:00+00:00","article:modified_time":"2018-06-12T01:36:00+00:00","article:publisher":"https:\/\/www.facebook.com\/MamchenkovBlog","twitter:card":"summary_large_image","twitter:site":"@mamchenkov","twitter:title":"Inflected \u2013 a port of ActiveSupport\u2019s inflector to Node.js and the browser - Leonid Mamchenkov","twitter:description":"For the last few years I have been heavily involved in building web applications with the CakePHP framework. Apart from all the usual MVC, ORM, and so on, and so forth, features, I am a big fan of the CakePHP utilities. And among all of them, my long time favorite is the Inflector class. The","twitter:creator":"@mamchenkov","twitter:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg"},"aioseo_meta_data":{"post_id":"28627","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-07-19 17:45:33","updated":"2026-01-15 13:43:45","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/\" title=\"Technology\">Technology<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/\" title=\"Programming\">Programming<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tInflected \u2013 a port of ActiveSupport\u2019s inflector to Node.js and the browser\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/mamchenkov.net\/wordpress"},{"label":"Technology","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/"},{"label":"Programming","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/"},{"label":"Inflected &#8211; a port of ActiveSupport&#8217;s inflector to Node.js and the browser","link":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/12\/inflected-a-port-of-activesupports-inflector-to-node-js-and-the-browser\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":24952,"url":"https:\/\/mamchenkov.net\/wordpress\/2015\/11\/10\/cakephp-3-cheatsheet\/","url_meta":{"origin":28627,"position":0},"title":"CakePHP 3 Cheatsheet","author":"Leonid Mamchenkov","date":"November 10, 2015","format":false,"excerpt":"CakePHP 3 Cheatsheet - a handy collection of code snippets for anyone new to CakePHP 3 framework and all the changes that went into this version.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":28478,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/04\/17\/cakephp-3-6-0-release\/","url_meta":{"origin":28627,"position":1},"title":"CakePHP 3.6.0 release","author":"Leonid Mamchenkov","date":"April 17, 2018","format":false,"excerpt":"My all time favorite PHP framework - CakePHP has recently announced the availability of the long awaited version 3.6.0.\u00a0 What's so special about this particular version? - those of you not very familiar with CakePHP might ask.\u00a0 And I'll tell you. CakePHP is a well established framework, with long history\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27851,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/08\/15\/cakephp-events-system\/","url_meta":{"origin":28627,"position":2},"title":"CakePHP Events System","author":"Leonid Mamchenkov","date":"August 15, 2017","format":false,"excerpt":"Events are a great way to separate the business logic of your application and make things simpler and, often, faster. \u00a0CakePHP framework introduced an events system in version 2.1, and since then it got much better. \u00a0The official documentation covers current implementation pretty well. \u00a0But in this post I wanted\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":15740,"url":"https:\/\/mamchenkov.net\/wordpress\/2011\/10\/18\/cakephp-2-0-released\/","url_meta":{"origin":28627,"position":3},"title":"CakePHP 2.0 released!","author":"Leonid Mamchenkov","date":"October 18, 2011","format":false,"excerpt":"I've been a bit all over the place these last few days, but I knew that this was coming shortly - CakePHP team released the new and much improved version 2.0 a couple of days ago. There are a lot of changes. And I do mean a lot. Here are\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27886,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/08\/31\/cakephp-with-nightwatchjs-on-travis-ci\/","url_meta":{"origin":28627,"position":4},"title":"CakePHP with NightwatchJS on Travis CI","author":"Leonid Mamchenkov","date":"August 31, 2017","format":false,"excerpt":"My colleague Andrey Vystavkin has been setting up a testing environment for our CakePHP projects recently. \u00a0We had one before, of course, using PHPUnit. \u00a0But this time we wanted to add Google Chrome headless browser with some form of JavaScript test suite, so that we could cover functional tests and\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27717,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/06\/22\/phinx-joins-cakephp\/","url_meta":{"origin":28627,"position":5},"title":"Phinx joins CakePHP!","author":"Leonid Mamchenkov","date":"June 22, 2017","format":false,"excerpt":"These are some really good news - Phinx joins CakePHP family! \u00a0If you are from a different technology stack and not familiar with these, Phinx is an excellent database migrations tool, which has been used by CakePHP framework for a while now. \u00a0The two worked great together. \u00a0Now that they\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/28627","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=28627"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/28627\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=28627"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=28627"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=28627"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=28627"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}