~smoser/ubuntu/vivid/cloud-init/2to3

« back to all changes in this revision

Viewing changes to cloudinit/mergers/m_str.py

  • Committer: Package Import Robot
  • Author(s): Scott Moser
  • Date: 2013-05-10 17:53:49 UTC
  • Revision ID: package-import@ubuntu.com-20130510175349-okyom2ee5kguk4xb
* New upstream snapshot.
  * catch up with upstream, which is hopefully 0.7.2
  * straighten out the merging routines
  * fix a bug in Maas datasource

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# vi: ts=4 expandtab
 
2
#
 
3
#    Copyright (C) 2012 Yahoo! Inc.
 
4
#
 
5
#    Author: Joshua Harlow <harlowja@yahoo-inc.com>
 
6
#
 
7
#    This program is free software: you can redistribute it and/or modify
 
8
#    it under the terms of the GNU General Public License version 3, as
 
9
#    published by the Free Software Foundation.
 
10
#
 
11
#    This program 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
 
14
#    GNU General Public License for more details.
 
15
#
 
16
#    You should have received a copy of the GNU General Public License
 
17
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
18
 
 
19
 
 
20
class Merger(object):
 
21
    def __init__(self, _merger, opts):
 
22
        self._append = 'append' in opts
 
23
 
 
24
    # On encountering a unicode object to merge value with
 
25
    # we will for now just proxy into the string method to let it handle it.
 
26
    def _on_unicode(self, value, merge_with):
 
27
        return self._on_str(value, merge_with)
 
28
 
 
29
    # On encountering a string object to merge with we will
 
30
    # perform the following action, if appending we will
 
31
    # merge them together, otherwise we will just return value.
 
32
    def _on_str(self, value, merge_with):
 
33
        if not self._append:
 
34
            return value
 
35
        else:
 
36
            if isinstance(value, (unicode)):
 
37
                return value + unicode(merge_with)
 
38
            else:
 
39
                return value + str(merge_with)