OSDN Git Service

the 'repeating' flavour can also be optional
authorscribu <mail@scribu.net>
Tue, 12 Feb 2013 01:59:19 +0000 (03:59 +0200)
committerscribu <mail@scribu.net>
Tue, 12 Feb 2013 02:13:58 +0000 (04:13 +0200)
php/WP_CLI/SynopsisParser.php
tests/test-synopsis.php

index 66552ec..7512ce1 100644 (file)
@@ -129,20 +129,20 @@ class SynopsisParser {
 
        private function gen_patterns( $type, $pattern, $flavour_types ) {
                static $flavours = array(
-                       'mandatory' => ":pattern:",
-                       'optional' => "\[:pattern:\]",
-                       'repeating' => ":pattern:...",
+                       'mandatory' => ':pattern:',
+                       'optional' => '\[:pattern:\]',
+                       'repeating' => array( ':pattern:...', '\[:pattern:...\]' )
                );
 
                foreach ( $flavour_types as $flavour_type ) {
-                       $flavour = $flavours[ $flavour_type ];
+                       foreach ( (array) $flavours[ $flavour_type ] as $flavour ) {
+                               $final_pattern = str_replace( ':pattern:', $pattern, $flavour );
 
-                       $final_pattern = str_replace( ':pattern:', $pattern, $flavour );
-
-                       self::$patterns[ '/^' . $final_pattern . '$/' ] = array(
-                               'type' => $type,
-                               'flavour' => $flavour_type
-                       );
+                               self::$patterns[ '/^' . $final_pattern . '$/' ] = array(
+                                       'type' => $type,
+                                       'flavour' => $flavour_type
+                               );
+                       }
                }
        }
 
index f27bcd7..d54f9df 100644 (file)
@@ -66,11 +66,15 @@ class SynopsisParserTest extends PHPUnit_Framework_TestCase {
        }
 
        function testRepeating() {
-               $r = SynopsisParser::parse( '<positional>...' );
+               $r = SynopsisParser::parse( '<positional>... [--<field>=<value>...]' );
+
+               $this->assertCount( 2, $r );
 
-               $this->assertCount( 1, $r );
                $this->assertEquals( 'positional', $r[0]['type'] );
                $this->assertEquals( 'repeating', $r[0]['flavour'] );
+
+               $this->assertEquals( 'generic', $r[1]['type'] );
+               $this->assertEquals( 'repeating', $r[1]['flavour'] );
        }
 
        function testCombined() {