Overview

Namespaces

  • Contrib
    • Bundle
      • CoverallsBundle
        • Console
        • Entity
      • CoverallsV1Bundle
        • Api
        • Collector
        • Command
        • Config
        • Entity
          • Git
    • Component
      • File
      • Log
      • System
        • Git
  • Guzzle
    • Batch
      • Exception
    • Cache
    • Common
      • Exception
    • Http
      • Curl
      • Exception
      • Message
      • QueryAggregator
    • Inflection
    • Iterator
    • Log
    • Parser
      • Cookie
      • Message
      • UriTemplate
      • Url
    • Plugin
      • Async
      • Backoff
      • Cache
      • Cookie
        • CookieJar
        • Exception
      • CurlAuth
      • ErrorResponse
        • Exception
      • History
      • Log
      • Md5
      • Mock
      • Oauth
    • Service
      • Builder
      • Command
        • Factory
        • LocationVisitor
          • Request
          • Response
      • Description
      • Exception
      • Resource
    • Stream
  • PHP
  • Psr
    • Log
  • Symfony
    • Component
      • Config
        • Definition
          • Builder
          • Exception
        • Exception
        • Loader
        • Resource
        • Util
      • Console
        • Command
        • Formatter
        • Helper
        • Input
        • Output
        • Tester
      • EventDispatcher
        • Debug
      • Finder
        • Adapter
        • Comparator
        • Exception
        • Expression
        • Iterator
        • Shell
      • Stopwatch
      • Yaml
        • Exception

Classes

  • Comparator
  • DateComparator
  • NumberComparator
  • Overview
  • Namespace
  • Class
  • Tree
  • Todo
 1: <?php
 2: 
 3: /*
 4:  * This file is part of the Symfony package.
 5:  *
 6:  * (c) Fabien Potencier <fabien@symfony.com>
 7:  *
 8:  * For the full copyright and license information, please view the LICENSE
 9:  * file that was distributed with this source code.
10:  */
11: 
12: namespace Symfony\Component\Finder\Comparator;
13: 
14: /**
15:  * NumberComparator compiles a simple comparison to an anonymous
16:  * subroutine, which you can call with a value to be tested again.
17:  *
18:  * Now this would be very pointless, if NumberCompare didn't understand
19:  * magnitudes.
20:  *
21:  * The target value may use magnitudes of kilobytes (k, ki),
22:  * megabytes (m, mi), or gigabytes (g, gi).  Those suffixed
23:  * with an i use the appropriate 2**n version in accordance with the
24:  * IEC standard: http://physics.nist.gov/cuu/Units/binary.html
25:  *
26:  * Based on the Perl Number::Compare module.
27:  *
28:  * @author    Fabien Potencier <fabien@symfony.com> PHP port
29:  * @author    Richard Clamp <richardc@unixbeard.net> Perl version
30:  *
31:  * @copyright 2004-2005 Fabien Potencier <fabien@symfony.com>
32:  * @copyright 2002 Richard Clamp <richardc@unixbeard.net>
33:  *
34:  * @see       http://physics.nist.gov/cuu/Units/binary.html
35:  */
36: class NumberComparator extends Comparator
37: {
38:     /**
39:      * Constructor.
40:      *
41:      * @param string $test A comparison string
42:      *
43:      * @throws \InvalidArgumentException If the test is not understood
44:      */
45:     public function __construct($test)
46:     {
47:         if (!preg_match('#^\s*(==|!=|[<>]=?)?\s*([0-9\.]+)\s*([kmg]i?)?\s*$#i', $test, $matches)) {
48:             throw new \InvalidArgumentException(sprintf('Don\'t understand "%s" as a number test.', $test));
49:         }
50: 
51:         $target = $matches[2];
52:         if (!is_numeric($target)) {
53:             throw new \InvalidArgumentException(sprintf('Invalid number "%s".', $target));
54:         }
55:         if (isset($matches[3])) {
56:             // magnitude
57:             switch (strtolower($matches[3])) {
58:                 case 'k':
59:                     $target *= 1000;
60:                     break;
61:                 case 'ki':
62:                     $target *= 1024;
63:                     break;
64:                 case 'm':
65:                     $target *= 1000000;
66:                     break;
67:                 case 'mi':
68:                     $target *= 1024*1024;
69:                     break;
70:                 case 'g':
71:                     $target *= 1000000000;
72:                     break;
73:                 case 'gi':
74:                     $target *= 1024*1024*1024;
75:                     break;
76:             }
77:         }
78: 
79:         $this->setTarget($target);
80:         $this->setOperator(isset($matches[1]) ? $matches[1] : '==');
81:     }
82: }
83: 
php-coveralls API documentation generated by ApiGen 2.8.0