Skip to content

Commit 7a6b9fa

Browse files
committed
Feature: Basic configuration writer
1 parent cbfc347 commit 7a6b9fa

2 files changed

Lines changed: 33 additions & 1 deletion

File tree

flamapy/metamodels/configuration_metamodel/transformations/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
from .uvls_json_reader import UVLSJSONReader # pylint: disable=cyclic
44
from .configuration_json_writer import ConfigurationJSONWriter # pylint: disable=cyclic-import
55
from .uvls_json_writer import UVLSJSONWriter # pylint: disable=cyclic
6+
from .configuration_basic_writer import ConfigurationBasicWriter # pylint: disable=cyclic-import
67

78

89
__all__ = ['ConfigurationBasicReader',
910
'ConfigurationJSONReader',
1011
'UVLSJSONReader',
1112
'ConfigurationJSONWriter',
12-
'UVLSJSONWriter']
13+
'UVLSJSONWriter',
14+
'ConfigurationBasicWriter']
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import io
2+
import csv
3+
from typing import cast
4+
5+
from flamapy.core.transformations.model_to_text import ModelToText
6+
from flamapy.core.models import VariabilityModel
7+
8+
from flamapy.metamodels.configuration_metamodel.models.configuration import Configuration
9+
10+
11+
class ConfigurationBasicWriter(ModelToText):
12+
13+
@staticmethod
14+
def get_destination_extension() -> str:
15+
return 'csvconf'
16+
17+
def __init__(self, path: str, source_model: VariabilityModel) -> None:
18+
self._path: str = path
19+
self._configuration: Configuration = cast(Configuration, source_model)
20+
21+
def transform(self) -> str:
22+
output = io.StringIO()
23+
writer = csv.writer(output)
24+
for key, value in self._configuration.elements.items():
25+
writer.writerow([key, value])
26+
csv_content = output.getvalue()
27+
output.close()
28+
with open(self._path, 'w', newline='', encoding='utf-8') as file:
29+
file.write(csv_content)
30+
return csv_content

0 commit comments

Comments
 (0)