public function get_path()
 {
     return TimberHelper::get_rel_url($this->get_link());
 }
 public function get_path()
 {
     $link = $this->get_link();
     $rel = TimberHelper::get_rel_url($link, true);
     return apply_filters('timber_term_path', $rel, $this);
 }
 function init_with_url($url)
 {
     $this->abs_url = $url;
     $this->file_loc = $url;
     if (TimberHelper::is_local($url)) {
         $this->file = ABSPATH . TimberHelper::get_rel_url($url);
     }
 }
 /**
  * @param Twig_Environment $twig
  * @return Twig_Environment
  */
 function add_twig_filters($twig)
 {
     /* image filters */
     $twig->addFilter('resize', new Twig_Filter_Function(array('TimberImageHelper', 'resize')));
     $twig->addFilter('letterbox', new Twig_Filter_Function('wp_resize_letterbox'));
     $twig->addFilter('tojpg', new Twig_Filter_Function(array('TimberImageHelper', 'img_to_jpg')));
     $twig->addFilter('get_src_from_attachment_id', new Twig_Filter_Function('twig_get_src_from_attachment_id'));
     /* debugging filters */
     $twig->addFilter('docs', new Twig_Filter_function('twig_object_docs'));
     $twig->addFilter('get_class', new Twig_Filter_Function('twig_get_class'));
     $twig->addFilter('get_type', new Twig_Filter_Function('twig_get_type'));
     $twig->addFilter('print_r', new Twig_Filter_Function('twig_print_r'));
     $twig->addFilter('print_a', new Twig_Filter_Function('twig_print_a'));
     /* other filters */
     $twig->addFilter('stripshortcodes', new Twig_Filter_Function('strip_shortcodes'));
     $twig->addFilter('array', new Twig_Filter_Function(array($this, 'to_array')));
     $twig->addFilter('excerpt', new Twig_Filter_Function('twig_make_excerpt'));
     $twig->addFilter('function', new Twig_Filter_Function(array($this, 'exec_function')));
     $twig->addFilter('path', new Twig_Filter_Function('twig_get_path'));
     $twig->addFilter('pretags', new Twig_Filter_Function(array($this, 'twig_pretags')));
     $twig->addFilter('sanitize', new Twig_Filter_Function('sanitize_title'));
     $twig->addFilter('shortcodes', new Twig_Filter_Function('twig_shortcodes'));
     $twig->addFilter('time_ago', new Twig_Filter_Function('twig_time_ago'));
     $twig->addFilter('twitterify', new Twig_Filter_Function(array('TimberHelper', 'twitterify')));
     $twig->addFilter('twitterfy', new Twig_Filter_Function(array('TimberHelper', 'twitterify')));
     $twig->addFilter('wp_body_class', new Twig_Filter_Function('twig_body_class'));
     $twig->addFilter('wpautop', new Twig_Filter_Function('wpautop'));
     $twig->addFilter('relative', new Twig_Filter_Function(function ($link) {
         return TimberHelper::get_rel_url($link, true);
     }));
     $twig->addFilter('truncate', new Twig_Filter_Function(function ($text, $len) {
         return TimberHelper::trim_words($text, $len);
     }));
     /* actions and filters */
     $twig->addFunction(new Twig_SimpleFunction('action', function () {
         call_user_func_array('do_action', func_get_args());
     }));
     $twig->addFilter(new Twig_SimpleFilter('apply_filters', function () {
         $args = func_get_args();
         $tag = current(array_splice($args, 1, 1));
         return apply_filters_ref_array($tag, $args);
     }));
     $twig->addFunction(new Twig_SimpleFunction('function', array(&$this, 'exec_function')));
     $twig->addFunction(new Twig_SimpleFunction('fn', array(&$this, 'exec_function')));
     /* TimberObjects */
     $twig->addFunction(new Twig_SimpleFunction('TimberPost', function ($pid, $PostClass = 'TimberPost') {
         if (is_array($pid) && !TimberHelper::is_array_assoc($pid)) {
             foreach ($pid as &$p) {
                 $p = new $PostClass($p);
             }
             return $pid;
         }
         return new $PostClass($pid);
     }));
     $twig->addFunction(new Twig_SimpleFunction('TimberImage', function ($pid, $ImageClass = 'TimberImage') {
         if (is_array($pid) && !TimberHelper::is_array_assoc($pid)) {
             foreach ($pid as &$p) {
                 $p = new $ImageClass($p);
             }
             return $pid;
         }
         return new $ImageClass($pid);
     }));
     $twig->addFunction(new Twig_SimpleFunction('TimberTerm', function ($pid, $TermClass = 'TimberTerm') {
         if (is_array($pid) && !TimberHelper::is_array_assoc($pid)) {
             foreach ($pid as &$p) {
                 $p = new $TermClass($p);
             }
             return $pid;
         }
         return new $TermClass($pid);
     }));
     /* bloginfo and translate */
     $twig->addFunction('bloginfo', new Twig_SimpleFunction('bloginfo', function ($show = '', $filter = 'raw') {
         return get_bloginfo($show, $filter);
     }));
     $twig->addFunction('__', new Twig_SimpleFunction('__', function ($text, $domain = 'default') {
         return __($text, $domain);
     }));
     $twig = apply_filters('get_twig', $twig);
     return $twig;
 }
 function get_path()
 {
     return TimberHelper::get_rel_url($this->url);
 }