Class: Yosina::Transliterators::IvsSvsBase::ForwardTransliterator
- Inherits:
-
Object
- Object
- Yosina::Transliterators::IvsSvsBase::ForwardTransliterator
- Defined in:
- lib/yosina/transliterators/ivs_svs_base.rb
Overview
Forward transliterator to add IVS/SVS selectors to base characters
Instance Attribute Summary collapse
-
#base_to_variants ⇒ Object
readonly
Returns the value of attribute base_to_variants.
-
#prefer_svs ⇒ Object
readonly
Returns the value of attribute prefer_svs.
Instance Method Summary collapse
-
#call(input_chars) ⇒ Enumerable<Char>
Add IVS/SVS selectors to base characters.
-
#initialize(base_to_variants, prefer_svs) ⇒ ForwardTransliterator
constructor
Initialize the forward transliterator with options.
Constructor Details
#initialize(base_to_variants, prefer_svs) ⇒ ForwardTransliterator
Initialize the forward transliterator with options
17 18 19 20 |
# File 'lib/yosina/transliterators/ivs_svs_base.rb', line 17 def initialize(base_to_variants, prefer_svs) @base_to_variants = base_to_variants @prefer_svs = prefer_svs end |
Instance Attribute Details
#base_to_variants ⇒ Object (readonly)
Returns the value of attribute base_to_variants.
11 12 13 |
# File 'lib/yosina/transliterators/ivs_svs_base.rb', line 11 def base_to_variants @base_to_variants end |
#prefer_svs ⇒ Object (readonly)
Returns the value of attribute prefer_svs.
11 12 13 |
# File 'lib/yosina/transliterators/ivs_svs_base.rb', line 11 def prefer_svs @prefer_svs end |
Instance Method Details
#call(input_chars) ⇒ Enumerable<Char>
Add IVS/SVS selectors to base characters
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/yosina/transliterators/ivs_svs_base.rb', line 26 def call(input_chars) offset = 0 Chars.enum do |y| input_chars.each do |char| # Try to add IVS/SVS selectors to base characters record = @base_to_variants[char.c] replacement = nil if record if @prefer_svs && record.svs replacement = record.svs elsif record.ivs replacement = record.ivs end end if replacement y << Char.new(c: replacement, offset: offset, source: char) offset += replacement.length else y << char.with_offset(offset) offset += char.c.length end end end end |