def-gthill / lexurgy

A high-powered sound change applier
GNU General Public License v3.0
42 stars 5 forks source link

Restructure as a multi-project build, including the new API #72

Closed def-gthill closed 10 months ago

def-gthill commented 10 months ago

This restructures the project as a multi-project Gradle build. The three projects are:

def-gthill commented 10 months ago

I moved all the SC API files into their own package, and also renamed services to api, which better describes what it's actually for.

I understand wanting to share those data classes, but at this point I think it would be a mistake. The way I've carved out the core project, it has a clear, narrow purpose: take in sound change rules and input words, send back output words and/or error messages. It has no business getting involved with JSON serialization. If we want to extend the CLI server mode contract to include RuleFailure and TraceStep structures, we can copy the definitions over. Yes, that means there's a bit of code duplication, but duplication is better than unnecessary coupling.

neta-elad commented 10 months ago

Yeah, on second thought I agree.