Package io.github.zazalng.contracts


package io.github.zazalng.contracts
Contract types and language definitions for baht text conversion.

This package contains the core contract interfaces and enumerations that define the behavior and capabilities of the baht conversion system.

Key Types in v2.0.0

The main types in this package are:

  • LanguageHandler (NEW) - Interface for implementing language-specific conversion logic. Implement this to add ANY language without core modifications.
  • Language - Enum for built-in languages (THAI, ENGLISH). Kept for backward compatibility; use LanguageHandler for new code.

LanguageHandler Interface (v2.0.0 NEW)

The LanguageHandler interface is the new extensibility mechanism:

  • Method: convert(ThaiBaht) - Performs the actual conversion to language-specific text
  • Method: getLanguageCode() - Returns ISO 639 language code (e.g., "th", "en")
  • Method: getLanguageName() - Returns human-readable language name
  • Method: getUnitWord() - Returns currency unit (บาท, Baht, ກີບ, etc.)
  • Method: getExactWord() - Returns exact indicator (ถ้วน, Only, ເທົ່າ, etc.)
  • Method: getSatangWord() - Returns satang unit (สตางค์, Satang, ແອັດ, etc.)
  • Method: getNegativePrefix() - Returns negative prefix (ลบ, Minus, ລົບ, etc.)

Creating Custom Languages

Implement the interface to create custom language handlers:


   public class YourLanguageHandler implements LanguageHandler {
       @Override
       public String convert(ThaiBaht baht) {
           // Your conversion logic here
       }

       @Override public String getLanguageCode() { return "xx"; }
       @Override public String getLanguageName() { return "Your Language"; }
       @Override public String getUnitWord() { return "unit"; }
       @Override public String getExactWord() { return "exact"; }
       @Override public String getSatangWord() { return "subunit"; }
       @Override public String getNegativePrefix() { return "neg"; }
   }
 

Language Enum (Backward Compatibility)

The Language enum defines built-in languages:

  • THAI - Thai language output with default prefix "ลบ" (Thai minus)
  • ENGLISH - English language output with default prefix "Minus"

Default Prefixes by Language

Each built-in language has a default prefix for negative amounts:

Language Default Prefix Example Output
THAI "ลบ" "ลบหนึ่งร้อยบาท"
ENGLISH "Minus" "Minus One Hundred Baht"

v2.0.0 Architecture Change

Version 2.0.0 shifts from enum-based language selection to interface-based handlers:

  • Before (v1.4.0): Languages locked in Language enum → Limited extensibility
  • After (v2.0.0): Languages implement LanguageHandler interface → Unlimited extensibility
  • Benefit: Add new languages without modifying core library code
  • Backward Compat: Language enum still supported for v1.4.0 code

Usage Examples

Using Built-in Handler (v2.0.0 Recommended)


   import io.github.zazalng.ThaiBahtConfig;
   import io.github.zazalng.handler.ThaiLanguageHandler;

   ThaiBahtConfig config = ThaiBahtConfig.builder(new ThaiLanguageHandler())
       .build();
 

Using Custom Handler (v2.0.0 NEW)


   import io.github.zazalng.ThaiBahtConfig;
   import io.github.zazalng.contracts.LanguageHandler;

   ThaiBahtConfig config = ThaiBahtConfig.builder(new LaotianLanguageHandler())
       .build();
 

Using Language Enum (v1.4.0 Backward Compat)


   import io.github.zazalng.ThaiBahtConfig;
   import io.github.zazalng.contracts.Language;

   ThaiBahtConfig config = ThaiBahtConfig.builder(Language.THAI)
       .build();
   // Internally creates ThaiLanguageHandler
 

Migration from v1.4.0 to v2.0.0

No changes required - existing code continues to work. To adopt v2.0.0 syntax:


   // Old (still works)
   ThaiBahtConfig config = ThaiBahtConfig.builder(Language.THAI).build();

   // New (recommended)
   ThaiBahtConfig config = ThaiBahtConfig.builder(new ThaiLanguageHandler()).build();
 
Since:
1.3.0
Version:
2.0.0
Author:
Zazalng
See Also:
  • Class
    Description
    Deprecated.
    Interface for language-specific text conversion with self-contained language configuration.