1# -*- Mode: Python; py-indent-offset: 4 -*- 2# vim: tabstop=4 shiftwidth=4 expandtab 3# 4# Copyright (C) 2015 Garrett Regier <garrett.regier@riftio.com> 5# 6# This library is free software; you can redistribute it and/or 7# modify it under the terms of the GNU Lesser General Public 8# License as published by the Free Software Foundation; either 9# version 2.1 of the License, or (at your option) any later version. 10# 11# This library is distributed in the hope that it will be useful, 12# but WITHOUT ANY WARRANTY; without even the implied warranty of 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14# Lesser General Public License for more details. 15# 16# You should have received a copy of the GNU Lesser General Public 17# License along with this library; if not, write to the Free Software 18# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 19# USA 20 21""" 22Script which reads symbols in the form of "FooBar" from stdin and 23translates them to snake case like "foo_bar". 24""" 25 26import sys 27 28 29def ensure_snake_case(text): 30 text = ''.join(x if x.islower() else '_' + x.lower() for x in text) 31 32 # Remove the extra '_' for the starting uppercase letter 33 return text[1:] 34 35 36if __name__ == '__main__': 37 text = ensure_snake_case(sys.stdin.read()) 38 sys.stdout.write(text) 39