I don't think the problem is well-defined or single-solution. Surely the 
simplest solution, given a single output and the data that produced it is 
to simply encode the entire output text in the template and ignore the data.

Instead, I think you need a matching corpus - i.e. a list of pairs of 
output and input. Once you have that, I expect you would basically run a 
diff-type algorithm across pairs of outputs looking to build an invariant 
list (i.e. the elements of the template that never change) paired with a 
variant list (the elements that change), to be interleaved in the template. 

I don't think there is any simple or valid path to go from there to a fully 
worked out template, given the level of coding permissible in templates. 
But you could do a series of heuristics to match clear elements. For 
example, having your list of variants, you would run a match against the 
content of that variant in each output against all the inputs looking for 
simple matches that hold true across the entire corpus, and replace these 
with simple substitutions in the template, marking them completed in your 
list of variants.

Then you would run the same comparison looking for substring matches (to 
attempt to capture simple substitutions that are chained (e.g. 
{{.Salutation}} {{.FirstName}} {{.LastName}} in a naive name implementation 
is going to show up as a single variant block in the analysis, so your 
first heuristic will fail to find a match). 

Finding repeated complex sub-elements of a template and matching them; or 
matching summary values such as subtotals and grand totals or worse, 
averages that have been formatted to less than the default number of 
digits? I suspect you are going well off the end of what is achievable with 
simple pattern matching, so if that is your normal interview fare, I pity 
your interviewees.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to