Skip to content

Commit

Permalink
Allow standard-institution to have sub_category field (#38)
Browse files Browse the repository at this point in the history
  • Loading branch information
tohuynh committed Aug 20, 2021
1 parent 0707bf4 commit 131a8dd
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@
VariableType,
)
from . import exceptions
from .constants import GoogleSheetsFormat as gs_format, MetaDataField
from .utils import FormattedSheetData, SheetData
from .constants import GoogleSheetsFormat as gs_format
from .constants import MetaDataField
from .utils import FormattedSheetData, SheetData, create_institution_sub_category

###############################################################################

Expand Down Expand Up @@ -94,12 +95,9 @@ def _get_multilple_sigla_answer_variable(
InstitutionField.category: sheet_data.meta_data.get(
InstitutionField.category
),
InstitutionField.sub_category: [
" ".join(sub_cat.strip().split())
for sub_cat in sheet_data.meta_data.get(InstitutionField.sub_category)
.strip()
.split(";")
],
InstitutionField.sub_category: create_institution_sub_category(
sheet_data.meta_data.get(InstitutionField.sub_category)
),
"childs": [
{
VariableField.heading: variable_row[0],
Expand Down Expand Up @@ -149,6 +147,9 @@ def _get_standard_institution(
InstitutionField.category: sheet_data.meta_data.get(
InstitutionField.category
),
InstitutionField.sub_category: create_institution_sub_category(
sheet_data.meta_data.get(InstitutionField.sub_category)
),
"childs": [
{
VariableField.heading: variable_row[0],
Expand Down
18 changes: 18 additions & 0 deletions siglatools/institution_extracters/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,3 +118,21 @@ def convert_col_to_name(col: int) -> str:
col_num = int((col_num - 1) / 26)

return col_str


def create_institution_sub_category(sub_categories: str) -> List[str]:
"""
Create a list of institution sub categories.
Parameters
----------
sub_categories: str
The list of sub categories, separated by ;.
Returns
-------
sub_categories_list: List[str]
The list of sub categories.
"""
if not sub_categories:
return []
return [" ".join(sub_cat.strip().split()) for sub_cat in sub_categories.split(";")]
17 changes: 17 additions & 0 deletions siglatools/tests/institution_extracters/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from siglatools.institution_extracters.utils import (
convert_col_to_name,
convert_rowcol_to_A1_name,
create_institution_sub_category,
)


Expand Down Expand Up @@ -54,3 +55,19 @@ def test_convert_col_to_name(col, expected):
)
def test_convert_rowcol_to_A1_name(row, col, expected):
assert convert_rowcol_to_A1_name(row, col) == expected


@pytest.mark.parametrize(
"sub_categories, expected",
[
(None, []),
("", []),
("a", ["a"]),
("a;b", ["a", "b"]),
(" a ; b ", ["a", "b"]),
("a; b c", ["a", "b c"]),
("a; b c;d", ["a", "b c", "d"]),
],
)
def test_create_institution_sub_category(sub_categories, expected):
assert create_institution_sub_category(sub_categories) == expected

0 comments on commit 131a8dd

Please sign in to comment.