I don't know if this is going to answer your question, but I have been working with gems and glasses lately so here is what I have learned.
You will not have to have a reaction for every diamond necessarily. If, for example, you do the following:
Use this in the reaction:
[REAGENT:B:1:ROUGH:NONE:NONE:NONE] in other words, telling it to "use ANY rough gem..."
[REACTION_CLASS:KELDANES_DIAMOND_MOD_YAY] "But ONLY those with this reaction class definition token"
Then put this by [REACTION_CLASS:KELDANES_DIAMOND_MOD_YAY] in the raw entry of every gem you want to be usable in the reaction. If you put it by diamonds, only diamonds will be chosen. If you put it by three specific gems, only they will be chosen.
The downfall of the single-reaction method is that, since there is one generic reaction that uses only any diamond, you won't be able to specify which diamond. So if you want each diamond to make a different product, or want to control which type of diamond is used in any way (other than using stockpiles to control what is nearest), you are going to have to have a reaction for each diamond or for only several diamonds each.
There are, however, a variety of ways to mass produce reactions. For example, lets say we have red diamond and green diamond, and you want red to make a Flameite, and green to make Poisonite. You will need two separate reactions. But there's two quick ways off the top of my head to make them.
1. Copy and paste, and then just change REACTION_CLASS listings. For the red diamond, you could refer to it as such:
[REAGENT:B:1:ROUGH:NONE:NONE:NONE]
[REACTION_CLASS:KELDANES_RED_DIAMONDS]
[PRODUCT:100:150:BAR:NONE:INORGANIC:FLAMEITE]
and in the red diamond's raw entry, put [REACTION_CLASS:KELDANES_RED_DIAMONDS]
Then, copy and paste the reaction, and change a few words:
[REAGENT:B:1:ROUGH:NONE:NONE:NONE]
[REACTION_CLASS:KELDANES_GREEN_DIAMONDS]
[PRODUCT:100:150:BAR:NONE:INORGANIC:POISONITE]
and put in the raw entry of the green diamond: [REACTION_CLASS:KELDANES_GREEN_DIAMONDS]
2. Have many specific reactions. Copy and paste the reactions, and modify accordingly. For example,
[REAGENT:B:1:ROUGH:NONE:INORGANIC:DIAMOND_RED] (I don't remember the diamond's actual raw)
[PRODUCT:100:150:BAR:NONE:INORGANIC:FLAMEITE]
copy and paste it and just modify to use be the following:
[REAGENT:B:1:ROUGH:NONE:INORGANIC:DIAMOND_GREEN] (I don't remember the diamond's actual raw)
[PRODUCT:100:150:BAR:NONE:INORGANIC:POISONITE]
3. (I JUST THOUGHT OF THIS ONE:) Have a SINGLE reaction again, but specify in the raws of each gem, a material reaction product. In our example, you would put, in the raw of each gem, a material reaction product. For example, you would put in the red diamond's entry [MATERIAL_REACTION_PRODUCT:MAGIC_MATERIAL:INORGANIC:FLAMEITE]
and in the green diamond's entry [MATERIAL_REACTION_PRODUCT:MAGIC_MATERIAL:INORGANIC:POISONITE]
THEN, in the reaction refer to it thusly:
[REAGENT:B:1:ROUGH:NONE:NONE:NONE] so any rough gem
[HAS_MATERIAL_REACTION_PRODUCT:MAGIC_MATERIAL] but only those with one of the 'MAGIC_MATERIAL' reaction products specified.
[PRODUCT:100:150:BAR:NONE:GET_MATERIAL_FROM_REAGENT:B:MAGIC_MATERIAL] in other words, produce a unit of the material specified by the MAGIC_MATERIAL reaction product of whatever gem it happened to have used. So if it happens to use a red gem, it will produce a bar of FLAMEITE, while if it used a green gem, it would be a bar of POISONITE
Way #1 is best if you may want to define more than one diamond for a particular reaction. For example, if you wanted both red and yellow diamonds to make Flameite. Just put the [REACTION_CLASS:KELDANES_RED_DIAMONDS] in the raw entries of both yellow and red diamonds.
Way#2 is faster, but less versatile, because one is limited by how well one can define things in a single reagent entry. So you can be completely specific, 'choose a rough red diamond', but the next step down is just 'choose any inorganic rough', which is now quite broad. However this way is better if you really will only want one diamond type per reaction - only red, for example, to make Flameite.
Way#3 has the least amount of duplication, and won't clutter your workshop with reactions to choose from, but also gives you no control on what gem, out of all the possible gems with the reaction product, are used. Except, again, by using stockpiled to determine what gem happens to be close to the workshop.
Something that was very enlightening to me was when someone said, in another post, and not to me, the following: You can technically make a reaction that takes ANYTHING, regardless of what it is, as a reagent, if you use [REAGENT:A:1:NONE:NONE:NONE:NONE].
That was a moment of epiphany, as I suddenly realized how items were referenced in reactions. It showed me that any time one had a 'none' or a 'no subtype', it actually meant 'ANYTHING so long as it has the other defining features'. So if you have, for example, [REAGENT:B:1:NONE:NONE:INORGANIC:GOLD], it will use ANY gold item, regardless of what it may be, including crafts and chairs if they happen to be laying about.
Another way to put it is...
When you specify [REAGENT:B:1:BOULDER:NONE:INORGANIC:BASALT], you can only use basalt boulders because what you are telling it is, in this order: Use a boulder, specifically one made of an inorganic material, specifically that of basalt. This is very specific. But you can have [REAGENT:B:1:BOULDER:NONE:INORGANIC:NONE], and it will use any boulder because this tells it: Use a boulder, specifically one of an inorganic material. It won't, in this case, differentiate native gold boulders from basalt. Likewise, if you become even less specific, you have [REAGENT:B:1:BOULDER:NONE:NONE:NONE], which says 'Use a boulder'. In such a case, it could use rock boulders, pearl boulders, or if you happen to have any laying about, tree boulders or meat boulders.
NOTE: What I have said above about reactants does not hold for products. If I put [PRODUCT:100:1:BOULDER:NONE:INORGANIC:NONE], I can't remember if it just crashes the game or if it produces some generic 'boulder' of a generic material with no real traits... I think the former. Products, if I am not mistaken, need to be specific.