"Roland Winkler" <wink...@gnu.org> writes:

> On Tue May 28 2013 Eric Abrahamsen wrote:
>> Could the organization field, instead of being a string, actually be a
>> link (or a search-string) to a separate record? Then when you display an
>> individual record that links to that organization, there could be a
>> display-only, virtual "work address" shown for that individual. Gets you
>> partway there, anyway.
>
> I guess that a proper solution to this problem could be some sort of
> this kind. But I'd prefer to have such a solution not only for the
> organization field but, say, for addresses too. In any case, "links"
> go beyond the currently supported format of the database file.
> That's why all this goes beyond what is currently possible.

I once half-jokingly suggested rewriting BBDB to use the EIEIO object
system. The joke part was only because it would be a hell of a lot of
work: actually I think an OO-type system is pretty much ideal for what
BBDB does. Advantages I can think of:

1. Probably a much smaller codebase, at least for bbdb.el, also clearer
and easier to maintain.

2. You'd get multiple databases (and I think remote databases) for free
with eieio-persistent

3. Incoming data checking/cleaning/validation becomes methods on
field classes

4. Inheritance of field classes means it becomes very easy for
users to create new kinds of fields

5. Printing methods on field types means users can override how existing
fields are displayed in the *BBDB* buffer

6. I'm pretty sure those same printing methods could be used to store
text properties and other fancy display stuff along with the data

7. Reading/printing methods for the database as a whole would make it
easier to write importers/exporters for BBDB. Database printers could (I
think) also override existing field printers, so users could run an
existing LaTeX exporter (for instance), but just override how some of
the fields were converted to latex.

8. It would be easier to attach arbitrary methods to certain field
types, to make them "do things", ie notify a birthday, send an IM, etc.

It's still more or less pie-in-the-sky, but I think it makes a lot of
sense in principle.

Eric


------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may
_______________________________________________
bbdb-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bbdb-info
BBDB Home Page: http://bbdb.sourceforge.net/

Reply via email to