Changeset 1251

Show
Ignore:
Timestamp:
09/26/07 08:42:43 (14 months ago)
Author:
JensDiemer
Message:

some updates for the PyLucid "DecodeUnicode?" Plugin

Location:
PyLucidPlugins/DecodeUnicode
Files:
1 removed
3 modified

Legend:

Unmodified
Added
Removed
  • PyLucidPlugins/DecodeUnicode/DecodeUnicode.py

    r1250 r1251  
    11#!/usr/bin/python 
    22# -*- coding: UTF-8 -*- 
     3 
     4""" 
     5    DecodeUnicode - a small PyLucid Plugin 
     6 
     7    Last commit info: 
     8        $LastChangedDate$ 
     9        $Rev$ 
     10        $Author$ 
     11""" 
    312 
    413__author__  = "Jens Diemer (www.jensdiemer.de)" 
    514__license__ = "GNU General Public License (GPL)" 
    615__url__     = "http://www.PyLucid.org" 
    7  
    8  
    9  
    10 """ 
    11 DecodeUnicode - a small PyLucid Plugin 
    12  
    13 Last commit info: 
    14 ---------------------------------- 
    15 LastChangedDate: $LastChangedDate$ 
    16 Revision.......: $Rev$ 
    17 Author.........: $Author$ 
    18 """ 
    19  
    20  
    21  
    22 __version__="$Rev$" 
    23  
    24  
    25 __ToDo__ = """ 
    26 """ 
     16__version__ = "$Rev$" 
    2717 
    2818 
     
    3323 
    3424 
     25BLOCKS = [ 
     26    {"range": (0x0000, 0x007F), "name": "Basic Latin"}, 
     27    {"range": (0x0080, 0x00FF), "name": "Latin-1 Supplement"}, 
     28    {"range": (0x0100, 0x017F), "name": "Latin Extended-A"}, 
     29    {"range": (0x0180, 0x024F), "name": "Latin Extended-B"}, 
     30    {"range": (0x0250, 0x02AF), "name": "IPA Extensions"}, 
     31    {"range": (0x02B0, 0x02FF), "name": "Spacing Modifier Letters"}, 
     32    {"range": (0x0300, 0x036F), "name": "Combining Diacritical Marks"}, 
     33    {"range": (0x0370, 0x03FF), "name": "Greek and Coptic"}, 
     34    {"range": (0x0400, 0x04FF), "name": "Cyrillic"}, 
     35    {"range": (0x0500, 0x052F), "name": "Cyrillic Supplement"}, 
     36    {"range": (0x0530, 0x058F), "name": "Armenian"}, 
     37    {"range": (0x0590, 0x05FF), "name": "Hebrew"}, 
     38    {"range": (0x0600, 0x06FF), "name": "Arabic"}, 
     39    {"range": (0x0700, 0x074F), "name": "Syriac"}, 
     40    {"range": (0x0750, 0x077F), "name": "Arabic Supplement"}, 
     41    {"range": (0x0780, 0x07BF), "name": "Thaana"}, 
     42    {"range": (0x0900, 0x097F), "name": "Devanagari"}, 
     43    {"range": (0x0980, 0x09FF), "name": "Bengali"}, 
     44    {"range": (0x0A00, 0x0A7F), "name": "Gurmukhi"}, 
     45    {"range": (0x0A80, 0x0AFF), "name": "Gujarati"}, 
     46    {"range": (0x0B00, 0x0B7F), "name": "Oriya"}, 
     47    {"range": (0x0B80, 0x0BFF), "name": "Tamil"}, 
     48    {"range": (0x0C00, 0x0C7F), "name": "Telugu"}, 
     49    {"range": (0x0C80, 0x0CFF), "name": "Kannada"}, 
     50    {"range": (0x0D00, 0x0D7F), "name": "Malayalam"}, 
     51    {"range": (0x0D80, 0x0DFF), "name": "Sinhala"}, 
     52    {"range": (0x0E00, 0x0E7F), "name": "Thai"}, 
     53    {"range": (0x0E80, 0x0EFF), "name": "Lao"}, 
     54    {"range": (0x0F00, 0x0FFF), "name": "Tibetan"}, 
     55    {"range": (0x1000, 0x109F), "name": "Myanmar"}, 
     56    {"range": (0x10A0, 0x10FF), "name": "Georgian"}, 
     57    {"range": (0x1100, 0x11FF), "name": "Hangul Jamo"}, 
     58    {"range": (0x1200, 0x137F), "name": "Ethiopic"}, 
     59    {"range": (0x1380, 0x139F), "name": "Ethiopic Supplement"}, 
     60    {"range": (0x13A0, 0x13FF), "name": "Cherokee"}, 
     61    {"range": (0x1400, 0x167F), "name": "Unified Canadian Aboriginal Syllabics"}, 
     62    {"range": (0x1680, 0x169F), "name": "Ogham"}, 
     63    {"range": (0x16A0, 0x16FF), "name": "Runic"}, 
     64    {"range": (0x1700, 0x171F), "name": "Tagalog"}, 
     65    {"range": (0x1720, 0x173F), "name": "Hanunoo"}, 
     66    {"range": (0x1740, 0x175F), "name": "Buhid"}, 
     67    {"range": (0x1760, 0x177F), "name": "Tagbanwa"}, 
     68    {"range": (0x1780, 0x17FF), "name": "Khmer"}, 
     69    {"range": (0x1800, 0x18AF), "name": "Mongolian"}, 
     70    {"range": (0x1900, 0x194F), "name": "Limbu"}, 
     71    {"range": (0x1950, 0x197F), "name": "Tai Le"}, 
     72    {"range": (0x1980, 0x19DF), "name": "New Tai Lue"}, 
     73    {"range": (0x19E0, 0x19FF), "name": "Khmer Symbols"}, 
     74    {"range": (0x1A00, 0x1A1F), "name": "Buginese"}, 
     75    {"range": (0x1D00, 0x1D7F), "name": "Phonetic Extensions"}, 
     76    {"range": (0x1D80, 0x1DBF), "name": "Phonetic Extensions Supplement"}, 
     77    {"range": (0x1DC0, 0x1DFF), "name": "Combining Diacritical Marks Supplement"}, 
     78    {"range": (0x1E00, 0x1EFF), "name": "Latin Extended Additional"}, 
     79    {"range": (0x1F00, 0x1FFF), "name": "Greek Extended"}, 
     80    {"range": (0x2000, 0x206F), "name": "General Punctuation"}, 
     81    {"range": (0x2070, 0x209F), "name": "Superscripts and Subscripts"}, 
     82    {"range": (0x20A0, 0x20CF), "name": "Currency Symbols"}, 
     83    {"range": (0x20D0, 0x20FF), "name": "Combining Diacritical Marks for Symbols"}, 
     84    {"range": (0x2100, 0x214F), "name": "Letterlike Symbols"}, 
     85    {"range": (0x2150, 0x218F), "name": "Number Forms"}, 
     86    {"range": (0x2190, 0x21FF), "name": "Arrows"}, 
     87    {"range": (0x2200, 0x22FF), "name": "Mathematical Operators"}, 
     88    {"range": (0x2300, 0x23FF), "name": "Miscellaneous Technical"}, 
     89    {"range": (0x2400, 0x243F), "name": "Control Pictures"}, 
     90    {"range": (0x2440, 0x245F), "name": "Optical Character Recognition"}, 
     91    {"range": (0x2460, 0x24FF), "name": "Enclosed Alphanumerics"}, 
     92    {"range": (0x2500, 0x257F), "name": "Box Drawing"}, 
     93    {"range": (0x2580, 0x259F), "name": "Block Elements"}, 
     94    {"range": (0x25A0, 0x25FF), "name": "Geometric Shapes"}, 
     95    {"range": (0x2600, 0x26FF), "name": "Miscellaneous Symbols"}, 
     96    {"range": (0x2700, 0x27BF), "name": "Dingbats"}, 
     97    {"range": (0x27C0, 0x27EF), "name": "Miscellaneous Mathematical Symbols-A"}, 
     98    {"range": (0x27F0, 0x27FF), "name": "Supplemental Arrows-A"}, 
     99    {"range": (0x2800, 0x28FF), "name": "Braille Patterns"}, 
     100    {"range": (0x2900, 0x297F), "name": "Supplemental Arrows-B"}, 
     101    {"range": (0x2980, 0x29FF), "name": "Miscellaneous Mathematical Symbols-B"}, 
     102    {"range": (0x2A00, 0x2AFF), "name": "Supplemental Mathematical Operators"}, 
     103    {"range": (0x2B00, 0x2BFF), "name": "Miscellaneous Symbols and Arrows"}, 
     104    {"range": (0x2C00, 0x2C5F), "name": "Glagolitic"}, 
     105    {"range": (0x2C80, 0x2CFF), "name": "Coptic"}, 
     106    {"range": (0x2D00, 0x2D2F), "name": "Georgian Supplement"}, 
     107    {"range": (0x2D30, 0x2D7F), "name": "Tifinagh"}, 
     108    {"range": (0x2D80, 0x2DDF), "name": "Ethiopic Extended"}, 
     109    {"range": (0x2E00, 0x2E7F), "name": "Supplemental Punctuation"}, 
     110    {"range": (0x2E80, 0x2EFF), "name": "CJK Radicals Supplement"}, 
     111    {"range": (0x2F00, 0x2FDF), "name": "Kangxi Radicals"}, 
     112    {"range": (0x2FF0, 0x2FFF), "name": "Ideographic Description Characters"}, 
     113    {"range": (0x3000, 0x303F), "name": "CJK Symbols and Punctuation"}, 
     114    {"range": (0x3040, 0x309F), "name": "Hiragana"}, 
     115    {"range": (0x30A0, 0x30FF), "name": "Katakana"}, 
     116    {"range": (0x3100, 0x312F), "name": "Bopomofo"}, 
     117    {"range": (0x3130, 0x318F), "name": "Hangul Compatibility Jamo"}, 
     118    {"range": (0x3190, 0x319F), "name": "Kanbun"}, 
     119    {"range": (0x31A0, 0x31BF), "name": "Bopomofo Extended"}, 
     120    {"range": (0x31C0, 0x31EF), "name": "CJK Strokes"}, 
     121    {"range": (0x31F0, 0x31FF), "name": "Katakana Phonetic Extensions"}, 
     122    {"range": (0x3200, 0x32FF), "name": "Enclosed CJK Letters and Months"}, 
     123    {"range": (0x3300, 0x33FF), "name": "CJK Compatibility"}, 
     124    {"range": (0x3400, 0x4DBF), "name": "CJK Unified Ideographs Extension A"}, 
     125    {"range": (0x4DC0, 0x4DFF), "name": "Yijing Hexagram Symbols"}, 
     126    {"range": (0x4E00, 0x9FFF), "name": "CJK Unified Ideographs"}, 
     127    {"range": (0xA000, 0xA48F), "name": "Yi Syllables"}, 
     128    {"range": (0xA490, 0xA4CF), "name": "Yi Radicals"}, 
     129    {"range": (0xA700, 0xA71F), "name": "Modifier Tone Letters"}, 
     130    {"range": (0xA800, 0xA82F), "name": "Syloti Nagri"}, 
     131    {"range": (0xAC00, 0xD7AF), "name": "Hangul Syllables"}, 
     132    {"range": (0xD800, 0xDB7F), "name": "High Surrogates"}, 
     133    {"range": (0xDB80, 0xDBFF), "name": "High Private Use Surrogates"}, 
     134    {"range": (0xDC00, 0xDFFF), "name": "Low Surrogates"}, 
     135    {"range": (0xE000, 0xF8FF), "name": "Private Use Area"}, 
     136    {"range": (0xF900, 0xFAFF), "name": "CJK Compatibility Ideographs"}, 
     137    {"range": (0xFB00, 0xFB4F), "name": "Alphabetic Presentation Forms"}, 
     138    {"range": (0xFB50, 0xFDFF), "name": "Arabic Presentation Forms-A"}, 
     139    {"range": (0xFE00, 0xFE0F), "name": "Variation Selectors"}, 
     140    {"range": (0xFE10, 0xFE1F), "name": "Vertical Forms"}, 
     141    {"range": (0xFE20, 0xFE2F), "name": "Combining Half Marks"}, 
     142    {"range": (0xFE30, 0xFE4F), "name": "CJK Compatibility Forms"}, 
     143    {"range": (0xFE50, 0xFE6F), "name": "Small Form Variants"}, 
     144    {"range": (0xFE70, 0xFEFF), "name": "Arabic Presentation Forms-B"}, 
     145    {"range": (0xFF00, 0xFFEF), "name": "Halfwidth and Fullwidth Forms"}, 
     146    {"range": (0xFFF0, 0xFFFF), "name": "Specials"}, 
     147    {"range": (0x10000, 0x1007F), "name": "Linear B Syllabary"}, 
     148    {"range": (0x10080, 0x100FF), "name": "Linear B Ideograms"}, 
     149    {"range": (0x10100, 0x1013F), "name": "Aegean Numbers"}, 
     150    {"range": (0x10140, 0x1018F), "name": "Ancient Greek Numbers"}, 
     151    {"range": (0x10300, 0x1032F), "name": "Old Italic"}, 
     152    {"range": (0x10330, 0x1034F), "name": "Gothic"}, 
     153    {"range": (0x10380, 0x1039F), "name": "Ugaritic"}, 
     154    {"range": (0x103A0, 0x103DF), "name": "Old Persian"}, 
     155    {"range": (0x10400, 0x1044F), "name": "Deseret"}, 
     156    {"range": (0x10450, 0x1047F), "name": "Shavian"}, 
     157    {"range": (0x10480, 0x104AF), "name": "Osmanya"}, 
     158    {"range": (0x10800, 0x1083F), "name": "Cypriot Syllabary"}, 
     159    {"range": (0x10A00, 0x10A5F), "name": "Kharoshthi"}, 
     160    {"range": (0x1D000, 0x1D0FF), "name": "Byzantine Musical Symbols"}, 
     161    {"range": (0x1D100, 0x1D1FF), "name": "Musical Symbols"}, 
     162    {"range": (0x1D200, 0x1D24F), "name": "Ancient Greek Musical Notation"}, 
     163    {"range": (0x1D300, 0x1D35F), "name": "Tai Xuan Jing Symbols"}, 
     164    {"range": (0x1D400, 0x1D7FF), "name": "Mathematical Alphanumeric Symbols"}, 
     165    {"range": (0x20000, 0x2A6DF), "name": "CJK Unified Ideographs Extension B"}, 
     166    {"range": (0x2F800, 0x2FA1F), "name": "CJK Compatibility Ideographs Supplement"}, 
     167    {"range": (0xE0000, 0xE007F), "name": "Tags"}, 
     168    {"range": (0xE0100, 0xE01EF), "name": "Variation Selectors Supplement"}, 
     169    {"range": (0xF0000, 0xFFFFF), "name": "Supplementary Private Use Area-A"}, 
     170    {"range": (0x100000, 0x10FFFF), "name": "Supplementary Private Use Area-B"}, 
     171] 
     172 
     173 
    35174class DecodeUnicode(PyLucidBasePlugin): 
    36175 
    37     blocks = [ 
    38         {"range": (0x0000, 0x007F), "name": "Basic Latin"}, 
    39         {"range": (0x0080, 0x00FF), "name": "Latin-1 Supplement"}, 
    40         {"range": (0x0100, 0x017F), "name": "Latin Extended-A"}, 
    41         {"range": (0x0180, 0x024F), "name": "Latin Extended-B"}, 
    42         {"range": (0x0250, 0x02AF), "name": "IPA Extensions"}, 
    43         {"range": (0x02B0, 0x02FF), "name": "Spacing Modifier Letters"}, 
    44         {"range": (0x0300, 0x036F), "name": "Combining Diacritical Marks"}, 
    45         {"range": (0x0370, 0x03FF), "name": "Greek and Coptic"}, 
    46         {"range": (0x0400, 0x04FF), "name": "Cyrillic"}, 
    47         {"range": (0x0500, 0x052F), "name": "Cyrillic Supplement"}, 
    48         {"range": (0x0530, 0x058F), "name": "Armenian"}, 
    49         {"range": (0x0590, 0x05FF), "name": "Hebrew"}, 
    50         {"range": (0x0600, 0x06FF), "name": "Arabic"}, 
    51         {"range": (0x0700, 0x074F), "name": "Syriac"}, 
    52         {"range": (0x0750, 0x077F), "name": "Arabic Supplement"}, 
    53         {"range": (0x0780, 0x07BF), "name": "Thaana"}, 
    54         {"range": (0x0900, 0x097F), "name": "Devanagari"}, 
    55         {"range": (0x0980, 0x09FF), "name": "Bengali"}, 
    56         {"range": (0x0A00, 0x0A7F), "name": "Gurmukhi"}, 
    57         {"range": (0x0A80, 0x0AFF), "name": "Gujarati"}, 
    58         {"range": (0x0B00, 0x0B7F), "name": "Oriya"}, 
    59         {"range": (0x0B80, 0x0BFF), "name": "Tamil"}, 
    60         {"range": (0x0C00, 0x0C7F), "name": "Telugu"}, 
    61         {"range": (0x0C80, 0x0CFF), "name": "Kannada"}, 
    62         {"range": (0x0D00, 0x0D7F), "name": "Malayalam"}, 
    63         {"range": (0x0D80, 0x0DFF), "name": "Sinhala"}, 
    64         {"range": (0x0E00, 0x0E7F), "name": "Thai"}, 
    65         {"range": (0x0E80, 0x0EFF), "name": "Lao"}, 
    66         {"range": (0x0F00, 0x0FFF), "name": "Tibetan"}, 
    67         {"range": (0x1000, 0x109F), "name": "Myanmar"}, 
    68         {"range": (0x10A0, 0x10FF), "name": "Georgian"}, 
    69         {"range": (0x1100, 0x11FF), "name": "Hangul Jamo"}, 
    70         {"range": (0x1200, 0x137F), "name": "Ethiopic"}, 
    71         {"range": (0x1380, 0x139F), "name": "Ethiopic Supplement"}, 
    72         {"range": (0x13A0, 0x13FF), "name": "Cherokee"}, 
    73         {"range": (0x1400, 0x167F), "name": "Unified Canadian Aboriginal Syllabics"}, 
    74         {"range": (0x1680, 0x169F), "name": "Ogham"}, 
    75         {"range": (0x16A0, 0x16FF), "name": "Runic"}, 
    76         {"range": (0x1700, 0x171F), "name": "Tagalog"}, 
    77         {"range": (0x1720, 0x173F), "name": "Hanunoo"}, 
    78         {"range": (0x1740, 0x175F), "name": "Buhid"}, 
    79         {"range": (0x1760, 0x177F), "name": "Tagbanwa"}, 
    80         {"range": (0x1780, 0x17FF), "name": "Khmer"}, 
    81         {"range": (0x1800, 0x18AF), "name": "Mongolian"}, 
    82         {"range": (0x1900, 0x194F), "name": "Limbu"}, 
    83         {"range": (0x1950, 0x197F), "name": "Tai Le"}, 
    84         {"range": (0x1980, 0x19DF), "name": "New Tai Lue"}, 
    85         {"range": (0x19E0, 0x19FF), "name": "Khmer Symbols"}, 
    86         {"range": (0x1A00, 0x1A1F), "name": "Buginese"}, 
    87         {"range": (0x1D00, 0x1D7F), "name": "Phonetic Extensions"}, 
    88         {"range": (0x1D80, 0x1DBF), "name": "Phonetic Extensions Supplement"}, 
    89         {"range": (0x1DC0, 0x1DFF), "name": "Combining Diacritical Marks Supplement"}, 
    90         {"range": (0x1E00, 0x1EFF), "name": "Latin Extended Additional"}, 
    91         {"range": (0x1F00, 0x1FFF), "name": "Greek Extended"}, 
    92         {"range": (0x2000, 0x206F), "name": "General Punctuation"}, 
    93         {"range": (0x2070, 0x209F), "name": "Superscripts and Subscripts"}, 
    94         {"range": (0x20A0, 0x20CF), "name": "Currency Symbols"}, 
    95         {"range": (0x20D0, 0x20FF), "name": "Combining Diacritical Marks for Symbols"}, 
    96         {"range": (0x2100, 0x214F), "name": "Letterlike Symbols"}, 
    97         {"range": (0x2150, 0x218F), "name": "Number Forms"}, 
    98         {"range": (0x2190, 0x21FF), "name": "Arrows"}, 
    99         {"range": (0x2200, 0x22FF), "name": "Mathematical Operators"}, 
    100         {"range": (0x2300, 0x23FF), "name": "Miscellaneous Technical"}, 
    101         {"range": (0x2400, 0x243F), "name": "Control Pictures"}, 
    102         {"range": (0x2440, 0x245F), "name": "Optical Character Recognition"}, 
    103         {"range": (0x2460, 0x24FF), "name": "Enclosed Alphanumerics"}, 
    104         {"range": (0x2500, 0x257F), "name": "Box Drawing"}, 
    105         {"range": (0x2580, 0x259F), "name": "Block Elements"}, 
    106         {"range": (0x25A0, 0x25FF), "name": "Geometric Shapes"}, 
    107         {"range": (0x2600, 0x26FF), "name": "Miscellaneous Symbols"}, 
    108         {"range": (0x2700, 0x27BF), "name": "Dingbats"}, 
    109         {"range": (0x27C0, 0x27EF), "name": "Miscellaneous Mathematical Symbols-A"}, 
    110         {"range": (0x27F0, 0x27FF), "name": "Supplemental Arrows-A"}, 
    111         {"range": (0x2800, 0x28FF), "name": "Braille Patterns"}, 
    112         {"range": (0x2900, 0x297F), "name": "Supplemental Arrows-B"}, 
    113         {"range": (0x2980, 0x29FF), "name": "Miscellaneous Mathematical Symbols-B"}, 
    114         {"range": (0x2A00, 0x2AFF), "name": "Supplemental Mathematical Operators"}, 
    115         {"range": (0x2B00, 0x2BFF), "name": "Miscellaneous Symbols and Arrows"}, 
    116         {"range": (0x2C00, 0x2C5F), "name": "Glagolitic"}, 
    117         {"range": (0x2C80, 0x2CFF), "name": "Coptic"}, 
    118         {"range": (0x2D00, 0x2D2F), "name": "Georgian Supplement"}, 
    119         {"range": (0x2D30, 0x2D7F), "name": "Tifinagh"}, 
    120         {"range": (0x2D80, 0x2DDF), "name": "Ethiopic Extended"}, 
    121         {"range": (0x2E00, 0x2E7F), "name": "Supplemental Punctuation"}, 
    122         {"range": (0x2E80, 0x2EFF), "name": "CJK Radicals Supplement"}, 
    123         {"range": (0x2F00, 0x2FDF), "name": "Kangxi Radicals"}, 
    124         {"range": (0x2FF0, 0x2FFF), "name": "Ideographic Description Characters"}, 
    125         {"range": (0x3000, 0x303F), "name": "CJK Symbols and Punctuation"}, 
    126         {"range": (0x3040, 0x309F), "name": "Hiragana"}, 
    127         {"range": (0x30A0, 0x30FF), "name": "Katakana"}, 
    128         {"range": (0x3100, 0x312F), "name": "Bopomofo"}, 
    129         {"range": (0x3130, 0x318F), "name": "Hangul Compatibility Jamo"}, 
    130         {"range": (0x3190, 0x319F), "name": "Kanbun"}, 
    131         {"range": (0x31A0, 0x31BF), "name": "Bopomofo Extended"}, 
    132         {"range": (0x31C0, 0x31EF), "name": "CJK Strokes"}, 
    133         {"range": (0x31F0, 0x31FF), "name": "Katakana Phonetic Extensions"}, 
    134         {"range": (0x3200, 0x32FF), "name": "Enclosed CJK Letters and Months"}, 
    135         {"range": (0x3300, 0x33FF), "name": "CJK Compatibility"}, 
    136         {"range": (0x3400, 0x4DBF), "name": "CJK Unified Ideographs Extension A"}, 
    137         {"range": (0x4DC0, 0x4DFF), "name": "Yijing Hexagram Symbols"}, 
    138         {"range": (0x4E00, 0x9FFF), "name": "CJK Unified Ideographs"}, 
    139         {"range": (0xA000, 0xA48F), "name": "Yi Syllables"}, 
    140         {"range": (0xA490, 0xA4CF), "name": "Yi Radicals"}, 
    141         {"range": (0xA700, 0xA71F), "name": "Modifier Tone Letters"}, 
    142         {"range": (0xA800, 0xA82F), "name": "Syloti Nagri"}, 
    143         {"range": (0xAC00, 0xD7AF), "name": "Hangul Syllables"}, 
    144         {"range": (0xD800, 0xDB7F), "name": "High Surrogates"}, 
    145         {"range": (0xDB80, 0xDBFF), "name": "High Private Use Surrogates"}, 
    146         {"range": (0xDC00, 0xDFFF), "name": "Low Surrogates"}, 
    147         {"range": (0xE000, 0xF8FF), "name": "Private Use Area"}, 
    148         {"range": (0xF900, 0xFAFF), "name": "CJK Compatibility Ideographs"}, 
    149         {"range": (0xFB00, 0xFB4F), "name": "Alphabetic Presentation Forms"}, 
    150         {"range": (0xFB50, 0xFDFF), "name": "Arabic Presentation Forms-A"}, 
    151         {"range": (0xFE00, 0xFE0F), "name": "Variation Selectors"}, 
    152         {"range": (0xFE10, 0xFE1F), "name": "Vertical Forms"}, 
    153         {"range": (0xFE20, 0xFE2F), "name": "Combining Half Marks"}, 
    154         {"range": (0xFE30, 0xFE4F), "name": "CJK Compatibility Forms"}, 
    155         {"range": (0xFE50, 0xFE6F), "name": "Small Form Variants"}, 
    156         {"range": (0xFE70, 0xFEFF), "name": "Arabic Presentation Forms-B"}, 
    157         {"range": (0xFF00, 0xFFEF), "name": "Halfwidth and Fullwidth Forms"}, 
    158         {"range": (0xFFF0, 0xFFFF), "name": "Specials"}, 
    159         {"range": (0x10000, 0x1007F), "name": "Linear B Syllabary"}, 
    160         {"range": (0x10080, 0x100FF), "name": "Linear B Ideograms"}, 
    161         {"range": (0x10100, 0x1013F), "name": "Aegean Numbers"}, 
    162         {"range": (0x10140, 0x1018F), "name": "Ancient Greek Numbers"}, 
    163         {"range": (0x10300, 0x1032F), "name": "Old Italic"}, 
    164         {"range": (0x10330, 0x1034F), "name": "Gothic"}, 
    165         {"range": (0x10380, 0x1039F), "name": "Ugaritic"}, 
    166         {"range": (0x103A0, 0x103DF), "name": "Old Persian"}, 
    167         {"range": (0x10400, 0x1044F), "name": "Deseret"}, 
    168         {"range": (0x10450, 0x1047F), "name": "Shavian"}, 
    169         {"range": (0x10480, 0x104AF), "name": "Osmanya"}, 
    170         {"range": (0x10800, 0x1083F), "name": "Cypriot Syllabary"}, 
    171         {"range": (0x10A00, 0x10A5F), "name": "Kharoshthi"}, 
    172         {"range": (0x1D000, 0x1D0FF), "name": "Byzantine Musical Symbols"}, 
    173         {"range": (0x1D100, 0x1D1FF), "name": "Musical Symbols"}, 
    174         {"range": (0x1D200, 0x1D24F), "name": "Ancient Greek Musical Notation"}, 
    175         {"range": (0x1D300, 0x1D35F), "name": "Tai Xuan Jing Symbols"}, 
    176         {"range": (0x1D400, 0x1D7FF), "name": "Mathematical Alphanumeric Symbols"}, 
    177         {"range": (0x20000, 0x2A6DF), "name": "CJK Unified Ideographs Extension B"}, 
    178         {"range": (0x2F800, 0x2FA1F), "name": "CJK Compatibility Ideographs Supplement"}, 
    179         {"range": (0xE0000, 0xE007F), "name": "Tags"}, 
    180         {"range": (0xE0100, 0xE01EF), "name": "Variation Selectors Supplement"}, 
    181         {"range": (0xF0000, 0xFFFFF), "name": "Supplementary Private Use Area-A"}, 
    182         {"range": (0x100000, 0x10FFFF), "name": "Supplementary Private Use Area-B"}, 
    183     ] 
    184  
    185176    def lucidTag(self): 
    186         self.block_select() 
    187  
    188     def block_select(self, selected_id = 0): 
    189         block_data = [] 
    190         for id, block in enumerate(self.blocks): 
    191             block_data.append({ 
     177        self.display("0") 
     178 
     179    def display(self, function_info=None): 
     180 
     181        if function_info: 
     182            # Use the block position from the URL 
     183            try: 
     184                function_info = function_info.strip("/") 
     185                block_id = int(function_info) 
     186            except (TypeError, ValueError, IndexError): 
     187                self.page_msg.red("Wrong URL, please select a Block!") 
     188                return 
     189        else: 
     190            # Use the block position from POST data 
     191            try: 
     192                block_id = self.request.POST.get("block", 0) 
     193                block_id = int(block_id) 
     194            except ValueError: 
     195                self.page_msg.red("Form Error!") 
     196                return 
     197 
     198        try: 
     199            block = BLOCKS[block_id] 
     200        except IndexError: 
     201            self.page_msg.red("Block %s not exists!" % block_id) 
     202            return 
     203 
     204        block_range = block["range"] 
     205        block_data = self._get_block_data(block_range) 
     206 
     207        back_id = block_id - 1 
     208        if back_id < 0: 
     209            back_id = 0 
     210 
     211        next_id = block_id + 1 
     212        if next_id >= len(BLOCKS): 
     213            next_id = block_id 
     214 
     215        block_select_data = self._get_select_data() 
     216 
     217        context = { 
     218            "selected_id": block_id, 
     219            "block_select_data": block_select_data, 
     220            "block_select_url": self.URLs.methodLink("display"), 
     221 
     222            "back_url"  : self.URLs.methodLink("display", back_id), 
     223            "back_name"  : BLOCKS[back_id]["name"], 
     224            "next_url"  : self.URLs.methodLink("display", next_id), 
     225            "next_name"  : BLOCKS[next_id]["name"], 
     226 
     227            "url"       : self.URLs.methodLink("display", block_id), 
     228            "block_name": block["name"], 
     229 
     230            "range_hex1": "0x%04X" % block_range[0], 
     231            "range_hex2": "0x%04X" % block_range[1], 
     232 
     233            "block_data": block_data, 
     234 
     235            "unidata_version": unicodedata.unidata_version, 
     236        } 
     237        self._render_template("display", context)#, debug=True) 
     238 
     239    def _get_select_data(self): 
     240        """ 
     241        The data for the html select form. 
     242        """ 
     243        block_select_data = [] 
     244        for id, block in enumerate(BLOCKS): 
     245            block_select_data.append({ 
    192246                "id": id, 
    193247                "name": "0x%04X-0x%04X - %s" % ( 
     
    195249                ) 
    196250            }) 
    197  
    198         context = { 
    199             "url": self.URLs.methodLink("display"), 
    200             "selected_id": selected_id, 
    201             "blocks": block_data, 
    202         } 
    203         self._render_template("select", context) 
    204  
    205     def display(self, function_info=None): 
    206  
    207         if function_info: 
    208             try: 
    209                 block_id = int(function_info[0]) 
    210             except (TypeError, ValueError, IndexError): 
    211                 self.page_msg.red("Wrong URL, please select a Block!") 
    212                 return 
    213         else: 
    214             try: 
    215                 block_id = self.request.POST["block"] 
    216                 block_id = int(block_id) 
    217             except (KeyError, ValueError): 
    218                 self.page_msg.red("Form Error!") 
    219                 return 
    220  
    221         try: 
    222             block = self.blocks[block_id] 
    223         except IndexError: 
    224             self.page_msg.red("Block %s not exists!" % block_id) 
    225             return 
    226  
    227  
    228         self.block_select(block_id) # Menü wieder anzeigen 
    229  
    230         block_range = block["range"] 
    231         block_data = self.get_block_data(block_range) 
    232  
    233         back_id = block_id - 1 
    234         if back_id < 0: 
    235             back_id = 0 
    236  
    237         next_id = block_id + 1 
    238         if next_id > len(self.blocks): 
    239             next_id = block_id 
    240  
    241         context = { 
    242             "back_url"  : self.URLs.methodLink("display", back_id), 
    243             "back_name"  : self.blocks[back_id]["name"], 
    244             "next_url"  : self.URLs.methodLink("display", next_id), 
    245             "next_name"  : self.blocks[next_id]["name"], 
    246  
    247             "url"       : self.URLs.methodLink("display", block_id), 
    248             "block_name": block["name"], 
    249             "ucHex": "%X" % block_range[0], # Für decodeunicode.org Link 
    250             "range_hex1": "0x%04X" % block_range[0], 
    251             "range_hex2": "0x%04X" % block_range[1], 
    252             "block_data": block_data, 
    253  
    254             "unidata_version": unicodedata.unidata_version, 
    255         } 
    256         self._render_template("display", context) 
    257  
    258     def get_block_data(self, block): 
    259  
     251        return block_select_data 
     252 
     253    def _get_block_data(self, block): 
     254        """ 
     255        Data for the current block table. 
     256        """ 
    260257        data = [] 
    261  
    262         last_error = False 
    263258        for no in xrange(int(block[0]), int(block[1])): 
    264259            char = unichr(no) 
    265  
    266260            char_code = "%X" % no 
    267261 
    268             # zum Einbinden in Python Sourcecode z.B.: print u"\u256c" 
    269             unicode_value = "000%s" % char_code 
    270             unicode_value = "\\u%s" % unicode_value[-4:] 
    271  
     262            unicode_number = "000%s" % char_code 
     263            unicode_number = unicode_number[-4:] 
     264 
     265            unicode_value = "\\u%s" % unicode_number 
    272266            hex_value = "\\x%s" % char_code 
    273  
    274             # zum einbinden in HTML: 
    275267            HTML = "&#x%s;" % char_code 
    276  
    277268            name = unicodedata.name(char, "(no unicode name)") 
    278269 
     
    280271                "id": no, 
    281272                "char": char, 
     273                "unicode_number": unicode_number, 
    282274                "unicode": unicode_value, 
    283275                "hex": hex_value, 
     
    285277                "name": name, 
    286278            }) 
    287  
    288279        return data 
  • PyLucidPlugins/DecodeUnicode/DecodeUnicode_cfg.py

    r1250 r1251  
    1818        "must_login"    : False, 
    1919        "must_admin"    : False, 
    20         "internal_page_info" : { 
    21             "name"              : "select", 
    22             "description"       : "select a unicode block range", 
    23             "markup"            : None 
    24         }, 
    2520    }, 
    2621    "display"   : { 
  • PyLucidPlugins/DecodeUnicode/internal_pages/display.html

    r1250 r1251  
     1<fieldset><legend>Select a unicode block:</legend> 
     2    <label for="block">select a unicode block:</label> 
     3    <form name="block_select" method="post" action="{{ block_select_url }}"> 
     4        <select name="block"> 
     5            {% for block in block_select_data %} 
     6            <option value="{{ block.id }}" {% ifequal block.id selected_id %}selected="selected"{% endifequal %}> 
     7                {{ block.id }} - {{ block.name }} 
     8            </option> 
     9            {% endfor %} 
     10        </select> 
     11        <input value="display" type="submit"> 
     12    </form> 
     13</fieldset> 
     14 
    115<fieldset><legend>{{ range_hex1 }}-{{ range_hex2 }} - {{ block_name }}:</legend> 
    2 <p> 
    3     Link to <a href="http://www.decodeunicode.org/w3.php?ucHex={{ ucHex }}"> 
    4     {{ block_name }} at decodeunicode.org</a>. 
    5 </p> 
    616<p> 
    717    <a href="{{ back_url }}">&lt;&lt; {{ back_name }}</a> 
     
    1323        <th>no</th> 
    1424        <th>char</th> 
     25        <th>pic</th> 
    1526        <th>unicode</th> 
    1627        <th>hex</th> 
     
    2031    {% for row in block_data %} 
    2132    <tr class="{% cycle 'odd' 'even' %}"> 
    22         <td>{{ row.id }}</td> 
    23         <td><strong>{{ row.char }}</strong></td> 
    24         <td title="Use in Python like this: &gt;print u'{{ row.unicode }}'&lt;">{{ row.unicode }}</td> 
    25         <td title="Use in Python like this: &gt;print '{{ row.hex }}'&lt;">{{ row.hex }}</td> 
    26         <td>{{ row.html|escape }}</td> 
     33        <td><small>{{ row.id }}</small></td> 
     34        <td style="text-align:center;"><strong>{{ row.char }}</strong></td> 
    2735        <td> 
    28             <a name="{{ row.id }}"><a href="{{ url }}#{{ row.id }}" title="anchor to this char"> 
    29                 {{ row.name }} 
    30             </a></a> 
     36            <a href="http://www.decodeunicode.org/data/glyph/196x196/{{ row.unicode_number }}.gif" title="Bigger pic from decodeunicode.org"> 
     37            <img src="http://www.decodeunicode.org/data/glyph/26x26/{{ row.unicode_number }}.gif" border="0"> 
     38            </a> 
     39        </td> 
     40        <td title="Use in Python like this: &gt;print u'{{ row.unicode }}'&lt;"><small>{{ row.unicode }}</small></td> 
     41        <td title="Use in Python like this: &gt;print '{{ row.hex }}'&lt;"><small>{{ row.hex }}</small></td> 
     42        <td title="copy&paste into your html code ;)"><small>{{ row.html|escape }}</small></td> 
     43        <td> 
     44            <a name="{{ row.id }}"></a> 
     45            <a href="#{{ row.id }}" title="anchor to this char">#</a> 
     46            <a href="http://www.decodeunicode.org/u+{{ row.unicode_number }}" title="Link to this char at decodeunicode.org">{{ row.name }}</a> 
    3147        </td> 
    3248    </tr>