Author: bugman
Date: Thu Oct 15 11:26:01 2015
New Revision: 28054
URL: http://svn.gna.org/viewcvs/relax?rev=28054&view=rev
Log:
Converted the replicated title finding Python script to use a class structure.
This allows the script to be imported as a module. The replicate finding has
been shifted into a
find() class method.
Modified:
trunk/docs/latex/find_duplicate_titles.py
Modified: trunk/docs/latex/find_duplicate_titles.py
URL:
http://svn.gna.org/viewcvs/relax/trunk/docs/latex/find_duplicate_titles.py?rev=28054&r1=28053&r2=28054&view=diff
==============================================================================
--- trunk/docs/latex/find_duplicate_titles.py (original)
+++ trunk/docs/latex/find_duplicate_titles.py Thu Oct 15 11:26:01 2015
@@ -27,67 +27,91 @@
import sys
-# The data structure for holding the unique title names.
-titles = []
+class Replicated_titles:
+ """Class used to find replicated titles in the LaTeX sources."""
-# The duplicate count structure.
-duplicate = {}
+ def __init__(self):
+ """Set up the required data structures."""
-# Walk through the directories.
-for root, dirs, files in walk(getcwd()):
- # Loop over the files in the current directory.
- for file_name in files:
- # Skip non-LaTeX files.
- if not search("tex$", file_name):
- continue
+ # The data structure for holding the unique title names.
+ self.titles = []
- # The full path.
- file_path = path.join(root, file_name)
+ # The replicate count structure.
+ self.replicate = {}
- # Read the contents of the file.
- file = open(file_path)
- lines = file.readlines()
- file.close()
- # Loop over the file contents.
- for line in lines:
- # Skip everything that is not a chapter or section.
- if not (search("\\\\chapter{", line) or search("\\\\section{",
line) or search("\\\\subsection{", line)):
- continue
+ def find(self):
+ """Find the replicates."""
- # Strip off the newline character.
- line = line.replace('\n', '')
+ # Reset the data structures if necessary.
+ if len(self.titles):
+ self.titles = []
+ self.replicate = {}
- # Strip off any label.
- if search(' \\\\label', line):
- line = line[:line.index(' \label')]
+ # Walk through the directories.
+ for root, dirs, files in walk(getcwd()):
+ # Loop over the files in the current directory.
+ for file_name in files:
+ # Skip non-LaTeX files.
+ if not search("tex$", file_name):
+ continue
- # Extract the title string by finding the first '{' and chop off
the final '}'.
- title = line[line.index('{')+1:-1]
+ # The full path.
+ file_path = path.join(root, file_name)
- # Is the title new?
- if not title in titles:
- titles.append(title)
+ # Read the contents of the file.
+ file = open(file_path)
+ lines = file.readlines()
+ file.close()
- # Replicate!
- else:
- # No duplicates yet, so 2 identical titles exist.
- if not title in duplicate:
- duplicate[title] = 2
+ # Loop over the file contents.
+ for line in lines:
+ # Skip everything that is not a chapter or section.
+ if not (search("\\\\chapter{", line) or
search("\\\\section{", line) or search("\\\\subsection{", line)):
+ continue
- # At least two identical titles exist, so increment the
counter.
- else:
- duplicate[title] += 1
+ # Strip off the newline character.
+ line = line.replace('\n', '')
-# Final printout.
-if len(duplicate):
- # The duplicate titles.
- print("%-80s %-10s" % ("Title", "Count"))
- for title in duplicate:
- print("%-80s %10i" % (title, duplicate[title]))
+ # Strip off any label.
+ if search(' \\\\label', line):
+ line = line[:line.index(' \label')]
- # Return a failed exit status.
- sys.exit(1)
+ # Extract the title string by finding the first '{' and
chop off the final '}'.
+ title = line[line.index('{')+1:-1]
-# No duplicates.
-sys.exit(0)
+ # Is the title new?
+ if not title in self.titles:
+ self.titles.append(title)
+
+ # Replicate!
+ else:
+ # No replicates yet, so 2 identical titles exist.
+ if not title in self.replicate:
+ self.replicate[title] = 2
+
+ # At least two identical titles exist, so increment
the counter.
+ else:
+ self.replicate[title] += 1
+
+ # Final printout.
+ if len(self.replicate):
+ # The replicate titles.
+ print("%-80s %-10s" % ("Title", "Count"))
+ for title in self.replicate:
+ print("%-80s %10i" % (title, self.replicate[title]))
+
+ # Return a status that replicates have been found.
+ return True
+
+ # No replicates.
+ return False
+
+
+
+if __name__ == "__main__":
+ repli = Replicated_titles()
+ if repli.find():
+ sys.exit(1)
+ else:
+ sys.exit(0)
_______________________________________________
relax (http://www.nmr-relax.com)
This is the relax-commits mailing list
[email protected]
To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-commits