TXT Input: Add option to treat each line as a separate paragraph

This commit is contained in:
Kovid Goyal 2009-08-10 10:46:21 -06:00
commit b5c227292a
3 changed files with 73 additions and 1 deletions

View File

@ -6,7 +6,7 @@ __docformat__ = 'restructuredtext en'
import os
from calibre.customize.conversion import InputFormatPlugin
from calibre.customize.conversion import InputFormatPlugin, OptionRecommendation
from calibre.ebooks.txt.processor import txt_to_markdown
class TXTInput(InputFormatPlugin):
@ -16,6 +16,13 @@ class TXTInput(InputFormatPlugin):
description = 'Convert TXT files to HTML'
file_types = set(['txt'])
options = set([
OptionRecommendation(name='single_line_paras', recommended_value=False,
help=_('Normally calibre treats blank lines as paragraph markers. '
'With this option it will assume that every line represents '
'a paragraph instead.')),
])
def convert(self, stream, options, file_ext, log,
accelerators):
ienc = stream.encoding if stream.encoding else 'utf-8'
@ -24,6 +31,11 @@ class TXTInput(InputFormatPlugin):
log.debug('Reading text from file...')
txt = stream.read().decode(ienc, 'replace')
if options.single_line_paras:
txt = txt.replace('\r\n', '\n')
txt = txt.replace('\r', '\n')
txt = txt.replace('\n', '\n\n')
log.debug('Running text though markdown conversion...')
try:
html = txt_to_markdown(txt)

View File

@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
__license__ = 'GPL 3'
__copyright__ = '2009, John Schember <john@nachtimwald.com>'
__docformat__ = 'restructuredtext en'
from calibre.gui2.convert.txt_input_ui import Ui_Form
from calibre.gui2.convert import Widget
class PluginWidget(Widget, Ui_Form):
TITLE = _('TXT Input')
HELP = _('Options specific to')+' TXT '+_('input')
def __init__(self, parent, get_option, get_help, db=None, book_id=None):
Widget.__init__(self, parent, 'txt_input',
['single_line_paras'])
self.db, self.book_id = db, book_id
self.initialize_options(get_option, get_help, db, book_id)

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>213</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="opt_single_line_paras">
<property name="text">
<string>Treat each &amp;line as a paragraph</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>