Beispiel #1
2
function initProjectFile() {
  // generator app.json
  const appJsonObject = Object.assign({
    name: _.camelCase(require(path.join(process.cwd(), 'package.json')).name)
  }, rnConfig.appJson)
  // generator .${tempPath}/package.json TODO JSON.parse 这种写法可能会有隐患
  const pkgTempObj = JSON.parse(
    ejs.render(pkgTmpl, {
        projectName: _.camelCase(projectConfig.projectName),
        version: Util.getPkgVersion()
      }
    ).replace(/(\r\n|\n|\r|\s+)/gm, '')
  )
  const dependencies = require(path.join(process.cwd(), 'package.json')).dependencies
  pkgTempObj.dependencies = Object.assign({}, pkgTempObj.dependencies, dependencies)

  const indexJsStr = `
  import {AppRegistry} from 'react-native';
  import App from './${entryBaseName}';
  import {name as appName} from './app.json';

  AppRegistry.registerComponent(appName, () => App);`

  fs.writeFileSync(path.join(tempDir, 'index.js'), indexJsStr)
  Util.printLog(processTypeEnum.GENERATE, 'index.js', path.join(tempPath, 'index.js'))
  fs.writeFileSync(path.join(tempDir, 'app.json'), JSON.stringify(appJsonObject, null, 2))
  Util.printLog(processTypeEnum.GENERATE, 'app.json', path.join(tempPath, 'app.json'))
  fs.writeFileSync(path.join(tempDir, 'package.json'), JSON.stringify(pkgTempObj, null, 2))
  Util.printLog(processTypeEnum.GENERATE, 'package.json', path.join(tempPath, 'package.json'))
}
Beispiel #2
0
    public static async run(context, callback, errorcallback) {
        var page = context.page;
        if (!context.page) {
            page = new Page(context);
            context.page = page;
        }

        //attach a new parser instance to the page
        page.parser = new Parser(context);
        debug('runner run');
        await page.run();

        debug('run');

        page.fileContent = ejs.render(page.fileContent, page);
        page.fileContent = decodeURI(page.fileContent);
        // try {


        page.parser.buildTree(page);
        // page.parser.parsePlaceHolders(page, function () {
        let childrenResult = await Runner.runChildren(context, page.controls);

        var result = Renderer.render(page);

        page.fileContent = result;
        if (page.masterpage) {
            let masterResult = await page.masterpage.run();
            page.parser.buildTree(page.masterpage);
            childrenResult = await Runner.runChildren(context, page.masterpage.controls);

            masterResult = await Renderer.render(page.masterpage);

            page.masterpage.fileContent = ejs.render(page.masterpage.fileContent, page.masterpage);
            page.parser = new Parser(context);
            page.parser.parsePlaceHolders(page.masterpage);


        }

        return page.fileContent;
    }
export async function compile(cwd: string, config: IConfig): Promise<IUploadEntity[]> {
  const sourceRootPath = join(cwd, config.in || "")
  const targetPath = config.out || "./build"
  if (!sourceRootPath || !targetPath) throw new Error("Incorrect configuration")

  const indexList: any[] = []
  const filesToUpload: any[] = []

  const test = ignore((await readFile(join(sourceRootPath, ".blogignore"), "utf-8")))

  let template
  try {
    template = await readFile(join(sourceRootPath, "index.ejs"), "utf-8")
  } catch (error) {
    console.log("Using default template...")
  }

  console.log("Collecting files to upload...")

  await traverse(
    sourceRootPath,
    targetPath,
    writeFiles.bind(null, indexList, test, add, template),
  )

  const posts = indexList
    .filter(({ published, private: priv }) => published && !priv)

  const md: string = posts
    .map(({ permalink, title }: IPost) => `- [${title}](${permalink})`)
    .join("\n")

  const blog = remarkable.render(md)
  const html = ejs.render(template || defaultTemplate, { blog, frontmatter: null })

  add("md", md, join(targetPath, "index.md"))
  add("html", html, join(targetPath, "index.html"))
  add("json", JSON.stringify(posts), join(targetPath, "index.json"))

  console.log("Done Collecting Files")

  return filesToUpload

  function add(type: string, content: any, path: string): void {
    if (content && content.data) {
      filesToUpload.push({ content: content.data, metadata: content.info, path, type })
    } else {
      filesToUpload.push({ content, path, type })
    }
  }
}
 compiler.plugin('emit', (compilation, done) => {
   const header = require(path.join(root, 'resource', this.translator + '.json'))
   header.lastUpdated = (new Date).toISOString().replace('T', ' ').replace(/\..*/, '')
   const preferences = require(path.join(root, 'gen/preferences.json'))
   const asset = this.translator + '.js'
   compilation.assets[asset] = new ConcatSource(
     ejs.render(
       fs.readFileSync(path.join(__dirname, 'translator-header.ejs'), 'utf8'),
       {preferences, header, version}
     ),
     compilation.assets[asset]
   )
   done()
 })
    compiler.hooks.emit.tap('TranslatorHeaderPlugin', compilation => {
      const asset = this.translator + '.js'

      const header = JSON.parse(JSON.stringify(translators.byName[this.translator]))
      const headerCode = ejs.render(
        fs.readFileSync(path.join(__dirname, 'translator-header.ejs'), 'utf8'),
        {preferences, header, version}
      )

      delete header.description
      header.configOptions = header.configOptions || {}
      // header.configOptions.hash = crypto.createHash('md5').update(headerCode + compilation.assets[asset].source()).digest('hex')
      // header.configOptions.hash = [crypto.createHash('md5').update(headerCode).digest('hex')].concat(compilation.chunks.map(chunk => chunk.hash)).join('-')
      header.configOptions.hash = [headerCode, compilation.assets[asset].source()].map(hash).join('-')

      // because Zotero doesn't allow headers that have a object at the last key, so put lastUpdated at the end as a safeguard
      const header_order = [
        'translatorID',
        'translatorType',
        'label',
        'creator',
        'target',
        'minVersion',
        'maxVersion',
        'priority',
        'inRepository',
        'configOptions',
        'displayOptions',
        'exportCharset',
        'exportNotes',
        'exportFileData',
        'useJournalAbbreviation',
      ]
      const json_header = stringify(header, {
        space: 2,
        cmp: (a, b) => {
          // lastUpdated always at the end
          if (a.key === 'lastUpdated') return 1
          if (b.key === 'lastUpdated') return -1

          a.pos = (header_order.indexOf(a.key) + 1) || header_order.length + 1
          b.pos = (header_order.indexOf(b.key) + 1) || header_order.length + 1
          if (a.pos !== b.pos) return a.pos - b.pos
          return a.key.localeCompare(b.key) // can only happen if they're both not in the order
        },
      }) + '\n\n'

      compilation.assets[asset] = new ConcatSource(json_header + headerCode, compilation.assets[asset])
    })
export async function createMarkdownOutput(
  text: string,
  template?: string,
): Promise<[ IPost | null, string, string ]> {
  const parsed = /(?:^---\n)([\s\S]*)(?:---\n)(([\s\S])*)/gm.exec(text) || []
  const hasFrontmatter = parsed.length

  const md = (hasFrontmatter ? parsed[2] : text)
    .replace(/\.jpeg/g, ".large.jpeg")
    .replace(/\.jpg/g, ".large.jpg")
    .replace(/\.png/g, ".large.png")
    .replace(/\]\(\.\.\//g, "](../../")

  const blog = remarkable.render(md)

  if (!hasFrontmatter) {
    const html = ejs.render(template || defaultTemplate, { blog, frontmatter: null })
    return [ null, md, html ]
  }

  const frontmatter = load(parsed[1])
  const html = ejs.render(template || defaultTemplate, { blog, frontmatter })
  return [ frontmatter, md, html ]
}
Beispiel #7
0
    public static async runScript(control) {

        if (control.type.script !== undefined && control.type.script.init !== undefined) {

            var controlContext = { attributes: control.attributes, data: control.data, control: control };

            debug("run script");

            controlContext = await control.type.script.init(control.context, controlContext);


            control.renderResult = ejs.render(control.type.template, controlContext);
            return;

        }
        else {
            return;
        }
        //control.renderResult = ejs.render(control.type.template, control.type.script.model);

    }
Beispiel #8
0
app.get("/allocpage/:site", (req, res) => {
    res.set('Content-Type', 'text/html');
    res.send(ejs.render(getAllocPageTemplate(), { site: decodeURIComponent(req.params.site)}));
});
/**
 * Returns a string template with the specified template values filled in.
 * Any blank lines are removed from the resulting string.
 *
 * @param template The template to render.
 * @param data An object whose keys are used to identify the text in the
 *  template to replace with the value of the object's key.
 * @return The template supplied with the supplied data filled in.
 */
function renderTemplate(template: string, data?: ejs.Data): string {
  return ejs.render(template, data).replace(/^\s*\n/gm, '');
}
 protected view(templateFile: string, data: any): string {
     let template = fs.readFileSync(`dist/views/${templateFile}.ejs`).toString();
     return ejs.render(template, data, {
         filename: `dist/views/${templateFile}.ejs`
     });
 }