Пример #1
0
    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
Пример #2
0
    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')
Пример #4
0
 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')