From 5d4346136095c7bec80f04aefe445cbbc270600c Mon Sep 17 00:00:00 2001 From: Rares Vernica Date: Wed, 31 Jul 2013 11:17:43 -0700 Subject: [PATCH 1/2] fix issue #44 so the parser.py script can be run from different directories --- parser.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/parser.py b/parser.py index e72d220..605b89b 100644 --- a/parser.py +++ b/parser.py @@ -1,14 +1,17 @@ -# -*- coding: utf8 -*- +# -*- coding: utf-8 -*- import time start_time = time.time() +import os +dir = os.path.dirname(__file__) + # get the parser from pijnu import makeParser -preprocessorGrammar = file("preprocessor.pijnu").read() +preprocessorGrammar = file(os.path.join(dir, "preprocessor.pijnu")).read() makeParser(preprocessorGrammar) -mediawikiGrammar = file("mediawiki.pijnu").read() +mediawikiGrammar = file(os.path.join(dir, "mediawiki.pijnu")).read() makeParser(mediawikiGrammar) allowed_tags = ['p', 'span', 'b', 'i', 'small', 'center'] @@ -67,4 +70,4 @@ file("article.htm", "w").write(output.encode('UTF-8')) end_time = time.time() -print "Parsed and rendered in", end_time - start_time, "s." \ No newline at end of file +print "Parsed and rendered in", end_time - start_time, "s." From 7b35a36946eda068cdb65c34d1e8ce9fddfce829 Mon Sep 17 00:00:00 2001 From: Rares Vernica Date: Tue, 20 Aug 2013 15:46:00 -0700 Subject: [PATCH 2/2] Allow HTML comments in templates: 1. After template 'page_name', e.g., {{Infobox settlement 2. After template parameters, e.g., |title_style = --- preprocessor.pijnu | 6 +++--- preprocessorParser.py | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/preprocessor.pijnu b/preprocessor.pijnu index 2a986ff..fd28432 100755 --- a/preprocessor.pijnu +++ b/preprocessor.pijnu @@ -81,11 +81,11 @@ def replace_by_space(node): optional_value : parameter_value? parameter_equal : SPACETABEOL* EQUAL SPACETABEOL* parameter_name : (!(esc_char/parameter_equal) raw_char)+ : join - named_parameter : parameter_name parameter_equal optional_value + named_parameter : parameter_name parameter_equal html_comment* optional_value standalone_parameter : value_content? : join - parameter : SPACETABEOL* PIPE SPACETABEOL* (named_parameter/standalone_parameter) : liftValue + parameter : SPACETABEOL* PIPE SPACETABEOL* (named_parameter/standalone_parameter) html_comment* : liftValue parameters : parameter* - template : TEMPLATE_BEGIN page_name parameters SPACETABEOL* TEMPLATE_END : substitute_template + template : TEMPLATE_BEGIN page_name html_comment* parameters SPACETABEOL* TEMPLATE_END : substitute_template # inline allows to have templates/links inside templates/links diff --git a/preprocessorParser.py b/preprocessorParser.py index 6e24fa2..291c642 100644 --- a/preprocessorParser.py +++ b/preprocessorParser.py @@ -77,11 +77,11 @@ optional_value : parameter_value? parameter_equal : SPACETABEOL* EQUAL SPACETABEOL* parameter_name : (!(esc_char/parameter_equal) raw_char)+ : join - named_parameter : parameter_name parameter_equal optional_value + named_parameter : parameter_name parameter_equal html_comment* optional_value standalone_parameter : value_content? : join - parameter : SPACETABEOL* PIPE SPACETABEOL* (named_parameter/standalone_parameter) : liftValue + parameter : SPACETABEOL* PIPE SPACETABEOL* (named_parameter/standalone_parameter) html_comment* : liftValue parameters : parameter* - template : TEMPLATE_BEGIN page_name parameters SPACETABEOL* TEMPLATE_END : substitute_template + template : TEMPLATE_BEGIN page_name html_comment* parameters SPACETABEOL* TEMPLATE_END : substitute_template # inline allows to have templates/links inside templates/links @@ -223,11 +223,11 @@ def replace_by_space(node): optional_value = Option(parameter_value, expression='parameter_value?', name='optional_value') parameter_equal = Sequence([Repetition(SPACETABEOL, numMin=False, numMax=False, expression='SPACETABEOL*'), EQUAL, Repetition(SPACETABEOL, numMin=False, numMax=False, expression='SPACETABEOL*')], expression='SPACETABEOL* EQUAL SPACETABEOL*', name='parameter_equal') parameter_name = Repetition(Sequence([NextNot(Choice([esc_char, parameter_equal], expression='esc_char/parameter_equal'), expression='!(esc_char/parameter_equal)'), raw_char], expression='!(esc_char/parameter_equal) raw_char'), numMin=1, numMax=False, expression='(!(esc_char/parameter_equal) raw_char)+', name='parameter_name')(toolset['join']) - named_parameter = Sequence([parameter_name, parameter_equal, optional_value], expression='parameter_name parameter_equal optional_value', name='named_parameter') + named_parameter = Sequence([parameter_name, parameter_equal, Repetition(html_comment, numMin=False, numMax=False, expression='html_comment*'), optional_value], expression='parameter_name parameter_equal html_comment* optional_value', name='named_parameter') standalone_parameter = Option(value_content, expression='value_content?', name='standalone_parameter')(toolset['join']) - parameter = Sequence([Repetition(SPACETABEOL, numMin=False, numMax=False, expression='SPACETABEOL*'), PIPE, Repetition(SPACETABEOL, numMin=False, numMax=False, expression='SPACETABEOL*'), Choice([named_parameter, standalone_parameter], expression='named_parameter/standalone_parameter')], expression='SPACETABEOL* PIPE SPACETABEOL* (named_parameter/standalone_parameter)', name='parameter')(toolset['liftValue']) + parameter = Sequence([Repetition(SPACETABEOL, numMin=False, numMax=False, expression='SPACETABEOL*'), PIPE, Repetition(SPACETABEOL, numMin=False, numMax=False, expression='SPACETABEOL*'), Choice([named_parameter, standalone_parameter], expression='named_parameter/standalone_parameter'), Repetition(html_comment, numMin=False, numMax=False, expression='html_comment*')], expression='SPACETABEOL* PIPE SPACETABEOL* (named_parameter/standalone_parameter) html_comment*', name='parameter')(toolset['liftValue']) parameters = Repetition(parameter, numMin=False, numMax=False, expression='parameter*', name='parameters') - template = Sequence([TEMPLATE_BEGIN, page_name, parameters, Repetition(SPACETABEOL, numMin=False, numMax=False, expression='SPACETABEOL*'), TEMPLATE_END], expression='TEMPLATE_BEGIN page_name parameters SPACETABEOL* TEMPLATE_END', name='template')(toolset['substitute_template']) + template = Sequence([TEMPLATE_BEGIN, page_name, Repetition(html_comment, numMin=False, numMax=False, expression='html_comment*'), parameters, Repetition(SPACETABEOL, numMin=False, numMax=False, expression='SPACETABEOL*'), TEMPLATE_END], expression='TEMPLATE_BEGIN page_name html_comment* parameters SPACETABEOL* TEMPLATE_END', name='template')(toolset['substitute_template']) # inline allows to have templates/links inside templates/links