def note2buffer(self, note): """ return strings array for buffer from note. """ """ note has attribute title, tagNames, content """ bufStrings = [] pref = EvervimPref.getInstance() doc = minidom.parseString(note.content) ennote = doc.getElementsByTagName("en-note")[0] if pref.usemarkdown == '0': bufStrings.append(note.title) bufStrings.append("Tags:" + ",".join(note.tagNames)) contentxml = ennote.toprettyxml(indent=pref.xmlindent, encoding='utf-8') contentxml = re.sub('^' + pref.xmlindent, '', contentxml, flags=re.MULTILINE) bufStrings.extend([ line for line in contentxml.splitlines()[1:-1] if line.strip() ]) else: bufStrings.append('# ' + note.title) bufStrings.append("Tags:" + ",".join(note.tagNames)) content = markdownAndENML.parseENML(ennote).encode('utf-8') bufStrings.extend(content.splitlines()) return bufStrings
def note2buffer(self, note): """ return strings array for buffer from note. """ """ note has attribute title, notebook, tagNames, content """ bufStrings = [] pref = EvervimPref.getInstance() doc = minidom.parseString(note.content) ennote = doc.getElementsByTagName("en-note")[0] notebooks = self.api.listNotebooks() notebook = next((n for n in notebooks if n.guid == note.notebookGuid), None) notebookName = notebook.name if notebook is not None else "" if pref.usemarkdown == '0': bufStrings.append(note.title) bufStrings.append("Notebook:" + notebookName) bufStrings.append("Tags:" + ",".join(note.tagNames)) contentxml = ennote.toprettyxml(indent=pref.xmlindent, encoding='utf-8') contentxml = re.sub('^' + pref.xmlindent, '', contentxml, flags=re.MULTILINE) bufStrings.extend([line for line in contentxml.splitlines()[1:-1] if line.strip()]) else: bufStrings.append('# ' + note.title) bufStrings.append("Notebook:" + notebookName) bufStrings.append("Tags:" + ",".join(note.tagNames)) content = markdownAndENML.parseENML(ennote).encode('utf-8') bufStrings.extend(content.splitlines()) return bufStrings
def testParseENML(self): # {{{ sampleXML = '<?xml version="1.0" encoding="utf-8"?>' sampleXML += '<!DOCTYPE en-note' sampleXML += ' SYSTEM "http://xml.evernote.com/pub/enml2.dtd">' sampleXML += '<en-note style="word-wrap: break-word;">' sampleXML += ' <h1 style="color: rgb(0, 0, 0); font-weight: normal;">' sampleXML += ' <font size="3">' sampleXML += ' らき☆すた' sampleXML += ' </font>' sampleXML += ' </h1>' sampleXML += ' <div style="margin-top: 5px;">' sampleXML += ' <a href="http://www.google.com" style="color: blue !important;">' sampleXML += ' <font size="3">' sampleXML += ' <img src="http://www.google.co.jp/images/nav_logo101.png" alt="hope-echoes" />' sampleXML += ' 泉こなた' sampleXML += ' </font>' sampleXML += ' </a>' sampleXML += ' </div>' sampleXML += ' <en-media hash="xxxxx" style="cursor: default; vertical-align: middle;" type="image/jpeg"/>' sampleXML += ' <ul>' sampleXML += ' <li>リスト1</li>' sampleXML += ' <li>りすと2</li>' sampleXML += ' <li>リスト3</li>' sampleXML += ' </ul>' sampleXML += ' <en-todo checked="false"/>チェックボックス<br/>' sampleXML += ' <en-todo checked="true"/>チェック済み' sampleXML += ' <ol>' sampleXML += ' <li> 数字付1</li>' sampleXML += ' <li> 同じく2</li>' sampleXML += ' <li> おまけに3</li>' sampleXML += ' </ol>' sampleXML += ' <ol>' sampleXML += ' <li> list2-1</li>' sampleXML += ' <li> list2-2</li>' sampleXML += ' </ol>' sampleXML += ' <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">' sampleXML += ' <div> インデント</div>' sampleXML += ' <div> インデント2</div>' sampleXML += ' </blockquote>' sampleXML += ' <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">' sampleXML += ' <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">' sampleXML += ' <p> 2重インデント' sampleXML += ' 2重インデント2</p>' sampleXML += ' </blockquote>' sampleXML += ' </blockquote>' sampleXML += ' <p>normal line</p>' sampleXML += ' <pre><code>def haruhi(self):\n' sampleXML += ' pass<a href="hoge"> test </a>\n' sampleXML += ' > >' sampleXML += ' </code></pre>' sampleXML += ' <h3>asuka.langley</h3>' sampleXML += ' test backtick<code>import markdown</code>test' sampleXML += '</en-note>' dom = minidom.parseString(sampleXML) lines = markdownAndENML.parseENML(dom.documentElement).splitlines() # print "\n".join(lines) self.assertEqual(lines[0], u'# らき☆すた') self.assertEqual( lines[1], u'[{<img alt="hope-echoes" src="http://www.google.co.jp/images/nav_logo101.png"/>' ) self.assertEqual(lines[2], u'泉こなた}]({http://www.google.com})') self.assertEqual( lines[3], u'<en-media hash="xxxxx" style="cursor: default; vertical-align: middle;" type="image/jpeg"/>' ) self.assertEqual(lines[4], u'* リスト1') self.assertEqual(lines[5], u'* りすと2') self.assertEqual(lines[6], u'* リスト3') self.assertEqual(lines[7], u'') self.assertEqual(lines[8], u'<en-todo checked="false"/>') self.assertEqual(lines[9], u'チェックボックス') self.assertEqual(lines[10], u'<en-todo checked="true"/>') self.assertEqual(lines[11], u'チェック済み') self.assertEqual(lines[12], u'1. 数字付1') self.assertEqual(lines[13], u'2. 同じく2') self.assertEqual(lines[14], u'3. おまけに3') self.assertEqual(lines[15], u'') self.assertEqual(lines[16], u'1. list2-1') self.assertEqual(lines[17], u'2. list2-2') self.assertEqual(lines[18], u'') self.assertEqual(lines[19], u'> インデント') self.assertEqual(lines[20], u'> インデント2') self.assertEqual(lines[21], u'') self.assertEqual(lines[22], u'> > 2重インデント 2重インデント2') self.assertEqual(lines[23], u'') self.assertEqual(lines[24], u'') self.assertEqual(lines[25], u'') self.assertEqual(lines[26], u'normal line') self.assertEqual(lines[27], u'') self.assertEqual(lines[28], u' def haruhi(self):') self.assertEqual(lines[29], u' pass<a href="hoge"> test </a>') self.assertEqual(lines[30], u' > >') self.assertEqual(lines[31], u'') self.assertEqual(lines[32], u'### asuka.langley') self.assertEqual(lines[33], u'test backtick') self.assertEqual(lines[34], u'`import markdown`test')
def testParseENML(self): # {{{ sampleXML = '<?xml version="1.0" encoding="utf-8"?>' sampleXML += '<!DOCTYPE en-note' sampleXML += ' SYSTEM "http://xml.evernote.com/pub/enml2.dtd">' sampleXML += '<en-note style="word-wrap: break-word;">' sampleXML += ' <h1 style="color: rgb(0, 0, 0); font-weight: normal;">' sampleXML += ' <font size="3">' sampleXML += ' らき☆すた' sampleXML += ' </font>' sampleXML += ' </h1>' sampleXML += ' <div style="margin-top: 5px;">' sampleXML += ' <a href="http://www.google.com" style="color: blue !important;">' sampleXML += ' <font size="3">' sampleXML += ' <img src="http://www.google.co.jp/images/nav_logo101.png" alt="hope-echoes" />' sampleXML += ' 泉こなた' sampleXML += ' </font>' sampleXML += ' </a>' sampleXML += ' </div>' sampleXML += ' <en-media hash="xxxxx" style="cursor: default; vertical-align: middle;" type="image/jpeg"/>' sampleXML += ' <ul>' sampleXML += ' <li>リスト1</li>' sampleXML += ' <li>りすと2</li>' sampleXML += ' <li>リスト3</li>' sampleXML += ' </ul>' sampleXML += ' <en-todo checked="false"/>チェックボックス<br/>' sampleXML += ' <en-todo checked="true"/>チェック済み' sampleXML += ' <ol>' sampleXML += ' <li> 数字付1</li>' sampleXML += ' <li> 同じく2</li>' sampleXML += ' <li> おまけに3</li>' sampleXML += ' </ol>' sampleXML += ' <ol>' sampleXML += ' <li> list2-1</li>' sampleXML += ' <li> list2-2</li>' sampleXML += ' </ol>' sampleXML += ' <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">' sampleXML += ' <div> インデント</div>' sampleXML += ' <div> インデント2</div>' sampleXML += ' </blockquote>' sampleXML += ' <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">' sampleXML += ' <blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">' sampleXML += ' <p> 2重インデント' sampleXML += ' 2重インデント2</p>' sampleXML += ' </blockquote>' sampleXML += ' </blockquote>' sampleXML += ' <p>normal line</p>' sampleXML += ' <pre><code>def haruhi(self):\n' sampleXML += ' pass<a href="hoge"> test </a>\n' sampleXML += ' > >' sampleXML += ' </code></pre>' sampleXML += ' <h3>asuka.langley</h3>' sampleXML += '</en-note>' dom = minidom.parseString(sampleXML) lines = markdownAndENML.parseENML(dom.documentElement).splitlines() # print "\n".join(lines) self.assertEqual(lines[0], u'# らき☆すた') self.assertEqual(lines[1] , u'[<img alt="hope-echoes" src="http://www.google.co.jp/images/nav_logo101.png"/>') self.assertEqual(lines[2] , u'泉こなた](http://www.google.com)') self.assertEqual(lines[3] , u'<en-media hash="xxxxx" style="cursor: default; vertical-align: middle;" type="image/jpeg"/>') self.assertEqual(lines[4] , u'* リスト1') self.assertEqual(lines[5] , u'* りすと2') self.assertEqual(lines[6] , u'* リスト3') self.assertEqual(lines[7] , u'') self.assertEqual(lines[8] , u'<en-todo checked="false"/>') self.assertEqual(lines[9], u'チェックボックス') self.assertEqual(lines[10], u'<en-todo checked="true"/>') self.assertEqual(lines[11], u'チェック済み') self.assertEqual(lines[12], u'1. 数字付1') self.assertEqual(lines[13], u'2. 同じく2') self.assertEqual(lines[14], u'3. おまけに3') self.assertEqual(lines[15], u'') self.assertEqual(lines[16], u'1. list2-1') self.assertEqual(lines[17], u'2. list2-2') self.assertEqual(lines[18], u'') self.assertEqual(lines[19], u'> インデント') self.assertEqual(lines[20], u'> インデント2') self.assertEqual(lines[21], u'') self.assertEqual(lines[22], u'> > 2重インデント 2重インデント2') self.assertEqual(lines[23], u'') self.assertEqual(lines[24], u'') self.assertEqual(lines[25], u'') self.assertEqual(lines[26], u'normal line') self.assertEqual(lines[27], u'') self.assertEqual(lines[28], u' def haruhi(self):') self.assertEqual(lines[29], u' pass<a href="hoge"> test </a>') self.assertEqual(lines[30], u' > >') self.assertEqual(lines[31], u'') self.assertEqual(lines[32], u'### asuka.langley')