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