# Change Log --- ## 1.0.0 (20200526) ### create - abstract note/bookmark/highlight from kindle clipping - formatter output to special file ## 1.0.1 (20200528) ### feature - add search clip and some functions ## learn lesson - assign value to a not exist key, will throw KeyError, too inflexible!!! perl much better - use defaultdict to solve obove problem, note, defaultdict only create two layer key auto ``` a=defaultdict(dict) a['1']['2'] = 1 b=defaultdict(dict) b['1']['2']['3'] = 1 # ERROR b['1']['2'] = {'3':1} # OK ``` - logging, file io, very strict indent! - re.X(VERBOSE), different regular express between vim & python - no c like i=x<0?m:n => python - i=m if x<0 else n - json dict convert - pylint check code, but most of suggest is unacceptable for me :smile: - no c/c++/java/perl switch-case, not use two much if-elif-elif, use this to simplify: ``` suff = {'MD':'.md','CSV':'.csv','JSON':'.json'} 198 op = OUTPREF+suff[ft] ``` - assign value style is pithiness ``` (authinfo, dateinfo, content) = (s[0], s[1], s[2] if len(s)==3 else None) ``` ## 1.0.1 (20200530) ### feature - remove duplication - refactor some code ## learn lesson - change dict keys between iteration, will throw RuntimeError: dictionary changed size during iteration - reference - http://www.cocoachina.com/articles/89748 # feature plan ## 20200528 - optimize search feature - first abstract from kindle hard / local directory for different OS - add GUI use QT