Open Source Repository

Home /xom/xom-1.1 | Repository Home



nu/xom/ISOCyrillicWriter.java
/* Copyright 2002, 2003 Elliotte Rusty Harold
   
   This library is free software; you can redistribute it and/or modify
   it under the terms of version 2.1 of the GNU Lesser General Public 
   License as published by the Free Software Foundation.
   
   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
   GNU Lesser General Public License for more details.
   
   You should have received a copy of the GNU Lesser General Public
   License along with this library; if not, write to the 
   Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
   Boston, MA 02111-1307  USA
   
   You can contact Elliotte Rusty Harold by sending e-mail to
   [email protected]. Please include the word "XOM" in the
   subject line. The XOM home page is located at http://www.xom.nu/
*/

package nu.xom;

import java.io.Writer;

/**
 <p>
 *  ISO 8859-5, ASCII plus Cyrillic (Russian, Byelorussian, etc.)
 </p>
 
 @author Elliotte Rusty Harold
 @version 1.0
 *
 */
class ISOCyrillicWriter extends TextWriter {

    ISOCyrillicWriter(Writer out, String encoding) {
        super(out, encoding);
    }

    /**
     @see nu.xom.TextWriter#needsEscaping(char)
     */
    boolean needsEscaping(char c) {
        if (c <= 0xA0return false;        
        switch (c) {
            case 0x0401return false// CYRILLIC CAPITAL LETTER IO
            case 0x0402return false// CYRILLIC CAPITAL LETTER DJE
            case 0x0403return false// CYRILLIC CAPITAL LETTER GJE
            case 0x0404return false// CYRILLIC CAPITAL LETTER UKRAINIAN IE
            case 0x0405return false// CYRILLIC CAPITAL LETTER DZE
            case 0x0406return false// CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
            case 0x0407return false// CYRILLIC CAPITAL LETTER YI
            case 0x0408return false// CYRILLIC CAPITAL LETTER JE
            case 0x0409return false// CYRILLIC CAPITAL LETTER LJE
            case 0x040Areturn false// CYRILLIC CAPITAL LETTER NJE
            case 0x040Breturn false// CYRILLIC CAPITAL LETTER TSHE
            case 0x040Creturn false// CYRILLIC CAPITAL LETTER KJE
            case 0x040Dreturn true;  // place holder to enable table lookup
            case 0x040Ereturn false// CYRILLIC CAPITAL LETTER SHORT U
            case 0x040Freturn false// CYRILLIC CAPITAL LETTER DZHE
            case 0x0410return false// CYRILLIC CAPITAL LETTER A
            case 0x0411return false// CYRILLIC CAPITAL LETTER BE
            case 0x0412return false// CYRILLIC CAPITAL LETTER VE
            case 0x0413return false// CYRILLIC CAPITAL LETTER GHE
            case 0x0414return false// CYRILLIC CAPITAL LETTER DE
            case 0x0415return false// CYRILLIC CAPITAL LETTER IE
            case 0x0416return false// CYRILLIC CAPITAL LETTER ZHE
            case 0x0417return false// CYRILLIC CAPITAL LETTER ZE
            case 0x0418return false// CYRILLIC CAPITAL LETTER I
            case 0x0419return false// CYRILLIC CAPITAL LETTER SHORT I
            case 0x041Areturn false// CYRILLIC CAPITAL LETTER KA
            case 0x041Breturn false// CYRILLIC CAPITAL LETTER EL
            case 0x041Creturn false// CYRILLIC CAPITAL LETTER EM
            case 0x041Dreturn false// CYRILLIC CAPITAL LETTER EN
            case 0x041Ereturn false// CYRILLIC CAPITAL LETTER O
            case 0x041Freturn false// CYRILLIC CAPITAL LETTER PE
            case 0x0420return false// CYRILLIC CAPITAL LETTER ER
            case 0x0421return false// CYRILLIC CAPITAL LETTER ES
            case 0x0422return false// CYRILLIC CAPITAL LETTER TE
            case 0x0423return false// CYRILLIC CAPITAL LETTER U
            case 0x0424return false// CYRILLIC CAPITAL LETTER EF
            case 0x0425return false// CYRILLIC CAPITAL LETTER HA
            case 0x0426return false// CYRILLIC CAPITAL LETTER TSE
            case 0x0427return false// CYRILLIC CAPITAL LETTER CHE
            case 0x0428return false// CYRILLIC CAPITAL LETTER SHA
            case 0x0429return false// CYRILLIC CAPITAL LETTER SHCHA
            case 0x042Areturn false// CYRILLIC CAPITAL LETTER HARD SIGN
            case 0x042Breturn false// CYRILLIC CAPITAL LETTER YERU
            case 0x042Creturn false// CYRILLIC CAPITAL LETTER SOFT SIGN
            case 0x042Dreturn false// CYRILLIC CAPITAL LETTER E
            case 0x042Ereturn false// CYRILLIC CAPITAL LETTER YU
            case 0x042Freturn false// CYRILLIC CAPITAL LETTER YA
            case 0x0430return false// CYRILLIC SMALL LETTER A
            case 0x0431return false// CYRILLIC SMALL LETTER BE
            case 0x0432return false// CYRILLIC SMALL LETTER VE
            case 0x0433return false// CYRILLIC SMALL LETTER GHE
            case 0x0434return false// CYRILLIC SMALL LETTER DE
            case 0x0435return false// CYRILLIC SMALL LETTER IE
            case 0x0436return false// CYRILLIC SMALL LETTER ZHE
            case 0x0437return false// CYRILLIC SMALL LETTER ZE
            case 0x0438return false// CYRILLIC SMALL LETTER I
            case 0x0439return false// CYRILLIC SMALL LETTER SHORT I
            case 0x043Areturn false// CYRILLIC SMALL LETTER KA
            case 0x043Breturn false// CYRILLIC SMALL LETTER EL
            case 0x043Creturn false// CYRILLIC SMALL LETTER EM
            case 0x043Dreturn false// CYRILLIC SMALL LETTER EN
            case 0x043Ereturn false// CYRILLIC SMALL LETTER O
            case 0x043Freturn false// CYRILLIC SMALL LETTER PE
            case 0x0440return false// CYRILLIC SMALL LETTER ER
            case 0x0441return false// CYRILLIC SMALL LETTER ES
            case 0x0442return false// CYRILLIC SMALL LETTER TE
            case 0x0443return false// CYRILLIC SMALL LETTER U
            case 0x0444return false// CYRILLIC SMALL LETTER EF
            case 0x0445return false// CYRILLIC SMALL LETTER HA
            case 0x0446return false// CYRILLIC SMALL LETTER TSE
            case 0x0447return false// CYRILLIC SMALL LETTER CHE
            case 0x0448return false// CYRILLIC SMALL LETTER SHA
            case 0x0449return false// CYRILLIC SMALL LETTER SHCHA
            case 0x044Areturn false// CYRILLIC SMALL LETTER HARD SIGN
            case 0x044Breturn false// CYRILLIC SMALL LETTER YERU
            case 0x044Creturn false// CYRILLIC SMALL LETTER SOFT SIGN
            case 0x044Dreturn false// CYRILLIC SMALL LETTER E
            case 0x044Ereturn false// CYRILLIC SMALL LETTER YU
            case 0x044Freturn false// CYRILLIC SMALL LETTER YA
            case 0x0450return true;  // place holder to enable table lookup
            case 0x0451return false// CYRILLIC SMALL LETTER IO
            case 0x0452return false// CYRILLIC SMALL LETTER DJE
            case 0x0453return false// CYRILLIC SMALL LETTER GJE
            case 0x0454return false// CYRILLIC SMALL LETTER UKRAINIAN IE
            case 0x0455return false// CYRILLIC SMALL LETTER DZE
            case 0x0456return false// CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
            case 0x0457return false// CYRILLIC SMALL LETTER YI
            case 0x0458return false// CYRILLIC SMALL LETTER JE
            case 0x0459return false// CYRILLIC SMALL LETTER LJE
            case 0x045Areturn false// CYRILLIC SMALL LETTER NJE
            case 0x045Breturn false// CYRILLIC SMALL LETTER TSHE
            case 0x045Creturn false// CYRILLIC SMALL LETTER KJE
            case 0x045Dreturn true;  // place holder to enable table lookup
            case 0x045Ereturn false// CYRILLIC SMALL LETTER SHORT U
            case 0x045Freturn false// CYRILLIC SMALL LETTER DZHE
        }
        
        switch (c) { // assorted leftover characters
            case 0x00ADreturn false// SOFT HYPHEN
            case 0x00A7return false// SECTION SIGN
            case 0x2116return false// NUMERO SIGN
        }

        return true;
    }

}