metadata {

authority_id: bas
id: 2017-bss
language: iso-639-2:rus
source_script: Cyrl
destination_script: Latn
name: Streamlined Romanization of Russian Cyrillic (Basic Streamlined System)
url: https://www.researchgate.net/publication/318402098
creation_date: 2017-07
description: |
  The streamlined approach to transliteration was initiated by the
  author with the development of the Streamlined System for the
  Romanization of Bulgarian, which was eventually codified by the
  Transliteration Act of 2009 (ДВ 2009) of the Bulgarian Parliament.

  The four purposes of the system below are in order of priority:
  1. ensure a plausible phonetic approximation of Russian words by English speaking users, including those having no knowledge of the Russian language and no available additional explanations;
  2. the system should allow for the retrieval of the original Cyrillic spellings as much as feasible;
  3. transliterated Russian words should fit an English language environment i.e. not be perceived as too ‘un-English’; and
  4. transliterated word forms should be streamlined and simple. (Ivanov 2003, Ivanov et al. 2010)

notes:
  - Typical for the streamlined approach is its non-use of diacritics,
    its use of Latin y for rendering only Cyrillic й rather than both й and
    ы, its non-use of Latin j, as well as its use of Latin h rather than kh
    for Cyrillic х.

}

tests {

test "Эх, тройка! птица тройка, кто тебя выдумал? знать, у бойкого народа\nты могла только родиться, в той земле, что не любит шутить, а\nровнем-гладнем разметнулась на полсвета, да и ступай считать версты, пока\nне зарябит тебе в очи. И не хитрый, кажись, дорожный снаряд, не\nжелезным схвачен винтом, а наскоро живьём с одним топором да долотом\nснарядил и собрал тебя ярославский расторопный мужик. Не в немецких\nботфортах ямщик: борода да рукавицы, и сидит чёрт знает на чём; а\nпривстал, да замахнулся, да затянул песню — кони вихрем, спицы в\nколесах смешались в один гладкий круг, только дрогнула дорога, да вскрикнул\nв испуге остановившийся пешеход — и вон она понеслась, понеслась,\nпонеслась!\n\nН.В. Гоголь", "Eh, troyka! ptitsa troyka, kto tebya vidumal? znat, u boykogo naroda\nti mogla tolko roditsya, v toy zemle, chto ne lyubit shutit, a\nrovnem-gladnem razmetnulas na polsveta, da i stupay schitat versti, poka\nne zaryabit tebe v ochi. I ne hitriy, kazhis, dorozhniy snaryad, ne\nzheleznim shvachen vintom, a naskoro zhivyem s odnim toporom da dolotom\nsnaryadil i sobral tebya yaroslavskiy rastoropniy muzhik. Ne v nemetskih\nbotfortah yamshchik: boroda da rukavitsi, i sidit chert znaet na chem; a\nprivstal, da zamahnulsya, da zatyanul pesnyu — koni vihrem, spitsi v\nkolesah smeshalis v odin gladkiy krug, tolko drognula doroga, da vskriknul\nv ispuge ostanovivshiysya peshehod — i von ona poneslas, poneslas,\nponeslas!\n\nN.V. Gogol"
test "ЁЖ Ёж ёж", "EZH Ezh ezh"
test "Цветущий сад", "Tsvetushchiy sad"
test "Чувство юмора", "Chuvstvo yumora"
test "Широкий выбор", "Shirokiy vibor"
test "Все подъезды заблокированны", "Vse podezdi zablokirovanni"
test "Ожерелье", "Ozherelye"
test "Ручьи", "Ruchyi"
test "Каньон", "Kanyon"
test "Бельэтаж", "Belyetazh"

}

dependency “posix”, import: true

stage {

# RULES
sub "\u042c", "Y", after: any("ЕеЁёИиОоЭэ") # Ь (before Е, Ё, И, O, Э)
sub "\u044c", "y", after: any("ЕеЁёИиОоЭэ") # ь (before Е, Ё, И, O, Э)

# CHARACTERS
parallel {
  # "\u0027": ""    # '
  sub "А", "A" # А
  sub "Б", "B" # Б
  sub "В", "V" # В
  sub "Г", "G" # Г
  sub "Д", "D" # Д
  sub "Ё", "E" # Ё
  sub "Е", "E" # Е
  sub "Ж", "Zh" # Ж
  sub "Ж", "ZH", before: any('AБBГДЕЁЖЗИЙКЛМНОПРСТУЎФХЦЧШЩЪЫЬЭЮЯІ')
  sub "Ж", "ZH", after: any('AБBГДЕЁЖЗИЙКЛМНОПРСТУЎФХЦЧШЩЪЫЬЭЮЯІ')

  sub "З", "Z" # З
  sub "Э", "E" # Э
  sub "И", "I" # И
  sub "Й", "Y" # Й
  sub "К", "K" # К
  sub "Л", "L" # Л
  sub "М", "M" # М
  sub "Н", "N" # Н
  sub "О", "O" # О
  sub "П", "P" # П
  sub "Р", "R" # Р
  sub "С", "S" # С
  sub "Т", "T" # Т
  sub "У", "U" # У
  sub "Ф", "F" # Ф
  sub "Х", "H" # Х
  sub "Ц", "Ts" # Ц
  sub "Ц", "TS", before: any('AБBГДЕЁЖЗИЙКЛМНОПРСТУЎФХЦЧШЩЪЫЬЭЮЯІ')
  sub "Ц", "TS", after: any('AБBГДЕЁЖЗИЙКЛМНОПРСТУЎФХЦЧШЩЪЫЬЭЮЯІ')
  sub "Ч", "Ch" # Ч
  sub "Ч", "CH", before: any('AБBГДЕЁЖЗИЙКЛМНОПРСТУЎФХЦЧШЩЪЫЬЭЮЯІ')
  sub "Ч", "CH", after: any('AБBГДЕЁЖЗИЙКЛМНОПРСТУЎФХЦЧШЩЪЫЬЭЮЯІ')
  sub "Ш", "Sh" # Ш
  sub "Ш", "SH", before: any('AБBГДЕЁЖЗИЙКЛМНОПРСТУЎФХЦЧШЩЪЫЬЭЮЯІ')
  sub "Ш", "SH", after: any('AБBГДЕЁЖЗИЙКЛМНОПРСТУЎФХЦЧШЩЪЫЬЭЮЯІ')
  sub "Щ", "Shch" # Щ
  sub "Щ", "SHCH", before: any('AБBГДЕЁЖЗИЙКЛМНОПРСТУЎФХЦЧШЩЪЫЬЭЮЯІ')
  sub "Щ", "SHCH", after: any('AБBГДЕЁЖЗИЙКЛМНОПРСТУЎФХЦЧШЩЪЫЬЭЮЯІ')
  sub "Ы", "I" # Ы
  sub "Я", "Ya" # Я
  sub "Я", "YA", before: any('AБBГДЕЁЖЗИЙКЛМНОПРСТУЎФХЦЧШЩЪЫЬЭЮЯІ')
  sub "Я", "YA", after: any('AБBГДЕЁЖЗИЙКЛМНОПРСТУЎФХЦЧШЩЪЫЬЭЮЯІ')
  sub "Ю", "Yu" # Ю
  sub "Ю", "YU", before: any('AБBГДЕЁЖЗИЙКЛМНОПРСТУЎФХЦЧШЩЪЫЬЭЮЯІ')
  sub "Ю", "YU", after: any('AБBГДЕЁЖЗИЙКЛМНОПРСТУЎФХЦЧШЩЪЫЬЭЮЯІ')

  # Ь (before Е, Ё, И, O, Э)
  # "\u042c\u0401": "YE"    # Ё
  # "\u042c\u0415": "YE"    # Е
  # "\u042c\u0418": "YI"    # И
  # "\u042c\u041E": "YO"    # O
  # "\u042c\u0417": "YE"    # Э

  # Ь (otherwise) -> (none)
  sub "Ь", ""

  # Ъ  -> (none)
  sub "Ъ", ""

  sub "а", "a" # а
  sub "б", "b" # б
  sub "в", "v" # в
  sub "г", "g" # г
  sub "д", "d" # д
  sub "ё", "e" # ё
  sub "е", "e" # e
  sub "ж", "zh" # ж
  sub "з", "z" # з
  sub "э", "e" # э
  sub "и", "i" # и
  sub "й", "y" # й
  sub "к", "k" # к
  sub "л", "l" # л
  sub "м", "m" # м
  sub "н", "n" # н
  sub "о", "o" # о
  sub "п", "p" # п
  sub "р", "r" # р
  sub "с", "s" # с
  sub "т", "t" # т
  sub "у", "u" # у
  sub "ф", "f" # ф
  sub "х", "h" # х
  sub "ц", "ts" # ц
  sub "ч", "ch" # ч
  sub "ш", "sh" # ш
  sub "щ", "shch" # щ
  sub "ы", "i" # ы
  sub "я", "ya" # я
  sub "ю", "yu" # ю

  # ь (before е, ё, и, o, э)
  # "\u044c\u0435": "ye"    # ё
  # "\u044c\u0451": "ye"    # е
  # "\u044c\u0438": "yi"    # и
  # "\u044c\u006f": "yo"    # o
  # "\u044c\u044d": "ye"    # э

  # ь (otherwise) -> (none)
  sub "ь", ""

  # ъ -> (none)
  sub "ъ", ""
}

}