# liblouis: Russian translation table for program sources
#
#  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 chardefs.cti

# 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
always . 256
always , 2
always ; 6-23
always : 25
always ? 6-26
always ! 6-235
always ' 3
always ` 4

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

# mathematical symbols:
always - 36
always + 235
always / 6-34
always < 4-246
always > 4-135
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
