image
 
image
CssFile.java


/*::.
==================================================================================================================================
=================================================¦ Copyright © 2014 Allen Baker ¦=================================================
                                                 +------------------------------+
File:       CssFile.java
Originator: Allen Baker (2014.06.05 07:15)
LayoutRev:  5
================================================================================================================================== */



package cosmicabyss.com.lib;

import java.io.*;
import java.util.*;
import java.net.*;



/*::
======================================================================================================================== *//**
Instances of this class represent an CSS file. Salient characteristics of a CssFile are:
   <BLOCKQUOTE>
      => it contains text in CSS format and is intended for consumption by a web browser,<BR>
      => it can be optimized (compressed) and still be interpreted correctly by a browser,
         <BLOCKQUOTE>
            -> this class defines a public instance method - optimize() - that will remove all the comments and delete
               All the Unnecessary whitespace from the file.
         </BLOCKQUOTE>
   </BLOCKQUOTE>

This class is derived from the TextFile class. The abstraction it layers on top of TextFile includes the following:
   <BLOCKQUOTE>
      => it contains only CSS-encoded text.
   </BLOCKQUOTE>

<P>
   <DL>
      <DT>
         <B>
            Example usage:
         </B>
         <DD>
            <BLOCKQUOTE>
               <PRE id="unindent">
                  no example provided
               </PRE>
            </BLOCKQUOTE>
         </DD>
      </DT>
      <DT>
         <B>
            View Source:
         </B>
         <DD>
            <A href="CssFile.java.html">
               CssFile.java
            </A>
         </DD>
      </DT>
      <DT>
         <B>
            Author:
         </B>
         <DD>
            <A href="mailto:sourcecode.v01@cosmicabyss.com">
               Allen Baker
            </A>
         </DD>
      </DT>
   </DL>
*//*
======================================================================================================================== */
public class CssFile extends TextFile
   {



   /*
   =====================================================================================================================
   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[  Constructors  ]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Public Instance Constructors  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */



   /*:                                    :METHOD:000:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method creates an instance of the CssFile class.


   <P><B>Implementation: </B><A HREF="CssFile.java.html#000">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public CssFile(XFile pFile) throws Exception
      {
      super(pFile.getCanonicalPath());
      }



   /*:                                    :METHOD:001:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method creates an instance of the CssFile class.


   <P><B>Implementation: </B><A HREF="CssFile.java.html#001">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public CssFile(TextFile pFile) throws Exception
      {
      super(pFile.getCanonicalPath());
      }



   /*:                                    :METHOD:002:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method creates an instance of the CssFile class.


   <P><B>Implementation: </B><A HREF="CssFile.java.html#002">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public CssFile(CssFile pFile) throws Exception
      {
      super(pFile.getCanonicalPath());
      }



   /*:                                    :METHOD:003:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method creates an instance of the CssFile class.


   <P><B>Implementation: </B><A HREF="CssFile.java.html#003">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public CssFile(URI pUri) throws Exception
      {
      super(pUri);
      }



   /*:                                    :METHOD:004:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method creates an instance of the CssFile class.


   <P><B>Implementation: </B><A HREF="CssFile.java.html#004">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public CssFile(File pFile) throws Exception
      {
      super(pFile.getCanonicalPath());
      }



   /*:                                    :METHOD:005:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method creates an instance of the CssFile class.


   <P><B>Implementation: </B><A HREF="CssFile.java.html#005">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type> CssFile(Type pFile) throws Exception
      {
      super(pFile);
      }



   /*:                                    :METHOD:006:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method creates an instance of the CssFile class.


   <P><B>Implementation: </B><A HREF="CssFile.java.html#006">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type> CssFile(File pParent, Type pChild) throws Exception
      {
      super(pParent,pChild);
      }



   /*:                                    :METHOD:007:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method creates an instance of the CssFile class.


   <P><B>Implementation: </B><A HREF="CssFile.java.html#007">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   public <Type1,Type2> CssFile(Type1 pParent, Type2 pChild) throws Exception
      {
      super(pParent,pChild);
      }



   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Protected Instance Constructors  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Private Instance Constructors  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[  Initialization  ]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Private Class Initialization  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */



   static
      {
      /*.
      ==========================================================================================
      Make sure all the class constants and variables are initialized the first time the JVM
      loads this class code and before anything else in this class is accessed
      ------------------------------------------------------------------------------------------ */
      initializeClassConstantsAndVariables();
      }



   /*
   =====================================================================================================================
   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[  Methods  ]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Public Class Methods  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */



   /*:                                    :METHOD:008:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method allows this class file to be unit tested as a standalone application. It's the method
   that's called when the class is invoked from the command line by using the java application launcher
   - "java". Main() is not a required method, but the practice of putting one in each class and
   wrapping class test code within it allows easy unit testing of the class; and main does not need to
   be removed when testing is complete.

   <P>
      <DL>
         <DT>
            <B>
               Command line usage:
            </B>
            <DD>
               Java cosmicabyss.com.lib.CssFile
            </DD>
         </DT>
      </DL>

   <P><B>Implementation: </B><A HREF="CssFile.java.html#008">View source</A>

   @param
      pArgs contains the command line arguments with which this class was invoked as an application.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public static void main(String[] pArgs) throws Exception
      {
      /*.
      ==========================================================================================
      Greetings !
      ------------------------------------------------------------------------------------------ */
      cOut.banner(CLASS_NAME);
      /*.
      ==========================================================================================
      Constructor test
      ------------------------------------------------------------------------------------------ */
      /*.
      ==========================================================================================
      Create an object and send its output to the ConsoleStream
      ------------------------------------------------------------------------------------------ */
      CssFile  obj = new CssFile(pArgs[0]);
      /*.
      ==========================================================================================
      Test code
      ------------------------------------------------------------------------------------------ */
      obj.test();
      }



   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Public Instance Methods  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */



   /*:                                    :METHOD:009:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method sets the ConsoleStream for this object.

   <P><B>Implementation: </B><A HREF="CssFile.java.html#009">View source</A>

   @return
      A reference to this object

   @param
      pConsole is a ConsoleStream through which this objects sends its output.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public CssFile setOut(ConsoleStream pConsole)
      {
      cOut = pConsole;
      return this;
      }



   /*:                                    :METHOD:010:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This boilerplate method is used for testing an instantiated object of this class and may include any
   code the developer chooses.

   <P><B>Implementation: </B><A HREF="CssFile.java.html#010">View source</A>

   @return
      A reference to this object
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public CssFile test() throws Exception
      {
      cOut.titledPrintf
         (
         "\"HELLO WORLD!\"",
         "%s  %s  %s",
         "I'm an object of the", CLASS_NAME, "class, and I approved this message."
         );
      return this;
      }



   /*:                                    :METHOD:011:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This boilerplate method is used for testing an instantiated object of this class and may include any
   code the developer chooses.

   <P><B>Implementation: </B><A HREF="CssFile.java.html#011">View source</A>

   @return
      A reference to this object
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public CssFile optimize() throws Exception
      {
      /*.
      ==========================================================================================
      This method makes no sense on directory files, this must be a normal file
      ------------------------------------------------------------------------------------------ */
      if (this.isDirectory()) return this;
      /*.
      ==========================================================================================
      ------------------------------------------------------------------------------------------ */
      this.detab(3);
      this.trim();
      this.deleteComments();
      this.deleteNewlinesAndUnnecessarySpaces();
      /*.
      ==========================================================================================
      ------------------------------------------------------------------------------------------ */
      return this;
      }



   /*:                                    :METHOD:012:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method removes all newlines and multiple consecutive spaces.

   <P><B>Implementation: </B><A HREF="CssFile.java.html#012">View source</A>

   @return
      A reference to this object
   *//*
   ---------------------------------------------------------------------------------------------------- */
   public CssFile deleteNewlinesAndUnnecessarySpaces() throws Exception
      {
      XString[][]  strPairs =
         {
            {new XString("\n"),                               new XString(" ")    },   // delete newlines
            {new XString("                                "), new XString(" ")    },   // delete 32 consecutive blanks
            {new XString("                "),                 new XString(" ")    },   // delete 16 consecutive blanks
            {new XString("        "),                         new XString(" ")    },   // delete  8 consecutive blanks
            {new XString("    "),                             new XString(" ")    },   // delete  4 consecutive blanks
            {new XString("  "),                               new XString(" ")    },   // delete  2 consecutive blanks
         };
      this.iteratingReplace(strPairs);
      return this;
      }



   /*:                                    :METHOD:013:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method finds and removes all the comments from this CssFile

   <P><B>Implementation: </B><A HREF="CssFile.java.html#013">View source</A>

   @return
      A reference to this object
   ---------------------------------------------------------------------------------------------------- */
   public CssFile deleteComments() throws Exception
      {
      /*.
      ==========================================================================================
      This method makes no sense on directory files, this must be a normal file
      ------------------------------------------------------------------------------------------ */
      if (this.isDirectory()) return this;
      /*.
      ==========================================================================================
      We'll output the comment-deleted version of the file to a temp file so if the delete
      process fails midway through, we don't corrupt the original file
      ------------------------------------------------------------------------------------------ */
      XFile  iFile = new XFile(this.getCanonicalPath());
      XFile  oFile = new XFile(File.createTempFile("deleteComments-",".tmp"));
      /*.
      ==========================================================================================
      Delete the comments
      ------------------------------------------------------------------------------------------ */
      CssFile.deleteComments(iFile.getCanonicalPath(), oFile.getCanonicalPath());
      /*.
      ==========================================================================================
      Delete the original file
      ------------------------------------------------------------------------------------------ */
      if ( ! iFile.delete())
         {
         throw new Exception("Cannot delete " + iFile.getCanonicalPath());
         }
      /*.
      ==========================================================================================
      And replace it with the comment-deleted file.
      ------------------------------------------------------------------------------------------ */
      if ( ! oFile.renameTo(iFile))
         {
         throw new Exception("Cannot rename " + oFile.getCanonicalPath());
         }
      /*.
      ==========================================================================================
      ------------------------------------------------------------------------------------------ */
      return this;
      }



   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Protected Class Methods  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Protected Instance Methods  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Private Class Methods  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */



   /*:                                    :METHOD:014:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method initializes all the class constants and variables

   <P><B>Implementation: </B><A HREF="CssFile.java.html#014">View source</A>

   *//*
   ---------------------------------------------------------------------------------------------------- */
   private static void initializeClassConstantsAndVariables()
      {
      }



   /*:                                    :METHOD:015:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method finds and removes all the comments from this CssFile

   <P><B>Implementation: </B><A HREF="CssFile.java.html#015">View source</A>

   @param
      pFileIn is the name of the file that will be copied to the output file with comments removed.
      pFileOut must not be the same as pFileIn. PFileOut and pFileIn must not be null.
   @param
      pFileOut is the name that will be given to the file that is produced. PFileOut must not be the
      same as pFileIn. PFileOut and pFileIn must not be null.
   ---------------------------------------------------------------------------------------------------- */
   public static <Type1,Type2> void deleteComments(Type1  pFileIn, Type2  pFileOut)
      throws Exception
      {
      /*.
      ==========================================================================================
      Check the parameters.
      ------------------------------------------------------------------------------------------ */
      if (pFileIn == null)
         {
         throw new Exception("pFileIn is null");
         }
      if (pFileOut == null)
         {
         throw new Exception("pFileOut is null");
         }
      if (pFileIn.equals(pFileOut))
         {
         throw new Exception("pFileIn and pFileOut are the same file");
         }
      /*.
      ==========================================================================================
      Convert the filename parameters to XStrings
      ------------------------------------------------------------------------------------------ */
      XString  fileIn  = new XString(pFileIn);
      XString  fileOut = new XString(pFileOut);
      /*.
      ==========================================================================================
      Open the in and out file from their XString filenames
      ------------------------------------------------------------------------------------------ */
      XStringsIterator  iter   = new XStringsIterator(fileIn);
      PrintWriter       output = (new TextFile(fileOut)).printWriter();
      /*.
      ==========================================================================================
      Read each line of the source file into one big buffer
      ------------------------------------------------------------------------------------------ */
      StringBuilder  theWholeFile = new StringBuilder(2 * UMath.ONE_MEG);
      while (iter.hasNext())
         {
         XString  s = iter.next();
         s = s.trim().concat("\n");
         theWholeFile.append(s.toString());
         }
      iter = null;
      /*.
      ==========================================================================================
      Scan the buffer locating the start and end of each comment and then deleting it.
      ------------------------------------------------------------------------------------------ */
      int startIdx = 0;
      int endIdx   = 0;
      while (true)
         {
         if (startIdx >= theWholeFile.length()) break;
         startIdx = theWholeFile.indexOf("/*", startIdx);
         if (startIdx == (-1)) break;
         endIdx   = theWholeFile.indexOf("*/", startIdx + 2);
         if (endIdx == (-1)) break;
         endIdx = endIdx + 2;
         theWholeFile.delete(startIdx, endIdx);
         }
      /*.
      ==========================================================================================
      Write the buffer out to the output file
      ------------------------------------------------------------------------------------------ */
      XString wholeFile = new XString(theWholeFile.toString());
      theWholeFile = null;
      output.print(wholeFile);
      /*.
      ==========================================================================================
      Flush the output buffers
      ------------------------------------------------------------------------------------------ */
      output.flush();
      /*.
      ==========================================================================================
      Close the files
      ------------------------------------------------------------------------------------------ */
      output.close();
      }



   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Private Instance Methods  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */



   /*:                                    :METHOD:016:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method initializes all the instance constants and variables. The intent of this method is to
   encapsulate all the common instance initializations in one place that can be called from all the
   constructors.

   <P><B>Implementation: </B><A HREF="CssFile.java.html#016">View source</A>

   @return
      True if the initialization succeeded, flase otherwise.
   *//*
   ---------------------------------------------------------------------------------------------------- */
   private boolean initializeInstanceConstantsAndVariables() throws Exception
      {
      boolean  successCode = true;

      if (successCode)
         {
         }
      return successCode;
      }



   /*
   =====================================================================================================================
   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[  Variables  ]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Public Class Variables  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Public Instance Variables  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Protected Class Variables  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Protected Instance Variables  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Private Class Variables  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */



   /*.
   ==========================================================================================
   cOut : console output.
   ------------------------------------------------------------------------------------------ */
   private static ConsoleStream  cOut = ConsoleStream.getSingleton();



   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Private Instance Variables  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[  Constants  ]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Public Class Constants  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Protected Class Constants  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Private Class Constants  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */



   /*.
   ==========================================================================================
   CLASS_NAME:
      The name of this class
   DFLT_LINE_LEN:
      The default line length for word wrapping
   ------------------------------------------------------------------------------------------ */
   private static final XString  CLASS_NAME    = new XString(CssFile.class.getName());
   private static final int      DFLT_LINE_LEN = ConsoleMessage.defaultLineLength();



   /*
   =====================================================================================================================
   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[  Nested-Types  ]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Public Class Nested-Types  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Protected Class Nested-Types  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Private Class Nested-Types  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */



   }  // End of Class CssFile



   /*
   =====================================================================================================================
   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[  Notes  ]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   ===================================================================================================================== */
   /*:                                    :METHOD:017:BOOKMARK:
   ====================================================================================================
   [][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
   ==================================================================================================== *//**
   This method

   <P><B>Implementation: </B><A HREF="CssFile.java.html#017">View source</A>

   @return
      This method returns

   Exception
      Xx is thrown when
   Exception
      Xx is thrown when

   @param
      PX is the
   @param (optional)
      PY is the
   ---------------------------------------------------------------------------------------------------- */
      /*.
      ==========================================================================================
      ------------------------------------------------------------------------------------------ */
   /*
   =====================================================================================================================
   @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[  Section Level 0 Banner  ]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<[  Section Level 1 Banner  ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   ::::::::::::::::::::::::::::::::::::::::::::[  Section Level 2 Banner  ]:::::::::::::::::::::::::::::::::::::::::::::
   ===================================================================================================================== */
   /*
   =====================================================================================================================
   --------------------------------------------[  Section Level 3 Banner  ]---------------------------------------------
   ===================================================================================================================== */
   /*
   =====================================================================================================================
                                               [  Section Level 4 Banner  ]
   ===================================================================================================================== */