Browse Source

Merge pull request #467 from viest/dev

Feat: borderOfTheFourSides and update config.m4
viest 2 năm trước cách đây
mục cha
commit
5b837e5e1e
6 tập tin đã thay đổi với 170 bổ sung41 xóa
  1. 15 14
      README.md
  2. 13 12
      README_zh.md
  3. 14 14
      config.m4
  4. 36 1
      kernel/format.c
  5. 46 0
      tests/format_border_of_the_four_sides_1.phpt
  6. 46 0
      tests/format_border_of_the_four_sides_2.phpt

+ 15 - 14
README.md

@@ -1,28 +1,29 @@
 <div align=center>
-<img height="214" src="resource/logo_now.png"/>
+<img alt="php-ext-xlswriter" height="214" src="resource/logo_now.png"/>
 </div>
 
 <div align=center>
-<a href="https://github.com/viest/php-ext-xlswriter/releases"><img src="https://img.shields.io/github/release/viest/php-ext-excel-export.svg"/></a>
+<a href="https://github.com/viest/php-ext-xlswriter/releases"><img alt="php-ext-xlswriter" src="https://img.shields.io/github/release/viest/php-ext-excel-export.svg"/></a>
 </div>
 
 <div align=center>
-<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/badge/platform-macos%20%7C%20linux%20%7C%20windows-brightgreen.svg"/></a>
+<a href="https://github.com/viest/php-ext-xlswriter"><img alt="php-ext-xlswriter" src="https://img.shields.io/badge/platform-macos%20%7C%20linux%20%7C%20windows-brightgreen.svg"/></a>
 </div>
 
 <div align=center>
-<a href="https://github.com/viest/php-ext-xlswriter/actions/workflows/main.yml?query=branch%3Amaster"><img src="https://img.shields.io/github/workflow/status/viest/php-ext-xlswriter/php-ext-xlswriter/master"></a>
-<a href="https://ci.appveyor.com/project/viest/php-ext-excel-export/branch/master"><img src="https://ci.appveyor.com/api/projects/status/w4cfjo9e4gsrs6rn/branch/master?svg=true"/></a>
-<a href="https://app.fossa.io/projects/git%2Bgithub.com%2Fviest%2Fphp-ext-xlswriter?ref=badge_shield"><img src="https://app.fossa.io/api/projects/git%2Bgithub.com%2Fviest%2Fphp-ext-xlswriter.svg?type=shield"/></a>
+<a href="https://github.com/viest/php-ext-xlswriter/actions"><img alt="php-ext-xlswriter" src="https://img.shields.io/github/actions/workflow/status/viest/php-ext-xlswriter/main.yml?branch=master&logo=github"></a>
+<a href="https://travis-ci.com/viest/php-ext-xlswriter"><img alt="php-ext-xlswriter" src="https://travis-ci.com/viest/php-ext-xlswriter.svg?branch=master"/></a>
+<a href="https://ci.appveyor.com/project/viest/php-ext-excel-export/branch/master"><img alt="php-ext-xlswriter" src="https://ci.appveyor.com/api/projects/status/w4cfjo9e4gsrs6rn/branch/master?svg=true"/></a>
+<a href="https://app.fossa.io/projects/git%2Bgithub.com%2Fviest%2Fphp-ext-xlswriter?ref=badge_shield"><img alt="php-ext-xlswriter" src="https://app.fossa.io/api/projects/git%2Bgithub.com%2Fviest%2Fphp-ext-xlswriter.svg?type=shield"/></a>
 </div>
 
 <div align=center>
-<a href="https://opencollective.com/php-ext-xlswriter"><img src="https://opencollective.com/php-ext-xlswriter/all/badge.svg?label=financial+contributors"/></a>
-<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/badge/PHP-%3E%3D%207.0-brightgreen.svg"/></a>
-<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/github/contributors/viest/php-ext-excel-export.svg"/></a>
-<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/badge/license-BSD-green.svg"/></a>
-<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/github/issues/viest/php-ext-excel-export.svg"/></a>
-<a href="https://hits.seeyoufarm.com"><img src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fviest%2Fphp-ext-xlswriter&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false"/></a>
+<a href="https://opencollective.com/php-ext-xlswriter"><img alt="php-ext-xlswriter" src="https://opencollective.com/php-ext-xlswriter/all/badge.svg?label=financial+contributors"/></a>
+<a href="https://github.com/viest/php-ext-xlswriter"><img alt="php-ext-xlswriter" src="https://img.shields.io/badge/PHP-%3E%3D%207.0-brightgreen.svg"/></a>
+<a href="https://github.com/viest/php-ext-xlswriter"><img alt="php-ext-xlswriter" src="https://img.shields.io/github/contributors/viest/php-ext-excel-export.svg"/></a>
+<a href="https://github.com/viest/php-ext-xlswriter"><img alt="php-ext-xlswriter" src="https://img.shields.io/badge/license-BSD-green.svg"/></a>
+<a href="https://github.com/viest/php-ext-xlswriter"><img alt="php-ext-xlswriter" src="https://img.shields.io/github/issues/viest/php-ext-excel-export.svg"/></a>
+<a href="https://hits.seeyoufarm.com"><img alt="php-ext-xlswriter" src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fviest%2Fphp-ext-xlswriter&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false"/></a>
 </div>
 
 ## Why use xlswriter
@@ -101,11 +102,11 @@ composer require viest/php-ext-xlswriter-ide-helper:dev-master
 
 ## Exchange group
 
-<img width="160" src="resource/qq.jpg"/>
+<img alt="php-ext-xlswriter" width="160" src="resource/qq.jpg"/>
 
 ## Financial donation
 
-<img height="220" src="resource/pay.jpg"/>
+<img alt="php-ext-xlswriter" height="220" src="resource/pay.jpg"/>
 
 ## Contributors
 

+ 13 - 12
README_zh.md

@@ -1,28 +1,29 @@
 <div align=center>
-<img height="214" src="resource/logo_now.png"/>
+<img alt="php-ext-xlswriter" height="214" src="resource/logo_now.png"/>
 </div>
 
 <div align=center>
-<a href="https://github.com/viest/php-ext-xlswriter/releases"><img src="https://img.shields.io/github/release/viest/php-ext-excel-export.svg"/></a>
+<a href="https://github.com/viest/php-ext-xlswriter/releases"><img alt="php-ext-xlswriter" src="https://img.shields.io/github/release/viest/php-ext-excel-export.svg"/></a>
 </div>
 
 <div align=center>
-<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/badge/platform-macos%20%7C%20linux%20%7C%20windows-brightgreen.svg"/></a>
+<a href="https://github.com/viest/php-ext-xlswriter"><img alt="php-ext-xlswriter" src="https://img.shields.io/badge/platform-macos%20%7C%20linux%20%7C%20windows-brightgreen.svg"/></a>
 </div>
 
 <div align=center>
-<a href="https://github.com/viest/php-ext-xlswriter/actions/workflows/main.yml?query=branch%3Amaster"><img src="https://img.shields.io/github/workflow/status/viest/php-ext-xlswriter/php-ext-xlswriter/master"></a>
-<a href="https://ci.appveyor.com/project/viest/php-ext-excel-export/branch/master"><img src="https://ci.appveyor.com/api/projects/status/w4cfjo9e4gsrs6rn/branch/master?svg=true"/></a>
-<a href="https://app.fossa.io/projects/git%2Bgithub.com%2Fviest%2Fphp-ext-xlswriter?ref=badge_shield"><img src="https://app.fossa.io/api/projects/git%2Bgithub.com%2Fviest%2Fphp-ext-xlswriter.svg?type=shield"/></a>
+<a href="https://github.com/viest/php-ext-xlswriter/actions"><img alt="php-ext-xlswriter" src="https://img.shields.io/github/actions/workflow/status/viest/php-ext-xlswriter/main.yml?branch=master&logo=github"></a>
+<a href="https://travis-ci.com/viest/php-ext-xlswriter"><img alt="php-ext-xlswriter" src="https://travis-ci.com/viest/php-ext-xlswriter.svg?branch=master"/></a>
+<a href="https://ci.appveyor.com/project/viest/php-ext-excel-export/branch/master"><img alt="php-ext-xlswriter" src="https://ci.appveyor.com/api/projects/status/w4cfjo9e4gsrs6rn/branch/master?svg=true"/></a>
+<a href="https://app.fossa.io/projects/git%2Bgithub.com%2Fviest%2Fphp-ext-xlswriter?ref=badge_shield"><img alt="php-ext-xlswriter" src="https://app.fossa.io/api/projects/git%2Bgithub.com%2Fviest%2Fphp-ext-xlswriter.svg?type=shield"/></a>
 </div>
 
 <div align=center>
-<a href="https://opencollective.com/php-ext-xlswriter"><img src="https://opencollective.com/php-ext-xlswriter/all/badge.svg?label=financial+contributors"/></a>
-<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/badge/PHP-%3E%3D%207.0-brightgreen.svg"/></a>
-<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/github/contributors/viest/php-ext-excel-export.svg"/></a>
-<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/badge/license-BSD-green.svg"/></a>
-<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/github/issues/viest/php-ext-excel-export.svg"/></a>
-<a href="https://hits.seeyoufarm.com"><img src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fviest%2Fphp-ext-xlswriter&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false"/></a>
+<a href="https://opencollective.com/php-ext-xlswriter"><img alt="php-ext-xlswriter" src="https://opencollective.com/php-ext-xlswriter/all/badge.svg?label=financial+contributors"/></a>
+<a href="https://github.com/viest/php-ext-xlswriter"><img alt="php-ext-xlswriter" src="https://img.shields.io/badge/PHP-%3E%3D%207.0-brightgreen.svg"/></a>
+<a href="https://github.com/viest/php-ext-xlswriter"><img alt="php-ext-xlswriter" src="https://img.shields.io/github/contributors/viest/php-ext-excel-export.svg"/></a>
+<a href="https://github.com/viest/php-ext-xlswriter"><img alt="php-ext-xlswriter" src="https://img.shields.io/badge/license-BSD-green.svg"/></a>
+<a href="https://github.com/viest/php-ext-xlswriter"><img alt="php-ext-xlswriter" src="https://img.shields.io/github/issues/viest/php-ext-excel-export.svg"/></a>
+<a href="https://hits.seeyoufarm.com"><img alt="php-ext-xlswriter" src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fviest%2Fphp-ext-xlswriter&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false"/></a>
 </div>
 
 ## 为什么使用xlswriter

+ 14 - 14
config.m4

@@ -113,7 +113,7 @@ if test "$PHP_XLSWRITER" != "no"; then
     else
         AC_MSG_RESULT([use the bundled library])
         xls_writer_sources="$xls_writer_sources $libxlsxwriter_sources"
-        PHP_ADD_INCLUDE([$srcdir/library/libxlsxwriter/include])
+        PHP_ADD_INCLUDE([PHP_EXT_SRCDIR/library/libxlsxwriter/include])
 
         dnl see library/CMakeLists.txt
         LIBOPT="-DNOCRYPT -DNOUNCRYPT"
@@ -150,13 +150,13 @@ if test "$PHP_XLSWRITER" != "no"; then
             AC_MSG_RESULT([use the bundled library])
 
             xls_writer_sources="$xls_writer_sources $libexpat"
-            PHP_ADD_INCLUDE([$srcdir/library/libexpat/expat/lib])
-            PHP_ADD_BUILD_DIR([$abs_builddir/library/libexpat/expat/lib])
+            PHP_ADD_INCLUDE([PHP_EXT_SRCDIR/library/libexpat/expat/lib])
+            PHP_ADD_BUILD_DIR([PHP_EXT_BUILDDIR/library/libexpat/expat/lib])
             LIBOPT="$LIBOPT -DXML_POOR_ENTROPY"
 
             xls_writer_sources="$xls_writer_sources $libxlsxio"
-            PHP_ADD_INCLUDE([$srcdir/library/libxlsxio/include])
-            PHP_ADD_BUILD_DIR([$abs_builddir/library/libxlsxio/lib])
+            PHP_ADD_INCLUDE([PHP_EXT_SRCDIR/library/libxlsxio/include])
+            PHP_ADD_BUILD_DIR([PHP_EXT_BUILDDIR/library/libxlsxio/lib])
             LIBOPT="$LIBOPT -DUSE_MINIZIP"
 
         fi
@@ -177,15 +177,15 @@ if test "$PHP_XLSWRITER" != "no"; then
 
     PHP_NEW_EXTENSION(xlswriter, $xls_writer_sources, $ext_shared,, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 $LIBOPT)
 
-    PHP_ADD_INCLUDE([$srcdir])
-    PHP_ADD_INCLUDE([$srcdir/include])
+    PHP_ADD_INCLUDE([PHP_EXT_SRCDIR])
+    PHP_ADD_INCLUDE([PHP_EXT_SRCDIR/include])
 
-    PHP_ADD_BUILD_DIR([$abs_builddir/kernel])
-    PHP_ADD_BUILD_DIR([$abs_builddir/library/libxlsxwriter/src])
-    PHP_ADD_BUILD_DIR([$abs_builddir/library/libxlsxwriter/third_party/minizip])
-    PHP_ADD_BUILD_DIR([$abs_builddir/library/libxlsxwriter/third_party/tmpfileplus])
-    PHP_ADD_BUILD_DIR([$abs_builddir/library/libxlsxwriter/third_party/md5])
+    PHP_ADD_BUILD_DIR([PHP_EXT_BUILDDIR/kernel])
+    PHP_ADD_BUILD_DIR([PHP_EXT_BUILDDIR/library/libxlsxwriter/src])
+    PHP_ADD_BUILD_DIR([PHP_EXT_BUILDDIR/library/libxlsxwriter/third_party/minizip])
+    PHP_ADD_BUILD_DIR([PHP_EXT_BUILDDIR/library/libxlsxwriter/third_party/tmpfileplus])
+    PHP_ADD_BUILD_DIR([PHP_EXT_BUILDDIR/library/libxlsxwriter/third_party/md5])
 
-    PHP_ADD_BUILD_DIR([$abs_builddir/library/libexpat/expat/lib])
-    PHP_ADD_BUILD_DIR([$abs_builddir/library/libxlsxio/lib])
+    PHP_ADD_BUILD_DIR([PHP_EXT_BUILDDIR/library/libexpat/expat/lib])
+    PHP_ADD_BUILD_DIR([PHP_EXT_BUILDDIR/library/libxlsxio/lib])
 fi

+ 36 - 1
kernel/format.c

@@ -103,6 +103,13 @@ ZEND_BEGIN_ARG_INFO_EX(format_border_arginfo, 0, 0, 1)
                 ZEND_ARG_INFO(0, style)
 ZEND_END_ARG_INFO()
 
+ZEND_BEGIN_ARG_INFO_EX(format_border_of_the_four_sides_arginfo, 0, 0, 4)
+                ZEND_ARG_INFO(0, top)
+                ZEND_ARG_INFO(0, right)
+                ZEND_ARG_INFO(0, bottom)
+                ZEND_ARG_INFO(0, left)
+ZEND_END_ARG_INFO()
+
 ZEND_BEGIN_ARG_INFO_EX(format_border_color_arginfo, 0, 0, 1)
                 ZEND_ARG_INFO(0, color)
 ZEND_END_ARG_INFO()
@@ -367,7 +374,7 @@ PHP_METHOD(vtiful_format, wrap)
 }
 /* }}} */
 
-/** {{{ \Vtiful\Kernel\Format::toResource()
+/** {{{ \Vtiful\Kernel\Format::border()
  */
 PHP_METHOD(vtiful_format, border)
 {
@@ -387,6 +394,33 @@ PHP_METHOD(vtiful_format, border)
 }
 /* }}} */
 
+/** {{{ \Vtiful\Kernel\Format::borderOfTheFourSides(int $top, int $right, int $bottom, int $left)
+ */
+PHP_METHOD(vtiful_format, borderOfTheFourSides)
+{
+    zend_long top = LXW_BORDER_NONE, right = LXW_BORDER_NONE, bottom = LXW_BORDER_NONE, left = LXW_BORDER_NONE;
+
+    ZEND_PARSE_PARAMETERS_START(0, 4)
+            Z_PARAM_OPTIONAL
+            Z_PARAM_LONG_OR_NULL(top, _dummy)
+            Z_PARAM_LONG_OR_NULL(right, _dummy)
+            Z_PARAM_LONG_OR_NULL(bottom, _dummy)
+            Z_PARAM_LONG_OR_NULL(left, _dummy)
+    ZEND_PARSE_PARAMETERS_END();
+
+    ZVAL_COPY(return_value, getThis());
+
+    format_object *obj = Z_FORMAT_P(getThis());
+
+    if (obj->ptr.format) {
+        format_set_top(obj->ptr.format, top);
+        format_set_right(obj->ptr.format, right);
+        format_set_bottom(obj->ptr.format, bottom);
+        format_set_left(obj->ptr.format, left);
+    }
+}
+/* }}} */
+
 /** {{{ \Vtiful\Kernel\Format::borderColor(int $color)
  */
 PHP_METHOD(vtiful_format, borderColor)
@@ -463,6 +497,7 @@ zend_function_entry format_methods[] = {
         PHP_ME(vtiful_format, bold,                      format_bold_arginfo,                           ZEND_ACC_PUBLIC)
         PHP_ME(vtiful_format, italic,                    format_italic_arginfo,                         ZEND_ACC_PUBLIC)
         PHP_ME(vtiful_format, border,                    format_border_arginfo,                         ZEND_ACC_PUBLIC)
+        PHP_ME(vtiful_format, borderOfTheFourSides,      format_border_of_the_four_sides_arginfo,       ZEND_ACC_PUBLIC)
         PHP_ME(vtiful_format, borderColor,               format_border_color_arginfo,                   ZEND_ACC_PUBLIC)
         PHP_ME(vtiful_format, borderColorOfTheFourSides, format_border_color_of_the_four_sides_arginfo, ZEND_ACC_PUBLIC)
         PHP_ME(vtiful_format, align,                     format_align_arginfo,                          ZEND_ACC_PUBLIC)

+ 46 - 0
tests/format_border_of_the_four_sides_1.phpt

@@ -0,0 +1,46 @@
+--TEST--
+Check for vtiful presence
+--SKIPIF--
+<?php if (!extension_loaded("xlswriter")) print "skip"; ?>
+--FILE--
+<?php
+$config = [
+    'path' => './tests'
+];
+
+$fileObject = new \Vtiful\Kernel\Excel($config);
+
+$fileObject = $fileObject->fileName('format_border_of_the_four_side_1.xlsx');
+$fileHandle = $fileObject->getHandle();
+
+$data = [
+    ['viest1', 21, 100, "A"],
+    ['viest2', 20, 80, "B"],
+    ['viest3', 22, 70, "C"],
+];
+
+$format = new \Vtiful\Kernel\Format($fileHandle);
+
+$borderStyle = $format
+    ->border(\Vtiful\Kernel\Format::BORDER_THIN)
+    ->borderOfTheFourSides(
+        \Vtiful\Kernel\Format::BORDER_THIN,   // top
+        \Vtiful\Kernel\Format::BORDER_MEDIUM, // right
+        \Vtiful\Kernel\Format::BORDER_DASHED, // bottom
+        \Vtiful\Kernel\Format::BORDER_DOTTED  // left
+    )
+    ->toResource();
+
+$filePath = $fileObject->header(['name', 'age', 'score', 'level'])
+    ->data($data)
+    ->setRow('A1', 20, $borderStyle)
+    ->output();
+
+var_dump($filePath);
+?>
+--CLEAN--
+<?php
+@unlink(__DIR__ . '/format_border_of_the_four_side_1.xlsx');
+?>
+--EXPECT--
+string(45) "./tests/format_border_of_the_four_side_1.xlsx"

+ 46 - 0
tests/format_border_of_the_four_sides_2.phpt

@@ -0,0 +1,46 @@
+--TEST--
+Check for vtiful presence
+--SKIPIF--
+<?php if (!extension_loaded("xlswriter")) print "skip"; ?>
+--FILE--
+<?php
+$config = [
+    'path' => './tests'
+];
+
+$fileObject = new \Vtiful\Kernel\Excel($config);
+
+$fileObject = $fileObject->fileName('format_border_of_the_four_side_2.xlsx');
+$fileHandle = $fileObject->getHandle();
+
+$data = [
+    ['viest1', 21, 100, "A"],
+    ['viest2', 20, 80, "B"],
+    ['viest3', 22, 70, "C"],
+];
+
+$format = new \Vtiful\Kernel\Format($fileHandle);
+
+$borderStyle = $format
+    ->border(\Vtiful\Kernel\Format::BORDER_THIN)
+    ->borderOfTheFourSides(
+            NULL,                                 // top
+            \Vtiful\Kernel\Format::BORDER_THICK,  // right
+            \Vtiful\Kernel\Format::BORDER_DOUBLE, // bottom
+            NULL                                  // left
+        )
+    ->toResource();
+
+$filePath = $fileObject->header(['name', 'age', 'score', 'level'])
+    ->data($data)
+    ->setRow('A1', 20, $borderStyle)
+    ->output();
+
+var_dump($filePath);
+?>
+--CLEAN--
+<?php
+@unlink(__DIR__ . '/format_border_of_the_four_side_2.xlsx');
+?>
+--EXPECT--
+string(45) "./tests/format_border_of_the_four_side_2.xlsx"