Пример #1
0
 def __init__(self, username):  # tested
     '''initialises a few values, and registers the page for comet i/o.'''
     self.included = set([])
     self.username = username
     self.pageid = uidgen(self.username)
     from_comet['register_new_page'](self.pageid)
     return
Пример #2
0
 def __init__(self, username):  # tested
     '''initialises a few values, and registers the page for comet i/o.'''
     self.included = set([])
     self.username = username
     self.pageid = uidgen(self.username)
     from_comet['register_new_page'](self.pageid)
     return
Пример #3
0
 def process_type1(self, handlers):  # tested
     '''
     For all registered "tags" of "type 1", this method
     processes:  tag -> handler function
     as long as more specific instructions of either
     "type 2" : (tag, attribute) -> handler function, or
     "type 3" : (tag, attribute, keyword) -> handler function
     have not been defined.
     '''
     for tag in handlers:
         for elem in self.tree.getiterator(tag):
             do_it = True
             if tag in self.handlers2:  # may need to skip
                 for attr in elem.attrib:
                     if attr in self.handlers2[tag]:
                         do_it = False
                         break
             if tag in self.handlers3:  # may need to skip
                 for attr in elem.attrib:
                     if attr in self.handlers3[tag]:
                         keyword = self.extract_keyword(elem, attr)
                         if keyword in self.handlers3[tag][attr]:
                             do_it = False
                             break
             if do_it:
                 uid = self.pageid + "_" + uidgen(self.username)
                 handlers[tag](self, elem, uid)
     return
Пример #4
0
 def process_type1(self, handlers):  # tested
     '''
     For all registered "tags" of "type 1", this method
     processes:  tag -> handler function
     as long as more specific instructions of either
     "type 2" : (tag, attribute) -> handler function, or
     "type 3" : (tag, attribute, keyword) -> handler function
     have not been defined.
     '''
     for tag in handlers:
         for elem in self.tree.getiterator(tag):
             do_it = True
             if tag in self.handlers2:  # may need to skip
                 for attr in elem.attrib:
                     if attr in self.handlers2[tag]:
                         do_it = False
                         break
             if tag in self.handlers3:  # may need to skip
                 for attr in elem.attrib:
                     if attr in self.handlers3[tag]:
                         keyword = self.extract_keyword(elem, attr)
                         if keyword in self.handlers3[tag][attr]:
                             do_it = False
                             break
             if do_it:
                 uid = self.pageid + "_" + uidgen(self.username)
                 handlers[tag](self, elem, uid)
     return
Пример #5
0
def insert_interactive_objects(page):
    '''inserts the interactive objects required in a slideshow'''
    if not page.includes("slideshow_included"):
        return
    for div in page.tree.getiterator("div"):
        if 'class' in div.attrib:
            if div.attrib['class'] == "presentation":
                # add slide with interpreter
                new_div = Element("div")
                new_div.attrib['class'] = "slide"
                # new_div is not processed by set_overflow above which is why
                # we must set this property explictly.
                new_div.attrib['style'] = "height: 70%; overflow: auto;"
                new_div.attrib['id'] = "crunchy_interpreter"
                pre = SubElement(new_div, "pre", title="interpreter")
                # the following text is at least 50 characters
                # with a non-space character at the end.  This is to allow
                # the creation of a list with "short" titles to select
                # a given slide.
                # see slides.js line 100
                pre.text = "# Crunchy Interpreter                             #"
                uid = page.pageid + "_" + uidgen(page.username)
                plugin['services'].insert_interpreter(page, pre, uid)
                div.append(new_div)
                # add slide with editor
                new_div2 = Element("div")
                new_div2.attrib['class'] = "slide"
                # new_div2 is not processed by set_overflow above ...
                new_div2.attrib['style'] = "height: 70%; overflow: auto;"
                new_div2.attrib['id'] = "crunchy_editor"
                pre2 = SubElement(new_div2, "pre", title="editor")
                # same as above.
                pre2.text = "# Crunchy editor                                 #"
                uid = page.pageid + "_" + uidgen(page.username)
                plugin['services'].insert_editor(page, pre2, uid)
                div.append(new_div2)
                return
Пример #6
0
def insert_interactive_objects(page):
    '''inserts the interactive objects required in a slideshow'''
    if not page.includes("slideshow_included"):
        return
    for div in page.tree.getiterator("div"):
        if 'class' in div.attrib:
            if div.attrib['class'] == "presentation":
                # add slide with interpreter
                new_div = Element("div")
                new_div.attrib['class'] = "slide"
                # new_div is not processed by set_overflow above which is why
                # we must set this property explictly.
                new_div.attrib['style'] = "height: 70%; overflow: auto;"
                new_div.attrib['id'] = "crunchy_interpreter"
                pre = SubElement(new_div, "pre", title="interpreter")
                # the following text is at least 50 characters
                # with a non-space character at the end.  This is to allow
                # the creation of a list with "short" titles to select
                # a given slide.
                # see slides.js line 100
                pre.text = "# Crunchy Interpreter                             #"
                uid = page.pageid + "_" + uidgen(page.username)
                plugin['services'].insert_interpreter(page, pre, uid)
                div.append(new_div)
                # add slide with editor
                new_div2 = Element("div")
                new_div2.attrib['class'] = "slide"
                # new_div2 is not processed by set_overflow above ...
                new_div2.attrib['style'] = "height: 70%; overflow: auto;"
                new_div2.attrib['id'] = "crunchy_editor"
                pre2 = SubElement(new_div2, "pre", title="editor")
                # same as above.
                pre2.text = "# Crunchy editor                                 #"
                uid = page.pageid + "_" + uidgen(page.username)
                plugin['services'].insert_editor(page, pre2, uid)
                div.append(new_div2)
                return
Пример #7
0
 def process_handlers3(self):  # tested
     '''
     For all registered "tags" of "type 3", this method
     processes:  (tag, attribute, keyword) -> handler function
     '''
     for tag in self.handlers3:
         for elem in list(self.tree.iter(tag)):
             # elem.attrib  size may change during the loop
             attributes = dict(elem.attrib)
             for attr in attributes:
                 if attr in self.handlers3[tag]:
                     keyword = self.extract_keyword(elem, attr)
                     if keyword in self.handlers3[tag][attr]:
                         self.handlers3[tag][attr][keyword]( self,
                                         elem, self.pageid + "_" + uidgen(self.username))
                         break
Пример #8
0
 def process_handlers3(self):  # tested
     '''
     For all registered "tags" of "type 3", this method
     processes:  (tag, attribute, keyword) -> handler function
     '''
     for tag in self.handlers3:
         for elem in list(self.tree.iter(tag)):
             # elem.attrib  size may change during the loop
             attributes = dict(elem.attrib)
             for attr in attributes:
                 if attr in self.handlers3[tag]:
                     keyword = self.extract_keyword(elem, attr)
                     if keyword in self.handlers3[tag][attr]:
                         self.handlers3[tag][attr][keyword](
                             self, elem,
                             self.pageid + "_" + uidgen(self.username))
                         break
Пример #9
0
 def process_handlers2(self):  # tested
     '''
     For all registered "tags" of "type 2", this method
     processes:  (tag, attribute) -> handler function
     as long as more specific instructions of
     "type 3" : (tag, attribute, keyword) -> handler function
     have not been defined.
     '''
     for tag in self.handlers2:
         for elem in self.tree.getiterator(tag):
             # elem.attrib size may change during the loop
             attributes = dict(elem.attrib)
             for attr in attributes:
                 if attr in self.handlers2[tag]:
                     do_it = True
                     if attr in self.handlers3[tag]:
                         keyword = self.extract_keyword(elem, attr)
                         if keyword in self.handlers3[tag][attr]:
                             do_it = False
                     if do_it:
                         uid = self.pageid + "_" + uidgen(self.username)
                         self.handlers2[tag][attr](self, elem, uid)
     return
Пример #10
0
 def process_handlers2(self):  # tested
     '''
     For all registered "tags" of "type 2", this method
     processes:  (tag, attribute) -> handler function
     as long as more specific instructions of
     "type 3" : (tag, attribute, keyword) -> handler function
     have not been defined.
     '''
     for tag in self.handlers2:
         for elem in self.tree.getiterator(tag):
             # elem.attrib size may change during the loop
             attributes = dict(elem.attrib)
             for attr in attributes:
                 if attr in self.handlers2[tag]:
                     do_it = True
                     if attr in self.handlers3[tag]:
                         keyword = self.extract_keyword(elem, attr)
                         if keyword in self.handlers3[tag][attr]:
                             do_it = False
                     if do_it:
                         uid = self.pageid + "_" + uidgen(self.username)
                         self.handlers2[tag][attr](self, elem, uid)
     return