Skip to content

Commit

Permalink
Refactor the SCSS Generator
Browse files Browse the repository at this point in the history
  • Loading branch information
christianromeni committed Apr 21, 2016
1 parent d0dec4a commit f49adc9
Showing 1 changed file with 96 additions and 105 deletions.
201 changes: 96 additions & 105 deletions classes/SCSSGenerator.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,117 +20,108 @@ public function create_scss($value, $dc)
$scssTemplate = new \Contao\File('system/modules/c-customarticles/assets/placeholder.scss');
$scssFinalFile = new \Contao\File('system/modules/c-customarticles/assets/final.scss');

$default = array(
'Grid' => array('XS' => '100', 'SM' => '768', 'MD' => '992', 'LG' => '1200', 'VLG' => '1600'),
'GridUnit' => array('XS' => '%', 'SM' => 'px', 'MD' => 'px', 'LG' => 'px', 'VLG' => 'px'),
'Width' => array('XS' => '100', 'SM' => '750', 'MD' => '970', 'LG' => '1170', 'VLG' => '1440'),
'WidthUnit' => array('XS' => '%', 'SM' => 'px', 'MD' => 'px', 'LG' => 'px', 'VLG' => 'px'),
'PaddingTop' => array('XS' => '25', 'SM' => '30', 'MD' => '45', 'LG' => '50', 'VLG' => '60'),
'PaddingTopUnit' => array('XS' => 'px', 'SM' => 'px', 'MD' => 'px', 'LG' => 'px', 'VLG' => 'px'),
'PaddingBottom' => array('XS' => '25', 'SM' => '30', 'MD' => '45', 'LG' => '50', 'VLG' => '60'),
'PaddingBottomUnit' => array('XS' => 'px', 'SM' => 'px', 'MD' => 'px', 'LG' => 'px', 'VLG' => 'px'),
);

$scss = $scssTemplate->getContent();

$gridSMvar = is_array($dc->activeRecord->gridSM) ? $dc->activeRecord->gridSM : deserialize($dc->activeRecord->gridSM);
$gridMDvar = is_array($dc->activeRecord->gridMD) ? $dc->activeRecord->gridMD : deserialize($dc->activeRecord->gridMD);
$gridLGvar = is_array($dc->activeRecord->gridLG) ? $dc->activeRecord->gridLG : deserialize($dc->activeRecord->gridLG);
$gridVLGvar = is_array($dc->activeRecord->gridVLG) ? $dc->activeRecord->gridVLG : deserialize($dc->activeRecord->gridVLG);

$widthSMvar = is_array($dc->activeRecord->widthSM) ? $dc->activeRecord->widthSM : deserialize($dc->activeRecord->widthSM);
$widthMDvar = is_array($dc->activeRecord->widthMD) ? $dc->activeRecord->widthMD : deserialize($dc->activeRecord->widthMD);
$widthLGvar = is_array($dc->activeRecord->widthLG) ? $dc->activeRecord->widthLG : deserialize($dc->activeRecord->widthLG);
$widthVLGvar = is_array($dc->activeRecord->widthVLG) ? $dc->activeRecord->widthVLG : deserialize($dc->activeRecord->widthVLG);

$paddingTopXSvar = is_array($dc->activeRecord->paddingTopXS) ? $dc->activeRecord->paddingTopXS : deserialize($dc->activeRecord->paddingTopXS);
$paddingTopSMvar = is_array($dc->activeRecord->paddingTopSM) ? $dc->activeRecord->paddingTopSM : deserialize($dc->activeRecord->paddingTopSM);
$paddingTopMDvar = is_array($dc->activeRecord->paddingTopMD) ? $dc->activeRecord->paddingTopMD : deserialize($dc->activeRecord->paddingTopMD);
$paddingTopLGvar = is_array($dc->activeRecord->paddingTopLG) ? $dc->activeRecord->paddingTopLG : deserialize($dc->activeRecord->paddingTopLG);
$paddingTopVLGvar = is_array($dc->activeRecord->paddingTopVLG) ? $dc->activeRecord->paddingTopVLG : deserialize($dc->activeRecord->paddingTopVLG);

$paddingBottomXSvar = is_array($dc->activeRecord->paddingBottomXS) ? $dc->activeRecord->paddingBottomXS : deserialize($dc->activeRecord->paddingBottomXS);
$paddingBottomSMvar = is_array($dc->activeRecord->paddingBottomSM) ? $dc->activeRecord->paddingBottomSM : deserialize($dc->activeRecord->paddingBottomSM);
$paddingBottomMDvar = is_array($dc->activeRecord->paddingBottomMD) ? $dc->activeRecord->paddingBottomMD : deserialize($dc->activeRecord->paddingBottomMD);
$paddingBottomLGvar = is_array($dc->activeRecord->paddingBottomLG) ? $dc->activeRecord->paddingBottomLG : deserialize($dc->activeRecord->paddingBottomLG);
$paddingBottomVLGvar = is_array($dc->activeRecord->paddingBottomVLG) ? $dc->activeRecord->paddingBottomVLG : deserialize($dc->activeRecord->paddingBottomVLG);

$gridXS = '100';
$gridSM = empty($gridSMvar['value']) ? '768' : $gridSMvar['value'];
$gridMD = empty($gridMDvar['value']) ? '992' : $gridMDvar['value'];
$gridLG = empty($gridLGvar['value']) ? '1200' : $gridLGvar['value'];
$gridVLG = empty($gridVLGvar['value']) ? '1600' : $gridVLGvar['value'];

$unitGridXS = '%';
$unitGridSM = empty($gridSMvar['unit']) ? 'px' : $gridSMvar['unit'];
$unitGridMD = empty($gridMDvar['unit']) ? 'px' : $gridMDvar['unit'];
$unitGridLG = empty($gridLGvar['unit']) ? 'px' : $gridLGvar['unit'];
$unitGridVLG = empty($gridVLGvar['unit']) ? 'px' : $gridVLGvar['unit'];

$unitWidthXS = '%';
$unitWidthSM = empty($widthSMvar['unit']) ? 'px' : $widthSMvar['unit'];
$unitWidthMD = empty($widthMDvar['unit']) ? 'px' : $widthMDvar['unit'];
$unitWidthLG = empty($widthLGvar['unit']) ? 'px' : $widthLGvar['unit'];
$unitWidthVLG = empty($widthVLGvar['unit']) ? 'px' : $widthVLGvar['unit'];

$unitPadingTopXS = empty($paddingTopXSvar['unit']) ? 'px' : $paddingTopXSvar['unit'];
$unitPadingTopSM = empty($paddingTopSMvar['unit']) ? 'px' : $paddingTopSMvar['unit'];
$unitPadingTopMD = empty($paddingTopMDvar['unit']) ? 'px' : $paddingTopMDvar['unit'];
$unitPadingTopLG = empty($paddingTopLGvar['unit']) ? 'px' : $paddingTopLGvar['unit'];
$unitPadingTopVLG = empty($paddingTopVLGvar['unit']) ? 'px' : $paddingTopVLGvar['unit'];

$unitPadingBottomXS = empty($paddingBottomXSvar['unit']) ? 'px' : $paddingBottomXSvar['unit'];
$unitPadingBottomSM = empty($paddingBottomSMvar['unit']) ? 'px' : $paddingBottomSMvar['unit'];
$unitPadingBottomMD = empty($paddingBottomMDvar['unit']) ? 'px' : $paddingBottomMDvar['unit'];
$unitPadingBottomLG = empty($paddingBottomLGvar['unit']) ? 'px' : $paddingBottomLGvar['unit'];
$unitPadingBottomVLG = empty($paddingBottomVLGvar['unit']) ? 'px' : $paddingBottomVLGvar['unit'];

$gridXS1 = (int)$gridXS-1;
$gridSM1 = (int)$gridSM-1;
$gridMD1 = (int)$gridMD-1;
$gridLG1 = (int)$gridLG-1;
$gridVLG1 = (int)$gridVLG-1;

$widthXS = '100';
$widthSM = empty($widthSMvar['value']) ? '750' : $widthSMvar['value'];
$widthMD = empty($widthMDvar['value']) ? '970' : $widthMDvar['value'];
$widthLG = empty($widthLGvar['value']) ? '1170' : $widthLGvar['value'];
$widthVLG = empty($widthVLGvar['value']) ? '1440' : $widthVLGvar['value'];

$paddingTopXS = empty($paddingTopXSvar['value']) ? '25' : $paddingTopXSvar['value'];;
$paddingTopSM = empty($paddingTopSMvar['value']) ? '30' : $paddingTopSMvar['value'];
$paddingTopMD = empty($paddingTopMDvar['value']) ? '45' : $paddingTopMDvar['value'];
$paddingTopLG = empty($paddingTopLGvar['value']) ? '50' : $paddingTopLGvar['value'];
$paddingTopVLG = empty($paddingTopVLGvar['value']) ? '60' : $paddingTopVLGvar['value'];

$paddingBottomXS = empty($paddingBottomXSvar['value']) ? '25' : $paddingBottomXSvar['value'];;
$paddingBottomSM = empty($paddingBottomSMvar['value']) ? '30' : $paddingBottomSMvar['value'];
$paddingBottomMD = empty($paddingBottomMDvar['value']) ? '45' : $paddingBottomMDvar['value'];
$paddingBottomLG = empty($paddingBottomLGvar['value']) ? '50' : $paddingBottomLGvar['value'];
$paddingBottomVLG = empty($paddingBottomVLGvar['value']) ? '60' : $paddingBottomVLGvar['value'];

$scss = str_replace('[[gridXS]]', $gridXS . $unitGridXS, $scss);
$scss = str_replace('[[gridSM]]', $gridSM . $unitGridSM, $scss);
$scss = str_replace('[[gridMD]]', $gridMD . $unitGridMD, $scss);
$scss = str_replace('[[gridLG]]', $gridLG . $unitGridLG, $scss);
$scss = str_replace('[[gridVLG]]', $gridVLG . $unitGridVLG, $scss);

$scss = str_replace('[[gridXS1]]', $gridXS1 . $unitGridXS, $scss);
$scss = str_replace('[[gridSM1]]', $gridSM1 . $unitGridSM, $scss);
$scss = str_replace('[[gridMD1]]', $gridMD1 . $unitGridMD, $scss);
$scss = str_replace('[[gridLG1]]', $gridLG1 . $unitGridLG, $scss);
$scss = str_replace('[[gridVLG1]]', $gridVLG1 . $unitGridVLG, $scss);

$scss = str_replace('[[widthXS]]', $widthXS . $unitWidthXS, $scss);
$scss = str_replace('[[widthSM]]', $widthSM . $unitWidthSM, $scss);
$scss = str_replace('[[widthMD]]', $widthMD . $unitWidthMD, $scss);
$scss = str_replace('[[widthLG]]', $widthLG . $unitWidthLG, $scss);
$scss = str_replace('[[widthVLG]]', $widthVLG . $unitWidthVLG, $scss);

$scss = str_replace('[[paddingTopXS]]', $paddingTopXS . $unitPadingTopXS, $scss);
$scss = str_replace('[[paddingTopSM]]', $paddingTopSM . $unitPadingTopSM, $scss);
$scss = str_replace('[[paddingTopMD]]', $paddingTopMD . $unitPadingTopMD, $scss);
$scss = str_replace('[[paddingTopLG]]', $paddingTopLG . $unitPadingTopLG, $scss);
$scss = str_replace('[[paddingTopVLG]]', $paddingTopVLG . $unitPadingTopVLG, $scss);

$scss = str_replace('[[paddingBottomXS]]', $paddingBottomXS . $unitPadingBottomXS, $scss);
$scss = str_replace('[[paddingBottomSM]]', $paddingBottomSM . $unitPadingBottomSM, $scss);
$scss = str_replace('[[paddingBottomMD]]', $paddingBottomMD . $unitPadingBottomMD, $scss);
$scss = str_replace('[[paddingBottomLG]]', $paddingBottomLG . $unitPadingBottomLG, $scss);
$scss = str_replace('[[paddingBottomVLG]]', $paddingBottomVLG . $unitPadingBottomVLG, $scss);
$scss = $this->split_and_fix(
'XS',
$scss,
$dc->activeRecord->gridXS,
$dc->activeRecord->widthXS,
$dc->activeRecord->paddingTopXS,
$dc->activeRecord->paddingBottomXS,
$default
);

$scss = $this->split_and_fix(
'SM',
$scss,
$dc->activeRecord->gridSM,
$dc->activeRecord->widthSM,
$dc->activeRecord->paddingTopSM,
$dc->activeRecord->paddingBottomSM,
$default
);

$scss = $this->split_and_fix(
'MD',
$scss,
$dc->activeRecord->gridMD,
$dc->activeRecord->widthMD,
$dc->activeRecord->paddingTopMD,
$dc->activeRecord->paddingBottomMD,
$default
);

$scss = $this->split_and_fix(
'LG',
$scss,
$dc->activeRecord->gridLG,
$dc->activeRecord->widthLG,
$dc->activeRecord->paddingTopLG,
$dc->activeRecord->paddingBottomLG,
$default
);

$scss = $this->split_and_fix(
'VLG',
$scss,
$dc->activeRecord->gridVLG,
$dc->activeRecord->widthVLG,
$dc->activeRecord->paddingTopVLG,
$dc->activeRecord->paddingBottomVLG,
$default
);

$scssFinalFile->write($scss);
$scssFinalFile->close();

return $value;
}

public function split_and_fix($size,$scss,$grid,$width,$paddingTop,$paddingBottom,$default){
if($size == 'XS'){
$grid = '100';
$unitGrid = '%';
$width = '100';
$unitWidth = '%';
}
else {
$gridvar = is_array($grid) ? $grid : deserialize($grid);
$widthvar = is_array($width) ? $width : deserialize($width);
$paddingTopvar = is_array($paddingTop) ? $paddingTop : deserialize($paddingTop);
$paddingBottomXSvar = is_array($paddingBottom) ? $paddingBottom : deserialize($paddingBottom);

$grid = empty($gridvar['value']) ? $default['Grid'][$size] : $gridvar['value'];
$unitGrid = empty($gridvar['unit']) ? $default['GridUnit'][$size] : $gridvar['unit'];

$width = empty($widthvar['value']) ? $default['Width'][$size] : $widthvar['value'];
$unitWidth = empty($widthvar['unit']) ? $default['WidthUnit'][$size] : $widthvar['unit'];
}

$paddingTop = empty($paddingTopvar['value']) ? $default['PaddingTop'][$size] : $paddingTopvar['value'];
$unitPadingTop = empty($paddingTopvar['unit']) ? $default['PaddingTopUnit'][$size] : $paddingTopvar['unit'];
$paddingBottom = empty($paddingBottomvar['value']) ? $default['PaddingBottom'][$size] : $paddingBottomvar['value'];
$unitPadingBottom = empty($paddingBottomvar['unit']) ? $default['PaddingBottomUnit'][$size] : $paddingBottomvar['unit'];

$grid1 = (int)$grid-1;

$scss = str_replace('[[grid'.$size.']]', $grid . $unitGrid, $scss);
$scss = str_replace('[[grid'.$size.'1]]', $grid1 . $unitGrid, $scss);
$scss = str_replace('[[width'.$size.']]', $width . $unitWidth, $scss);
$scss = str_replace('[[paddingTop'.$size.']]', $paddingTop . $unitPadingTop, $scss);
$scss = str_replace('[[paddingBottom'.$size.']]', $paddingBottom . $unitPadingBottom, $scss);

return $scss;
}
}

0 comments on commit f49adc9

Please sign in to comment.