Ejemplo n.º 1
0
 public function transform(Response $response)
 {
     //copy response over into a StreamResponse
     // TODO: Find a way to use StreamResponse but strip front YAML
     // That probably means caching a copy of this request's content
     // somewhere in another file
     // $response = new StreamResponse(
     //     $response->getUrl(),
     //     $response->getFile(),
     //     $response->getContent(),
     //     $response->getHeaders(),
     //     $response->getMeta()
     // );
     //set meta and headers
     $meta = $response->getMeta();
     if (!isset($meta['skipTemplate'])) {
         $response->setMeta(array('skipTemplate' => true));
     }
     return $response;
 }
Ejemplo n.º 2
0
 public function transform(Response $response)
 {
     $response->setContent(trim(MarkdownExtra::defaultTransform($response->getContent())));
     $response->setHeaders(array('Content-Type' => 'text/html'));
     return $response;
 }
Ejemplo n.º 3
0
 public function doTransform(Interfaces\Response $response)
 {
     //load content from file
     $content = $response->getContent();
     if (is_file($response->getFile())) {
         $content = file_get_contents($response->getFile());
     }
     //set up default meta and headers
     $meta = $this->defaultMeta($response->getFile());
     //look for accompanying YAML .meta file
     $metaFile = $response->getFile() . $this->getConfig()->get('ContentLayer.metaSuffix');
     if (file_exists($metaFile) && is_readable($metaFile)) {
         $newMeta = Yaml::parse(file_get_contents($metaFile));
         if ($newMeta) {
             $meta = array_replace_recursive($meta, $newMeta);
         }
     }
     //try to find YAML front-matter
     if (preg_match("/^\\-\\-\\-[\\s]*\$/m", $content)) {
         $contentSplit = preg_split("/^\\-\\-\\-[\\s]*\$/m", $content);
         if (count($contentSplit) == 3) {
             $content = $contentSplit[2];
             $newMeta = Yaml::parse($contentSplit[1]);
             if ($newMeta) {
                 $meta = array_replace_recursive($meta, $newMeta);
             }
         }
     }
     //set content, meta and headers into response
     $response->setHeaders($meta['headers']);
     unset($meta['headers']);
     $response->setMeta($meta);
     $response->setContent($content);
     //locate handler
     $chosenHandler = false;
     //file handlers
     $chosenHandler = $this->returnPatternMatch($this->getConfig()->get('ContentLayer.fileHandlerPatterns'), $response->getFile()) ?: $chosenHandler;
     //default handler
     if (!$chosenHandler) {
         $chosenHandler = $this->getConfig()->get('ContentLayer.defaultHandler');
     }
     //construct handler and apply transformation
     $chosenHandler = new $chosenHandler($this->getConfig());
     $response = $chosenHandler->transform($response);
     //clean up meta and headers
     $meta = $response->getMeta();
     $headers = $response->getHeaders();
     //ETags
     if (isset($headers['ETag']) && $headers['ETag'] == 'auto') {
         $headers['ETag'] = md5($response->getContent());
     }
     //try to force date to a DateTime
     if (!$meta['date'] instanceof \DateTime) {
         $time = strtotime($meta['date']);
         $meta['date'] = new \DateTime();
         $meta['date']->setTimeStamp($time);
     }
     //set title to filename
     if (!isset($meta['title']) || !$meta['title']) {
         $meta['title'] = preg_replace("/^.*[\\/\\\\]/", '', $response->getFile());
     }
     //set single category
     if (isset($meta['category']) && $meta['category']) {
         $meta['categories'] = $meta['category'];
         unset($meta['category']);
     }
     //support categories and tags as strings
     if (!is_array($meta['categories'])) {
         $meta['categories'] = preg_split("/,\\s*/", $meta['categories']);
     }
     if (!is_array($meta['tags'])) {
         $meta['tags'] = preg_split("/,\\s*/", $meta['tags']);
     }
     //Cache-control: max-age
     if ($headers['Cache-control']['max-age'] == 'auto') {
         if (isset($meta['ttl']) && $meta['ttl']) {
             $headers['Cache-control']['max-age'] = $meta['ttl'];
         } else {
             unset($headers['Cache-control']['max-age']);
         }
     }
     //write cleaned-up meta and headers into response
     $response->setMeta($meta);
     $response->setHeaders($headers);
     //return the altered response
     return $response;
 }