-
-
Save rarous/850783 to your computer and use it in GitHub Desktop.
| function Write-JsDeps { | |
| param($root, $prefix, $exclusion) | |
| "// This file was autogenerated" | |
| "// Please do not edit." | |
| Get-ChildItem $root -Recurse -Include *.js -Exclude $exclusion | sort FullName | | |
| %{ Create-DepsLine $root $prefix $_.FullName } | |
| } | |
| function Create-DepsLine { | |
| param($root, $prefix, $path) | |
| $prefixedPath = Get-PrefixedPath $root $prefix $path | |
| $source = Get-Content $path -ReadCount 0 | |
| $provides = Parse 'provide' $source | |
| $requires = Parse 'require' $source | |
| "goog.addDependency('$prefixedPath', [$provides], [$requires]);" | |
| } | |
| $parsers = @{ provide = [regex] "goog\.provide\(([^\)]+)\)"; require = [regex] "goog\.require\(([^\)]+)\)" } | |
| function Parse { | |
| param($what, $from) | |
| ($parsers[$what].Matches($from ) | %{ $_.Groups[1].Value }) -join ', ' | |
| } | |
| function Get-PrefixedPath { | |
| $path.Replace($root, $prefix).Replace('\', '/').Replace('//', '/') | |
| } |
Jo, ten replace je regexi. Jedna z pomucek je
'[]{[]{[]{' -replace [regex]::Escape('[]{'), 'a'
ale proc pak fakt nepouzit ten stringovej replace, to je pravda :)
K tomu matches: kdyz das priklad, kterej si tu muzu spustit, tak se muzu mrknout..
Jak to neni copy paste do konzole, tak jsem hrozně shnilej. Ve chvílích nudy se na to zkusím mrknout :)
svn co http://closure-library.googlecode.com/svn/trunk/closure/goog goog
Write-JsDeps goog '../../../' @()
Zkouším. Poznámka:
PowerShell má dynamickej lookup proměnných. Takže $prefix si s klidným srdcem předávat nemusíš (a teď doufám, že se nepletu ;)).
K tomu array - tos myslel něco jako
function Parse {
param($what, $from)
($parsers[$what].Matches($from ) | %{ $_.Groups[1].Value }) -join ', '
}
?
jenže dynamickej lookup má pěknej (negativní) vliv na performance, potřebuju to mít co možná nejrychlejší :)
JJJJSK JKDJKJKDJDJKDJKDJK DJKLJKLJLKJKDJDLKJDJDKLJDKJLKDJKDJLKDJDJLK JDLJDKJDKJDKJDKJKJDKLJDLLLLLKJCKJCK JLCJCJCLLKJKJKJDJFKLJKJKJLKFKJFKJKLFJFKLJLKJ LJFJLJJJFLF
Tak to ti napsala dcera :) A teď já.
Dynamic lookup přece nemůže natolik zpomalit, ne? :) Každopádně pokud někdo chce velkou rychlost, tak PowerShell není dobrá volba (většinou).
Nepotřebuju velkou rychlost, ale pokud to běží 5 s místo 9 s tak jsem radši. :) Ta původní verze (opis Pythonu) běžela něco kolem 20 s a to je strašně moc. :)
Jinak díky dcerce a že pozdravuju :)
BTW, nešlo by výsledek matches nějak elegantně přes select -expandproperty transformovat rovnou na array? Nějak se mi to nepodařilo...