3 package Text::Tradition::Collation;
8 isa => 'Text::Tradition::Graph',
11 # The graph is full of nodes, which have positions and equivalences.
12 # These have to be stored externally to the graph itself.
15 isa => 'Text::Tradition::Graph::Position',
18 has 'equivalences' => (
20 isa => 'Text::Tradition::Graph::Equivalence',
23 # We need a way to access the parent object.
26 isa => 'Text::Tradition',
29 # The collation can be created two ways:
30 # 1. Collate a set of witnesses (with CollateX I guess) and process
31 # the results as in 2.
32 # 2. Read a pre-prepared collation in one of a variety of formats,
33 # and make the graph from that.
35 # The graph itself will (for now) be immutable, and the positions
36 # within the graph will also be immutable. We need to calculate those
37 # positions upon graph construction. The equivalences between graph
38 # nodes will be mutable, entirely determined by the user (or possibly
39 # by some semantic pre-processing provided by the user.) So the
40 # constructor should just make an empty equivalences object. The
41 # constructor will also need to make the witness objects, if we didn't
42 # come through option 1.
45 __PACKAGE__->meta->make_immutable;