--000e0cd485647daf7d04688cf7d1
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

Thanks.

Unfortunately, I plan to do more than just to_english. The logs have
information that is also dependent on the ordering of the mysql statements
themselves, so I want to be able to map queries based on certain conditions
etc, so no running away from it really, but the Kernel#const_get#send is a
nice option.

Jayanth

On Mon, Apr 27, 2009 at 10:40 PM, Mark Thomas <mark / thomaszone.com> wrote:

> On Apr 27, 6:35 am, Srijayanth Sridhar <srijaya... / gmail.com> wrote:
> > [Note:  parts of this message were removed to make it a legal post.]
> >
> > Hello,
> >
> > I have the following problem.
> >
> > There exists a really ugly debug log file which has mysql query
> statements.
> > Looking through the log makes it hard to understand esp while providing
> > reports to bosses/mgrs etc. so I have decided to make it more "English".
> I
> > have over 40 queries, each that can be called in different ways, for
> > instance:
> >
> > 1) select foo1, foo2 from foo where foo1. etc
> > 2) select foo1 from foo where foo1 tc
> >
> > The basic parsing would be /select(.*)\s+from\s+(.*)(?:\s+where\s+(.*)$)/
> #
> > its a bit more advanced, but its solved and hence not a problem
> >
> > #captures[1] will be the table name
> >
> > 1) Each table/view is its own class with a to_english method that does
> the
> > translation
>
> Do you really need this? It may be overkill if the only thing you will
> do in each of these classes is a to_english method. You could perhaps
> use a singleton class that contains all the translations.
>
> > 2) An abstract class that parses a line from the log file, extracts the
> > table or view (in this case foo) from the match and generates an object
> > using eval "#{table.capitalize}.new captures"
>
> To avoid eval, use
>  Kernel.const_get(table.capitalize).send(:to_english)
> where to_english is a class method.
>
>
>

--000e0cd485647daf7d04688cf7d1--