Skip to content

Commit 75462fb

Browse files
authored
Merge pull request #148 from viest/dev
Feat: border
2 parents 1636ca9 + 174c378 commit 75462fb

File tree

2 files changed

+77
-0
lines changed

2 files changed

+77
-0
lines changed

kernel/format.c

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,10 @@ ZEND_BEGIN_ARG_INFO_EX(format_background_arginfo, 0, 0, 2)
8383
ZEND_ARG_INFO(0, pattern)
8484
ZEND_ARG_INFO(0, color)
8585
ZEND_END_ARG_INFO()
86+
87+
ZEND_BEGIN_ARG_INFO_EX(format_border_arginfo, 0, 0, 1)
88+
ZEND_ARG_INFO(0, style)
89+
ZEND_END_ARG_INFO()
8690
/* }}} */
8791

8892
/** {{{ \Vtiful\Kernel\Format::__construct()
@@ -295,6 +299,26 @@ PHP_METHOD(vtiful_format, wrap)
295299
}
296300
/* }}} */
297301

302+
/** {{{ \Vtiful\Kernel\Format::toResource()
303+
*/
304+
PHP_METHOD(vtiful_format, border)
305+
{
306+
zend_long style;
307+
308+
ZEND_PARSE_PARAMETERS_START(1, 1)
309+
Z_PARAM_LONG(style)
310+
ZEND_PARSE_PARAMETERS_END();
311+
312+
ZVAL_COPY(return_value, getThis());
313+
314+
format_object *obj = Z_FORMAT_P(getThis());
315+
316+
if (obj->ptr.format) {
317+
format_set_border(obj->ptr.format, style);
318+
}
319+
}
320+
/* }}} */
321+
298322
/** {{{ \Vtiful\Kernel\Format::toResource()
299323
*/
300324
PHP_METHOD(vtiful_format, toResource)
@@ -313,6 +337,7 @@ zend_function_entry format_methods[] = {
313337
PHP_ME(vtiful_format, wrap, NULL, ZEND_ACC_PUBLIC)
314338
PHP_ME(vtiful_format, bold, NULL, ZEND_ACC_PUBLIC)
315339
PHP_ME(vtiful_format, italic, NULL, ZEND_ACC_PUBLIC)
340+
PHP_ME(vtiful_format, border, format_border_arginfo, ZEND_ACC_PUBLIC)
316341
PHP_ME(vtiful_format, align, format_align_arginfo, ZEND_ACC_PUBLIC)
317342
PHP_ME(vtiful_format, number, format_number_arginfo, ZEND_ACC_PUBLIC)
318343
PHP_ME(vtiful_format, fontColor, format_color_arginfo, ZEND_ACC_PUBLIC)
@@ -393,6 +418,20 @@ VTIFUL_STARTUP_FUNCTION(format) {
393418
REGISTER_CLASS_CONST_LONG(vtiful_format_ce, "PATTERN_GRAY_125", LXW_PATTERN_GRAY_125)
394419
REGISTER_CLASS_CONST_LONG(vtiful_format_ce, "PATTERN_GRAY_0625", LXW_PATTERN_GRAY_0625)
395420

421+
REGISTER_CLASS_CONST_LONG(vtiful_format_ce, "BORDER_THIN", LXW_BORDER_THIN)
422+
REGISTER_CLASS_CONST_LONG(vtiful_format_ce, "BORDER_MEDIUM", LXW_BORDER_MEDIUM)
423+
REGISTER_CLASS_CONST_LONG(vtiful_format_ce, "BORDER_DASHED", LXW_BORDER_DASHED)
424+
REGISTER_CLASS_CONST_LONG(vtiful_format_ce, "BORDER_DOTTED", LXW_BORDER_DOTTED)
425+
REGISTER_CLASS_CONST_LONG(vtiful_format_ce, "BORDER_THICK", LXW_BORDER_THICK)
426+
REGISTER_CLASS_CONST_LONG(vtiful_format_ce, "BORDER_DOUBLE", LXW_BORDER_DOUBLE)
427+
REGISTER_CLASS_CONST_LONG(vtiful_format_ce, "BORDER_HAIR", LXW_BORDER_HAIR)
428+
REGISTER_CLASS_CONST_LONG(vtiful_format_ce, "BORDER_MEDIUM_DASHED", LXW_BORDER_MEDIUM_DASHED)
429+
REGISTER_CLASS_CONST_LONG(vtiful_format_ce, "BORDER_DASH_DOT", LXW_BORDER_DASH_DOT)
430+
REGISTER_CLASS_CONST_LONG(vtiful_format_ce, "BORDER_MEDIUM_DASH_DOT", LXW_BORDER_MEDIUM_DASH_DOT)
431+
REGISTER_CLASS_CONST_LONG(vtiful_format_ce, "BORDER_DASH_DOT_DOT", LXW_BORDER_DASH_DOT_DOT)
432+
REGISTER_CLASS_CONST_LONG(vtiful_format_ce, "BORDER_MEDIUM_DASH_DOT_DOT", LXW_BORDER_MEDIUM_DASH_DOT_DOT)
433+
REGISTER_CLASS_CONST_LONG(vtiful_format_ce, "BORDER_SLANT_DASH_DOT", LXW_BORDER_SLANT_DASH_DOT)
434+
396435
return SUCCESS;
397436
}
398437
/* }}} */

tests/format_border.phpt

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
--TEST--
2+
Check for vtiful presence
3+
--SKIPIF--
4+
<?php if (!extension_loaded("xlswriter")) print "skip"; ?>
5+
--FILE--
6+
<?php
7+
$config = ['path' => './tests'];
8+
9+
$fileObject = new \Vtiful\Kernel\Excel($config);
10+
11+
$fileObject = $fileObject->fileName('tutorial.xlsx');
12+
$fileHandle = $fileObject->getHandle();
13+
14+
$data = [
15+
['viest1', 21, 100, "A"],
16+
['viest2', 20, 80, "B"],
17+
['viest3', 22, 70, "C"],
18+
];
19+
20+
$format = new \Vtiful\Kernel\Format($fileHandle);
21+
22+
$borderStyle = $format
23+
->border(\Vtiful\Kernel\Format::BORDER_THIN)
24+
->toResource();
25+
26+
$filePath = $fileObject->header(['name', 'age', 'score', 'level'])
27+
->data($data)
28+
->setRow('A1', 20, $borderStyle)
29+
->output();
30+
31+
var_dump($filePath);
32+
?>
33+
--CLEAN--
34+
<?php
35+
@unlink(__DIR__ . '/tutorial.xlsx');
36+
?>
37+
--EXPECT--
38+
string(21) "./tests/tutorial.xlsx"

0 commit comments

Comments
 (0)