예제 #1
0
 def __init__(self):
     super().__init__(COMMAND_LINE_ACTOR)
     self._tp = TextParser({
         'LINE_COMMENT_MARKER':
         formatting.string_constant(LINE_COMMENT_MARKER),
         'PROGRAM':
         syntax_elements.PROGRAM_SYNTAX_ELEMENT.singular_name,
         'STRING_TRANSFORMER':
         syntax_elements.STRING_TRANSFORMER_SYNTAX_ELEMENT.singular_name,
         'PATH':
         syntax_elements.PATH_SYNTAX_ELEMENT.singular_name,
         'path':
         types.PATH_TYPE_INFO.name,
         'executable_file':
         formatting.misc_name_with_formatting(misc_texts.EXECUTABLE_FILE),
         'relativity':
         formatting.misc_name_with_formatting(misc_texts.RELATIVITY),
         'stdout':
         misc_texts.STDOUT,
         'stdin':
         misc_texts.STDIN,
         'os_process':
         misc_texts.OS_PROCESS_NAME,
         'setup_phase':
         phase_names.SETUP,
     })
예제 #2
0
 def __init__(self):
     super().__init__(FILE_INTERPRETER_ACTOR)
     self._tp = TextParser({
         'shell_syntax_concept':
         formatting.concept_(concepts.SHELL_SYNTAX_CONCEPT_INFO),
         'LINE_COMMENT_MARKER':
         formatting.string_constant(LINE_COMMENT_MARKER),
         'ACT_INTERPRETER':
         formatting.syntax_element(
             syntax_elements.ACT_INTERPRETER_SYNTAX_ELEMENT.singular_name),
     })
예제 #3
0
def all_strings() -> Tuple[BuiltinSymbol, ...]:
    return (
        BuiltinSymbol(
            OS_LINE_SEP,
            ValueType.STRING,
            string_sdvs.str_constant(os.linesep),
            CustomSymbolDocumentation(
                "The {plain_string} that separates text lines on the {current_os} ({NL}, {WIN_LINE_SEP}, e.g.)."
                .format(
                    NL=misc_texts.NEW_LINE_STRING_CONSTANT,
                    WIN_LINE_SEP=formatting.string_constant('\\r\\n'),
                    current_os=misc_texts.CURRENT_OS,
                    plain_string=misc_texts.PLAIN_STRING,
                ),
                SectionContents.empty(),
            ),
        ),
        BuiltinSymbol(
            NEW_LINE,
            ValueType.STRING,
            string_sdvs.str_constant('\n'),
            CustomSymbolDocumentation(
                "The new-line character ({NL}), the line separator of {string:s} handled by {program_name}"
                .format(
                    NL=misc_texts.NEW_LINE_STRING_CONSTANT,
                    string=types.STRING_TYPE_INFO.name,
                    program_name=program_info.PROGRAM_NAME.capitalize(),
                ),
                _TP.section_contents(_NEW_LINE_DESCRIPTION),
            ),
        ),
        BuiltinSymbol(
            TAB,
            ValueType.STRING,
            string_sdvs.str_constant('\t'),
            CustomSymbolDocumentation(
                'The tab character.',
                SectionContents.empty(),
            ),
        ),
    )
예제 #4
0
파일: parse.py 프로젝트: emilkarlen/exactly
 def __init__(self):
     self._tp = TextParser({
         'MATCHER':
         _MATCHER_ARGUMENT.name,
         '_LINE_MATCHER_':
         syntax_elements.LINE_MATCHER_SYNTAX_ELEMENT.singular_name,
         'FIRST_LINE_NUMBER':
         line_matcher_type.FIRST_LINE_NUMBER,
         'FIRST_LINE_NUMBER_DESCRIPTION':
         line_matcher_type.FIRST_LINE_NUMBER_DESCRIPTION,
         'LINE_SEPARATOR_DESCRIPTION':
         line_matcher_type.LINE_SEPARATOR_DESCRIPTION,
         'RANGE':
         names.RANGE_EXPR_SED_NAME,
         'INT':
         syntax_elements.INTEGER_SYNTAX_ELEMENT.singular_name,
         'RANGE_LIMIT_SEPARATOR':
         formatting.string_constant(_RANGE_LIMIT_SEPARATOR),
         'Note':
         headers.NOTE_LINE_HEADER,
     })
예제 #5
0
파일: setup.py 프로젝트: emilkarlen/exactly
_REGEX_ARGUMENT = syntax_elements.REGEX_SYNTAX_ELEMENT.argument

_REPLACEMENT_ARGUMENT = a.Named(types.STRING_TYPE_INFO.syntax_element_name)
_MISSING_REPLACEMENT_ARGUMENT_ERR_MSG = 'Missing ' + _REPLACEMENT_ARGUMENT.name

_PARSE_REPLACEMENT_CONFIGURATION = parse_string.Configuration('REPLACEMENT')

_TEXT_PARSER = TextParser({
    'preserve_new_lines_option': formatting.argument_option(names.PRESERVE_NEW_LINES_OPTION_NAME),
    '_REG_EX_': _REGEX_ARGUMENT.name,
    '_STRING_': _REPLACEMENT_ARGUMENT.name,
    'plain_string': misc_texts.PLAIN_STRING,
    'LINES_SELECTOR_MATCHER': names.LINES_SELECTION_OPTION.argument,
    'line_matcher_model': matcher_model.LINE_MATCHER_MODEL,
    'Note': headers.NOTE_LINE_HEADER,
    'NL': formatting.string_constant('\\n'),
    'LINES_ARE_SEPARATED_BY_NEW_LINE': misc_texts.LINES_ARE_SEPARATED_BY_NEW_LINE,
})

_DESCRIPTION = """\
Replaces every {plain_string} matching {_REG_EX_} (on a single line) with {_STRING_}.


Backslash escapes in {_STRING_} are processed.
That is, \\n is converted to a single newline character, \\r is converted to a carriage return, and so forth.


Unknown escapes such as \\& are left alone.


Back-references, such as \\6, are replaced with the sub{plain_string} matched by group 6 in {_REG_EX_}.
예제 #6
0
 def __init__(self):
     super().__init__(FILE_INTERPRETER_ACTOR)
     self._tp = TextParser({
         'shell_syntax_concept': formatting.concept_(concepts.SHELL_SYNTAX_CONCEPT_INFO),
         'LINE_COMMENT_MARKER': formatting.string_constant(LINE_COMMENT_MARKER),
     })
예제 #7
0
"""

_SPACE_SEPARATION_PARAGRAPH = 'All parts must be separated by {whitespace}.'

_TP = TextParser({
    'FILE_NAME':
    syntax.FILE_NAME.name,
    'FILE_SPEC':
    syntax.FILE_SPEC__SE_STR,
    'MODIFIERS':
    english_text.and_sequence([
        formatting.keyword(token)
        for token in syntax.MODIFICATION_VARIANT_TOKENS.values()
    ]),
    'parent_dir':
    formatting.string_constant('..'),
    'posix_syntax':
    documentation_text.POSIX_SYNTAX,
    'SPACE_SEPARATION_PARAGRAPH':
    _SPACE_SEPARATION_PARAGRAPH.format(whitespace=misc_texts.WHITESPACE),
    'dir_file_type':
    file_types.DIRECTORY,
    'regular_file_type':
    file_types.REGULAR,
    'regular_contents_type':
    syntax_elements.STRING_SOURCE_SYNTAX_ELEMENT.singular_name,
    'dir_contents_type':
    syntax_elements.FILES_SOURCE_SYNTAX_ELEMENT.singular_name,
})

_FILE_SPEC_RENDERING_ENV = FileSpecRenderingEnvironment(
예제 #8
0
 def __init__(self):
     super().__init__(COMMAND_LINE_ACTOR)
     self._tp = TextParser({
         'phase': phase_names.PHASE_NAME_DICTIONARY,
         'LINE_COMMENT_MARKER': formatting.string_constant(LINE_COMMENT_MARKER),
     })
예제 #9
0
    name.an_name(name.name_with_plural_s('exit identifier')))

EXIT_CODE = misc_name_with_formatting(
    name.an_name(name.name_with_plural_s('exit code')))
EXIT_CODE_TITLE = EXIT_CODE.singular.capitalize()

STDOUT = 'stdout'
STDERR = 'stderr'
STDIN = 'stdin'

OS_PROCESS_NAME = misc_name_with_formatting(
    name.an_name(name.Name('OS process', 'OS processes')))

CURRENT_OS = 'current OS'

NEW_LINE_STRING_CONSTANT = formatting.string_constant('\\n')

LINES_ARE_SEPARATED_BY_NEW_LINE = 'Lines are separated by {}, regardless of the {}.'.format(
    NEW_LINE_STRING_CONSTANT,
    CURRENT_OS,
)

EXECUTABLE_FILE = name.an_name(name.name_with_plural_s('executable file'))
EXTERNAL_PROGRAM = misc_name_with_formatting(
    name.an_name(name.name_with_plural_s('external program')))
SHELL_COMMAND = name.a_name(name.name_with_plural_s('shell command'))
SHELL_COMMAND_LINE = name.a_name(name.name_with_plural_s('shell command line'))
SYSTEM_COMMAND_LINE = name.a_name(name.name_with_plural_s('COMMAND-LINE'))
IS_A_SHELL_CMD = ' '.join(
    ('is a', SHELL_COMMAND.singular,
     '(with optional arguments), using Unix shell syntax.'))