.cpp finden, auslesen, ändern, speichern

Code-Stücke können hier veröffentlicht werden.
Antworten
BlackJack

In CoffeeScript könnte das ganze (Verzeichnisbaum nach C++-Quelltextdateien absuchen und in diesen die Ersetzung vornehmen) so aussehen:
[codebox=coffeescript file=Unbenannt.coffee]#!/usr/bin/env coffee
'use strict'

fs = require 'fs'
path = require 'path'

ENCODING = 'utf8'
ASSERT_RE = /COMPILE_TIME_ASSERT\s*\(\s*(.+),\s*([^)]+)\)\s*;/g


changeFileContent = (filename, encoding=ENCODING) ->
fs.readFile filename, encoding, (error, data) ->
if error then throw error

data = data.replace ASSERT_RE, (_, argument1, argument2) ->
"PCC_STATIC_ASSERT(#{argument1}, \"#{argument2}\")"

temporaryFilename = filename + '~'
fs.writeFile temporaryFilename, data, encoding, (error, data) ->
if error then throw error
fs.renameSync temporaryFilename, filename


processFiles = (basePath) ->
fs.readdir basePath, (error, names) ->
if error
console.log error
else
for name in names
fullName = path.join basePath, name
try
stats = fs.statSync fullName
catch error
console.log error
stats = null

if stats?
if stats.isDirectory()
processFiles fullName
else if path.extname(fullName) is '.cpp'
console.log 'process:', fullName
try
changeFileContent fullName
catch error
console.log error
null


main = -> processFiles './tmp/forum'


main() if require.main == module[/code]
Antworten