def end_indexentry(self, index_entry):
        if self.index_entry_see is not None:
            self.html_file.write("\\index{%s|see {%s}}" % (
                normalize_ws(index_entry.text), self.index_entry_see))
            self.index_entry_see = None

        elif self.index_entry_subentry is not None:
            self.html_file.write("\\index{%s!%s}" % (
                normalize_ws(index_entry.text), self.index_entry_subentry))
            self.index_entry_subentry = None
            
        else:
            self.html_file.write("\\index{%s}" % normalize_ws(index_entry.text))
        return
    def start_td(self, table_data):
        """
        Start table data.

        """
        width = table_data.get("width")
        if width is not None:
            width = int(width)
        else: 
            width = 1

        align = table_data.get("align")
        if align is None:
            align = "l"

        self._current_column_in_table = (
            (self._current_column_in_table + width) % self._number_of_columns_in_table)

        if table_data.text is not None:
            text = normalize_ws(table_data.text).strip()

            # override for table headers
            parent = table_data.getparent()
            if parent.tag == "tableheaderrow":
                text = "\\rpgtableheader{%s}" % text

            if width > 1 or align != "l":
                # multicolumn table data
                assert align is not None

                self.html_file.write("\\multicolumn{%s}{%s}{%s" % (width, align, text))
            else:
                # normal table data
                self.html_file.write("%s" % text)
        return
    def start_li(self, list_item):
        """
        Start list item.

        """
        self.html_file.write("\\item ")
        
        if list_item.text is not None:
            self.html_file.write(normalize_ws(list_item.text))
        return
 def start_line(self, line):
     """
     Start equation line.
     
     """
     if not self._equation_first_line:
         self.html_file.write("\\> ") 
     self._equation_first_line = False
     if line.text:
         self.html_file.write(" %s " % normalize_ws(line.text))
     return
    def start_measurement(self, distance):
        if use_imperial:
            distance_text = get_text_for_child(distance, "imperial")
            if distance_text is None:
                raise Exception("Imperial distance not specified!")

        else:
            distance_text = get_text_for_child(distance, "metric")
            if distance_text is None:
                raise Exception("Metric distance not specified!")

        self.html_file.write(normalize_ws(distance_text).strip())
        return
 def end_see(self, index_entry):
     self.index_entry_see = normalize_ws(index_entry.text)
     return
 def start_smaller(self, smaller):
     self.html_file.write("\\scriptsize{%s} " % normalize_ws(smaller.text))
     return
 def start_bold(self, bold):
     self.html_file.write("\\textbf{%s} " % normalize_ws(bold.text))
     return
Пример #9
0
    def _load(self, archetype_node, fail_fast):
        # handle all the children
        for child in list(archetype_node):

            tag = child.tag
            if tag == "archetypetitle":
                if self.title is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.title = child.text.strip()

            elif tag == "archetypeid":
                if self.archetype_id is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.archetype_id = child.text.strip()

            elif tag == "archetypeac":
                if self.ac is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.ac = child.text.strip()

            elif tag == "archetypemove":
                if self.move is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.move = child.text.strip()

            elif tag == "inheritance":
                self._load_inheritance(inheritance=child)

            elif tag == "archetypedescription":
                if self.description is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.description = children_to_string(child)

            elif tag == "archetypeinitiative":
                if self.initiative is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                    #raise Exception("Only one archetypeinitiative per file.")
                else:
                    self.initiative = convert_str_to_int(child.text)

            elif tag == "startingcash":
                if self.starting_cash is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.starting_cash = child.text

            elif tag == "startinggear":
                if self.starting_gear is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.starting_gear = normalize_ws(child.text)

            elif tag == "height":
                if self.height is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.height = parse_measurement_to_str(self.fname, child)

            elif tag == "weight":
                if self.weight is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.weight = parse_measurement_to_str(self.fname, child)

            elif tag == "appearance":
                if self.appearance is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.appearance = normalize_ws(child.text)

            elif tag == "age":
                if self.age is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.age = normalize_ws(child.text)

            elif tag == "aspectexamples":
                if self.aspect_examples is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.aspect_examples = child.text

            elif tag == "archetypetags":
                self.tags.load(child, fail_fast)

            elif tag == "archetypeinitialabilities":
                if self.initial_abilities is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.initial_abilities = children_to_string(child)

            elif tag == "levelprogressiontable":
                self.level_progression_table.load(child, fail_fast)

            elif tag == "abilitymodifiers":
                self._load_ability_modifiers(child)

            elif tag == "attrbonus":
                bonus = AttrBonus()
                bonus.parse(self.fname, child)
                self.attr_bonuses.append(bonus)

            elif tag == "attrmax":
                attr_max = AttrLimit()
                attr_max.parse(self.fname, AttrLimitType.MAX, child)
                self.attr_limits.append(attr_max)

            elif tag == "attrmin":
                attr_min = AttrLimit()
                attr_min.parse(self.fname, AttrLimitType.MIN, child)
                self.attr_limits.append(attr_min)

            elif tag is COMMENT:
                # ignore comments!
                pass

            else:
                raise Exception("UNKNOWN XML TAG (%s) File: %s Line: %s\n" %
                                (child.tag, self.fname, child.sourceline))
        return
 def end_pageref(self, pageref):
     self.html_file.write("~\\pageref{%s}" % normalize_ws(pageref.text))
     return
 def end_action_points(self, action_points):
     self.html_file.write("%s\n" % normalize_ws(action_points.text))
     return
 def end_ability_class(self, ability_class):
     self.html_file.write("%s\n" % normalize_ws(ability_class.text))
     return
 def end_ability_group(self, ability_group):
     self.html_file.write("%s\n" % normalize_ws(ability_group.text))
     return
 def start_label(self, label):
     self.html_file.write("\n\\label{%s} " % normalize_ws(label.text))
     return
 def end_subentry(self, index_subentry):
     self.index_entry_subentry = normalize_ws(index_subentry.text)
     return
 def start_defn(self, defn):
     # self.html_file.write(" \\textbf{%s}\\index{%s}" % (normalize_ws(defn.text),
     #                                                     normalize_ws(defn.text)))
     self.html_file.write(" \\textbf{%s}" % (normalize_ws(defn.text)))
     return
 def end_ref(self, ref):
     self.html_file.write("~\\ref{%s}" % normalize_ws(ref.text))
     return
 def end_emph(self, emph):
     self.html_file.write("\\emph{%s}" % normalize_ws(emph.text))
     return
Пример #19
0
    def load(self, archetype_node, fail_fast):
        # handle all the children
        for child in list(archetype_node):

            tag = child.tag
            if tag == "levelnumber":
                if self.level_number is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.level_number = int(child.text.strip())

            elif tag == "levelresolve":
                if self.level_resolve is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.level_resolve = contents_to_string(child)

            elif tag == "levelresolverefresh":
                if self.level_resolve_refresh is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.level_resolve_refresh = contents_to_string(child)

            elif tag == "levelstamina":
                if self.level_stamina is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.level_stamina = normalize_ws(child.text.strip())

            elif tag == "levelstaminarefresh":
                if self.level_stamina_refresh is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.level_stamina_refresh = normalize_ws(
                        child.text.strip())

            elif tag == "levelhealth":
                if self.level_health is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.level_health = normalize_ws(child.text.strip())

            elif tag == "levelhealthrefresh":
                if self.level_health_refresh is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.level_health_refresh = normalize_ws(
                        child.text.strip())

            elif tag == "levellore":
                if self.level_lore is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.level_lore = convert_str_to_int(child.text.strip())

            elif tag == "levelmartial":
                if self.level_martial is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.level_martial = convert_str_to_int(child.text.strip())

            elif tag == "levelgeneral":
                if self.level_general is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.level_general = convert_str_to_int(child.text.strip())

            elif tag == "levelmagical":
                if self.level_magical is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.level_magical = convert_str_to_int(child.text.strip())

            elif tag == "leveldescription":
                if self.level_description is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    if child.text is not None:
                        self.level_description = contents_to_string(child)

            elif tag == "newlevelabilities":
                if len(self.level_abilities) > 0:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    if child.text is not None:
                        self.load_level_abilities(child)

            elif tag == "newlevelpromotions":
                if len(self.level_promotions) > 0:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    if child.text is not None:
                        self.load_level_promotions(child)

            elif tag == "levelmagicpool":
                if self.level_magic_pool is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.level_magic_pool = contents_to_string(child)

            elif tag == "levelmagicrefresh":
                if self.level_magic_refresh is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.level_magic_refresh = contents_to_string(child)

            elif tag == "levelfate":
                if self.level_fate is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.level_fate = contents_to_string(child)

            elif tag == "levelfaterefresh":
                if self.level_fate_refresh is not None:
                    raise NonUniqueTagError(tag, self.fname, child.sourceline)
                else:
                    self.level_fate_refresh = contents_to_string(child)

            elif tag is COMMENT:
                # ignore comments!
                pass

            else:
                raise Exception("UNKNOWN XML TAG (%s) File: %s Line: %s\n" %
                                (child.tag, self.fname, child.sourceline))
        return