Hi Dannie, Please send this as a squashed patch showing only your original changes now, and provide with -v2 https://devel.rtems.org/wiki/Developer/Git/Users#CreatingaPatch
At this point we will need to see what Chris thinks about the Python. I think it looks much better now. Gedare On Thu, Aug 2, 2018 at 10:48 PM, Dannie Huang <danxue.hu...@gmail.com> wrote: > Address multiple comments: > > 1. Refactored makedoc2rst class. > 2. Refactored main module > 3. Removed strcmp.rst > > On Thu, Aug 2, 2018 at 9:44 PM, Dannie Huang <danxue.hu...@gmail.com> wrote: >> >> --- >> README.md | 4 +- >> gen_rst_from_makedoc.py | 31 +++++---------- >> makedoc2rst.py | 99 >> ++++++++++++++++++++++++++++++++++++++++++++++++ >> makedoc2rst_converter.py | 85 ----------------------------------------- >> strcmp.rst | 47 ----------------------- >> 5 files changed, 110 insertions(+), 156 deletions(-) >> create mode 100644 makedoc2rst.py >> delete mode 100644 makedoc2rst_converter.py >> delete mode 100644 strcmp.rst >> >> diff --git a/README.md b/README.md >> index 8ebb224..64a3ba9 100644 >> --- a/README.md >> +++ b/README.md >> @@ -1,2 +1,2 @@ >> -# NewlibMarkup2SphinxConvertorPrivate >> -(PRIVATE) This repo contains code for >> NewlibMarkup2SphinxConvertorPrivate. >> +# NewlibMarkup2SphinxConverter >> +This repo contains code for NewlibMarkup2SphinxConverter >> diff --git a/gen_rst_from_makedoc.py b/gen_rst_from_makedoc.py >> index 4100756..8e4d9b0 100755 >> --- a/gen_rst_from_makedoc.py >> +++ b/gen_rst_from_makedoc.py >> @@ -30,7 +30,7 @@ >> # >> >> import argparse >> -import makedoc2rst_converter >> +import makedoc2rst >> >> >> def get_parser(): >> @@ -38,37 +38,24 @@ def get_parser(): >> description='Convert newlib style markup to rst markup' >> ) >> parser.add_argument( >> - '-s', >> - '--source_file_path', >> + '-c', >> + '--c_file_path', >> type=str, >> - help='Path of source file with newlib style comments', >> + help='Path of c source file with newlib style comments', >> ) >> parser.add_argument( >> - '-d', >> - '--dest_file_path', >> + '-r', >> + '--rst_file_path', >> type=str, >> help='Path of destination file with rst markup', >> ) >> return parser >> >> >> -def main(source_file_dir, dest_file_dir): >> - with open(source_file_dir, 'r') as source_file, open(dest_file_dir, >> 'w') as dest_file: >> - file_content = source_file.read() >> - >> - makedoc2rst = makedoc2rst_converter.makedoc2rst_converter() >> - # Get comments inside of /* */ >> - comments = makedoc2rst.extract_comments(file_content) >> - >> - # Parse comments >> - command_text_dict = >> makedoc2rst.extract_command_and_text(comments) >> - >> - # Process text based on command type >> - rst_str = makedoc2rst.generate_rst(command_text_dict) >> - >> - dest_file.write(rst_str) >> +def main(c_file, rst_file): >> + makedoc2rst.makedoc2rst(c_file, rst_file).convert() >> >> >> if __name__ == '__main__': >> args = get_parser().parse_args() >> - main(args.source_file_path, args.dest_file_path) >> + main(args.c_file_path, args.rst_file_path) >> diff --git a/makedoc2rst.py b/makedoc2rst.py >> new file mode 100644 >> index 0000000..d887323 >> --- /dev/null >> +++ b/makedoc2rst.py >> @@ -0,0 +1,99 @@ >> +#!/usr/bin/env python >> +# >> +# RTEMS Tools Project (http://www.rtems.org/) >> +# Copyright 2018 Danxue Huang (danxue.hu...@gmail.com) >> +# All rights reserved. >> +# >> +# This file is part of the RTEMS Tools package in 'rtems-tools'. >> +# >> +# Redistribution and use in source and binary forms, with or without >> +# modification, are permitted provided that the following conditions are >> met: >> +# >> +# 1. Redistributions of source code must retain the above copyright >> notice, >> +# this list of conditions and the following disclaimer. >> +# >> +# 2. Redistributions in binary form must reproduce the above copyright >> notice, >> +# this list of conditions and the following disclaimer in the >> documentation >> +# and/or other materials provided with the distribution. >> +# >> +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS >> IS" >> +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >> THE >> +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >> PURPOSE >> +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS >> BE >> +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >> +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >> +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR >> BUSINESS >> +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >> +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >> +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >> THE >> +# POSSIBILITY OF SUCH DAMAGE. >> +# >> + >> +import re >> +import rst >> + >> + >> +class makedoc2rst(): >> + """ Convert c source file with makedoc markup to rst markup file >> + c_file: c source file containing block comments (/* */) at the >> beginning >> + rst_file: destination file with rst markup >> + """ >> + def __init__(self, c_file, rst_file): >> + self.c_file = c_file >> + self.rst_file = rst_file >> + >> + def convert(self): >> + """ Implementation of converting c file to rst file """ >> + rst_str = '' >> + with open(self.c_file, 'r') as c_file: >> + # Get comments inside of /* */ >> + comments = self._extract_comments(c_file.read()) >> + # Parse comments >> + command_text_dict = self._extract_command_and_text(comments) >> + # Process text based on command type >> + for command, text in command_text_dict.items(): >> + rst_str += rst.get_command_processor(command)(command, >> text) >> + >> + with open(self.rst_file, 'w') as rst_file: >> + rst_file.write(rst_str) >> + return rst_str >> + >> + def _is_command(self, s): >> + """ >> + A command is a single word of at least 3 characters, all >> uppercase >> + :param s: input string >> + :return: True if s is a single command, otherwise False >> + """ >> + return True if re.match('^[A-Z_]{3,}\s*$', s) else False >> + >> + def _extract_comments(self, content): >> + """ >> + Extract content inside of /* */ >> + :param content: input file content >> + :return: extracted comments >> + """ >> + comments = '' >> + comments_match = re.match('/\*(\*(?!/)|[^*])*\*/', content) >> + if comments_match: >> + wrapped_comments = comments_match.group() >> + comments = >> wrapped_comments.lstrip('/*').rstrip('*/').lstrip().rstrip() >> + return comments >> + >> + def _extract_command_and_text(self, comments): >> + """ >> + Extract command and text from input string content >> + :param comments: input string containing command and text >> + :return: a tuple containing command and text >> + """ >> + command = '' >> + text = '' >> + command_text_dict = {} >> + for line in comments.splitlines(): >> + if self._is_command(line): >> + if command and text: >> + command_text_dict[command] = text >> + command = line.rstrip() >> + text = '' >> + else: >> + text += line + '\n' >> + return command_text_dict >> diff --git a/makedoc2rst_converter.py b/makedoc2rst_converter.py >> deleted file mode 100644 >> index e4d2d72..0000000 >> --- a/makedoc2rst_converter.py >> +++ /dev/null >> @@ -1,85 +0,0 @@ >> -#!/usr/bin/env python >> -# >> -# RTEMS Tools Project (http://www.rtems.org/) >> -# Copyright 2018 Danxue Huang (danxue.hu...@gmail.com) >> -# All rights reserved. >> -# >> -# This file is part of the RTEMS Tools package in 'rtems-tools'. >> -# >> -# Redistribution and use in source and binary forms, with or without >> -# modification, are permitted provided that the following conditions are >> met: >> -# >> -# 1. Redistributions of source code must retain the above copyright >> notice, >> -# this list of conditions and the following disclaimer. >> -# >> -# 2. Redistributions in binary form must reproduce the above copyright >> notice, >> -# this list of conditions and the following disclaimer in the >> documentation >> -# and/or other materials provided with the distribution. >> -# >> -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS >> IS" >> -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >> THE >> -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >> PURPOSE >> -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS >> BE >> -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >> -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >> -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR >> BUSINESS >> -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >> -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >> -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >> THE >> -# POSSIBILITY OF SUCH DAMAGE. >> -# >> - >> -import re >> -import rst >> - >> - >> -class makedoc2rst_converter(): >> - @staticmethod >> - def is_command(s): >> - """ >> - A command is a single word of at least 3 characters, all >> uppercase >> - :param s: input string >> - :return: True if s is a single command, otherwise False >> - """ >> - return True if re.match('^[A-Z_]{3,}\s*$', s) else False >> - >> - @staticmethod >> - def extract_comments(content): >> - """ >> - Extract content inside of /* */ >> - :param content: input file content >> - :return: extracted comments >> - """ >> - comments = '' >> - comments_match = re.match('/\*(\*(?!/)|[^*])*\*/', content) >> - if comments_match: >> - wrapped_comments = comments_match.group() >> - comments = >> wrapped_comments.lstrip('/*').rstrip('*/').lstrip().rstrip() >> - return comments >> - >> - @staticmethod >> - def extract_command_and_text(content): >> - """ >> - Extract command and text from input string content >> - :param content: input string containing command and text >> - :return: a tuple containing command and text >> - """ >> - command = '' >> - text = '' >> - command_text_dict = {} >> - for line in content.splitlines(): >> - if makedoc2rst_converter.is_command(line): >> - if command and text: >> - command_text_dict[command] = text >> - command = line.rstrip() >> - text = '' >> - else: >> - text += line + '\n' >> - return command_text_dict >> - >> - @staticmethod >> - def generate_rst(command_text_dict): >> - rst_str = '' >> - for command, text in command_text_dict.items(): >> - rst_str += rst.get_command_processor(command)(command, text) >> - return rst_str >> diff --git a/strcmp.rst b/strcmp.rst >> deleted file mode 100644 >> index c1dc543..0000000 >> --- a/strcmp.rst >> +++ /dev/null >> @@ -1,47 +0,0 @@ >> -.. strcmp: >> - >> -strcmp - Character string compare >> ------------------------------------------ >> -.. index:: strcmp >> -.. index:: character string compare >> - >> -**INDEX:** >> - >> - strcmp >> - >> - >> - >> -**SYNOPSIS:** >> - >> -.. code-block:: c >> - >> - #include <string.h> >> - int strcmp(const char *<[a]>, const char *<[b]>); >> - >> - >> - >> -**DESCRIPTION:** >> - >> - <<strcmp>> compares the string at <[a]> to >> - the string at <[b]>. >> - >> - >> - >> -**RETURNS:** >> - >> - If <<*<[a]>>> sorts lexicographically after <<*<[b]>>>, >> - <<strcmp>> returns a number greater than zero. If the two >> - strings match, <<strcmp>> returns zero. If <<*<[a]>>> >> - sorts lexicographically before <<*<[b]>>>, <<strcmp>> returns a >> - number less than zero. >> - >> - >> - >> -**PORTABILITY:** >> - >> -<<strcmp>> is ANSI C. >> - >> -<<strcmp>> requires no supporting OS subroutines. >> - >> - >> - >> -- >> 2.7.4 >> > > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel