#
#  Copyright (C) 2014 by Branislav Mamojka <mamojka@unss.sk>
#  Copyright (C) 2016 by Peter Vagner <peter.v@datagate.sk>
#
#  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 2.1 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/>.
#
#--------------------------------------------------------------------------------
#
#  Slovak Braille
#
#     Created and maintained by Branislav Mamojka <mamojka@unss.sk>
#                               Peter Vagner <peter.v@datagate.sk>
#
#     Based on the official Slovak Braille Standard
#     Derived from the Czech braille table by Bert Frees and Jan Halousek
# ----------------------------------------------------------------------------------------------

# ----------------------------------------------------------------------------------------------
# Braille indicator opcodes
# ----------------------------------------------------------------------------------------------

numsign  3456
capsletter  6
begcapsword  6-6
endcapsword  56

# ----------------------------------------------------------------------------------------------
# Literary digits
# ----------------------------------------------------------------------------------------------

include litdigits6Dots.uti

# ----------------------------------------------------------------------------------------------
# Decimal points, hyphens
# ----------------------------------------------------------------------------------------------

decpoint  \x002C  2
decpoint  \x002E  3
hyphen    \x002D  36

# ----------------------------------------------------------------------------------------------
# Letter prefix in numbers
# ----------------------------------------------------------------------------------------------

class    digitletter                 abcdefghij
noback context  $d[]%digitletter            @56
noback context  $d"."[]%digitletter         @56
noback context  $d","[]%digitletter         @56

# ----------------------------------------------------------------------------------------------
