<commit_before># -*- coding: utf-8 -*-
import re

import sublime
import sublime_plugin

STATIC_ABBR_DICT = [
    ('z', 'z-index'),
    ('w', 'width'),
    ('t', 'top'),
    ('r', 'right'),
    ('l', 'left'),
    ('b', 'bottom'),
    ('m', 'margin'),
    ('p', 'padding'),
    ('h', 'height'),
    ('q', 'quotes'),
    ('f', 'font')
]

STATIC_ABBR = dict(STATIC_ABBR_DICT)

# максимальный размер css properties
MAX_SIZE_CSS = len('-webkit-transition-timing-function')

ABBR_REGEX = re.compile(r'(\s|;|{)([a-z-]+)$', re.IGNORECASE)

class HayakuCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        regions = self.view.sel()
        if len(regions) > 1:
            # разобраться с многооконными выборками
            # пока что работаем только с одним регионом
            for r in regions:
                self.view.insert(edit, r, '\t')
            return
        region = regions[0]
        if not region.empty():
            # сделать работы с выделенным словом
            self.view.insert(edit, region, '\t')
            return
        cur_pos = region.begin()

        start_pos = cur_pos - MAX_SIZE_CSS
        if start_pos < 0:
            start_pos = 0
        probably_abbr = self.view.substr(sublime.Region(start_pos, cur_pos))
        match = ABBR_REGEX.search(probably_abbr)
        if match is None:
            self.view.insert(edit, cur_pos, '\t')
            return
        
        abbr = match.group(2)
        if abbr in STATIC_ABBR:<commit_msg>ïîìåíÿë ðåãóëÿðíîå âûðàæåíèå, îãðàíè÷èë ýêñïîðò<commit_after># -*- coding: utf-8 -*-
import re

import sublime
import sublime_plugin

__all__ = [
    'HayakuCommand',
]

STATIC_ABBR_DICT = [
    ('z', 'z-index'),
    ('w', 'width'),
    ('t', 'top'),
    ('r', 'right'),
    ('l', 'left'),
    ('b', 'bottom'),
    ('m', 'margin'),
    ('p', 'padding'),
    ('h', 'height'),
    ('q', 'quotes'),
    ('f', 'font')
]

STATIC_ABBR = dict(STATIC_ABBR_DICT)

# максимальный размер css properties
MAX_SIZE_CSS = len('-webkit-transition-timing-function')

ABBR_REGEX = re.compile(r'[\s|;|{]([a-z-]+)$', re.IGNORECASE)

class HayakuCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        regions = self.view.sel()
        if len(regions) > 1:
            # разобраться с многооконными выборками
            # пока что работаем только с одним регионом
            for r in regions:
                self.view.insert(edit, r, '\t')
            return
        region = regions[0]
        if not region.empty():
            # сделать работы с выделенным словом
            self.view.insert(edit, region, '\t')
            return
        cur_pos = region.begin()

        start_pos = cur_pos - MAX_SIZE_CSS
        if start_pos < 0:
            start_pos = 0
        probably_abbr = self.view.substr(sublime.Region(start_pos, cur_pos))
        match = ABBR_REGEX.search(probably_abbr)
        if match is None:
            self.view.insert(edit, cur_pos, '\t')
            return
        
        abbr = match.group(1)
        if abbr in STATIC_ABBR:
{'fraction_non_alphanumeric': 0.14907651715039577, 'fraction_numerical': 0.00395778364116095, 'mean_word_length': 2.189274447949527, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2576958', 'n_tokens_mistral': 1098, 'n_tokens_neox': 1096, 'n_words': 235}