[GRASS-SVN] r63334 - sandbox/martinl

svn_grass at osgeo.org svn_grass at osgeo.org
Tue Dec 2 12:07:31 PST 2014


Author: martinl
Date: 2014-12-02 12:07:31 -0800 (Tue, 02 Dec 2014)
New Revision: 63334

Added:
   sandbox/martinl/fix_renamed_options.py
Log:
skeleton for fixing renamed options, need some improvements...

Added: sandbox/martinl/fix_renamed_options.py
===================================================================
--- sandbox/martinl/fix_renamed_options.py	                        (rev 0)
+++ sandbox/martinl/fix_renamed_options.py	2014-12-02 20:07:31 UTC (rev 63334)
@@ -0,0 +1,120 @@
+#!/usr/bin/env python
+
+import os
+import sys
+import fileinput
+import re
+import fnmatch
+
+srcdir=os.path.join(os.environ['HOME'], 'src/grass_trunk')
+infile=os.path.join(srcdir, 'lib/gis/renamed_options')
+
+def get_prefix(module):
+    return {
+        'd' : 'display',
+        'g' : 'general',
+        'db' : 'db',
+        'i' : 'imagery',
+        'r' : 'raster',
+        'r3' : 'raster3d',
+        'v' : 'vector',
+        'm' : 'misc',
+    }[module.split('.', 1)[0]]
+
+def fix_html(module, oldkey, newkey):
+    if module:
+        if module.startswith('v.lrs'):
+            html = os.path.join(srcdir, get_prefix(module), 'v.lrs', module, module + '.html')
+        elif module.startswith('r.sim'):
+            html = os.path.join(srcdir, get_prefix(module), 'r.sim', module, module + '.html')
+        elif module.startswith('r.li'):
+            html = os.path.join(srcdir, get_prefix(module), 'r.li', module, module + '.html')
+        elif module == 'r.watershed':
+            html = os.path.join(srcdir, get_prefix(module), module, 'front', module + '.html')
+        else:
+            html = os.path.join(srcdir, get_prefix(module), module, module + '.html')
+            if not os.path.exists(html):
+                html = os.path.join(srcdir, 'scripts', module, module + '.html')
+        if not os.path.exists(html):
+            print >> sys.stderr, "File %s not exists" % html
+
+        modify_html(html, oldkey, newkey)
+    else:
+        # TODO
+
+def get_py_list():
+    pylist = []
+    for root, dirnames, filenames in os.walk(srcdir):
+        for filename in fnmatch.filter(filenames, '*.py'):
+            pylist.append(os.path.join(root, filename))
+
+    return pylist
+
+def find_sub_string(raw_string, start_marker, end_marker, oldkey, newkey):
+    return re.sub(
+        r'(?<={}).*?(?={})'.format(re.escape(start_marker), re.escape(end_marker)),
+        lambda m: m.group().strip().replace(oldkey, newkey),
+        raw_string)
+
+def fix_py(module, oldkey, newkey, files):
+    edit = False
+    nlines = 0
+    for py in files:
+        for i, line in enumerate(fileinput.input(py, inplace=1)):
+            if not module:
+                edit = True
+            elif module in line:
+                edit = True
+                nlines = 0
+            if edit and nlines > 10:
+                edit = False
+            if edit:
+                sys.stdout.write(line.replace(oldkey, newkey))
+                edit = False
+            else:
+                sys.stdout.write(line)
+            nlines += 1
+                
+def modify_html(html, oldkey, newkey):
+    indiv = False
+    for i, line in enumerate(fileinput.input(html, inplace=1)):
+        if '<div class' in line:
+            indiv = True
+        if 'pre></div>' in line:
+            indiv = False
+        if indiv:
+            sys.stdout.write(line.replace(oldkey + '=', newkey + '='))
+        else:
+            sys.stdout.write(find_sub_string(line, '<b>', '</b>', oldkey, newkey))
+
+def modify_py(pyf, oldkey, newkey):
+    for i, line in enumerate(fileinput.input(py, inplace=1)):
+        sys.stdout.write(line.replace(oldkey, newkey))
+            
+def get_changes(infile):
+    lines = []
+    fd = open(infile)
+    for line in fd.readlines():
+        line = line.rstrip(os.linesep)
+        if line.startswith('#'):
+            continue
+
+        key = line.split(':')[0]
+        if '|' in key:
+            module, oldkey = key.split('|')
+        else:
+            module = None
+            oldkey = key
+        newkey = line.split(':')[1]
+
+        lines.append((module, oldkey, newkey))
+        
+    fd.close()
+
+    return lines
+    
+if __name__ == "__main__":
+    pylist = get_py_list()
+    for module, oldkey, newkey in get_changes(infile):
+        #fix_html(module, oldkey, newkey)
+        #fix_py(module, oldkey, newkey, pylist)



More information about the grass-commit mailing list