package pana

import (
	"encoding/json"

	ld "sourcery.dny.nu/longdistance"
)

// Localised represents a value with an optional language tag and direction.
//
// It mirrors a language-mapped attribute in JSON-LD.
type Localised ld.Node
type Localized = Localised

// NewLocalised initialises a new Localised.
func NewLocalised() *Localised {
	return &Localised{}
}

// Build finalises the Localised.
func (l *Localised) Build() Localised {
	return *l
}

// GetLanguage returns a normalised to lower-case BCP-47 language tag.
//
// The empty string indicates that the language is unknown, not English.
func (l *Localised) GetLanguage() string {
	return l.Language
}

// SetLanguage sets the language tag for the value.
//
// This must be a valid BCP-47 language tag and may be normalised to lower-case.
func (l *Localised) SetLanguage(lang string) *Localised {
	l.Language = lang
	return l
}

// GetValue returns the value.
func (l *Localised) GetValue() json.RawMessage {
	return l.Value
}

// SetValue sets the value.
func (l *Localised) SetValue(value json.RawMessage) *Localised {
	l.Value = value
	return l
}
