From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: poffice@blade.nagaokaut.ac.jp Delivered-To: poffice@blade.nagaokaut.ac.jp Received: from kankan.nagaokaut.ac.jp (kankan.nagaokaut.ac.jp [133.44.2.24]) by blade.nagaokaut.ac.jp (Postfix) with ESMTP id 31A3E19C037F for ; Wed, 25 Nov 2015 12:50:01 +0900 (JST) Received: from voscc.nagaokaut.ac.jp (voscc.nagaokaut.ac.jp [133.44.1.100]) by kankan.nagaokaut.ac.jp (Postfix) with ESMTP id 31BA6B5D8A0 for ; Wed, 25 Nov 2015 13:21:05 +0900 (JST) Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by voscc.nagaokaut.ac.jp (Postfix) with ESMTP id 842EC18CC7B5 for ; Wed, 25 Nov 2015 13:21:05 +0900 (JST) Received: from [221.186.184.76] (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id BF0FB1204C5; Wed, 25 Nov 2015 13:21:03 +0900 (JST) X-Original-To: ruby-core@ruby-lang.org Delivered-To: ruby-core@ruby-lang.org Received: from o2.heroku.sendgrid.net (o2.heroku.sendgrid.net [67.228.50.55]) by neon.ruby-lang.org (Postfix) with ESMTPS id BFAA01204B0 for ; Wed, 25 Nov 2015 13:20:59 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sendgrid.me; h=from:to:references:subject:mime-version:content-type:content-transfer-encoding:list-id; s=smtpapi; bh=b+m4Ck0DEjVNKpt9uXmkVzwAqck=; b=sztjGILqTB+zxcdfp/ Wbjyy4sSraZFiLHU3VPSar8rLbgZocYxkLWHa4QzJCvNgnt/BrqU0SbL5/9+CKKO ho8VGhtZG5OU6UBHWqeHlS9PozVmDTeHrN/oVlqEecsWpHp58MVZ096PxGmKTTes iRGqnVaNbcsmtZJacA0USxFPM= Received: by filter0418p1mdw1.sendgrid.net with SMTP id filter0418p1mdw1.3166.5655372629 2015-11-25 04:20:54.689293809 +0000 UTC Received: from herokuapp.com (ec2-54-242-214-211.compute-1.amazonaws.com [54.242.214.211]) by ismtpd0003p1iad1.sendgrid.net (SG) with ESMTP id oR9yXfDcTqeDLC26Obo0mQ Wed, 25 Nov 2015 04:20:54.444 +0000 (UTC) Date: Wed, 25 Nov 2015 04:20:54 +0000 From: nobu@ruby-lang.org To: ruby-core@ruby-lang.org Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Redmine-MailingListIntegration-Message-Ids: 46351 X-Redmine-Project: ruby-trunk X-Redmine-Issue-Id: 11735 X-Redmine-Issue-Author: sikachu X-Redmine-Sender: nobu X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-SG-EID: ync6xU2WACa70kv/Ymy4QrNMhiuLXJG8OTL2vJD1yS6JrCRpWm6qe9ZS7OtqVU6++5kVknCb30tOoY ITCmD1TVxlOApzEOidXOd7Cfbn2XQxssZcsVXFmuln5kSujLPR/ITTGd6sF+yMJkSizVlKH+8TR+Yr nlO2cl1DelZo77+1Sn0nKStZeKtY2C/eSHJp X-ML-Name: ruby-core X-Mail-Count: 71676 Subject: [ruby-core:71676] [Ruby trunk - Feature #11735] Porting String#squish and String#squish! from Ruby on Rails' Active Support X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Ruby developers List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" Issue #11735 has been updated by Nobuyoshi Nakada. Description updated First, indented heredoc will be achieved by [Feature #9098], this will not be needed. Second, `squish!` feels to return `nil` if no white spaces, to me, like as `sub!` and so on. Last, it's prohibited in C89 to initialize an aggregate type by dynamic values. ---------------------------------------- Feature #11735: Porting String#squish and String#squish! from Ruby on Rails' Active Support https://bugs.ruby-lang.org/issues/11735#change-55078 * Author: Prem Sichanugrist * Status: Open * Priority: Normal * Assignee: ---------------------------------------- Hi, I have been using this `String#squish` method so many time when I'm using Rails, and I think it should be a useful addition to core. Here's the method on Rails' documentation: http://api.rubyonrails.org/v4.2.5/classes/String.html#method-i-squish This method is very useful when you have to write a multi-line string using heredoc, but you actually does not care about the white-spaces before, after, and in-between the string. For example: ~~~ruby <<-SQL.squish SELECT * FROM users WHERE users.username = 'sikachu' SQL #=> "SELECT * FROM users WHERE users.username='sikachu'" ~~~ Another example usage is when you are on the project that have a line length code standard, and you have to write a long warning message that needs to be printed to stdout: ~~~ruby puts <<-WARNING.squish Unable to connect to the server. Please double-check that you are currently connecting to the internet and your proxy server is working. WARNING #=> Unable to connect to the server. Please double-check that you are currently connecting to the internet and your proxy server is working. ~~~ By the way, this is my first patch and my first time writing something in C, so there might be something that does not look right to you. I'll happy to revise this patch (and learn about C in the process!) from your feedback. Thank you, Prem ---Files-------------------------------- 0001-Introduce-String-squish-and-String-squish.patch (4.67 KB) -- https://bugs.ruby-lang.org/