diff --git a/devTools/FC.targets b/devTools/FC.targets index e379da0de255cc30b7a6a1303a76cc65e286729a..55d1d19f4bb25c18e409c1df30054d429beecb7e 100644 --- a/devTools/FC.targets +++ b/devTools/FC.targets @@ -47,6 +47,40 @@ </Task> </UsingTask> + <!-- https://stackoverflow.com/questions/3524317/regex-to-strip-line-comments-from-c-sharp/3524689#3524689 --> + <UsingTask TaskName="StripComments" TaskFactory="RoslynCodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll"> + <ParameterGroup> + <InputFilename ParameterType="System.String" Required="true" /> + <OutputFilename ParameterType="System.String" Required="true" /> + </ParameterGroup> + <Task> + <Using Namespace="System" /> + <Using Namespace="System.IO" /> + <Using Namespace="System.Text.RegularExpressions" /> + <Code Type="Fragment" Language="cs"> + <![CDATA[ + var blockComments = @"/\*(.*?)\*/"; + var lineComments = @"//(.*?)\r?\n"; + var strings = @"""((\\[^\n]|[^""\n])*)"""; + var verbatimStrings = @"@(""[^""]*"")+"; + File.WriteAllText( + OutputFilename, + Regex.Replace(File.ReadAllText(InputFilename), + blockComments + "|" + lineComments + "|" + strings + "|" + verbatimStrings, + me => { + if (me.Value.StartsWith("/*") || me.Value.StartsWith("//")) + return me.Value.StartsWith("//") ? "\n" : ""; + // Keep the literal strings + return me.Value; + }, + RegexOptions.Singleline + ) + ); + ]]> + </Code> + </Task> + </UsingTask> + <UsingTask TaskName="GetToolPath" TaskFactory="RoslynCodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll" > <ParameterGroup> <ToolName Required="true" /> diff --git a/devTools/makeTwineJSPassage.sh b/devTools/makeTwineJSPassage.sh index e68e144503503e746d6bc408085e6b0d40dd3c17..9b4c4b85261e294b25ff91c7a9fc939890d7151c 100755 --- a/devTools/makeTwineJSPassage.sh +++ b/devTools/makeTwineJSPassage.sh @@ -6,7 +6,7 @@ # $1: root repo dir # $2: output file name collectJSForTwine() { - local files=$(find . -path ./art/assistantArt.js -prune -o -name '*.js' -print) + local files=$(find js src/js -path ./art/assistantArt.js -prune -o -name '*.js' -print) files=$(echo "$files" | sort) echo "" > "$2" for f in $files; do @@ -16,5 +16,5 @@ collectJSForTwine() { } ROOT_REPO_DIR="$(git rev-parse --show-toplevel)" -cd "${ROOT_REPO_DIR}"/src +cd "${ROOT_REPO_DIR}" collectJSForTwine "${ROOT_REPO_DIR}" "${ROOT_REPO_DIR}/devNotes/twine JS.txt" diff --git a/fc-pregmod.proj b/fc-pregmod.proj index c2e94f8547ede5f390bcbd9c18ec9c98af211a37..c9b9ea7d66fcd9ef2200e45a7c115a0993c415f3 100644 --- a/fc-pregmod.proj +++ b/fc-pregmod.proj @@ -89,7 +89,11 @@ <ItemGroup> <jsFiles Include=".\js\**\*.js;.\src\**\*.js" Exclude=".\src\art\assistantArt.js"/> <!-- will be sorted aphabetically --> </ItemGroup> - <ConcatFiles Inputs="@(jsFiles)" BaseDir="$(MSBuildProjectDirectory)" Output="$(MSBuildProjectDirectory)\devNotes\twine JS.txt"/> + <ConcatFiles Inputs="@(jsFiles)" BaseDir="$(MSBuildProjectDirectory)" Output="$(MSBuildProjectDirectory)\devNotes\twine JS.raw"/> + <StripComments + InputFilename="$(MSBuildProjectDirectory)\devNotes\twine JS.raw" + OutputFilename="$(MSBuildProjectDirectory)\devNotes\twine JS.txt" + /> </Target> <Target Name="Twine" DependsOnTargets="TwineCSS;TwineJS"/>