Giter Club home page Giter Club logo

Comments (14)

debo avatar debo commented on May 23, 2024

Ok it looks likes I found the cause for the non working examples and submitted the fix in PR #79

from pug.

kylekatarnls avatar kylekatarnls commented on May 23, 2024

Oh, thanks, indeed it was obsolete. I will try to improve examples someday with some other technologies. Your work is really much appreciated.

from pug.

debo avatar debo commented on May 23, 2024

No problem, my pleasure.

from pug.

debo avatar debo commented on May 23, 2024

Now I will try to see if I can make it work in the pet project, I am still failing with that 😞

from pug.

kylekatarnls avatar kylekatarnls commented on May 23, 2024

Thanks for your feedback, please give me the specificities of your project, the code that load Pug and the directories and files pathes.

from pug.

debo avatar debo commented on May 23, 2024

@kylekatarnls I eventually managed to get it work but the "issue" if we can call it such is that when you instantiate the pug renderer and you define a basedir, such basedir doesn't seem to be then prepended to the file name specified to be included, in other words to include a file I don't seem to be able to use path relative to basedir. Moreover, but this is more like a feature request, there is no support for multiple include paths.

I hope that clarifies a bit more.

from pug.

kylekatarnls avatar kylekatarnls commented on May 23, 2024

We followed the Pug-js spec that is:

  • if the path start with /, we use basedir and append the included/extended path after it;
  • else we consider the path relative to the current pug file.

Maybe these examples can help:
#23 (comment)

from pug.

debo avatar debo commented on May 23, 2024

@kylekatarnls I am not referring to that but to the php part. Basically if I have:

$pug = new Pug(array(
    'cache' => 'var/cache/pug',
    'basedir' => 'path/to/pug/templates/',
    'upToDateCheck' => false,
);
$pug->render('my-page.pug');

it doesn't worh but everything is fine if I do

$pug = new Pug(array(
    'cache' => 'var/cache/pug',
    'basedir' => 'path/to/pug/templates',
    'upToDateCheck' => false,
);
$pug->render('path/to/pug/templates/my-page.pug');

from pug.

kylekatarnls avatar kylekatarnls commented on May 23, 2024

Indeed, basedir is not used this way, it's a template option for include and extend as it is in the original repository: https://github.com/pugjs/pug/search?utf8=%E2%9C%93&q=basedir

I recommand this approach:

// Get the templates directory relatively to the view renderer.
$templatesDirectory = __DIR__ . '/views';
$pug = new Pug(array(
    'cache' => 'var/cache/pug',
    // Pass it to basedir
    'basedir' => $templatesDirectory,
    'upToDateCheck' => false,
));
// Prefix render calls with it.
$pug->render($templatesDirectory . '/my-page.pug');

Note that you can also get it from pug:

$pug = new Pug(array(
    'basedir' => __DIR__ . '/views',
));
$pug->render($pug->getOption('basedir') . '/my-page.pug');

from pug.

debo avatar debo commented on May 23, 2024

@kylekatarnls so to make it clear to me, that's only to be able to import file from a relative path to basedir but render always need a absolute one?

from pug.

kylekatarnls avatar kylekatarnls commented on May 23, 2024

Like any PHP function (such as file_get_contents), the relative pathes are relative to cwd (current working directory), so this is the relative way to do it:

chdir(__DIR__ . '/views');
$pug = new Pug(array(
    'basedir' => '.',
));
$pug->render('my-page.pug');

from pug.

debo avatar debo commented on May 23, 2024

Yeah I know that, what I meant is that basedir option affect only files included via import in a jade/pug template. Otherwise it's ignored if render is invoked.

from pug.

kylekatarnls avatar kylekatarnls commented on May 23, 2024

Yes, and in my humble opinion it should stay that way as if we do the same with pugjs:

var pug = require('pug');

var html = pug.renderFile('test.pug', {
    basedir: __dirname + '/views'
});

console.log(html);

The path called is __dirname + '/test.pug' and not __dirname + '/views/test.pug'

from pug.

debo avatar debo commented on May 23, 2024

Got it, got it. It's fine I simply wanted to make sure I was on the same page, I don't mind which way it is once I know how it is intended to work. Thanks for the clarification.

from pug.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.