# -*- coding: utf-8 -*-
"""
<DefineSource>
@Date : Fri Nov 14 13:20:38 2014 \n
@Author : Erwan Ledoux \n\n
</DefineSource>
An Itemizer...
"""
#<DefineAugmentation>
import ShareYourSystem as SYS
BaseModuleStr="ShareYourSystem.Interfacers.Hdformater"
DecorationModuleStr="ShareYourSystem.Classors.Classer"
SYS.setSubModule(globals())
#</DefineAugmentation>
#<ImportSpecificModules>
#</ImportSpecificModules>
#<DefineLocals>
ItemizingPrefixStr="Item_"
#</DefineLocals>
#<DefineClass>
@DecorationClass()
class ItemizerClass(BaseClass):
    pass
    """
    #Definition
    RepresentingKeyStrsList=[
                                    'ItemizingKeyVariable',
                                    'ItemizedKeyVariable'
                                ]
    #@SYS.HookerClass(**{'HookingAfterVariablesList':[{'CallingVariable':BaseClass.init}]})
    def default_init(self,
                        _ItemizingKeyVariable=None,
                        _ItemizedKeyVariable=None,
                        **_KwargVariablesDict
                    ):
        """ """     
        #Call the parent init method
        BaseClass.__init__(self,**_KwargVariablesDict)
    def do_itemize(self):
        #Check
        if self.ItemizingKeyVariable.startswith(ItemizingPrefixStr):
            #split
            self.ItemizedKeyVariable=ItemizingPrefixStr.join(
                self.ItemizingKeyVariable.split(
                ItemizingPrefixStr)[1:]
            )
            #debug
            self.debug(
                        [
                            'go to a getitem get',
                            ('self.',self,['ItemizingKeyVariable','ItemizedKeyVariable'])
                        ]
                    )
            #return __getitem__
            return self.__getitem__(self.ItemizedKeyVariable)
        else:
            #debug
            self.debug(
                        [
                            'classic object getattr...',
                            ('self.',self,['ItemizingKeyVariable'])
                        ]
                    )
            #Return default getattr
            return object.__getattribute__(self,self.ItemizingKeyVariable)
    def __getattribute__(self,_KeyVariable):
        #Itemize
        return self.itemize(_KeyVariable)
    """
#</DefineClass>
View the Itemizer sources on Github
In [3]:
    
#ImportModules
import ShareYourSystem as SYS
from ShareYourSystem.Itemizers import Itemizer
class MakerClass(Itemizer.ItemizerClass):
    def __getitem__(self,_KeyVariable):
        #Debug
        print('_KeyVariable is ',_KeyVariable)
        print('')
        #return 
        return object.__getattribute__(self,
                        'My'+str(_KeyVariable)+'Int'
                    )
#Definition of a derive maker itemizer class
MyMaker=MakerClass()
MyMaker.My1Int=1
    
#Definition the AttestedStr
SYS._attest(
    [
        'MyMaker is'+SYS._str(
            MyMaker,
            **{
                'RepresentingAlineaIsBool':False,
            }
        ),
        'MyMaker[1] is '+str(MyMaker[1]),
        #'MyMaker.Item_1 is '+str(MyMaker.Item_1),
    ]
) 
#Print