CVS: ht2html HTParser.py,2.0,2.1

"Fred L. Drake" <[email protected]> Tue, 29 Jul 2003 08:34:28 -0700
Newsgroups gmane.comp.web.ht2html.devel
Message-ID <[email protected]>
Update of /cvsroot/ht2html/ht2html
In directory sc8-pr-cvs1:/tmp/cvs-serv28676

Modified Files:
	HTParser.py 
Log Message:
Fill in additional information from index.ht; this allows the author
and author-email to be loaded from a single place for the entire
directory.  Specific files can still override this if desired.


Index: HTParser.py
===================================================================
RCS file: /cvsroot/ht2html/ht2html/HTParser.py,v
retrieving revision 2.0
retrieving revision 2.1
diff -C2 -d -r2.0 -r2.1
*** HTParser.py	22 Mar 2002 17:45:40 -0000	2.0
--- HTParser.py	29 Jul 2003 15:34:26 -0000	2.1
***************
*** 8,14 ****
  from types import StringType
  
- 
  
  class HTParser(rfc822.Message):
      def __init__(self, filename, default_author=None, default_email=None):
          self.__filename = filename
--- 8,16 ----
  from types import StringType
  
  
  class HTParser(rfc822.Message):
+ 
+     DEFAULTS_FILE = "index.ht"
+ 
      def __init__(self, filename, default_author=None, default_email=None):
          self.__filename = filename
***************
*** 16,25 ****
          self.__extraheaders = {}
          rfc822.Message.__init__(self, fp)
          # Massage some standard headers we require.
          #
          # title
          if not self.has_key('title'):
!             parts = self.__filename.split(os.sep)
!             self.__extraheaders['title'] = parts[-1]
          # author
          if not self.has_key('author'):
--- 18,29 ----
          self.__extraheaders = {}
          rfc822.Message.__init__(self, fp)
+         basename = os.path.basename(self.__filename)
          # Massage some standard headers we require.
          #
          # title
          if not self.has_key('title'):
!             self.__extraheaders['title'] = basename
!         if basename != self.DEFAULTS_FILE:
!             self.__load_defaults()
          # author
          if not self.has_key('author'):
***************
*** 57,61 ****
      # might be using an older rfc822
      def get(self, name, default=None):
!         if self.has_key(name):
              return self.getheader(name)
          elif self.__extraheaders.has_key(name):
--- 61,65 ----
      # might be using an older rfc822
      def get(self, name, default=None):
!         if rfc822.Message.has_key(self, name):
              return self.getheader(name)
          elif self.__extraheaders.has_key(name):
***************
*** 64,67 ****
--- 68,75 ----
              return default
  
+     def has_key(self, name):
+         return (rfc822.Message.has_key(self, name)
+                 or self.__extraheaders.has_key(name))
+ 
      def process_sidebar(self):
          # first process all link files.  Either we hard code the use of
***************
*** 87,91 ****
          self.sidebar.append(('mailto:' + email, author))
  
!     # regular expressions used in massage()
      cre = re.compile(
          r'(<h3>(?P<h3>.*?)</h3>)|'
--- 95,109 ----
          self.sidebar.append(('mailto:' + email, author))
  
!     def __load_defaults(self):
!         dir = os.path.dirname(self.__filename)
!         if not os.path.isfile(os.path.join(dir, self.DEFAULTS_FILE)):
!             return
!         fp = open(os.path.join(dir, self.DEFAULTS_FILE))
!         msg = rfc822.Message(fp)
!         for k, v in msg.items():
!             if not self.__extraheaders.has_key(k):
!                 self.__extraheaders[k] = v
! 
!     # regular expressions used in __parse()
      cre = re.compile(
          r'(<h3>(?P<h3>.*?)</h3>)|'



-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01