diff --git a/src/calibre/ebooks/conversion/cli.py b/src/calibre/ebooks/conversion/cli.py index b5c057b0f9..ac5acdaf4b 100644 --- a/src/calibre/ebooks/conversion/cli.py +++ b/src/calibre/ebooks/conversion/cli.py @@ -42,6 +42,12 @@ option. For full documentation of the conversion system see ''') + 'http://calibre-ebook.com/user_manual/conversion.html' +HEURISTIC_OPTIONS = ['markup_chapter_headings', + 'italicize_common_cases', 'fix_indents', + 'html_unwrap_factor', 'unwrap_lines', + 'delete_blank_paragraphs', 'format_scene_breaks', + 'dehyphenate', 'renumber_headings'] + def print_help(parser, log): help = parser.format_help().encode(preferred_encoding, 'replace') log(help) @@ -83,6 +89,8 @@ def option_recommendation_to_cli_option(add_option, rec): if opt.long_switch == 'verbose': attrs['action'] = 'count' attrs.pop('type', '') + if opt.name in HEURISTIC_OPTIONS and rec.recommended_value is True: + switches = ['--disable-'+opt.long_switch] add_option(Option(*switches, **attrs)) def add_input_output_options(parser, plumber): @@ -129,18 +137,15 @@ def add_pipeline_options(parser, plumber): 'asciiize', ] ), - + 'HEURISTIC PROCESSING' : ( - _('Modify the document text and structure using common patterns.'), - [ - 'enable_heuristics', 'markup_chapter_headings', - 'italicize_common_cases', 'fix_indents', - 'html_unwrap_factor', 'unwrap_lines', - 'delete_blank_paragraphs', 'format_scene_breaks', - 'dehyphenate', 'renumber_headings', - ] + _('Modify the document text and structure using common' + ' patterns. Disabled by default. Use %s to enable. ' + ' Individual actions can be diable with the %s options.') + % ('--enable-heuristics', '--disable-*'), + ['enable_heuristics'] + HEURISTIC_OPTIONS ), - + 'SEARCH AND REPLACE' : ( _('Modify the document text and structure using user defined patterns.'), [ diff --git a/src/calibre/ebooks/conversion/plumber.py b/src/calibre/ebooks/conversion/plumber.py index 04ee892c19..908ca6a493 100644 --- a/src/calibre/ebooks/conversion/plumber.py +++ b/src/calibre/ebooks/conversion/plumber.py @@ -490,19 +490,19 @@ OptionRecommendation(name='enable_heuristics', 'heuristic processing to take place.')), OptionRecommendation(name='markup_chapter_headings', - recommended_value=False, level=OptionRecommendation.LOW, + recommended_value=True, level=OptionRecommendation.LOW, help=_('Detect unformatted chapter headings and sub headings. Change ' 'them to h2 and h3 tags. This setting will not create a TOC, ' 'but can be used in conjunction with structure detection to create ' 'one.')), OptionRecommendation(name='italicize_common_cases', - recommended_value=False, level=OptionRecommendation.LOW, + recommended_value=True, level=OptionRecommendation.LOW, help=_('Look for common words and patterns that denote ' 'italics and italicize them.')), OptionRecommendation(name='fix_indents', - recommended_value=False, level=OptionRecommendation.LOW, + recommended_value=True, level=OptionRecommendation.LOW, help=_('Turn indentation created from multiple non-breaking space entities ' 'into CSS indents.')), @@ -515,28 +515,28 @@ OptionRecommendation(name='html_unwrap_factor', 'be reduced')), OptionRecommendation(name='unwrap_lines', - recommended_value=False, level=OptionRecommendation.LOW, + recommended_value=True, level=OptionRecommendation.LOW, help=_('Unwrap lines using punctuation and other formatting clues.')), OptionRecommendation(name='delete_blank_paragraphs', - recommended_value=False, level=OptionRecommendation.LOW, + recommended_value=True, level=OptionRecommendation.LOW, help=_('Remove empty paragraphs from the document when they exist between ' 'every other paragraph')), OptionRecommendation(name='format_scene_breaks', - recommended_value=False, level=OptionRecommendation.LOW, + recommended_value=True, level=OptionRecommendation.LOW, help=_('Left aligned scene break markers are center aligned. ' 'Replace soft scene breaks that use multiple blank lines with' 'horizontal rules.')), OptionRecommendation(name='dehyphenate', - recommended_value=False, level=OptionRecommendation.LOW, + recommended_value=True, level=OptionRecommendation.LOW, help=_('Analyze hyphenated words throughout the document. The ' 'document itself is used as a dictionary to determine whether hyphens ' 'should be retained or removed.')), OptionRecommendation(name='renumber_headings', - recommended_value=False, level=OptionRecommendation.LOW, + recommended_value=True, level=OptionRecommendation.LOW, help=_('Looks for occurrences of sequential