# liblouis: Russian translation table for program sources
#
# -----------
#-index-name: Russian, for program sources
#-display-name: Russian braille for program sources
#
#+locale:ru
#+type:literary
#+grade:1
#+variant:for-source-code
#
# 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:
attribute upperlatin ABCDEFGHIJKLMNOPQRSTUVWXYZ
attribute lowerlatin abcdefghijklmnopqrstuvwxyz
attribute 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
attribute 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

attribute latin ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
attribute 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
