Thank you for the thoughts. You summarized it well. I don't need to worry about attributes on the script tag for this use case. I am interested in quantifying how much embedded javascript is in each of the pages. I don't need to quantify external scripts. I know the code base doesnt use the type="javascript" attribute
The braces should be well formed otherwise the c# razor file wouldn't compile. It is possible there may be an edgecase which can be found when I run it against all the files. I plan to use it to identify areas to refactor in the javascript/c# razor code base and then watch it improve over time. I also thought it would be interesting to use a concise and expressive language, J, to measure the more verbose code base. It doesn’t need to be precise in terms of characters. For example, it is ok if the script tag characters are counted as long as its consistent. I will be using it find large problem areas and then measure the improvement. I would be interested in seeing the sequential machine approach or any other more idiomatic method than mine. I am fairly satisfied with mine. It is fairly clear to me and can likely ne extended if needed. I am trying to use J more in my day to day and that would help me learn and hopefully would be an interesting example for others. Thanks again On Jan 11, 2014 4:11 PM, "Raul Miller" <[email protected]> wrote: > I think I see how I would do that with a sequential machine. Let me > know if you want a working example. > > Briefly, though, you seem to have three kinds of token pairs: > > @{ } > { } > <script> </script> > > The ambiguity between the first two is problematic, in the context of > errors, but does not matter in well formed cases. A bigger problem in > the wild might be that you do not allow for attributes on the script > tag. > > Also, you care about the number of characters between <script> > </script> so those characters should be saved as "tokens" even if they > are not curly braces. You care about {} between both @{ } and <script> > </script> and outside them, and your implementation allows things like > @{ <script> } </script>. > > A full wart-for-wart compatible version would be painful to write. A > version which assumed well-formed cases would be much easier to write. > But before thinking about coding up an implementation it's probably > worth thinking about why you want to do this. The answer to that kind > of question can be really interesting and can help identify which > warts are unnecessary or possibly even detrimental. > > So, before I think any more about code, what are your thoughts on what > you want to accomplish? > > Thanks, > > -- > Raul > > > On Sat, Jan 11, 2014 at 3:40 PM, Joe Bogner <[email protected]> wrote: > > I have about 300 code files (javascript and embedded code) that I want > > to collect some metrics on. I've written the algorithm using an > > imperative style. I actually wrote it first in C# and translated to J > > > > Here is the code (posted a link for brevity): > > > > J version: > > https://gist.github.com/joebo/936ca5e2017c0a3b5c56 > > > > C# version: > > https://gist.github.com/joebo/e7f8e3ca7bd21117e58d > > > > This is what it outputs > > > > calc'' > > blocks 3 > > max depth 2 > > max block 113 > > scripts 2 > > max script 26 > > > > Any suggestions on how to do it differently in J? I looked into the > > sequential machine some but couldn't figure out how to make it work > > (if it could) since my approach required knowledge of the brace depth. > > > > In terms of requirements: > > 1. Take a block of text > > 2. Identify the code blocks in the file (start with @{ and end with } ) > > 3. Count the code blocks > > 4. Determine the max depth of the code block > > 5. Determine the max size of all the code blocks > > 6. Count the javascript blocks > > 7. Determine the max size of the javascript block > > > > Thanks for any feedback or input! > > > > Joe > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
