module.exports = (grunt) -> taskDesc = 'Convert gettext PO files to Chromium Extension messages format.' # coffeelint: disable=missing_fat_arrows grunt.registerMultiTask 'po2crx', taskDesc, -> for f in this.files result = {} for src in f.src json = require('po2json').parseFileSync(src) for own key, value of json when key message = value[1] refs = [] matchCount = 0 message = message.replace /\$(\d+:)?(\w+)\$/g, (_, order, ref) -> matchCount++ if order order = parseInt(order) else order = matchCount ### TODO(catus): Shall we enable this warning? if matchCount > 1 grunt.log.writeln("In this message: #{key}=#{message}") grunt.log.writeln( 'Order not specified for two or more refs in same message.') ### refs[order] = ref return '$' + ref + '$' if not matchCount placeholders = undefined else placeholders = {} for i in [0...refs.length] placeholder = refs[i] ? ('_unused_' + i) placeholders[placeholder] = {content: '$' + i} if message == ' ' message = '' result[key] = message: message placeholders: placeholders grunt.file.write(f.dest, JSON.stringify(result)) grunt.log.writeln("File \"#{f.dest}\" created.") # coffeelint: enable=missing_fat_arrows