Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Unified Diff: third_party/twisted_8_1/twisted/lore/slides.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/twisted_8_1/twisted/lore/slides.py
diff --git a/third_party/twisted_8_1/twisted/lore/slides.py b/third_party/twisted_8_1/twisted/lore/slides.py
deleted file mode 100644
index afbf7a82925eb75330d53007af9c84a41a636bea..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/lore/slides.py
+++ /dev/null
@@ -1,352 +0,0 @@
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-#
-"""Rudimentary slide support for Lore.
-
-TODO:
- - Complete mgp output target
- - syntax highlighting
- - saner font handling
- - probably lots more
- - Add HTML output targets
- - one slides per page (with navigation links)
- - all in one page
-
-Example input file::
- <html>
-
- <head><title>Title of talk</title></head>
-
- <body>
- <h1>Title of talk</h1>
-
- <h2>First Slide</h2>
-
- <ul>
- <li>Bullet point</li>
- <li>Look ma, I'm <strong>bold</strong>!</li>
- <li>... etc ...</li>
- </ul>
-
-
- <h2>Second Slide</h2>
-
- <pre class="python">
- # Sample code sample.
- print "Hello, World!"
- </pre>
-
- </body>
-
- </html>
-"""
-from __future__ import nested_scopes
-
-from twisted.lore import default
-from twisted.web import domhelpers, microdom
-from twisted.python import text
-# These should be factored out
-from twisted.lore.latex import BaseLatexSpitter, LatexSpitter, processFile, \
- getLatexText, HeadingLatexSpitter
-from twisted.lore.tree import getHeaders
-from tree import removeH1, fixAPI, fontifyPython, \
- addPyListings, addHTMLListings, setTitle
-
-import os, os.path, re
-from cStringIO import StringIO
-
-hacked_entities = { 'amp': ' &', 'gt': ' >', 'lt': ' <', 'quot': ' "',
- 'copy': ' (c)'}
-
-entities = { 'amp': '&', 'gt': '>', 'lt': '<', 'quot': '"',
- 'copy': '(c)'}
-
-class MagicpointOutput(BaseLatexSpitter):
- bulletDepth = 0
-
- def writeNodeData(self, node):
- buf = StringIO()
- getLatexText(node, buf.write, entities=hacked_entities)
- data = buf.getvalue().rstrip().replace('\n', ' ')
- self.writer(re.sub(' +', ' ', data))
-
- def visitNode_title(self, node):
- self.title = domhelpers.getNodeText(node)
-
- def visitNode_body(self, node):
- # Adapted from tree.generateToC
- self.fontStack = [('standard', None)]
-
- # Title slide
- self.writer(self.start_h2)
- self.writer(self.title)
- self.writer(self.end_h2)
-
- self.writer('%center\n\n\n\n\n')
- for authorNode in domhelpers.findElementsWithAttribute(node, 'class', 'author'):
- getLatexText(authorNode, self.writer, entities=entities)
- self.writer('\n')
-
- # Table of contents
- self.writer(self.start_h2)
- self.writer(self.title)
- self.writer(self.end_h2)
-
- for element in getHeaders(node):
- level = int(element.tagName[1])-1
- self.writer(level * '\t')
- self.writer(domhelpers.getNodeText(element))
- self.writer('\n')
-
- self.visitNodeDefault(node)
-
- def visitNode_div_author(self, node):
- # Skip this node; it's already been used by visitNode_body
- pass
-
- def visitNode_div_pause(self, node):
- self.writer('%pause\n')
-
- def visitNode_pre(self, node):
- # TODO: Syntax highlighting
- buf = StringIO()
- getLatexText(node, buf.write, entities=entities)
- data = buf.getvalue()
- data = text.removeLeadingTrailingBlanks(data)
- lines = data.split('\n')
- self.fontStack.append(('typewriter', 4))
- self.writer('%' + self.fontName() + '\n')
- for line in lines:
- self.writer(' ' + line + '\n')
- del self.fontStack[-1]
- self.writer('%' + self.fontName() + '\n')
-
- def visitNode_ul(self, node):
- if self.bulletDepth > 0:
- self.writer(self._start_ul)
- self.bulletDepth += 1
- self.start_li = self._start_li * self.bulletDepth
- self.visitNodeDefault(node)
- self.bulletDepth -= 1
- self.start_li = self._start_li * self.bulletDepth
-
- def visitNode_strong(self, node):
- self.doFont(node, 'bold')
-
- def visitNode_em(self, node):
- self.doFont(node, 'italic')
-
- def visitNode_code(self, node):
- self.doFont(node, 'typewriter')
-
- def doFont(self, node, style):
- self.fontStack.append((style, None))
- self.writer(' \n%cont, ' + self.fontName() + '\n')
- self.visitNodeDefault(node)
- del self.fontStack[-1]
- self.writer('\n%cont, ' + self.fontName() + '\n')
-
- def fontName(self):
- names = [x[0] for x in self.fontStack]
- if 'typewriter' in names:
- name = 'typewriter'
- else:
- name = ''
-
- if 'bold' in names:
- name += 'bold'
- if 'italic' in names:
- name += 'italic'
-
- if name == '':
- name = 'standard'
-
- sizes = [x[1] for x in self.fontStack]
- sizes.reverse()
- for size in sizes:
- if size:
- return 'font "%s", size %d' % (name, size)
-
- return 'font "%s"' % name
-
- start_h2 = "%page\n\n"
- end_h2 = '\n\n\n'
-
- _start_ul = '\n'
-
- _start_li = "\t"
- end_li = "\n"
-
-
-def convertFile(filename, outputter, template, ext=".mgp"):
- fout = open(os.path.splitext(filename)[0]+ext, 'w')
- fout.write(open(template).read())
- spitter = outputter(fout.write, os.path.dirname(filename), filename)
- fin = open(filename)
- processFile(spitter, fin)
- fin.close()
- fout.close()
-
-
-# HTML DOM tree stuff
-
-def splitIntoSlides(document):
- body = domhelpers.findNodesNamed(document, 'body')[0]
- slides = []
- slide = []
- title = '(unset)'
- for child in body.childNodes:
- if isinstance(child, microdom.Element) and child.tagName == 'h2':
- if slide:
- slides.append((title, slide))
- slide = []
- title = domhelpers.getNodeText(child)
- else:
- slide.append(child)
- slides.append((title, slide))
- return slides
-
-def insertPrevNextLinks(slides, filename, ext):
- for slide in slides:
- for name, offset in (("previous", -1), ("next", +1)):
- if (slide.pos > 0 and name == "previous") or \
- (slide.pos < len(slides)-1 and name == "next"):
- for node in domhelpers.findElementsWithAttribute(slide.dom, "class", name):
- if node.tagName == 'a':
- node.setAttribute('href', '%s-%d%s'
- % (filename[0], slide.pos+offset, ext))
- else:
- node.appendChild(microdom.Text(slides[slide.pos+offset].title))
- else:
- for node in domhelpers.findElementsWithAttribute(slide.dom, "class", name):
- pos = 0
- for child in node.parentNode.childNodes:
- if child is node:
- del node.parentNode.childNodes[pos]
- break
- pos += 1
-
-
-class HTMLSlide:
- def __init__(self, dom, title, pos):
- self.dom = dom
- self.title = title
- self.pos = pos
-
-
-def munge(document, template, linkrel, d, fullpath, ext, url, config):
- # FIXME: This has *way* to much duplicated crap in common with tree.munge
- #fixRelativeLinks(template, linkrel)
- removeH1(document)
- fixAPI(document, url)
- fontifyPython(document)
- addPyListings(document, d)
- addHTMLListings(document, d)
- #fixLinks(document, ext)
- #putInToC(template, generateToC(document))
- template = template.cloneNode(1)
-
- # Insert the slides into the template
- slides = []
- pos = 0
- for title, slide in splitIntoSlides(document):
- t = template.cloneNode(1)
- setTitle(t, [microdom.Text(title)])
- tmplbody = domhelpers.findElementsWithAttribute(t, "class", "body")[0]
- tmplbody.childNodes = slide
- tmplbody.setAttribute("class", "content")
- # FIXME: Next/Prev links
- # FIXME: Perhaps there should be a "Template" class? (setTitle/setBody
- # could be methods...)
- slides.append(HTMLSlide(t, title, pos))
- pos += 1
-
- insertPrevNextLinks(slides, os.path.splitext(os.path.basename(fullpath)), ext)
-
- return slides
-
-from tree import makeSureDirectoryExists
-
-def getOutputFileName(originalFileName, outputExtension, index):
- return os.path.splitext(originalFileName)[0]+'-'+str(index) + outputExtension
-
-def doFile(filename, linkrel, ext, url, templ, options={}, outfileGenerator=getOutputFileName):
- from tree import parseFileAndReport
- doc = parseFileAndReport(filename)
- slides = munge(doc, templ, linkrel, os.path.dirname(filename), filename, ext, url, options)
- for slide, index in zip(slides, range(len(slides))):
- newFilename = outfileGenerator(filename, ext, index)
- makeSureDirectoryExists(newFilename)
- slide.dom.writexml(open(newFilename, 'wb'))
-
-# Prosper output
-
-class ProsperSlides(LatexSpitter):
- firstSlide = 1
- start_html = '\\documentclass[ps]{prosper}\n'
- start_body = '\\begin{document}\n'
- start_div_author = '\\author{'
- end_div_author = '}'
-
- def visitNode_h2(self, node):
- if self.firstSlide:
- self.firstSlide = 0
- self.end_body = '\\end{slide}\n\n' + self.end_body
- else:
- self.writer('\\end{slide}\n\n')
- self.writer('\\begin{slide}{')
- spitter = HeadingLatexSpitter(self.writer, self.currDir, self.filename)
- spitter.visitNodeDefault(node)
- self.writer('}')
-
- def _write_img(self, target):
- self.writer('\\begin{center}\\includegraphics[%%\nwidth=1.0\n\\textwidth,'
- 'height=1.0\\textheight,\nkeepaspectratio]{%s}\\end{center}\n' % target)
-
-
-class PagebreakLatex(LatexSpitter):
-
- everyN = 1
- currentN = 0
- seenH2 = 0
-
- start_html = LatexSpitter.start_html+"\\date{}\n"
- start_body = '\\begin{document}\n\n'
-
- def visitNode_h2(self, node):
- if not self.seenH2:
- self.currentN = 0
- self.seenH2 = 1
- else:
- self.currentN += 1
- self.currentN %= self.everyN
- if not self.currentN:
- self.writer('\\clearpage\n')
- level = (int(node.tagName[1])-2)+self.baseLevel
- self.writer('\n\n\\'+level*'sub'+'section*{')
- spitter = HeadingLatexSpitter(self.writer, self.currDir, self.filename)
- spitter.visitNodeDefault(node)
- self.writer('}\n')
-
-class TwoPagebreakLatex(PagebreakLatex):
-
- everyN = 2
-
-
-class SlidesProcessingFunctionFactory(default.ProcessingFunctionFactory):
-
- latexSpitters = default.ProcessingFunctionFactory.latexSpitters.copy()
- latexSpitters['prosper'] = ProsperSlides
- latexSpitters['page'] = PagebreakLatex
- latexSpitters['twopage'] = TwoPagebreakLatex
-
- def getDoFile(self):
- return doFile
-
- def generate_mgp(self, d, fileNameGenerator=None):
- template = d.get('template', 'template.mgp')
- df = lambda file, linkrel: convertFile(file, MagicpointOutput, template, ext=".mgp")
- return df
-
-factory=SlidesProcessingFunctionFactory()
« no previous file with comments | « third_party/twisted_8_1/twisted/lore/scripts/lore.py ('k') | third_party/twisted_8_1/twisted/lore/template.mgp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698