Skip to content

io

Module for handling the IO used by the compiler.

Classes:

  • ArxBuffer

    ArxBuffer gathers function for handle the system buffer.

  • ArxFile

    ArxFile gathers function to handle files.

  • ArxIO

    Arx class for Input and Output operations.

ArxBuffer

ArxBuffer()

ArxBuffer gathers function for handle the system buffer.

Methods:

  • clean

    Clean the buffer content.

  • read

    Read the buffer content.

  • write

    Write the given text to the buffer.

Source code in src/arx/io.py
14
15
16
def __init__(self) -> None:
    """Initialize ArxBuffer instance."""
    self.clean()

clean

clean() -> None

Clean the buffer content.

Source code in src/arx/io.py
18
19
20
21
def clean(self) -> None:
    """Clean the buffer content."""
    self.position = 0
    self.buffer = ""

read

read() -> str

Read the buffer content.

Source code in src/arx/io.py
28
29
30
31
32
33
34
35
def read(self) -> str:
    """Read the buffer content."""
    try:
        i = self.position
        self.position += 1
        return self.buffer[i]
    except IndexError:
        return ""

write

write(text: str) -> None

Write the given text to the buffer.

Source code in src/arx/io.py
23
24
25
26
def write(self, text: str) -> None:
    """Write the given text to the buffer."""
    self.buffer += text
    self.position = 0

ArxFile

ArxFile gathers function to handle files.

Methods:

create_tmp_file staticmethod

create_tmp_file(content: str) -> str

Create a temporary file with the given content.

Parameters:

  • content (str) –

    The content of the temporary file.

Returns:

  • str

    The name of the created temporary file.

Source code in src/arx/io.py
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
@staticmethod
def create_tmp_file(content: str) -> str:
    """
    Create a temporary file with the given content.

    Parameters
    ----------
    content : str
        The content of the temporary file.

    Returns
    -------
    str
        The name of the created temporary file.
    """
    # Create a temporary file.
    with tempfile.NamedTemporaryFile(delete=False) as tmpfile:
        tmpfile.write(content.encode())

    # Rename the temporary file with the .cpp extension.
    filename = tmpfile.name
    filename_ext = filename + ".cpp"
    os.rename(filename, filename_ext)

    return filename_ext

delete_file staticmethod

delete_file(filename: str) -> int

Delete the specified file.

Parameters:

  • filename (str) –

    The name of the file to be deleted.

Returns:

  • int

    Returns 0 on success, or -1 on failure.

Source code in src/arx/io.py
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
@staticmethod
def delete_file(filename: str) -> int:
    """
    Delete the specified file.

    Parameters
    ----------
    filename : str
        The name of the file to be deleted.

    Returns
    -------
    int
        Returns 0 on success, or -1 on failure.
    """
    try:
        os.remove(filename)
        return 0
    except OSError:
        return -1

ArxIO

Arx class for Input and Output operations.

Methods:

file_to_buffer classmethod

file_to_buffer(filename: str) -> None

Copy the file content to the buffer.

Parameters:

  • filename (str) –

    The name of the file to be copied to the buffer.

Source code in src/arx/io.py
60
61
62
63
64
65
66
67
68
69
70
71
72
73
@classmethod
def file_to_buffer(cls, filename: str) -> None:
    """
    Copy the file content to the buffer.

    Parameters
    ----------
    filename : str
        The name of the file to be copied to the buffer.
    """
    with open(filename, "r") as arxfile:
        cls.buffer.clean()
        for line in arxfile:
            cls.buffer.write(line + "\n")

get_char classmethod

get_char() -> str

Get a char from the buffer or from the default input.

Returns:

  • str

    A char from the buffer.

Source code in src/arx/io.py
46
47
48
49
50
51
52
53
54
55
56
57
58
@classmethod
def get_char(cls) -> str:
    """
    Get a char from the buffer or from the default input.

    Returns
    -------
    str
        A char from the buffer.
    """
    if cls.INPUT_FROM_STDIN:
        return sys.stdin.read(1)
    return cls.buffer.read()

load_input_to_buffer classmethod

load_input_to_buffer() -> None

Load the content file or the standard input to the buffer.

Source code in src/arx/io.py
88
89
90
91
92
93
94
95
96
97
98
@classmethod
def load_input_to_buffer(cls) -> None:
    """Load the content file or the standard input to the buffer."""
    if cls.INPUT_FILE:
        input_file_path = os.path.abspath(cls.INPUT_FILE)
        cls.file_to_buffer(input_file_path)
        return

    file_content = sys.stdin.read().strip()
    if file_content:
        cls.string_to_buffer(file_content)

string_to_buffer classmethod

string_to_buffer(value: str) -> None

Copy the given string to the buffer.

Parameters:

  • value (str) –

    The string to be copied to the buffer.

Source code in src/arx/io.py
75
76
77
78
79
80
81
82
83
84
85
86
@classmethod
def string_to_buffer(cls, value: str) -> None:
    """
    Copy the given string to the buffer.

    Parameters
    ----------
    value : str
        The string to be copied to the buffer.
    """
    cls.buffer.clean()
    cls.buffer.write(value)