Browse Source

Initial commit

master
Maxim Lihachev 12 years ago
commit
cb99d998e1
  1. 10
      bor
  2. 45
      dates
  3. 49
      defgroups
  4. 15
      doctools2man
  5. 30
      ext
  6. 326
      fb2
  7. 25
      getignore
  8. 10
      ibor
  9. 23
      mem
  10. 17
      office2pdf
  11. 13
      pk
  12. 7
      rip
  13. 7
      rip_pcm
  14. 25
      setrating
  15. 18
      suDo
  16. 157
      utable

10
bor

@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
#!/bin/bash
#- Чтение цитат с bash.org.ru
curl -s http://bash.im/rss/ | \
iconv -c -f cp1251 -t utf8 | \
sed 's/<description><!\[CDATA\[/\n---------------------------\n\n/g;
s/\]\]><\/description>//g; s/<br>/\n/g; s/\&lt;/>> /g;
s/\&gt;/:/g; s/\&quot;/"/g; s/\s*<.*$\|\s*xmlns:.*$//g;' | \
grep . | less

45
dates

@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
#!/bin/bash
#Создан: Чт 06 Май 2010 02:44:00
#Изменён: Ср 28 авг 2013 19:58:49
# Скрипт напоминания о датах
#
# Формат файла DATAFILE:
#
# = Январь =
#
# * *01/01* - Событие 1
#
# = Февраль =
#
# * *02/02* - Событие 2
# * *03/02* - Событие 3
#Файл с данными
DATAFILE="$SHELLRC/vimwiki/wiki/ЖЖ/Даты и события/dates.wiki"
#За сколько дней оповещать
DAYS=3
#Сегодняшнее число
TODAY=$(\date +%s --date=$(\date '+%m/%d'))
#Количество найденных событий
FOUND=0
dates() {
echo "$greenБлижайшие даты:$rstc"
#Поиск дат в базе данных
for i in $(seq 0 $DAYS); do
DATE=$(\date -d "UTC 1970-01-01 $(($TODAY + 86400*$i)) secs" '+%d/%m')
grep -v '#.*' "$DATAFILE" | grep $DATE && ((FOUND++))
done;
#Код возврата. 1 - не найдено дат.
[ $FOUND -eq 0 ] && echo "-" && exit 1 || exit 0
}
case "$1" in
-all) cat "$DATAFILE";;
*) dates;;
esac

49
defgroups

@ -0,0 +1,49 @@ @@ -0,0 +1,49 @@
#!/usr/bin/env guile
!#
;;;Создан: Сб 10 июл 2010 19:29:10
;;;Изменён: Вс 21 июл 2010 01:40:25
;;;
;;; Скрипт составления команды UNIX Shell для добавления пользователя в группы.
;;; Группы добавляются к уже имеющимся.
;;;
;;; (c) 2010, Maxim Lihachev, <envrm@yandex.ru>
;;;
;;Стандартные группы для пользователей
(define default-groups (list "plugdev" "audio" "video" "cdrom" "scanner" "users"))
;;Получение первого элемента вектора
(define (vector-car vector) (vector-ref vector 0))
;;Получение списка существующих групп
(define (get-all-groups)
(do ( (group (getgr) (getgr))
(groups '() (append groups (list group))))
((not (vector? group)) groups)))
;;Получение списка групп, в которые входит данный пользователь
(define (get-old-groups user groups)
(map vector-car (filter (lambda (g) (member user (group:mem g))) groups)))
;;Получение списка групп, в которые должен входить пользователь
(define (get-new-groups groups)
(filter (lambda (x) (not (member x groups))) default-groups))
;;Создание команды оболочки для добавления пользователя в группы
(define (make-command user groups)
(format #f "usermod -G ~A ~A\n" (string-join groups ",") user))
;;;-----------------------------------------------------------------------------
;;Формирование команд оболочки
(let* ( (all-groups (get-all-groups))
(users (if (< 1 (length (command-line)))
(cdr (command-line))
(list (cuserid))))
(get-command (lambda (user)
(let* ( (oldg (get-old-groups user all-groups))
(newg (get-new-groups oldg)))
(display (make-command user (append oldg newg)))))))
(for-each get-command users))

15
doctools2man

@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
#!/usr/bin/env tclsh
#Создан: Сбт 09 Июл 2011 00:22:26
#Изменён: Сбт 09 Июл 2011 01:32:08
package require doctools
package require fileutil
# USAGE
lassign $argv format file out
::doctools::new mydtp -format $format
fileutil::writeFile -encoding koi8-r $out [mydtp format [fileutil::cat $file]]

30
ext

@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
#!/bin/bash
#- Распаковка архивов
ext() {
[ -f "$1" ]; {
case "$1" in
*.tar.bz2) tar xjf "$1";;
*.tar.gz) tar xzf "$1";;
*.tar.Z) tar xzf "$1";;
*.txz) tar xJf "$1";;
*.xz) tar xJf "$1";;
*.bz2) bunzip2 "$1";;
*.rar) unrar x "$1";;
*.gz) gunzip "$1";;
*.jar) unzip "$1";;
*.tar) tar xf "$1";;
*.tbz2) tar xjf "$1";;
*.tgz) tar xzf "$1";;
*.zip) unzip "$1";;
*.Z) uncompress "$1";;
*.7z) 7z x "$1";;
*.7za) 7z x "$1";;
*) echo -e \
""$green"<${1:-"-"}>: Неизвестный формат архива";;
esac
}
}
ext "$*"

326
fb2

@ -0,0 +1,326 @@ @@ -0,0 +1,326 @@
#!/bin/bash
#
case ${1:0-3} in
zip) TEXT=$(zcat "$1");;
fb2) TEXT=$(cat "$1");;
*) echo "Неизвестный формат файла"; exit 1;;
esac
# zip) zcat "$1" | xsltproc "$(dirname $(which $0))/FB2_2_xhtml.xsl" -;;
# fb2) cat "$1" | xsltproc "$(dirname $(which $0))/FB2_2_xhtml.xsl" -;;
FB2=`cat <<FB2RULES
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:fb="http://www.gribuser.ru/xml/fictionbook/2.0">
<xsl:output method="xml" encoding="UTF-8"/>
<xsl:key name="note-link" match="fb:section" use="@id"/>
<xsl:template match="/*">
<html>
<head>
<xsl:if test="fb:description/fb:title-info/fb:lang = 'ru'">
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8"/>
</xsl:if>
<title>
<xsl:value-of select="fb:description/fb:title-info/fb:book-title"/>
</title>
<style type="text/x-oeb1-css">
A { color : #0002CC }
A:HOVER { color : #BF0000 }
BODY { background-color : #FEFEFE; color : #000000; font-family : Verdana, Geneva, Arial, Helvetica, sans-serif; text-align : justify }
H1{ font-size : 160%; font-style : normal; font-weight : bold; text-align : left; border : 1px solid Black; background-color : #E7E7E7; margin-left : 0px; page-break-before : always; }
H2{ font-size : 130%; font-style : normal; font-weight : bold; text-align : left; background-color : #EEEEEE; border : 1px solid Gray; page-break-before : always; }
H3{ font-size : 110%; font-style : normal; font-weight : bold; text-align : left; background-color : #F1F1F1; border : 1px solid Silver;}
H4{ font-size : 100%; font-style : normal; font-weight : bold; text-align : left; border : 1px solid Gray; background-color : #F4F4F4;}
H5{ font-size : 100%; font-style : italic; font-weight : bold; text-align : left; border : 1px solid Gray; background-color : #F4F4F4;}
H6{ font-size : 100%; font-style : italic; font-weight : normal; text-align : left; border : 1px solid Gray; background-color : #F4F4F4;}
SMALL{ font-size : 80% }
BLOCKQUOTE{ margin-left :4em; margin-top:1em; margin-right:0.2em;}
HR{ color : Black }
UL{margin-left: 0}
.epigraph{width:50%; margin-left : 35%;}
</style>
</head>
<body>
<xsl:for-each select="fb:description/fb:title-info/fb:annotation">
<div>
<xsl:call-template name="annotation"/>
</div>
<hr/>
</xsl:for-each>
<!-- BUILD TOC -->
<ul>
<xsl:apply-templates select="fb:body" mode="toc"/>
</ul>
<hr/>
<!-- BUILD BOOK -->
<xsl:for-each select="fb:body">
<xsl:if test="position()!=1">
<hr/>
</xsl:if>
<xsl:if test="@name">
<h4 align="center">
<xsl:value-of select="@name"/>
</h4>
</xsl:if>
<!-- <xsl:apply-templates /> -->
<xsl:apply-templates/>
</xsl:for-each>
</body>
</html>
</xsl:template>
<!-- author template -->
<xsl:template name="author">
<xsl:value-of select="fb:first-name"/>
<xsl:text disable-output-escaping="no">&#032;</xsl:text>
<xsl:value-of select="fb:middle-name"/>&#032;
<xsl:text disable-output-escaping="no">&#032;</xsl:text>
<xsl:value-of select="fb:last-name"/>
<br/>
</xsl:template>
<!-- secuence template -->
<xsl:template name="sequence">
<LI/>
<xsl:value-of select="@name"/>
<xsl:if test="@number">
<xsl:text disable-output-escaping="no">,&#032;#</xsl:text>
<xsl:value-of select="@number"/>
</xsl:if>
<xsl:if test="fb:sequence">
<ul>
<xsl:for-each select="fb:sequence">
<xsl:call-template name="sequence"/>
</xsl:for-each>
</ul>
</xsl:if>
<!-- <br/> -->
</xsl:template>
<!-- toc template -->
<xsl:template match="fb:section|fb:body" mode="toc">
<xsl:choose>
<xsl:when test="name()='body' and position()=1 and not(fb:title)">
<xsl:apply-templates select="fb:section" mode="toc"/>
</xsl:when>
<xsl:otherwise>
<li>
<a href="#TOC_{generate-id()}"><xsl:value-of select="normalize-space(fb:title/fb:p[1] | @name)"/></a>
<xsl:if test="fb:section">
<ul><xsl:apply-templates select="fb:section" mode="toc"/></ul>
</xsl:if>
</li>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- description -->
<xsl:template match="fb:description">
<xsl:apply-templates/>
</xsl:template>
<!-- body -->
<xsl:template match="fb:body">
<div><xsl:apply-templates/></div>
</xsl:template>
<xsl:template match="fb:section">
<a name="TOC_{generate-id()}"></a>
<xsl:if test="@id">
<xsl:element name="a">
<xsl:attribute name="name"><xsl:value-of select="@id"/></xsl:attribute>
</xsl:element>
</xsl:if>
<xsl:apply-templates/>
</xsl:template>
<!-- section/title -->
<xsl:template match="fb:section/fb:title|fb:poem/fb:title">
<xsl:choose>
<xsl:when test="count(ancestor::node()) &lt; 9">
<xsl:element name="{concat('h',count(ancestor::node())-3)}">
<a name="TOC_{generate-id()}"></a>
<xsl:if test="@id">
<xsl:element name="a">
<xsl:attribute name="name"><xsl:value-of select="@id"/></xsl:attribute>
</xsl:element>
</xsl:if>
<xsl:apply-templates/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="h6">
<xsl:if test="@id">
<xsl:element name="a">
<xsl:attribute name="name"><xsl:value-of select="@id"/></xsl:attribute>
</xsl:element>
</xsl:if>
<xsl:apply-templates/>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- section/title -->
<xsl:template match="fb:body/fb:title">
<h1><xsl:apply-templates mode="title"/></h1>
</xsl:template>
<xsl:template match="fb:title/fb:p">
<xsl:apply-templates/><xsl:text disable-output-escaping="no">&#032;</xsl:text><br/>
</xsl:template>
<!-- subtitle -->
<xsl:template match="fb:subtitle">
<xsl:if test="@id">
<xsl:element name="a">
<xsl:attribute name="name"><xsl:value-of select="@id"/></xsl:attribute>
</xsl:element>
</xsl:if>
<h5>
<xsl:apply-templates/>
</h5>
</xsl:template>
<!-- p -->
<xsl:template match="fb:p">
<div align="justify"><xsl:if test="@id">
<xsl:element name="a">
<xsl:attribute name="name"><xsl:value-of select="@id"/></xsl:attribute>
</xsl:element>
</xsl:if> &#160;&#160;&#160;<xsl:apply-templates/></div>
</xsl:template>
<!-- strong -->
<xsl:template match="fb:strong">
<b><xsl:apply-templates/></b>
</xsl:template>
<!-- emphasis -->
<xsl:template match="fb:emphasis">
<i> <xsl:apply-templates/></i>
</xsl:template>
<!-- style -->
<xsl:template match="fb:style">
<span class="{@name}"><xsl:apply-templates/></span>
</xsl:template>
<!-- empty-line -->
<xsl:template match="fb:empty-line">
<br/>
</xsl:template>
<!-- link -->
<xsl:template match="fb:a">
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="@xlink:href"/></xsl:attribute>
<xsl:attribute name="title">
<xsl:choose>
<xsl:when test="starts-with(@xlink:href,'#')"><xsl:value-of select="key('note-link',substring-after(@xlink:href,'#'))/fb:p"/></xsl:when>
<xsl:otherwise><xsl:value-of select="key('note-link',@xlink:href)/fb:p"/></xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:choose>
<xsl:when test="(@type) = 'note'">
<sup>
<xsl:apply-templates/>
</sup>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:template>
<!-- annotation -->
<xsl:template name="annotation">
<xsl:if test="@id">
<xsl:element name="a">
<xsl:attribute name="name"><xsl:value-of select="@id"/></xsl:attribute>
</xsl:element>
</xsl:if>
<h3>Annotation</h3>
<xsl:apply-templates/>
</xsl:template>
<!-- epigraph -->
<xsl:template match="fb:epigraph">
<blockquote class="epigraph">
<xsl:if test="@id">
<xsl:element name="a">
<xsl:attribute name="name"><xsl:value-of select="@id"/></xsl:attribute>
</xsl:element>
</xsl:if>
<xsl:apply-templates/>
</blockquote>
</xsl:template>
<!-- epigraph/text-author -->
<xsl:template match="fb:epigraph/fb:text-author">
<blockquote>
<i><xsl:apply-templates/></i>
</blockquote>
</xsl:template>
<!-- cite -->
<xsl:template match="fb:cite">
<blockquote>
<xsl:if test="@id">
<xsl:element name="a">
<xsl:attribute name="name"><xsl:value-of select="@id"/></xsl:attribute>
</xsl:element>
</xsl:if>
<xsl:apply-templates/>
</blockquote>
</xsl:template>
<!-- cite/text-author -->
<xsl:template match="fb:text-author">
<blockquote>
<i> <xsl:apply-templates/></i></blockquote>
</xsl:template>
<!-- date -->
<xsl:template match="fb:date">
<xsl:choose>
<xsl:when test="not(@value)">
&#160;&#160;&#160;<xsl:apply-templates/>
<br/>
</xsl:when>
<xsl:otherwise>
&#160;&#160;&#160;<xsl:value-of select="@value"/>
<br/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- poem -->
<xsl:template match="fb:poem">
<blockquote>
<xsl:if test="@id">
<xsl:element name="a">
<xsl:attribute name="name"><xsl:value-of select="@id"/></xsl:attribute>
</xsl:element>
</xsl:if>
<xsl:apply-templates/>
</blockquote>
</xsl:template>
<!-- stanza -->
<xsl:template match="fb:stanza">
<xsl:apply-templates/>
<br/>
</xsl:template>
<!-- v -->
<xsl:template match="fb:v">
<xsl:if test="@id">
<xsl:element name="a">
<xsl:attribute name="name"><xsl:value-of select="@id"/></xsl:attribute>
</xsl:element>
</xsl:if>
<xsl:apply-templates/><br/>
</xsl:template>
<!-- image -->
<xsl:template match="fb:image">
<div align="center">
<img border="1">
<xsl:choose>
<xsl:when test="starts-with(@xlink:href,'#')">
<xsl:attribute name="src"><xsl:value-of select="substring-after(@xlink:href,'#')"/></xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="src"><xsl:value-of select="@xlink:href"/></xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</img>
</div>
</xsl:template>
</xsl:stylesheet>
FB2RULES`
echo $TEXT | xsltproc <(echo $FB2) - | lynx -stdin -display_charset=UTF-8

25
getignore

@ -0,0 +1,25 @@ @@ -0,0 +1,25 @@
#!/bin/bash
#Создан: Вс 25 авг 2013 19:40:12
#Изменён: Ср 28 авг 2013 20:24:59
# Добавление файлов с меткой +GITIGNORE в исключения .git
# Метка должна располагаться не далее пятой колонки
\grep -E '^.{1,5}\+GITIGNORE' -R > /tmp/gitignore.tmp
if [ -f ".gitignore" ]; then
while read line; do
echo lll $line
sed -i "/${line//\//.}/d" /tmp/gitignore.tmp 2> /dev/null
done < .gitignore
fi
echo "\n# [ $(\date +%d.%m.%Y) ]\n" >> .gitignore
cut -d ':' -f 1 /tmp/gitignore.tmp | sort -u >> .gitignore
echo >> .gitignore
\rm /tmp/gitignore.tmp

10
ibor

@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
#!/bin/bash
#- Чтение цитат с ibash.org.ru
curl -s http://ibash.org.ru/rss.xml | \
iconv -c -f cp1251 -t utf8 | \
sed 's/<description><!\[CDATA\[/\n---------------------------\n\n/g;
s/\]\]><\/description>//g; s/<br \/>/\n/g; s/\&lt;/>> /g;
s/\&gt;/:/g; s/\&quot;/"/g; s/\s*<.*$\|\s*xmlns:.*$//g;' | \
grep . | less

23
mem

@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
#!/bin/bash
#- Заметки
memfile=$SHELLRC/var/memory/mem
case "$1" in
-h) printf "\tКлючи:\n\
-e\t-Редактирование записей\n\
-l n\t-Последние n записей\n\
-s\t-Поиск по записям\n\
-remove\t-Удалить запись по номеру\n\
-clear\t-Удалить все записи\n\
-h\t-Справка\n";;
-e) vim $memfile;;
-l) tail -"$2" $memfile | nl | \grep --color -E '.{1,}==>';;
-s) grep "$2" $memfile | nl | \grep --color -E '.{1,}==>';;
-remove) sed "$2d" -i $memfile;;
-clear) > $memfile;;
'') cat $memfile | nl | \grep --color -E '.{1,}==>';;
*) printf "[ `\date '+%d.%m.%Y %H:%M:%S'` ] ==> $1\n" >> $memfile && printf \
"$greenЗаметка$yellow $1 $greenуспешно добавлена\n$rstc"
esac

17
office2pdf

@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
#!/bin/bash
#pgrep soffice.bin || \
soffice \
-headless \
-accept="socket,host=127.0.0.1,port=8100;urp;" \
-nofirststartwizard
sleep 1
for i; {
java -jar $SHELLRC/etc/soft/jodconverter/lib/jodconverter-cli-2.2.2.jar \
"$i" "${i//\.*/}.pdf"
}
killall soffice.bin

13
pk

@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
#!/bin/bash
#- Запаковка архивов
case ${2:-tbz} in
tbz) tar cjvf $1.tar.bz2 $1;;
tgz) tar czvf $1.tar.gz $1;;
tar) tar cpvf $1.tar $1;;
bz2) bzip $1;;
gz) gzip -c -9 -n $1 > $1.gz;;
zip) zip -r $1.zip $1;;
7z) 7za a $1.7z $1;;
esac

7
rip

@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
#!/bin/bash
#- Рип DVD и видео
mencoder $1 -ovc x264 -vf yadif -oac copy \
-x264encopts subq=6:partitions=all:8x8dct:me=umh:\
frameref=5:bframes=4:b_pyramid:weight_b:threads=2:crf=22 -o $2

7
rip_pcm

@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
#!/bin/bash
#- Рип DVD и видео с pcm-дорожкой
mencoder $1 -ovc x264 -vf yadif -oac pcm \
-x264encopts subq=6:partitions=all:8x8dct:me=umh:\
frameref=5:bframes=4:b_pyramid:weight_b:threads=2:crf=22 -o $2

25
setrating

@ -0,0 +1,25 @@ @@ -0,0 +1,25 @@
#!/bin/bash
#
# Изменение комментария в id3-теге с помощью ncmpcpp
# $1 -- текст комментария
#
# Переход к редактору тегов
xdotool key e
xdotool key Down
xdotool key Down
xdotool key Down
xdotool key Down
xdotool key Down
xdotool key Down
xdotool key Down
xdotool key Down
xdotool key Down
xdotool key Down
xdotool key Return
xdotool key Control+u
xdotool type $1
xdotool key Return
xdotool key y

18
suDo

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
#!/usr/bin/env tclsh
# Выполнение команды с правами администратора
# Используется с dmenu
# suDo <command> <password>
package require Expect
proc execCommand {command password} {
spawn bash
exp_send "su -c \"$command\"\n"
expect -nocase "password: "
exp_send "$password\n"
expect eof
}
execCommand [lindex $argv 0] [lindex $argv 1]

157
utable

@ -0,0 +1,157 @@ @@ -0,0 +1,157 @@
#!/usr/bin/env tclsh
#Создан: Вт 06 июл 2010 19:18:44
#Изменён: Чт 22 июл 2010 19:27:09
#---------------------------------------------------------------------------+
# |
# Скрипт отображает символы Unicode. |
# |
# Использование: utable [класс символов] |
# |
# Copyrignt (c) 2010-2013, Likhachev Maxim, <<user@domain>> |
# |
#---------------------------------------------------------------------------+
#Классы символов Unicode
array set category {
Basic_Latin {"Basic_Latin" 0x0000 0x007F}
Latin-1_Supplement {"Latin-1_Supplement" 0x0080 0x00FF}
Latin_Extended-A {"Latin_Extended-A" 0x0100 0x017F}
Latin_Extended-B {"Latin_Extended-B" 0x0180 0x024F}
IPA_Extensions {"IPA_Extensions" 0x0250 0x02AF}
Spacing_Modifier_Letters {"Spacing_Modifier_Letters" 0x02B0 0x02FF}
Combining_Diacritical_Marks {"Combining_Diacritical_Marks" 0x0300 0x036F}
Greek_and_Coptic {"Greek_and_Coptic" 0x0370 0x03FF}
Cyrillic {"Cyrillic" 0x0400 0x04FF}
Cyrillic_Supplementary {"Cyrillic_Supplementary" 0x0500 0x052F}
Armenian {"Armenian" 0x0530 0x058F}
Hebrew {"Hebrew" 0x0590 0x05FF}
Arabic {"Arabic" 0x0600 0x06FF}
Syriac {"Syriac" 0x0700 0x074F}
Thaana {"Thaana" 0x0780 0x07BF}
Devanagari {"Devanagari" 0x0900 0x097F}
Bengali {"Bengali" 0x0980 0x09FF}
Gurmukhi {"Gurmukhi" 0x0A00 0x0A7F}
Gujarati {"Gujarati" 0x0A80 0x0AFF}
Oriya {"Oriya" 0x0B00 0x0B7F}
Tamil {"Tamil" 0x0B80 0x0BFF}
Telugu {"Telugu" 0x0C00 0x0C7F}
Kannada {"Kannada" 0x0C80 0x0CFF}
Malayalam {"Malayalam" 0x0D00 0x0D7F}
Sinhala {"Sinhala" 0x0D80 0x0DFF}
Thai {"Thai" 0x0E00 0x0E7F}
Lao {"Lao" 0x0E80 0x0EFF}
Tibetan {"Tibetan" 0x0F00 0x0FFF}
Myanmar {"Myanmar" 0x1000 0x109F}
Georgian {"Georgian" 0x10A0 0x10FF}
Hangul_Jamo {"Hangul_Jamo" 0x1100 0x11FF}
Ethiopic {"Ethiopic" 0x1200 0x137F}
Cherokee {"Cherokee" 0x13A0 0x13FF}
Unified_Canadian_Aboriginal_Syllabics {"Unified_Canadian_Aboriginal_Syllabics" 0x1400 0x167F}
Ogham {"Ogham" 0x1680 0x169F}
Runic {"Runic" 0x16A0 0x16FF}
Tagalog {"Tagalog" 0x1700 0x171F}
Hanunoo {"Hanunoo" 0x1720 0x173F}
Buhid {"Buhid" 0x1740 0x175F}
Tagbanwa {"Tagbanwa" 0x1760 0x177F}
Khmer {"Khmer" 0x1780 0x17FF}
Mongolian {"Mongolian" 0x1800 0x18AF}
Limbu {"Limbu" 0x1900 0x194F}
Tai_Le {"Tai_Le" 0x1950 0x197F}
Khmer_Symbols {"Khmer_Symbols" 0x19E0 0x19FF}
Phonetic_Extensions {"Phonetic_Extensions" 0x1D00 0x1D7F}
Latin_Extended_Additional {"Latin_Extended_Additional" 0x1E00 0x1EFF}
Greek_Extended {"Greek_Extended" 0x1F00 0x1FFF}
General_Punctuation {"General_Punctuation" 0x2000 0x206F}
Superscripts_and_Subscripts {"Superscripts_and_Subscripts" 0x2070 0x209F}
Currency_Symbols {"Currency_Symbols" 0x20A0 0x20CF}
Combining_Diacritical_Marks_for_Symbols {"Combining_Diacritical_Marks_for_Symbols" 0x20D0 0x20FF}
Letterlike_Symbols {"Letterlike_Symbols" 0x2100 0x214F}
Number_Forms {"Number_Forms" 0x2150 0x218F}
Arrows {"Arrows" 0x2190 0x21FF}
Mathematical_Operators {"Mathematical_Operators" 0x2200 0x22FF}
Miscellaneous_Technical {"Miscellaneous_Technical" 0x2300 0x23FF}
Control_Pictures {"Control_Pictures" 0x2400 0x243F}
Optical_Character_Recognition {"Optical_Character_Recognition" 0x2440 0x245F}
Enclosed_Alphanumerics {"Enclosed_Alphanumerics" 0x2460 0x24FF}
Box_Drawing {"Box_Drawing" 0x2500 0x257F}
Block_Elements {"Block_Elements" 0x2580 0x259F}
Geometric_Shapes {"Geometric_Shapes" 0x25A0 0x25FF}
Miscellaneous_Symbols {"Miscellaneous_Symbols" 0x2600 0x26FF}
Dingbats {"Dingbats" 0x2700 0x27BF}
Miscellaneous_Mathematical_Symbols-A {"Miscellaneous_Mathematical_Symbols-A" 0x27C0 0x27EF}
Supplemental_Arrows-A {"Supplemental_Arrows-A" 0x27F0 0x27FF}
Braille_Patterns {"Braille_Patterns" 0x2800 0x28FF}
Supplemental_Arrows-B {"Supplemental_Arrows-B" 0x2900 0x297F}
Miscellaneous_Mathematical_Symbols-B {"Miscellaneous_Mathematical_Symbols-B" 0x2980 0x29FF}
Supplemental_Mathematical_Operators {"Supplemental_Mathematical_Operators" 0x2A00 0x2AFF}
Miscellaneous_Symbols_and_Arrows {"Miscellaneous_Symbols_and_Arrows" 0x2B00 0x2BFF}
CJK_Radicals_Supplement {"CJK_Radicals_Supplement" 0x2E80 0x2EFF}
Kangxi_Radicals {"Kangxi_Radicals" 0x2F00 0x2FDF}
Ideographic_Description_Characters {"Ideographic_Description_Characters" 0x2FF0 0x2FFF}
CJK_Symbols_and_Punctuation {"CJK_Symbols_and_Punctuation" 0x3000 0x303F}
Hiragana {"Hiragana" 0x3040 0x309F}
Katakana {"Katakana" 0x30A0 0x30FF}
Bopomofo {"Bopomofo" 0x3100 0x312F}
Hangul_Compatibility_Jamo {"Hangul_Compatibility_Jamo" 0x3130 0x318F}
Kanbun {"Kanbun" 0x3190 0x319F}
Bopomofo_Extended {"Bopomofo_Extended" 0x31A0 0x31BF}
Katakana_Phonetic_Extensions {"Katakana_Phonetic_Extensions" 0x31F0 0x31FF}
Enclosed_CJK_Letters_and_Months {"Enclosed_CJK_Letters_and_Months" 0x3200 0x32FF}
CJK_Compatibility {"CJK_Compatibility" 0x3300 0x33FF}
CJK_Unified_Ideographs_Extension_A {"CJK_Unified_Ideographs_Extension_A" 0x3400 0x4DBF}
Yijing_Hexagram_Symbols {"Yijing_Hexagram_Symbols" 0x4DC0 0x4DFF}
CJK_Unified_Ideographs {"CJK_Unified_Ideographs" 0x4E00 0x9FFF}
Yi_Syllables {"Yi_Syllables" 0xA000 0xA48F}
Yi_Radicals {"Yi_Radicals" 0xA490 0xA4CF}
Hangul_Syllables {"Hangul_Syllables" 0xAC00 0xD7AF}
High_Surrogates {"High_Surrogates" 0xD800 0xDB7F}
High_Private_Use_Surrogates {"High_Private_Use_Surrogates" 0xDB80 0xDBFF}
Low_Surrogates {"Low_Surrogates" 0xDC00 0xDFFF}
Private_Use_Area {"Private_Use_Area" 0xE000 0xF8FF}
CJK_Compatibility_Ideographs {"CJK_Compatibility_Ideographs" 0xF900 0xFAFF}
Alphabetic_Presentation_Forms {"Alphabetic_Presentation_Forms" 0xFB00 0xFB4F}
Arabic_Presentation_Forms-A {"Arabic_Presentation_Forms-A" 0xFB50 0xFDFF}
Variation_Selectors {"Variation_Selectors" 0xFE00 0xFE0F}
Combining_Half_Marks {"Combining_Half_Marks" 0xFE20 0xFE2F}
CJK_Compatibility_Forms {"CJK_Compatibility_Forms" 0xFE30 0xFE4F}
Small_Form_Variants {"Small_Form_Variants" 0xFE50 0xFE6F}
Arabic_Presentation_Forms-B {"Arabic_Presentation_Forms-B" 0xFE70 0xFEFF}
Halfwidth_and_Fullwidth_Forms {"Halfwidth_and_Fullwidth_Forms" 0xFF00 0xFFEF}
Specials {"Specials" 0xFFF0 0xFFFF}
}
#Перевод из шестнадцатеричной системы в десятичную
proc hex2dec {code} { return [format "%d" $code]}
#Выбор наборов символов по маске
proc getCharsets {rgx} {
if {$rgx eq "-b"} { set rgx {math|arrow|misc} }
set charsetList {}
foreach charset [lsort [array names ::category]] {
if {[regexp "(?i).*($rgx).*" $charset]} {
lappend charsetList $charset
}
}
return $charsetList
}
#Вывод таблицы символов
proc showUTFCodes {charset} {
foreach {category start end} $::category($charset) {}
for {set i [hex2dec $start]} {$i <= [hex2dec $end]} {incr i} {
set char [format "%c" $i]
if {[regexp {[^[:space:]]} $char match]} {
puts [format "%-40s%#5x: %s" $category $i $char]
}
}
}
#--------------------------------------------
foreach charset [getCharsets [lindex $argv 0]] {
catch {showUTFCodes $charset}
}
Loading…
Cancel
Save