const glob = require('./lib/glob');
const { ROOT, KIND } = require('./resolve');
const { without } = require('lodash');
const Asset = require('./asset');
const Post = require('./post');
const Files = require('./files');

class PostFiles extends Files {
  _kindMap () {
    return {
      [KIND.PAGE]:  Post,
      [KIND.ASSET]: PostAsset,
    };
  }
}

module.exports = exports = async function loadPublicFiles () {
  return new PostFiles(await glob('posts/**/*', { cwd: ROOT, nodir: true }));
};

const POSTMATCH = /(\d{4}-\d\d-\d\d)\.\d{4}\.(\w+)/;

class PostAsset extends Asset {

  _dir (dir) {
    dir = dir.replace(POSTMATCH, '$2').split('/');
    dir = without(dir, 'posts', '_images');
    dir.unshift('p');
    return dir;
  }

}