def mergeIntoParent(self, eid, peid): ceid = eid child = self.entry(ceid) parent = self.entry(peid) term = parent.term pageRange = Pages.RulesForName[self.pageRangeRules()].function pages = Pages.mergedPages(parent.pages, child.pages, pageRange=pageRange) notes = parent.notes or "" if child.notes: notes += "<p>{}".format(child.notes) notes += "<p>Merged from “{}”.".format(child.term) macro = Lib.Command.Macro("merge “{}” into parent “{}”".format( Lib.elide(child.term), Lib.elide(parent.term))) macro.eid = peid # Merge the child's term and pages into the parent's term command = Command.EditEntry(parent, parent.saf, parent.sortas, term, pages, notes) macro.append(command) # Move all the child's xrefs to the parent for xref in list(self.all_xrefs(ceid)): self.moveXRef(macro, peid, eid, xref) # Reparent all the child's immediate children to the parent and # delete the child self.reparentAndDeleteChild(macro, peid, parent, ceid, child) self._stack.push(macro) # Store, then do description = self._xix.doCommand(macro) self.changed.emit(macro.eid, description)
def main(): fileName = "./../test/test1.ir" if len(sys.argv) == 2: fileName = sys.argv[1] ir = IR(fileName) code = CodeGen(ir) print "\t.text" print "\t.globl main\n" print "main:\n" codeBlocks = code._codeBlocks # add the library functions # Now add the generated block by code generator i = 1 for node in codeBlocks: print "B" + str(i) + ":" print "\t" + "\n\t".join(node) i += 1 print "\tj " + LibFns["exit"] lib = Lib() instrs = lib.genFns() for ins in instrs.keys(): print str(ins) + ":" print "\t" + "\n\t".join(instrs[ins]) print "\n\t.data" for var in code._globalVars: print "g_" + str(var) + ":\t.word\t0"
def main(): fileName = "./../test/test1.ir" if len(sys.argv) == 2: fileName = sys.argv[1] ir = IR(fileName) code = CodeGen(ir) print "\t.text" print "\t.globl main\n" print "main:\n" codeBlocks = code._codeBlocks # add the library functions # Now add the generated block by code generator i = 1 for node in codeBlocks: print "B"+str(i)+":" print "\t"+"\n\t".join(node) i += 1 print "\tj "+LibFns["exit"] lib = Lib() instrs = lib.genFns() for ins in instrs.keys(): print str(ins)+":" print "\t"+"\n\t".join(instrs[ins]) print "\n\t.data" for var in code._globalVars: print "g_"+str(var) + ":\t.word\t0"
def combinePages(self): widget = QApplication.focusWidget() say("Looking for overlapping pages…") with Lib.Qt.DisableUI(*self.window.widgets(), forModalDialog=True): form = Forms.CombinePages.Form(self.state, self.window) form.exec_() Lib.restoreFocus(widget)
def processReply(self): self.args['elapsed'] = (self.time_finish - self.time_start) * 1000 u = Lib.Munpacker(self.reply) r = Lib.DnsResult(u, self.args) r.args = self.args #self.args=None # mark this DnsRequest object as used. return r
def applyFilter(self, aImage): # intialize a new filtered image new_image = Image.new('RGB', aImage.size) new_image_list = [] #get the pixels list from the original image #pixels = aImage.getdata() pixels = Lib.to2d(aImage) height = len(pixels) width = len(pixels[0]) hardness = 1 for x in range(width): for y in range(height): dist = Lib.distanceFromPoint(x, y, width/2, height/2) / math.sqrt((width/2)**2 + (height/2)**2) r = int(pixels[y][x][0]*(self.amount-dist)) g = int(pixels[y][x][1]*(self.amount-dist)) b = int(pixels[y][x][2]*(self.amount-dist)) #r = int(r**hardness) #g = int(g**hardness) #b = int(b**hardness) new_image_list.append((r,g,b)) new_image.putdata(new_image_list) return new_image
def nickname(con): message = input("Please input a nickname> ") Lib.SendMessage(con, message, msgtype="NICK") response, response_type = Lib.RecvMessage(con) if response_type != "READY": print("Nickname is not allowed by server.") nickname(con)
def initialize(self): self.setWindowTitle("{}".format(QApplication.applicationName())) self.state.updateDisplayFonts() self.filename = None if len(sys.argv) > 1: filename = sys.argv[1] if (filename.lower().endswith(EXTENSION) and os.path.exists(filename)): self.filename = filename if self.filename is None: settings = QSettings() filename = settings.value(Gopt.Key.MainForm_Filename, Gopt.Default.MainForm_Filename) if (filename and filename.lower().endswith(EXTENSION) and os.path.exists(filename)): self.filename = filename if self.filename is None: say("Click File→New or File→Open to create or open an index") self.updateWorkTime() self.state.updateUi() else: say("Opening {}".format(os.path.normpath(self.filename))) QTimer.singleShot(5, self.openXix) self.updateRecentFilesMenu() self.updateToolTips() Lib.maybe_register_filetype(self.debug)
def move(self): self.state.maybeSave() eid = self.selectedEntry.eid if self.moveToTopRadioButton.isChecked(): self.state.model.moveToTop(eid) else: peid = None if self.grandParentRadioButton.isChecked(): peid = self.grandParentEntry.eid message = "move up" elif self.filteredRadioButton.isChecked(): peid = self.filteredEntry.eid message = "move under filtered" elif self.circledRadioButton.isChecked(): peid = self.circledEntry.eid message = "move under circled" elif self.recentRadioButton.isChecked(): peid = self.recentComboBox.itemData( self.recentComboBox.currentIndex()) message = "move under recently visited" if peid is not None: # Should always be True self.state.model.moveUnder(eid, peid, message) term = Lib.htmlToPlainText(self.state.model.term(eid)) if peid == ROOT: message = "Moved “{}” to be a main entry".format(term) else: message = "Moved “{}” under “{}”".format( term, Lib.htmlToPlainText(self.state.model.term(peid))) say(message, SAY_TIMEOUT) self.accept()
def detect(): tid = random.randint(0,65535) port = 53 server = '202.102.154.3' opcode = Opcode.QUERY qtype = Type.A qclass = Class.IN qname = "google.com" rd = 1 m = Lib.Mpacker() m.addHeader(tid, 0, opcode, 0, 0, rd, 0, 0, 0, 1, 0, 0, 0) m.addQuestion(qname,qtype,qclass) request = m.getbuf() s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) source_port = random.randint(1024, 65535) s.bind(('', source_port)) s.connect((server,port)) s.send(request) r,w,e = select.select([s], [], [],timeout=1) if not len(r): print "time out" (reply, from_address) = s.recvfrom(65535) u = Lib.Munpacker(reply) r = Lib.DnsResult(u,{}) print r.answers
def expand_pic_in_html(region, data): '''取得图片地址''' pic_path = [] reg_background = re.compile( r'background(?:\s*\:|-image\s*\:).*?url\([\'|\"]?([\w+:\/\/^]?[^? \}]*\.\w+)\?*.*?[\'|\"]?\)', re.I) reg_filter = re.compile( r'Microsoft\.AlphaImageLoader\(.*?src=[\'|\"]?([\w:\/\/\.]*\.\w+)\?*.*?[\'|\"]?.*?\)', re.I) reg_img = re.compile(r'<img[^>]+src\s*=\s*[\'\"]([^\'\"]+)[\'\"][^>]*>', re.I) _b1_ = reg_background.finditer(data) _b2_ = reg_background.findall(data) _f1_ = reg_filter.finditer(data) _f2_ = reg_filter.findall(data) _i1_ = reg_img.finditer(data) _i2_ = reg_img.findall(data) if ST2: _b_ = Lib.region_and_str(region, _b1_, _b2_) _f_ = Lib.region_and_str(region, _f1_, _f2_) _i_ = Lib.region_and_str(region, _i1_, _i2_) else: _b_ = modeCSS.Lib.region_and_str(region, _b1_, _b2_) _f_ = modeCSS.Lib.region_and_str(region, _f1_, _f2_) _i_ = modeCSS.Lib.region_and_str(region, _i1_, _i2_) if _b_: pic_path.append(_b_) if _f_: pic_path.append(_f_) if _i_: pic_path.append(_i_) return pic_path
def __init__(self, from_term, from_eid, term, kind): super().__init__(from_term, from_eid, term, kind) oldKind = "see also" if kind is XrefKind.SEE_GENERIC else "see" newKind = "see also" if kind is XrefKind.SEE_ALSO_GENERIC else "see" self.description = ( "change generic cross-reference from “{}” {} to {} “{}”".format( Lib.elide(from_term), oldKind, newKind, Lib.elide(term)))
def expand_pic_in_html(region, data): """取得图片地址""" pic_path = [] reg_background = re.compile( r"background(?:\s*\:|-image\s*\:).*?url\([\'|\"]?([\w+:\/\/^]?[^? \}]*\.\w+)\?*.*?[\'|\"]?\)", re.I ) reg_filter = re.compile(r"Microsoft\.AlphaImageLoader\(.*?src=[\'|\"]?([\w:\/\/\.]*\.\w+)\?*.*?[\'|\"]?.*?\)", re.I) reg_img = re.compile(r"<img[^>]+src\s*=\s*[\'\"]([^\'\"]+)[\'\"][^>]*>", re.I) _b1_ = reg_background.finditer(data) _b2_ = reg_background.findall(data) _f1_ = reg_filter.finditer(data) _f2_ = reg_filter.findall(data) _i1_ = reg_img.finditer(data) _i2_ = reg_img.findall(data) if ST2: _b_ = Lib.region_and_str(region, _b1_, _b2_) _f_ = Lib.region_and_str(region, _f1_, _f2_) _i_ = Lib.region_and_str(region, _i1_, _i2_) else: _b_ = modeCSS.Lib.region_and_str(region, _b1_, _b2_) _f_ = modeCSS.Lib.region_and_str(region, _f1_, _f2_) _i_ = modeCSS.Lib.region_and_str(region, _i1_, _i2_) if _b_: pic_path.append(_b_) if _f_: pic_path.append(_f_) if _i_: pic_path.append(_i_) return pic_path
def updateGotoMenu(self): self.gotoActions.goBackAction.setEnabled(False) menu = self.gotoMenu menu.clear() Lib.addActions(self.gotoMenu, self.gotoActions.forMenu()) if self.state.gotoEids and bool(self.state.model): eids = collections.deque(maxlen=MAX_DYNAMIC_ACTIONS) for eid in self.state.gotoEids: if self.state.model.hasEntry(eid): eids.append(eid) if len(eids) == MAX_DYNAMIC_ACTIONS: break accels = collections.deque("123456789DEGHJKKMQTUVWXZY") self.state.gotoEids = eids currentEid = self.state.viewAllPanel.view.selectedEid eids = [eid for eid in eids if eid != currentEid] for index, eid in enumerate(eids, 1): entry = self.state.model.entry(eid) term = Lib.elide(entry.term) if accels: term = "&{} {}".format(accels.popleft(), term) if index == 1: action = self.gotoActions.goBackAction action.setEnabled(True) action.setText(term) action.triggered.disconnect() else: action = QAction(QIcon(":/go-back.svg"), term, menu) action.triggered.connect( lambda eid=eid: self.gotoActions.gotoEid(eid)) menu.addAction(action)
def make_statespace(self): jm = self.parameters["DC-Motor"]["Jm"] bm = self.parameters["DC-Motor"]["Bm"] kme = self.parameters["DC-Motor"]["Kme"] kmt = self.parameters["DC-Motor"]["Kmt"] rm = self.parameters["DC-Motor"]["Rm"] lm = self.parameters["DC-Motor"]["Lm"] kdm = self.parameters["DC-Motor"]["Kdm"] kpm = self.parameters["DC-Motor"]["Kpm"] kim = self.parameters["DC-Motor"]["Kim"] nm = self.parameters["DC-Motor"]["Nm"] dc = control.TransferFunction( [0, kmt], [jm * lm, bm * lm + jm * rm, bm * rm + kme * kmt]) pidm = control.TransferFunction( [kpm + kdm * nm, kpm * nm + kim, kim * nm], [1, nm, 0]) ii = control.TransferFunction([1], [1, 0, 0]) agv = ii * control.feedback(dc * pidm, sign=-1) # Laplace --> Z agvz = control.sample_system(agv, lib.pt, method='zoh') # Transferfunction --> StateSpace ss = control.tf2ss(agvz) lib.set_statespace(ss)
def outputIndexAs(self): widget = QApplication.focusWidget() extensions = [] for extension, desc in EXPORT_EXTENSIONS.items(): extensions.append("{} (*{})".format(desc, extension)) with Lib.Qt.DisableUI(*self.window.widgets(), forModalDialog=True): form = QFileDialog( self.window, "Output As — {}".format(QApplication.applicationName())) form.setNameFilters(extensions) form.setAcceptMode(QFileDialog.AcceptSave) form.setDirectory(self.state.outputPath) form.selectFile(str(pathlib.Path(self.state.model.filename).stem)) if form.exec_(): filename = form.selectedFiles()[0] extension = form.selectedNameFilter() if filename: # Must have some extension if not re.match(r"^.*[.].+$", filename): if extension: filename += EXTENSION_EXTRACT_RX.sub( r"\1", extension) else: filename += ".rtf" self._outputIndex(filename, widget) Lib.restoreFocus(widget)
def applyFilter(self, aImage): oldtime = time.time() # intialize a new filtered image new_image = Image.new('RGB', aImage.size) new_image_list = [] #get the pixels list from the original image #pixels = aImage.getdata() pixels = Lib.to2d(aImage) height = len(pixels) width = len(pixels[0]) print height, width n = 0 p = 1 for x in range(width): for y in range(height): r = int(pixels[y][x][0]*self.amount) g = int(pixels[y][x][1]*self.amount) b = int(pixels[y][x][2]*self.amount) if Lib.isprime(n): r=g=b=0 p+=1 new_pixel = (r,g,b) new_image_list.append(new_pixel) n+=1 new_image.putdata(new_image_list) timetaken = time.time()-oldtime print "primes:", n-p, ", out of", n , "pixels", ", it took", timetaken, "seconds" return new_image
def about(self): widget = QApplication.focusWidget() year = datetime.date.today().year year = "2015-{}".format(str(year)[-2:]) if year != 2015 else "2015" w = self.window.frameGeometry().width() h = self.window.frameGeometry().height() with Lib.Qt.DisableUI(*self.window.widgets(), forModalDialog=True): app = QApplication.applicationName() version = QApplication.applicationVersion() bits = 64 if IS64BIT else 32 QMessageBox.about( self.window, "About — {}".format(QApplication.applicationName()), f""" <p><b><font color=navy>{app} {version}</font></b></p> <p><font color=navy>{app} is an easy to learn and use application for creating, editing, and outputting indexes (e.g., for books).</font> </p> <p>Copyright © Qtrac Ltd {year}. All Rights Reserved.</p> <p>License: GPLv3.</p> <hr> <p>Window size: {w:,}x{h:,}</p> <p> Python {sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}/{ bits}-bit<br> PySide {PySide.__version__}<br> Qt {qVersion()}<br> APSW {apsw.apswversion()}<br> SQLite {apsw.sqlitelibversion()}<br> {platform.platform()}</p>""") Lib.restoreFocus(widget)
def backup(self): model = self.state.model if not model: return widget = QApplication.focusWidget() filename = Lib.incrementedFilename(model.filename) with Lib.Qt.DisableUI(*self.window.widgets(), forModalDialog=True): filename, _ = QFileDialog.getSaveFileName( self.window, "Backup Index — {}".format(QApplication.applicationName()), filename, "{} index (*{})".format(QApplication.applicationName(), EXTENSION)) if filename: with Lib.Qt.DisableUI(*self.window.widgets(), forModalDialog=True): self.state.saving = True try: self.state.maybeSave() if not filename.endswith(EXTENSION): filename += EXTENSION say("Backing up to “{}”...".format( QDir.toNativeSeparators(filename))) model.optimize() model.backup(filename, "Backing up", self.window.reportProgress) say("Backed up to “{}”".format( QDir.toNativeSeparators(filename))) finally: self.state.saving = False Lib.restoreFocus(widget)
def deleteXRef(self): widget = QApplication.focusWidget() self.state.maybeSave() item = self.state.entryPanel.xrefList.currentItem() if item is not None: xref = Xix.Util.xref_for_data(item.data(Qt.UserRole)) from_term = self.state.model.term(xref.from_eid) kind = "see" if xref.kind is XrefKind.SEE else "see also" if xref.kind in {XrefKind.SEE, XrefKind.SEE_ALSO}: term = self.state.model.term(xref.to_eid) elif xref.kind in { XrefKind.SEE_GENERIC, XrefKind.SEE_ALSO_GENERIC }: term = xref.term kind += " (generic)" with Lib.Qt.DisableUI(*self.window.widgets(), forModalDialog=True): reply = QMessageBox.question( self.window, "Delete Cross-reference — {}".format( QApplication.applicationName()), "<p>Delete cross-reference from<br>“{}” to {} “{}”?". format(from_term, kind, term), QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes) if reply == QMessageBox.Yes: if xref.kind in {XrefKind.SEE, XrefKind.SEE_ALSO}: self.state.model.deleteXRef(xref.from_eid, xref.to_eid, xref.kind) elif xref.kind in { XrefKind.SEE_GENERIC, XrefKind.SEE_ALSO_GENERIC }: self.state.model.deleteGenericXRef(xref.from_eid, xref.term, xref.kind) Lib.restoreFocus(widget)
def copy(self): self.state.maybeSave() eid = self.selectedEntry.eid peid = None if self.copyToTopRadioButton.isChecked(): peid = ROOT description = "copy “{}” to be main entry" elif self.subentryRadioButton.isChecked(): peid = eid description = "copy “{}” to be subentry of itself" elif self.siblingRadioButton.isChecked(): peid = self.selectedEntry.peid description = "copy “{}” to be sibling of itself" elif self.filteredRadioButton.isChecked(): peid = self.filteredEntry.eid description = "copy “{}” under filtered" elif self.circledRadioButton.isChecked(): peid = self.circledEntry.eid description = "copy “{}” under circled" elif self.recentRadioButton.isChecked(): peid = self.recentComboBox.itemData( self.recentComboBox.currentIndex()) description = "copy “{}” under recently visited" if peid is not None: # Should always be True description = description.format( Lib.elidePatchHtml(self.selectedEntry.term, self.state)) self.state.model.copyEntry( Lib.CopyInfo(eid, peid, self.copyXrefsCheckBox.isChecked(), self.copyGroupsCheckBox.isChecked(), self.copySubentriesCheckBox.isChecked(), self.linkPagesCheckBox.isChecked(), self.withSeeCheckBox.isChecked(), description)) say(re.sub(r"^copy", "Copied", Lib.htmlToPlainText(description)), SAY_TIMEOUT) self.accept()
def addXRef(self): widget = QApplication.focusWidget() self.state.maybeSave() with Lib.Qt.DisableUI(*self.window.widgets(), forModalDialog=True): form = Forms.AddXRef.Form(self.state, self.state.window) form.exec_() Lib.restoreFocus(widget)
def printIndex(self): widget = QApplication.focusWidget() if self.state.printer is None: self.state.printer = QPrinter(QPrinter.HighResolution) self.state.printer.setColorMode(QPrinter.GrayScale) settings = QSettings() size = PaperSizeKind( int(settings.value(Gopt.Key.PaperSize, Gopt.Default.PaperSize))) self.state.printer.setPaperSize( QPrinter.Letter if size is PaperSizeKind.LETTER else QPrinter. A4) with Lib.Qt.DisableUI(*self.window.widgets(), forModalDialog=True): form = QPrintDialog(self.state.printer, self.state.window) form.setWindowTitle("Print Index") if form.exec_(): try: with Lib.DisableUI(*self.window.widgets()): config = self.state.model.configs().copy() config.Filename = "print.$$$" config.Printer = self.state.printer Output.outputEntries(self.state.model, config, "Printing", self.window.reportProgress) say("Printed") except Output.Error as err: say("Failed to print: {}".format(err)) logging.error("printIndex failed: {}".format(err)) Lib.restoreFocus(widget)
def _checkCreateTempFile(self): filename = os.path.join(tempfile.gettempdir(), "tmp-{}.xix".format(Actions.TmpCount)) Actions.TmpCount += 1 Lib.remove_file(filename) self.state.model.backup(filename, "Saving temporary copy", self.window.reportProgress) return filename
def copy(self): widget = QApplication.focusWidget() with Lib.Qt.DisableUI(*self.window.widgets(), forModalDialog=True): form = Forms.CopyEntry.Form(self.state, self.state.window) if form.exec_(): widget = None self.state.entryPanel.termEdit.setFocus() self.state.entryPanel.termEdit.selectAll() Lib.restoreFocus(widget)
def main(): input = Lib.readImage("Images/cat.jpg") runners = [ OpenCVRunner.OpenCVRunner("Models/opencv/mobilenet_v1_0.25_224_frozen.pb"), ] for runner in runners: output = runner.inference(input) print(output) Lib.printTopK(output, k=5)
def __init__(self, from_term, from_eid, term, kind, *, name="add"): super().__init__() self.from_term = from_term self.eid = from_eid self.term = term self.kind = kind self.description = ( "{} generic {} cross-reference from “{}” to “{}”".format( name, "see" if kind is XrefKind.SEE_GENERIC else "see also", Lib.elide(from_term), Lib.elide(term)))
def editGroups(self): widget = QApplication.focusWidget() eid = self.state.viewAllPanel.view.selectedEid term = (Lib.htmlToPlainText(self.state.model.term(eid)) if eid is not None else "NEW") with Lib.Qt.DisableUI(*self.window.widgets(), forModalDialog=True): form = Forms.Groups.Form(term, self.state, self.window) form.exec_() self.state.viewFilteredPanel.requery() Lib.restoreFocus(widget)
def spelled_number(word, roman_numerals): if word.isdigit(): return Lib.spellNumber(int(word)) elif roman_numerals: try: n = roman.fromRoman(word.upper()) return Lib.spellNumber(n) except roman.RomanError: # Isn't a roman number pass return word
def make_min_distance(self): edges = [] for i in range(int(len(self.edges) / 2)): edges.append([self.edges[2 * i], self.edges[2 * i + 1]]) self.make_centroid() out = lib.dist(self.centroid, edges[0]) for e in edges: dist = lib.dist(self.centroid, e) if dist > out: out = dist return out
def _postUndoOrRedoRefresh(self, eid, widget): if eid is not None: self.viewAllPanel.view.gotoEid(eid) else: self.entryPanel.clearForm() self.viewAllPanel.view.refresh() self.viewFilteredPanel.view.refresh() self.setMode(ModeKind.VIEW) self.window.refreshBookmarks() self.updateNavigationStatus() Lib.restoreFocus(widget)
def swapEntries(self, eid1, eid2): entry1 = self.entry(eid1) entry2 = self.entry(eid2) peid1 = entry1.peid peid2 = entry2.peid macro = Lib.Command.Macro("swap entry “{}” with “{}”".format( Lib.elide(entry1.term), Lib.elide(entry2.term))) macro.eid = eid1 # Move eid1's immediate children under eid2 for ceid in list(self.subentries(eid1)): if ceid == eid2: continue entry = self.entry(ceid) command = Command.MoveUnder(entry.term, entry.eid, entry.peid, eid2, "move under “{}”".format(entry2.term)) macro.append(command) # Move eid2's immediate children under eid1 for ceid in list(self.subentries(eid2)): if ceid == eid1: continue entry = self.entry(ceid) command = Command.MoveUnder(entry.term, entry.eid, entry.peid, eid1, "move under “{}”".format(entry1.term)) macro.append(command) # Move eid1 under eid2's parent, unless that parent is eid1 in # which case move eid1 under eid2 peid = term = None if eid1 == peid2: peid = eid2 term = entry2.term else: peid = peid2 term = self.term(peid2) command = Command.MoveUnder(entry1.term, entry1.eid, entry1.peid, peid, "move under “{}”".format(term)) macro.append(command) # Move eid2 under eid1's parent, unless that parent is eid2 in # which case move eid2 under eid1 peid = term = None if eid2 == peid1: peid = eid1 term = entry1.term else: peid = peid1 term = self.term(peid1) command = Command.MoveUnder(entry2.term, entry2.eid, entry2.peid, peid, "move under “{}”".format(term)) macro.append(command) # Do macro self._stack.push(macro) # Store, then do description = self._xix.doCommand(macro) self.changed.emit(macro.eid, description)
def test1(self): for actual, expected in ( ("Federal Bureau of Investigation (FBI)", "FBI (Federal Bureau of Investigation)"), ("Central Intelligence Agency (CIA)", "CIA (Central Intelligence Agency)"), ): swapped = Lib.swapAcronym(actual) self.assertEqual(swapped, expected) swapped = Lib.swapAcronym(swapped) self.assertEqual(swapped, actual)
def humanizedCandidate(term, candidate, saf): plain_term = Lib.htmlToPlainText(term) term_words = plain_term.split() lterm_words = plain_term.casefold().split() candidate_words = candidate.split() unchanged = [] make_candidate = functools.partial(makeCandidate, candidate, candidate_words, saf) for lword, word in zip(lterm_words, term_words): n = kind = match = None if lword.isdigit(): n = int(lword) if n is None: match = DIGITS_RX.search(lword) if match is not None: n = int(match.group("number")) if n is None and isRoman(lword): n = numericValueOf(lword) kind = CandidateKind.ROMAN if n is not None: numericCandidate = make_candidate(word, n, kind) if numericCandidate is not None: return numericCandidate if lword.isdigit() or isRoman(lword): words = frozenset(lterm_words) ^ frozenset(candidate_words) if words: n = numericValueOf(lword) if n is not None: sword = Lib.spellNumber(n) sword_set = frozenset(sword.split()) if sword_set == (sword_set & words): return Candidate(candidate, word, sword, CandidateKind.PHRASE, saf) if lword in candidate_words: if lword.isdigit() or isRoman(lword): return Candidate(candidate, word, lword, CandidateKind.LITERAL, saf) unchanged.append(Candidate( candidate, word, lword, CandidateKind.UNCHANGED, saf)) if "." in lword: dotlessWord = lword.replace(".", "") if dotlessWord in candidate_words: return Candidate(candidate, word, dotlessWord, CandidateKind.LITERAL, saf) for cw in candidate_words: if cw.replace(".", "").isdigit(): kind = (CandidateKind.NUMBER if cw.startswith("0") else CandidateKind.LITERAL) return Candidate(candidate, word, cw, kind, saf) if unchanged: return unchanged[0] word = candidate.split()[0] return Candidate(candidate, word, word, CandidateKind.UNCHANGED, saf)
def merge_css(self, edit, setlists): '''压缩样式内容''' view = self.view sel = view.sel() syntax = view.settings().get('syntax') _fsyntax_ = re.search(r'\/([\w ]+)\.',syntax) # 取得文件类型 fsyntax = _fsyntax_.group(1) # 未选中时默认处理方式 notSel = setlists['notSel'] if fsyntax == 'CSS' or fsyntax == 'HTML': for region in sel: if region.empty():# 如果没有选中 if fsyntax == 'CSS' and notSel == 'all': # 全选 region = sublime.Region(0, view.size()) # 整理文本 text = merge_line(view.substr(region), setlists) view.replace(edit, region, text) # 处理HTML文件中的STYLE标签 elif fsyntax == 'HTML' and notSel == 'all': if ST2: rules = Lib.expand_to_style(view, region) else: rules = modeCSS.Lib.expand_to_style(view, region) # 倒序替换 for i in range(len(rules)-1, -1,-1): # 整理文本 text = merge_line(view.substr(rules[i]), setlists) view.replace(edit, rules[i], text) else: if ST2: region = Lib.expand_to_css_rule(view, region) else: region = modeCSS.Lib.expand_to_css_rule(view, region) # 整理文本 text = merge_line(view.substr(region), setlists) view.replace(edit, region, text) else: if notSel == 'all': # 全选 region = sublime.Region(0, view.size()) if ST2: region = Lib.get_cur_point(view,region) else: region = modeCSS.Lib.get_cur_point(view,region) # 整理文本 text = merge_line(view.substr(region), setlists) view.replace(edit, region, text)
def sendTCPRequest(self, server): " do the work of sending a TCP request " first_socket_error = None self.response=None for self.ns in server: #print "trying tcp",self.ns try: if self.ns.count(':'): if hasattr(socket,'has_ipv6') and socket.has_ipv6: self.socketInit(socket.AF_INET6, socket.SOCK_STREAM) else: continue else: self.socketInit(socket.AF_INET, socket.SOCK_STREAM) try: # TODO. Handle timeouts &c correctly (RFC) self.time_start=time.time() self.conn() buf = Lib.pack16bit(len(self.request))+self.request # Keep server from making sendall hang self.s.setblocking(0) # FIXME: throws WOULDBLOCK if request too large to fit in # system buffer self.s.sendall(buf) # SHUT_WR breaks blocking IO with google DNS (8.8.8.8) #self.s.shutdown(socket.SHUT_WR) r=self.processTCPReply() if r.header['id'] == self.tid: self.response = r break finally: self.s.close() except socket.error, e: first_socket_error = first_socket_error or e continue
def sphereCtl( name, functArgs ): J=[] ctl = Lib.getFirst(cmds.polySphere( n = (name + "_CTL"), r= functArgs["size"], sx= 1, sy= 1, ax= [0, 1, 0], ch= 1)) grp = cmds.group( ctl, n = (name + "Ctl_GRP")) J.append(ctl) J.append(grp) return J
def applyFilter(self, aImage): # intialize a new filtered image new_image = Image.new('RGB', aImage.size) new_image_list = [] #get the pixels list from the original image #pixels = aImage.getdata() pixels = Lib.to2d(aImage) height = len(pixels) width = len(pixels[0]) for x in range(width): for y in range(height): if x > self.size and x < (width - self.size) and \ y > self.size and y < (height - self.size): r = int(pixels[y][x][0]) g = int(pixels[y][x][1]) b = int(pixels[y][x][2]) else: r = int(self.color[0]*255) g = int(self.color[1]*255) b = int(self.color[2]*255) new_pixel = (r,g,b) new_image_list.append(new_pixel) new_image.putdata(new_image_list) return new_image
def cubeCtl( name, functArgs ): J=[] ctl = Lib.getFirst(cmds.polyCube( n = (name + "_CTL"), w= functArgs["size"], h= functArgs["size"], d= 1, sx= 1, sy= 1, sz= 1, ax= [0, 1, 0], cuv= 4, ch= 1)) grp = cmds.group( ctl, n = (name + "Ctl_GRP")) J.append(ctl) J.append(grp) return J
def run(self, edit): view = self.view if ST2: setlists = Lib.get_default_set() else: setlists = modeCSS.Lib.get_default_set() setlists["notSel"] = "all" merge_css(self, edit, setlists)
def circleCtl( name, radius ): 'Creates arrow control' J=[] curve= Lib.getFirst(cmds.circle( n = (name+ "_CTL"), c= [0, 0, 0], nr= [0, 1, 0], sw= 360, r= radius, d= 3, ut= 0, tol= 0.01 ,s= 8, ch=1)) grp = cmds.group( curve, n = (name + "Ctl_GRP")) J.append(curve) J.append(grp) return J
def locatorCtl( name, args ): 'Creates locator ctl' J=[] ctl = Lib.getFirst(cmds.spaceLocator( n =(name + "_CTL") ) ) grp = cmds.group( ctl, n = (name + "Ctl_GRP")) cmds.xform(grp, piv= [0,0,0] ) J.append(ctl) J.append(grp) return J
def run(self, edit): view = self.view if ST2: setlists = Lib.get_default_set() else: setlists = modeCSS.Lib.get_default_set() setlists["notSel"] = "all" setlists["all_in_one"] = True setlists["delete_comments"] = True merge_css(self, edit, setlists)
def processTCPReply(self): if self.timeout > 0: self.s.settimeout(self.timeout) else: self.s.settimeout(None) f = self.s.makefile('r') header = self._readall(f,2) count = Lib.unpack16bit(header) self.reply = self._readall(f,count) self.time_finish=time.time() self.args['server']=self.ns return self.processReply()
def duplicateChain(name , chainJoints): 'Duplicates a chain of joints' i = 1 joints = [] jointNo = len(chainJoints) for x in range( jointNo ): joints.append( Lib.getFirst(cmds.duplicate(chainJoints[x], po = True, n = (name + str(x + 1) + "_JNT"))) ) for x in range( 1, jointNo ): cmds.parent(joints[jointNo - x], joints[jointNo - (x + 1)]) return joints
def processTCPReply(self): import time, Lib self.f = self.s.makefile('r') header = self.f.read(2) if len(header) < 2: raise DNSError,'EOF' count = Lib.unpack16bit(header) self.reply = self.f.read(count) if len(self.reply) != count: raise DNSError,'incomplete reply' self.time_finish=time.time() self.args['server']=self.ns return self.processReply()
def createIkHandle(name, joints, **kwargs): """ Creates Ik handle for three joints return values: IK EFF """ # Default args args = {"sol":"ikRPsolver"} functArgs = Lib.defaultArgs(args, kwargs) kwargs = Lib.deleteDictKey(kwargs, "sol") ret = {} if len(joints) != 3: cmds.error("Incorrect number of joints supplied to IkHandle.") handleData = cmds.ikHandle( n= (name + "_IKH"), sol= functArgs["sol"], sj= joints[0], ee= joints[2],**kwargs) cmds.setAttr((handleData[0] + ".v"), 0) ret["IK"] = handleData[0] ret["EFF"] = handleData[1] return ret
def createSplineIk(name, joints, **kwargs): """ Creates spline Ik return values: IK EFF CRV """ # Default args args = {"sol":"ikRPsolver"} functArgs = Lib.defaultArgs(args, kwargs) kwargs = Lib.deleteDictKey(kwargs, "sol") ret = {} handleData = cmds.ikHandle( n= (name + "_IKH"), sol= functArgs["sol"], sj= joints[0], ee= joints[len(joints)-1],**kwargs) cmds.setAttr((handleData[0] + ".v"), 0) handleData[2] = cmds.rename(handleData[2],(name+ "IK_CRV") ) ret["IK"] = handleData[0] ret["EFF"] = handleData[1] ret["CRV"] = handleData[2] return ret
def saveTransforms(filePath, module, objects): """ Will Store transfrom data in file """ # objects = self.getRegisteredObjects( module, regAttr) writeData = "" for object in objects: translate = Lib.getFirst(cmds.getAttr((object + ".t"))) rotate = Lib.getFirst(cmds.getAttr((object + ".r"))) scale = Lib.getFirst(cmds.getAttr((object + ".s"))) writeLine = ( object + " " + str(translate[0]) + " " + str(translate[1]) + " " + str(translate[2]) + " " + str(rotate[0]) + " " + str(rotate[1]) + " " + str(rotate[2]) + " " + str(scale[0]) + " " + str(scale[1]) + " " + str(scale[2]) + "\n" ) writeData += writeLine FILE = open(filePath, "wb") blueprintData = FILE.write(writeData) FILE.close() print ("Saved Transform data to : " + filePath)
def fold_base64(view): """折叠base64编码""" base64 = "data:image/.*;base64,(.*?)['\"\)]" base64_begin = "data:image/.*;base64," base64_end = "['\"\)]" rules = view.find_all(base64) for rule in rules: begin = view.find(base64_begin, rule.a, re.I) end = view.find(base64_end, rule.a, re.I) if ST2: fold = Lib.cut_region(rule, begin, end) else: fold = modeCSS.Lib.cut_region(rule, begin, end) view.fold(fold)
def sendTCPRequest(self, server): " do the work of sending a TCP request " self.response=None for self.ns in server: try: self.socketInit(socktype_from_addr(self.ns), socket.SOCK_STREAM) self.time_start=time.time() self.conn() self.s.send(Lib.pack16bit(len(self.request))+self.request) self.s.shutdown(1) self.response=self.processTCPReply() except socket.error: continue break if not self.response: raise DNSError,'no working nameservers found'
def upload(): data = request.files.data filtername = str(request.forms.filter) #print "data:", data if data and data.file: fn = path.basename(data.filename) fileName, fileExtension = os.path.splitext(fn) open(PUBLIC_PATH + 'tmp/' + fn, 'wb').write(data.file.read()) hashName = Lib.hashImg(fileName+fileExtension) shutil.copyfile(PUBLIC_PATH + 'tmp/' + fn, PUBLIC_PATH + 'tmp/' + hashName+fileExtension) #open('../../public/tmp/' + hashName + "." + fileExtension, 'wb').write(data.file.read()) return {'org': '/tmp/'+hashName + fileExtension, 'available_filters': filter_list.keys(), 'hash': hashName} return {'error':"Did not receive a file"}
def processTCPReply(self): if self.timeout > 0: r,w,e = select.select([self.s],[],[],self.timeout) if not len(r): raise DNSError, 'Timeout' f = self.s.makefile('r') header = f.read(2) if len(header) < 2: raise DNSError,'EOF' count = Lib.unpack16bit(header) self.reply = f.read(count) if len(self.reply) != count: # FIXME: Since we are non-blocking, it could just be a large reply # that we need to loop and wait for. raise DNSError,'incomplete reply' self.time_finish=time.time() self.args['server']=self.ns return self.processReply()
def createPoleVec(joints, ikHandle, position): """ Creates pole vector for handle for three joints """ if len(joints) != 3: cmds.error("Incorrect number of joints supplied to IkHandle.") # Create locator to act as pole vector locName = (String.removeSuffix(ikHandle) + "Pole_LOC") poleGrpName = (String.removeSuffix(ikHandle) + "Pole_GRP") poleVecName = (String.removeSuffix(ikHandle) + "Pole_PVC") loc = Lib.getFirst(cmds.spaceLocator(n = locName, p= (0,0,0) )) cmds.xform(loc, ws= True, t= (position[0], position[1], position[2]) ) locGrp = cmds.group(loc, n= poleGrpName) cmds.poleVectorConstraint( loc , ikHandle, n= poleVecName, w=.1 ) cmds.setAttr((loc + ".v"), 0) return locGrp
def sendTCPRequest(self, server): " do the work of sending a TCP request " import time, Lib self.response=None for self.ns in server: try: # Miika: changed to support ipv6 if self.ns.find(':') == -1: family = socket.AF_INET else: family = socket.AF_INET6 self.socketInit(family, socket.SOCK_STREAM) self.time_start=time.time() self.conn() self.s.send(Lib.pack16bit(len(self.request))+self.request) self.s.shutdown(1) self.response=self.processTCPReply() except socket.error: continue break if not self.response: raise DNSError,'no working nameservers found'
def merge_line(data, setlists): '''压缩样式''' set_all_in_one = setlists["all_in_one"] set_remove_semicolon = setlists["remove_semicolon"] set_delete_comments = setlists["delete_comments"] set_add_pic_time_suffix = setlists["add_pic_time_suffix"] set_pic_time_suffix_extension = setlists["pic_time_suffix_extension"] set_pic_version_str = setlists["pic_version_str"] _comments_ = [] if ST2: version = Lib.build_time_suffix() else: version = modeCSS.Lib.build_time_suffix() if set_delete_comments: # 删除注释 strinfo = re.compile(r'\/\*(?:.|\s)*?\*\/',re.I).sub('',data) else: # 提取注释 _comments_ = re.compile(r'(\/\*(?:.|\s)*?\*\/)',re.I).findall(data) _comments_.append("") strinfo = re.compile(r'(\/\*(?:.|\s)*?\*\/)',re.I).sub('[[!]]',data) strinfo = re.compile(r'@(?:import|charset)( *.*?);+',re.I).sub('',strinfo) # 删除外部引用、编码申明 strinfo = re.compile(r'\n*',re.I).sub('',strinfo) # 删除多余换行 strinfo = re.compile(r'[\n\t]*',re.I).sub('',strinfo) # 删除多余换行 strinfo = re.compile(r' *, *',re.I).sub(',',strinfo) # 删除多余空格 strinfo = re.compile(r' *{ *',re.I).sub('{',strinfo) # 删除多余空格 strinfo = re.compile(r' *: *',re.I).sub(':',strinfo) # 删除多余空格 strinfo = re.compile(r'^ ',re.I).sub('',strinfo) # 删除多余空格 strinfo = re.compile(r' *; *',re.I).sub(';',strinfo) # 删除多余空格 strinfo = re.compile(r'([: ]+0)[px|pt|em|%]+',re.I).sub('\\1',strinfo) # 删除0值单位 strinfo = re.compile(r'"{2,}',re.I).sub('"',strinfo) # 删除多余引号 strinfo = re.compile(r'\'{2,}',re.I).sub('\'',strinfo) # 删除多余引号 strinfo = re.compile(r'content:[\"|\'][; ]',re.I).sub('content:\"\";',strinfo) # 修正content引号缺失 strinfo = re.compile(r';{2,}',re.I).sub(';',strinfo) # 删除多余空格 strinfo = re.compile(r' {2,}',re.I).sub(' ',strinfo) # 删除多余空格 strinfo = re.compile(r' *} *',re.I).sub('}',strinfo) # 删除多余空格 # 删除最后一个分号 if set_remove_semicolon: strinfo = re.compile(r';}',re.I).sub('}',strinfo) reg_background = re.compile(r'background(\s*\:|-image\s*\:)(.*?)url\([\'|\"]?([\w+:\/\/^]?[^? \}]*\.(\w+))\?*.*?[\'|\"]?\)',re.I) reg_filter = re.compile(r'Microsoft\.AlphaImageLoader\((.*?)src=[\'|\"]?([\w:\/\/\.]*\.(\w+))\?*.*?[\'|\"]?(.*?)\)',re.I) # 添加图片时间缀 if set_add_pic_time_suffix: if set_pic_time_suffix_extension: strinfo = reg_background.sub("background\\1\\2url(\\3?" + set_pic_version_str + "=" + version + ".\\4)",strinfo) strinfo = reg_filter.sub("Microsoft.AlphaImageLoader(\\1src='\\2?" + set_pic_version_str + "=" + version + ".\\3'\\4)",strinfo) else: strinfo = reg_background.sub("background\\1\\2url(\\3?" + set_pic_version_str + "=" + version + ")",strinfo) strinfo = reg_filter.sub("Microsoft.AlphaImageLoader(\\1src='\\2?" + set_pic_version_str + "=" + version + "'\\4)",strinfo) else: # 删除图片时间缀 strinfo = reg_background.sub("background\\1\\2url(\\3)",strinfo) strinfo = reg_filter.sub("Microsoft.AlphaImageLoader(\\1src='\\2'\\4)",strinfo) # 不压缩为一行 if not set_all_in_one: strinfo = re.compile(r'}',re.I).sub('}\n',strinfo) strinfo = re.compile(r'}[\n\t]*}',re.I).sub('}}',strinfo) # 还原注释 if not set_remove_semicolon: reg = re.compile(r'(\[\[!\]\])',re.I) _strinfo_ = strinfo.split('[[!]]') if len(_comments_) >1: string = "" for i in range(0, len(_comments_)): string += _strinfo_[i] +"\n"+ _comments_[i] +"\n" strinfo = string return strinfo
def run(self, edit): view = self.view sel = view.sel() syntax = view.settings().get("syntax") _fsyntax_ = re.search(r"\/([\w ]+)\.", syntax) # 取得文件类型 fsyntax = _fsyntax_.group(1) if ST2: setlists = Lib.get_default_set() project_dir = setlists["default_porject_path"] or Lib.get_dis(view) else: setlists = modeCSS.Lib.get_default_set() project_dir = setlists["default_porject_path"] or modeCSS.Lib.get_dis(view) for region in sel: _pic_path_ = [] if ST2: _region = Lib.get_cur_point(view, region) else: _region = modeCSS.Lib.get_cur_point(view, region) if _region: # 取得图片路径列表 rules_ = expand_pic_in_html(_region, view.substr(_region)) if len(rules_) > 0: for rules in rules_: for pic_path_ in rules: if project_dir: # 相对路径转绝对路径 if ST2: _pic_path = Lib.get_abs_path(pic_path_[1], project_dir) else: _pic_path = modeCSS.Lib.get_abs_path(pic_path_[1], project_dir) _temp_ = [] if os.path.isfile(_pic_path): _temp_.append(pic_path_[0]) _temp_.append(encode_pic(_pic_path)) else: _temp_.append("") _temp_.append(_pic_path) _pic_path_.append(_temp_) reg_rule = re.compile(r"(<img[^>]+src\s*=\s*[\'\"])[^\'\"]+([\'\"][^>]*>)", re.I) reg_background = re.compile( r"(background(?:\s*\:|-image\s*\:).*?url\([\'|\"]?)[\w+:\/\/^]?[^? \}]*\.\w+\?*.*?([\'|\"]?\))", re.I, ) reg_filter = re.compile( r"(Microsoft\.AlphaImageLoader\(.*?src=[\'|\"]?)[\w:\/\/\.]*\.\w+\?*.*?([\'|\"]?.*?\))", re.I ) if len(_pic_path_) > 0: for i in range(len(_pic_path_) - 1, -1, -1): # 倒序替换 if _pic_path_[i][0]: if ST2: _region = Lib.point_to_region(_pic_path_[i][0]) else: _region = modeCSS.Lib.point_to_region(_pic_path_[i][0]) text = reg_rule.sub("\\1" + _pic_path_[i][1] + "\\2", view.substr(_region)) self.view.replace(edit, _region, text) text = reg_background.sub("\\1" + _pic_path_[i][1] + "\\2", view.substr(_region)) self.view.replace(edit, _region, text) text = reg_filter.sub("\\1" + _pic_path_[i][1] + "\\2", view.substr(_region)) self.view.replace(edit, _region, text) if setlists["base64_fold"]: fold_base64(view)
if __name__ == '__main__': fileName = "./../test/test1.ir" if len(sys.argv) == 2: fileName = sys.argv[1] ir = IR(fileName) code = CodeGen(ir) print "\t.text" print "\t.globl main\n" print "main:\n" codeBlocks = code._codeBlocks # add the library functions # Now add the generated block by code generator i = 1 for node in codeBlocks: print "B"+str(i)+":" print "\t"+"\n\t".join(node) i += 1 print "\tj "+LibFns["exit"] lib = Lib() instrs = lib.genFns() for ins in instrs.keys(): print str(ins)+":" print "\t"+"\n\t".join(instrs[ins]) print "\n\t.data" for var in code._globalVars: print "g_"+str(var) + ":\t.word\t0"