# liblouis: Russian translation table for program sources
#
# -----------
#-index-name: Russian, computer
#-display-name: Russian computer braille
#
#+locale:ru
#+type:computer
#
# TODO: Please correct the metadata above. It is not meant to be
# accurate nor complete. It hasn't been verified by the table
# author yet. It is merely an attempt by the liblouis maintainers
# to get some sensible initial values in place.
#
# TODO: Please add a reference to official documentation about
# the implemented braille code. Preferably submit the documents
# to https://github.com/liblouis/braille-specs.
# -----------
#
#  Copyright (C) 2013 Igor B. Poretsky <poretsky@mlbox.ru>
#
#  This file is part of liblouis.
#
#  liblouis is free software: you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as
#  published by the Free Software Foundation, either version 3 of the
#  License, or (at your option) any later version.
#
#  liblouis is distributed in the hope that it will be useful, but
#  WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
#  Lesser General Public License for more details.
#
#  You should have received a copy of the GNU Lesser General Public
#  License along with liblouis. If not, see
#  <http://www.gnu.org/licenses/>.

# This table is not a computer braille in usual sense.
# It is intended for producing printable braille representation
# of a program source text, especially when it contains
# Russian comments or literals. Use it as an alternative
# literary braille table.

# Display and character definitions:
include ru-letters.dis
include ru-chardefs.cti
include en-chardefs.cti English character definitions

# Braille indicators:
numsign 3456  number sign, just a dots operand
capsletter 46
begcapsword 56
endcapsword 6

# The decimal digits:
include litdigits6Dots.uti

# Punctuations:
decpoint . 256
prepunc " 236
postpunc " 356
hyphen - 36
noback always . 256
noback always , 2
always ; 6-23
noback always : 25
always ? 6-26
always ! 6-235
noback always ' 3
noback always ` 4

# Special symbols:
always @ 4-1
always # 4-1345
always $ 4-145
always % 3456-356
always ^ 56-26
always & 6-12346
noback always * 23
noback always ( 126
noback always ) 345
always _ 6-25
noback always [ 12356
noback always ] 23456
always { 46-126
always } 46-345
always \\ 4-16
always | 456-3
noback always ~ 26

# mathematical symbols:
noback always - 36
noback always + 235
always / 6-34
always < 4-246
always > 4-135
noback always = 2356

# Symbol classes for special rules below:
class upperlatin ABCDEFGHIJKLMNOPQRSTUVWXYZ
class lowerlatin abcdefghijklmnopqrstuvwxyz
class uppercyrillic \x0401\x0410\x0411\x0412\x0413\x0414\x0415\x0416\x0417\x0418\x0419\x041A\x041B\x041C\x041D\x041E\x041F\x0420\x0421\x0422\x0423\x0424\x0425\x0426\x0427\x0428\x0429\x042A\x042B\x042C\x042D\x042E\x042F
class lowercyrillic \x0430\x0431\x0432\x0433\x0434\x0435\x0436\x0437\x0438\x0439\x043A\x043B\x043C\x043D\x043E\x043F\x0440\x0441\x0442\x0443\x0444\x0445\x0446\x0447\x0448\x0449\x044A\x044B\x044C\x044D\x044E\x044F\x0451

class latin ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
class cyrillic \x0401\x0410\x0411\x0412\x0413\x0414\x0415\x0416\x0417\x0418\x0419\x041A\x041B\x041C\x041D\x041E\x041F\x0420\x0421\x0422\x0423\x0424\x0425\x0426\x0427\x0428\x0429\x042A\x042B\x042C\x042D\x042E\x042F\x0430\x0431\x0432\x0433\x0434\x0435\x0436\x0437\x0438\x0439\x043A\x043B\x043C\x043D\x043E\x043F\x0440\x0441\x0442\x0443\x0444\x0445\x0446\x0447\x0448\x0449\x044A\x044B\x044C\x044D\x044E\x044F\x0451

swapcd updigit 1234567890 1,12,14,145,15,124,1245,125,24,245

# Mark letters immediately following digits.
noback context [$d]%lowerlatin %updigit@6
noback context [$d]%lowercyrillic %updigit@5
noback context [$d"."]%lowerlatin %updigit@256@6
noback context [$d"."]%lowercyrillic %updigit@256@5

# Fix cyrillic letter marks.
noback pass2 [@46]%cyrillic @45
noback pass2 [@56]%cyrillic @456
noback pass2 [@6]%cyrillic @5
