예제 #1
0
파일: ArrTest.php 프로젝트: brianseitel/ook
 public function testExpandKeys()
 {
     $key = 'foo.*.bar';
     $size = 2;
     $keys = Arr::expandKeys($key, $size);
     $this->assertEquals('foo.0.bar', $keys[0]);
     $this->assertEquals('foo.1.bar', $keys[1]);
     $key = 'foo.*.bar.*.beans';
     $size = 2;
     $keys = Arr::expandKeys($key, $size);
     $this->assertEquals('foo.0.bar.0.beans', $keys[0]);
     $this->assertEquals('foo.0.bar.1.beans', $keys[1]);
     $this->assertEquals('foo.1.bar.0.beans', $keys[2]);
     $this->assertEquals('foo.1.bar.1.beans', $keys[3]);
 }
예제 #2
0
 /**
  * Transforms the input array into the output array based on the rules
  * stated in the configuration file.
  *
  * @return array
  */
 public function transform($root = '')
 {
     $output = [];
     $array = Arr::dot($this->feed_data);
     $rules = Arr::dot($this->rules);
     $all_rules = [];
     foreach ($rules as $key => $value) {
         if (strpos($key, '*')) {
             $new_keys = Arr::expandKeys($key, $this->expand_size);
             $new_values = Arr::expandKeys($value, $this->expand_size);
             $new_rules = array_combine($new_keys, $new_values);
             foreach ($new_rules as $new_key => $new_rule) {
                 if (array_key_exists($new_rule, $array)) {
                     $all_rules[$new_key] = $new_rule;
                 }
             }
         } else {
             $all_rules[$key] = $value;
         }
     }
     foreach ($all_rules as $k => $v) {
         Arr::set($output, $k, Arr::get($array, $v));
     }
     return $output;
 }