home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_1098 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  20.2 KB  |  655 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import sys
  5. import re
  6.  
  7. class FieldStrings:
  8.     
  9.     def __init__(self, bug_handler, run_level = 1):
  10.         self._FieldStrings__run_level = run_level
  11.         self._FieldStrings__bug_handler = bug_handler
  12.         self._FieldStrings__initiate_values()
  13.  
  14.     
  15.     def __initiate_values(self):
  16.         self._FieldStrings__field_instruction_dict = {
  17.             'EDITTIME': (self._FieldStrings__num_type_and_format_func, 'editing-time'),
  18.             'NUMCHARS': (self._FieldStrings__num_type_and_format_func, 'number-of-characters-in-doc'),
  19.             'NUMPAGES': (self._FieldStrings__num_type_and_format_func, 'number-of-pages-in-doc'),
  20.             'NUMWORDS': (self._FieldStrings__num_type_and_format_func, 'number-of-words-in-doc'),
  21.             'REVNUM': (self._FieldStrings__num_type_and_format_func, 'revision-number'),
  22.             'SECTIONPAGES': (self._FieldStrings__num_type_and_format_func, 'num-of-pages-in-section'),
  23.             'SECTION': (self._FieldStrings__num_type_and_format_func, 'insert-section-number'),
  24.             'QUOTE': (self._FieldStrings__num_type_and_format_func, 'quote'),
  25.             'PAGE': (self._FieldStrings__default_inst_func, 'insert-page-number'),
  26.             'page': (self._FieldStrings__default_inst_func, 'insert-page-number'),
  27.             'CREATEDATE': (self._FieldStrings__date_func, 'insert-date'),
  28.             'PRINTDATE': (self._FieldStrings__date_func, 'insert-date'),
  29.             'SAVEDATE': (self._FieldStrings__date_func, 'last-saved'),
  30.             'TIME': (self._FieldStrings__date_func, 'insert-time'),
  31.             'AUTHOR': (self._FieldStrings__simple_info_func, 'user-name'),
  32.             'COMMENTS': (self._FieldStrings__simple_info_func, 'comments'),
  33.             'FILENAME': (self._FieldStrings__simple_info_func, 'file-name'),
  34.             'filename': (self._FieldStrings__simple_info_func, 'file-name'),
  35.             'KEYWORDS': (self._FieldStrings__simple_info_func, 'keywords'),
  36.             'LASTSAVEDBY': (self._FieldStrings__simple_info_func, 'last-saved-by'),
  37.             'SUBJECT': (self._FieldStrings__simple_info_func, 'subject'),
  38.             'TEMPLATE': (self._FieldStrings__simple_info_func, 'based-on-template'),
  39.             'TITLE': (self._FieldStrings__simple_info_func, 'document-title'),
  40.             'USERADDRESS': (self._FieldStrings__simple_info_func, 'user-address'),
  41.             'USERINITIALS': (self._FieldStrings__simple_info_func, 'user-initials'),
  42.             'USERNAME': (self._FieldStrings__simple_info_func, 'user-name'),
  43.             'EQ': (self._FieldStrings__equation_func, 'equation'),
  44.             'HYPERLINK': (self._FieldStrings__hyperlink_func, 'hyperlink'),
  45.             'INCLUDEPICTURE': (self._FieldStrings__include_pict_func, 'include-picture'),
  46.             'INCLUDETEXT': (self._FieldStrings__include_text_func, 'include-text-from-file'),
  47.             'INDEX': (self._FieldStrings__index_func, 'index'),
  48.             'NOTEREF': (self._FieldStrings__note_ref_func, 'reference-to-note'),
  49.             'PAGEREF': (self._FieldStrings__page_ref_func, 'reference-to-page'),
  50.             'REF': (self._FieldStrings__ref_func, 'reference'),
  51.             'ref': (self._FieldStrings__ref_func, 'reference'),
  52.             'SEQ': (self._FieldStrings__sequence_func, 'numbering-sequence'),
  53.             'SYMBOL': (self._FieldStrings__symbol_func, 'symbol'),
  54.             'TA': (self._FieldStrings__ta_func, 'anchor-for-table-of-authorities'),
  55.             'TOA': (self._FieldStrings__toc_table_func, 'table-of-authorities'),
  56.             'TOC': (self._FieldStrings__toc_table_func, 'table-of-contents'),
  57.             'AUTONUMOUT': (self._FieldStrings__no_switch_func, 'auto-num-out?'),
  58.             'COMPARE': (self._FieldStrings__no_switch_func, 'compare'),
  59.             'DOCVARIABLE': (self._FieldStrings__no_switch_func, 'document-variable'),
  60.             'GOTOBUTTON': (self._FieldStrings__no_switch_func, 'go-button'),
  61.             'NEXT': (self._FieldStrings__no_switch_func, 'next'),
  62.             'NEXTIF': (self._FieldStrings__no_switch_func, 'next-if'),
  63.             'SKIPIF': (self._FieldStrings__no_switch_func, 'skip-if'),
  64.             'IF': (self._FieldStrings__no_switch_func, 'if'),
  65.             'MERGEFIELD': (self._FieldStrings__no_switch_func, 'merge-field'),
  66.             'MERGEREC': (self._FieldStrings__no_switch_func, 'merge-record'),
  67.             'MERGESEQ': (self._FieldStrings__no_switch_func, 'merge-sequence'),
  68.             'PLACEHOLDER': (self._FieldStrings__no_switch_func, 'place-holder'),
  69.             'PRIVATE': (self._FieldStrings__no_switch_func, 'private'),
  70.             'RD': (self._FieldStrings__no_switch_func, 'referenced-document'),
  71.             'SET': (self._FieldStrings__no_switch_func, 'set'),
  72.             'ADVANCE': (self._FieldStrings__default_inst_func, 'advance'),
  73.             'ASK': (self._FieldStrings__default_inst_func, 'prompt-user'),
  74.             'AUTONUMLGL': (self._FieldStrings__default_inst_func, 'automatic-number'),
  75.             'AUTONUM': (self._FieldStrings__default_inst_func, 'automatic-number'),
  76.             'AUTOTEXTLIST': (self._FieldStrings__default_inst_func, 'auto-list-text'),
  77.             'AUTOTEXT': (self._FieldStrings__default_inst_func, 'auto-text'),
  78.             'BARCODE': (self._FieldStrings__default_inst_func, 'barcode'),
  79.             'CONTACT': (self._FieldStrings__default_inst_func, 'contact'),
  80.             'DATABASE': (self._FieldStrings__default_inst_func, 'database'),
  81.             'DATE': (self._FieldStrings__default_inst_func, 'date'),
  82.             'date': (self._FieldStrings__default_inst_func, 'date'),
  83.             'DOCPROPERTY': (self._FieldStrings__default_inst_func, 'document-property'),
  84.             'FILESIZE': (self._FieldStrings__default_inst_func, 'file-size'),
  85.             'FILLIN': (self._FieldStrings__default_inst_func, 'fill-in'),
  86.             'INFO': (self._FieldStrings__default_inst_func, 'document-info'),
  87.             'LINK': (self._FieldStrings__default_inst_func, 'link'),
  88.             'PA': (self._FieldStrings__default_inst_func, 'page'),
  89.             'PRINT': (self._FieldStrings__default_inst_func, 'print'),
  90.             'STYLEREF': (self._FieldStrings__default_inst_func, 'style-reference'),
  91.             'USERPROPERTY': (self._FieldStrings__default_inst_func, 'user-property'),
  92.             'FORMCHECKBOX': (self._FieldStrings__default_inst_func, 'form-checkbox'),
  93.             'FORMTEXT': (self._FieldStrings__default_inst_func, 'form-text'),
  94.             'MACROBUTTON': (self._FieldStrings__default_inst_func, 'macro-button') }
  95.         self._FieldStrings__number_dict = {
  96.             'Arabic': 'arabic',
  97.             'alphabetic': 'alphabetic',
  98.             'ALPHABETIC': 'capital-alphabetic',
  99.             'roman': 'roman',
  100.             'ROMAN': 'capital-roman',
  101.             'Ordinal': 'ordinal',
  102.             'CardText': 'cardinal-text',
  103.             'OrdText': 'ordinal-text',
  104.             'Hex': 'hexidecimal',
  105.             'DollarText': 'dollar-text',
  106.             'Upper': 'upper-case',
  107.             'Lower': 'lower-case',
  108.             'FirstCap': 'first-cap',
  109.             'Caps': 'caps' }
  110.         self._FieldStrings__text_format_dict = {
  111.             'Upper': 'upper',
  112.             'Lower': 'lower',
  113.             'FirstCap': 'first-cap',
  114.             'Caps': 'caps' }
  115.         self._FieldStrings__symbol_num_exp = re.compile('SYMBOL (.*?) ')
  116.         self._FieldStrings__symbol_font_exp = re.compile('\\\\f "(.*?)"')
  117.         self._FieldStrings__symbol_size_exp = re.compile('\\\\s (\\d+)')
  118.         self._FieldStrings__date_exp = re.compile('\\\\@\\s{1,}"(.*?)"')
  119.         self._FieldStrings__num_type_exp = re.compile('\\\\\\*\\s{1,}(Arabic|alphabetic|ALPHABETIC|roman|ROMAN|Ordinal|CardText|OrdText|Hex|DollarText|Upper|Lower|FirstCap|Caps)')
  120.         self._FieldStrings__format_text_exp = re.compile('\\\\\\*\\s{1,}(Upper|Lower|FirstCap|Caps)')
  121.         self._FieldStrings__merge_format_exp = re.compile('\\\\\\*\\s{1,}MERGEFORMAT')
  122.         self._FieldStrings__ta_short_field_exp = re.compile('\\\\s\\s{1,}"(.*?)"')
  123.         self._FieldStrings__ta_long_field_exp = re.compile('\\\\l\\s{1,}"(.*?)"')
  124.         self._FieldStrings__ta_category_exp = re.compile('\\\\c\\s{1,}(\\d+)')
  125.         self._FieldStrings__index_insert_blank_line_exp = re.compile('\\\\h\\s{1,}""')
  126.         self._FieldStrings__index_insert_letter_exp = re.compile('\\\\h\\s{1,}"()"')
  127.         self._FieldStrings__index_columns_exp = re.compile('\\\\c\\s{1,}"(.*?)"')
  128.         self._FieldStrings__bookmark_exp = re.compile('\\\\b\\s{1,}(.*?)\\s')
  129.         self._FieldStrings__d_separator = re.compile('\\\\d\\s{1,}(.*?)\\s')
  130.         self._FieldStrings__e_separator = re.compile('\\\\e\\s{1,}(.*?)\\s')
  131.         self._FieldStrings__l_separator = re.compile('\\\\l\\s{1,}(.*?)\\s')
  132.         self._FieldStrings__p_separator = re.compile('\\\\p\\s{1,}(.*?)\\s')
  133.         self._FieldStrings__index_sequence = re.compile('\\\\s\\s{1,}(.*?)\\s')
  134.         self._FieldStrings__index_entry_typ_exp = re.compile('\\\\f\\s{1,}"(.*?)"')
  135.         self._FieldStrings__quote_exp = re.compile('"(.*?)"')
  136.         self._FieldStrings__filter_switch = re.compile('\\\\c\\s{1,}(.*?)\\s')
  137.         self._FieldStrings__link_switch = re.compile('\\\\l\\s{1,}(.*?)\\s')
  138.  
  139.     
  140.     def process_string(self, my_string, type):
  141.         changed_string = ''
  142.         lines = my_string.split('\n')
  143.         for line in lines:
  144.             if line[0:2] == 'tx':
  145.                 changed_string += line[17:]
  146.                 continue
  147.         
  148.         fields = changed_string.split()
  149.         field_name = fields[0]
  150.         (action, name) = self._FieldStrings__field_instruction_dict.get(field_name, (None, None))
  151.         match_obj = re.search(self._FieldStrings__merge_format_exp, changed_string)
  152.         if match_obj and name:
  153.             name += '<update>dynamic'
  154.         elif name:
  155.             name += '<update>static'
  156.         
  157.         if action:
  158.             the_list = action(field_name, name, changed_string)
  159.         else:
  160.             msg = 'no key for "%s" "%s"\n' % (field_name, changed_string)
  161.             sys.stderr.write(msg)
  162.             if self._FieldStrings__run_level > 3:
  163.                 msg = 'no key for "%s" "%s"\n' % (field_name, changed_string)
  164.                 raise self._FieldStrings__bug_handler, msg
  165.             self._FieldStrings__run_level > 3
  166.             the_list = self._FieldStrings__fall_back_func(field_name, line)
  167.             return the_list
  168.         return action
  169.  
  170.     
  171.     def __default_inst_func(self, field_name, name, line):
  172.         return [
  173.             None,
  174.             None,
  175.             name]
  176.  
  177.     
  178.     def __fall_back_func(self, field_name, line):
  179.         the_string = field_name
  180.         the_string += '<update>none'
  181.         return [
  182.             None,
  183.             None,
  184.             the_string]
  185.  
  186.     
  187.     def __equation_func(self, field_name, name, line):
  188.         return [
  189.             None,
  190.             None,
  191.             name]
  192.  
  193.     
  194.     def __no_switch_func(self, field_name, name, line):
  195.         return [
  196.             None,
  197.             None,
  198.             name]
  199.  
  200.     
  201.     def __num_type_and_format_func(self, field_name, name, line):
  202.         the_string = name
  203.         num_format = self._FieldStrings__parse_num_format(line)
  204.         if num_format:
  205.             the_string += '<number-format>%s' % num_format
  206.         
  207.         num_type = self._FieldStrings__parse_num_type(line)
  208.         if num_type:
  209.             the_string += '<number-type>%s' % num_type
  210.         
  211.         if field_name == 'QUOTE':
  212.             match_group = re.search('QUOTE\\s{1,}"(.*?)"', line)
  213.             if match_group:
  214.                 arg = match_group.group(1)
  215.                 the_string += '<argument>%s' % arg
  216.             
  217.         
  218.         return [
  219.             None,
  220.             None,
  221.             the_string]
  222.  
  223.     
  224.     def __num_format_func(self, field_name, name, line):
  225.         the_string = name
  226.         num_format = self._FieldStrings__parse_num_format(line)
  227.         if num_format:
  228.             the_string += '<number-format>%s' % num_format
  229.         
  230.         return [
  231.             None,
  232.             None,
  233.             the_string]
  234.  
  235.     
  236.     def __parse_num_format(self, the_string):
  237.         match_group = re.search(self._FieldStrings__date_exp, the_string)
  238.         if match_group:
  239.             return match_group(1)
  240.  
  241.     
  242.     def __parse_num_type(self, the_string):
  243.         match_group = re.search(self._FieldStrings__num_type_exp, the_string)
  244.         if match_group:
  245.             name = match_group.group(1)
  246.             changed_name = self._FieldStrings__number_dict.get(name)
  247.             if changed_name:
  248.                 return changed_name
  249.             sys.stderr.write('module is fields_string\n')
  250.             sys.stderr.write('method is __parse_num_type\n')
  251.             sys.stderr.write('no dictionary entry for %s\n' % name)
  252.         
  253.  
  254.     
  255.     def __date_func(self, field_name, name, line):
  256.         the_string = name
  257.         match_group = re.search(self._FieldStrings__date_exp, line)
  258.         if match_group:
  259.             the_string += '<date-format>%s' % match_group.group(1)
  260.         
  261.         return [
  262.             None,
  263.             None,
  264.             the_string]
  265.  
  266.     
  267.     def __simple_info_func(self, field_name, name, line):
  268.         the_string = name
  269.         match_group = re.search(self._FieldStrings__format_text_exp, line)
  270.         if match_group:
  271.             name = match_group.group(1)
  272.             changed_name = self._FieldStrings__text_format_dict.get(name)
  273.             if changed_name:
  274.                 the_string += '<format>%s' % changed_name
  275.             else:
  276.                 sys.stderr.write('module is fields_string\n')
  277.                 sys.stderr.write('method is __parse_num_type\n')
  278.                 sys.stderr.write('no dictionary entry for %s\n' % name)
  279.         
  280.         return [
  281.             None,
  282.             None,
  283.             the_string]
  284.  
  285.     
  286.     def __hyperlink_func(self, field_name, name, line):
  287.         self._FieldStrings__link_switch = re.compile('\\\\l\\s{1,}(.*?)\\s')
  288.         the_string = name
  289.         match_group = re.search(self._FieldStrings__link_switch, line)
  290.         if match_group:
  291.             link = match_group.group(1)
  292.             link = link.replace('"', '"')
  293.             the_string += '<link>%s' % link
  294.         
  295.         line = re.sub(self._FieldStrings__link_switch, '', line)
  296.         match_group = re.search(self._FieldStrings__quote_exp, line)
  297.         if match_group:
  298.             arg = match_group.group(1)
  299.             the_string += '<argument>%s' % arg
  300.         
  301.         index = line.find('\\m')
  302.         if index > -1:
  303.             the_string += '<html2-image-map>true'
  304.         
  305.         index = line.find('\\n')
  306.         if index > -1:
  307.             the_string += '<new-window>true'
  308.         
  309.         index = line.find('\\h')
  310.         if index > -1:
  311.             the_string += '<no-history>true'
  312.         
  313.         return [
  314.             None,
  315.             None,
  316.             the_string]
  317.  
  318.     
  319.     def __include_text_func(self, field_name, name, line):
  320.         the_string = name
  321.         match_group = re.search(self._FieldStrings__format_text_exp, line)
  322.         if match_group:
  323.             name = match_group.group(1)
  324.             changed_name = self._FieldStrings__text_format_dict.get(name)
  325.             if changed_name:
  326.                 the_string += '<format>%s' % changed_name
  327.             else:
  328.                 sys.stderr.write('module is fields_string\n')
  329.                 sys.stderr.write('method is __parse_num_type\n')
  330.                 sys.stderr.write('no dictionary entry for %s\n' % name)
  331.         
  332.         match_group = re.search(self._FieldStrings__filter_switch, line)
  333.         if match_group:
  334.             arg = match_group.group(1)
  335.             the_string += '<filter>%s' % arg
  336.         
  337.         line = re.sub(self._FieldStrings__filter_switch, '', line)
  338.         match_group = re.search(self._FieldStrings__quote_exp, line)
  339.         if match_group:
  340.             arg = match_group.group(1)
  341.             arg = arg.replace('"', '"')
  342.             the_string += '<argument>%s' % arg
  343.         else:
  344.             sys.stderr.write('Module is field_strings\n')
  345.             sys.stderr.write('method is include_text_func\n')
  346.             sys.stderr.write('no argument for include text\n')
  347.         index = line.find('\\!')
  348.         if index > -1:
  349.             the_string += '<no-field-update>true'
  350.         
  351.         return [
  352.             None,
  353.             None,
  354.             the_string]
  355.  
  356.     
  357.     def __include_pict_func(self, field_name, name, line):
  358.         the_string = name
  359.         match_group = re.search(self._FieldStrings__filter_switch, line)
  360.         if match_group:
  361.             arg = match_group.group(1)
  362.             arg = arg.replace('"', '"')
  363.             the_string += '<filter>%s' % arg
  364.         
  365.         line = re.sub(self._FieldStrings__filter_switch, '', line)
  366.         match_group = re.search(self._FieldStrings__quote_exp, line)
  367.         if match_group:
  368.             arg = match_group.group(1)
  369.             the_string += '<argument>%s' % arg
  370.         else:
  371.             sys.stderr.write('Module is field_strings\n')
  372.             sys.stderr.write('method is include_pict_func\n')
  373.             sys.stderr.write('no argument for include pict\n')
  374.         index = line.find('\\d')
  375.         if index > -1:
  376.             the_string += '<external>true'
  377.         
  378.         return [
  379.             None,
  380.             None,
  381.             the_string]
  382.  
  383.     
  384.     def __ref_func(self, field_name, name, line):
  385.         the_string = name
  386.         match_group = re.search(self._FieldStrings__format_text_exp, line)
  387.         if match_group:
  388.             name = match_group.group(1)
  389.             changed_name = self._FieldStrings__text_format_dict.get(name)
  390.             if changed_name:
  391.                 the_string += '<format>%s' % changed_name
  392.             else:
  393.                 sys.stderr.write('module is fields_string\n')
  394.                 sys.stderr.write('method is __parse_num_type\n')
  395.                 sys.stderr.write('no dictionary entry for %s\n' % name)
  396.         
  397.         line = re.sub(self._FieldStrings__merge_format_exp, '', line)
  398.         words = line.split()
  399.         words = words[1:]
  400.         for word in words:
  401.             if word[0:1] != '\\':
  402.                 the_string += '<bookmark>%s' % word
  403.                 continue
  404.         
  405.         index = line.find('\\f')
  406.         if index > -1:
  407.             the_string += '<include-note-number>true'
  408.         
  409.         index = line.find('\\h')
  410.         if index > -1:
  411.             the_string += '<hyperlink>true'
  412.         
  413.         index = line.find('\\n')
  414.         if index > -1:
  415.             the_string += '<insert-number>true'
  416.         
  417.         index = line.find('\\r')
  418.         if index > -1:
  419.             the_string += '<insert-number-relative>true'
  420.         
  421.         index = line.find('\\p')
  422.         if index > -1:
  423.             the_string += '<paragraph-relative-position>true'
  424.         
  425.         index = line.find('\\t')
  426.         if index > -1:
  427.             the_string += '<suppress-non-delimeter>true'
  428.         
  429.         index = line.find('\\w')
  430.         if index > -1:
  431.             the_string += '<insert-number-full>true'
  432.         
  433.         return [
  434.             None,
  435.             None,
  436.             the_string]
  437.  
  438.     
  439.     def __toc_table_func(self, field_name, name, line):
  440.         the_string = name
  441.         index = line.find('\\c "Figure"')
  442.         if index > -1:
  443.             the_string = the_string.replace('table-of-contents', 'table-of-figures')
  444.         
  445.         return [
  446.             name,
  447.             None,
  448.             the_string]
  449.  
  450.     
  451.     def __sequence_func(self, field_name, name, line):
  452.         fields = line.split()
  453.         label = fields[1]
  454.         my_string = '%s<label>%s' % (name, label)
  455.         return [
  456.             None,
  457.             None,
  458.             my_string]
  459.  
  460.     
  461.     def __ta_func(self, field_name, name, line):
  462.         the_string = name
  463.         match_group = re.search(self._FieldStrings__ta_short_field_exp, line)
  464.         if match_group:
  465.             short_name = match_group.group(1)
  466.             the_string += '<short-field>%s' % short_name
  467.         
  468.         match_group = re.search(self._FieldStrings__ta_long_field_exp, line)
  469.         if match_group:
  470.             long_name = match_group.group(1)
  471.             the_string += '<long-field>%s' % long_name
  472.         
  473.         match_group = re.search(self._FieldStrings__ta_category_exp, line)
  474.         if match_group:
  475.             category = match_group.group(1)
  476.             the_string += '<category>%s' % category
  477.         
  478.         index = line.find('\\b')
  479.         if index > -1:
  480.             the_string += '<bold>true'
  481.         
  482.         index = line.find('\\i')
  483.         if index > -1:
  484.             the_string += '<italics>true'
  485.         
  486.         return [
  487.             None,
  488.             None,
  489.             the_string]
  490.  
  491.     
  492.     def __index_func(self, field_name, name, line):
  493.         the_string = name
  494.         match_group = re.search(self._FieldStrings__index_insert_blank_line_exp, line)
  495.         if match_group:
  496.             the_string += '<insert-blank-line>true'
  497.         else:
  498.             match_group = re.search(self._FieldStrings__index_insert_letter_exp, line)
  499.             if match_group:
  500.                 insert_letter = match_group.group(1)
  501.                 the_string += '<insert-letter>%s' % insert_letter
  502.             
  503.         match_group = re.search(self._FieldStrings__index_columns_exp, line)
  504.         if match_group:
  505.             columns = match_group.group(1)
  506.             the_string += '<number-of-columns>%s' % columns
  507.         
  508.         match_group = re.search(self._FieldStrings__bookmark_exp, line)
  509.         if match_group:
  510.             bookmark = match_group.group(1)
  511.             the_string += '<use-bookmark>%s' % bookmark
  512.         
  513.         match_group = re.search(self._FieldStrings__d_separator, line)
  514.         if match_group:
  515.             separator = match_group.group(1)
  516.             separator = separator.replace('"', '"')
  517.             the_string += '<sequence-separator>%s' % separator
  518.         
  519.         match_group = re.search(self._FieldStrings__e_separator, line)
  520.         if match_group:
  521.             separator = match_group.group(1)
  522.             separator = separator.replace('"', '"')
  523.             the_string += '<page-separator>%s' % separator
  524.         
  525.         match_group = re.search(self._FieldStrings__index_sequence, line)
  526.         if match_group:
  527.             sequence = match_group.group(1)
  528.             separator = separator.replace('"', '"')
  529.             the_string += '<use-sequence>%s' % sequence
  530.         
  531.         match_group = re.search(self._FieldStrings__index_entry_typ_exp, line)
  532.         if match_group:
  533.             entry_type = match_group.group(1)
  534.             the_string += '<entry-type>%s' % entry_type
  535.         
  536.         match_group = re.search(self._FieldStrings__p_separator, line)
  537.         if match_group:
  538.             limit = match_group.group(1)
  539.             the_string += '<limit-to-letters>%s' % limit
  540.         
  541.         match_group = re.search(self._FieldStrings__l_separator, line)
  542.         if match_group:
  543.             separator = match_group.group(1)
  544.             separator = separator.replace('"', '"')
  545.             the_string += '<multi-page-separator>%s' % separator
  546.         
  547.         index = line.find('\\a')
  548.         if index > -1:
  549.             the_string += '<accented>true'
  550.         
  551.         index = line.find('\\r')
  552.         if index > -1:
  553.             the_string += '<sub-entry-on-same-line>true'
  554.         
  555.         index = line.find('\\t')
  556.         if index > -1:
  557.             the_string += '<enable-yomi-text>true'
  558.         
  559.         return [
  560.             None,
  561.             None,
  562.             the_string]
  563.  
  564.     
  565.     def __page_ref_func(self, field_name, name, line):
  566.         the_string = name
  567.         num_format = self._FieldStrings__parse_num_format(line)
  568.         if num_format:
  569.             the_string += '<number-format>%s' % num_format
  570.         
  571.         num_type = self._FieldStrings__parse_num_type(line)
  572.         if num_type:
  573.             the_string += '<number-type>%s' % num_type
  574.         
  575.         line = re.sub(self._FieldStrings__merge_format_exp, '', line)
  576.         words = line.split()
  577.         words = words[1:]
  578.         for word in words:
  579.             if word[0:1] != '\\':
  580.                 the_string += '<bookmark>%s' % word
  581.                 continue
  582.         
  583.         index = line.find('\\h')
  584.         if index > -1:
  585.             the_string += '<hyperlink>true'
  586.         
  587.         index = line.find('\\p')
  588.         if index > -1:
  589.             the_string += '<paragraph-relative-position>true'
  590.         
  591.         return [
  592.             None,
  593.             None,
  594.             the_string]
  595.  
  596.     
  597.     def __note_ref_func(self, field_name, name, line):
  598.         the_string = name
  599.         line = re.sub(self._FieldStrings__merge_format_exp, '', line)
  600.         words = line.split()
  601.         words = words[1:]
  602.         for word in words:
  603.             if word[0:1] != '\\':
  604.                 the_string += '<bookmark>%s' % word
  605.                 continue
  606.         
  607.         index = line.find('\\h')
  608.         if index > -1:
  609.             the_string += '<hyperlink>true'
  610.         
  611.         index = line.find('\\p')
  612.         if index > -1:
  613.             the_string += '<paragraph-relative-position>true'
  614.         
  615.         index = line.find('\\f')
  616.         if index > -1:
  617.             the_string += '<include-note-number>true'
  618.         
  619.         return [
  620.             None,
  621.             None,
  622.             the_string]
  623.  
  624.     
  625.     def __symbol_func(self, field_name, name, line):
  626.         num = ''
  627.         font = ''
  628.         font_size = ''
  629.         changed_line = ''
  630.         search_obj = re.search(self._FieldStrings__symbol_num_exp, line)
  631.         if search_obj:
  632.             num = search_obj.group(1)
  633.             num = int(num)
  634.             num = '%X' % num
  635.         
  636.         search_obj = re.search(self._FieldStrings__symbol_font_exp, line)
  637.         if search_obj:
  638.             font = search_obj.group(1)
  639.             changed_line += 'cw<ci<font-style<nu<%s\n' % font
  640.         
  641.         search_obj = re.search(self._FieldStrings__symbol_size_exp, line)
  642.         if search_obj:
  643.             font_size = search_obj.group(1)
  644.             font_size = int(font_size)
  645.             font_size = '%.2f' % font_size
  646.             changed_line += 'cw<ci<font-size_<nu<%s\n' % font_size
  647.         
  648.         changed_line += "tx<hx<__________<'%s\n" % num
  649.         return [
  650.             'Symbol',
  651.             None,
  652.             changed_line]
  653.  
  654.  
  655.