Sublime Text 3 - фрагмент с верблюжьим регистром - и удаление или преобразование слов из специальных символов

Я обновляю некоторые фрагменты Sublime Text, чтобы помочь автоматизировать разработку некоторых страниц, но я сталкиваюсь с небольшим препятствием.

Для этого фрагмента в настоящее время я пытаюсь получить строку метрик (на основе альтернативного текста), чтобы сделать следующее:

<snippet>
    <content><![CDATA[  
    <div class="div-block">
        <!-- Set A -->
        <div class="place_10 start">
            <a href="LinkGoesHere" main_fp_tx="PLACE-_-AH-_-${1:0}_${4:year}_${6/[^a-z0-9]+//ig}">
                <img src="http://images/sv/800/set${2:##}_${3:####}_${4:year}_img${5:#}?\$P_CONTENT\$" alt="${6:ImageAltText}" />
            </a>
        </div>
    </div>]]></content>
    <!-- Optional: Tab trigger to activate the snippet -->
    <tabTrigger>IMGT</tabTrigger>
    <!-- Optional: Scope the tab trigger will be active in -->
</snippet>

Что дает вам это при наборе IMGT и нажав Tab:

<div class="div-block">
    <!-- Set A -->
    <div class="place_10 start">
        <a href="LinkGoesHere" main_fp_tx="PLACE-_-AH-_-0_year_ImageAltText">
            <img src="http://images/sv/800/set##_####_year_img#?$P_CONTENT$" alt="ImageAltText" />
        </a>
    </div>
</div>

В настоящее время, когда я печатаю This is an example of content. Special character examples: 20% & &amp; &#37; registered trademark &reg; в ImageAltText поле, вот что появляется в строке метрик:

<div class="div-block">
    <!-- Set A -->
    <div class="place_10 start">
        <a href="LinkGoesHere" main_fp_tx="PLACE-_-AH-_-0_year_ThisisanexampleofcontentSpecialcharacterexamples20amp37registeredtrademarkreg">
            <img src="http://images/sv/800/set##_####_year_img#?$P_CONTENT$" alt="This is an example of content.  Special character examples: 20% & &amp; &#37; registered trademark &reg;" />
        </a>
    </div>
</div>

Как вы можете видеть, прямо сейчас, вот как метрический текст переводит текущий пример:

"ThisisanexampleofcontentSpecialcharacterexamples20amp37registeredtrademarkreg"

Вот что я пытаюсь заставить это сделать:

  • Он должен быть в верблюжьем корпусе, то есть каждая буква каждого слова должна быть написана заглавными буквами.
  • Определенные символы должны быть переведены в слово. Так, например, "%" должен сказать "Процент" - и "&", (амперсанд), должно сказать "И".
  • Имена сущностей HTML не должны появляться. Например, "®" просто не должно появляться в метриках. Прямо сейчас это показывает слово "рег". Так что в основном все, что находится между "&" и ";" не должно появляться - также как и "&" и ";" частей. Есть смысл? Хотя здесь это становится трудным - и также не должно появляться - или, по крайней мере, он может сказать "И".

Все что сказано - вот чего я пытаюсь добиться.

Текущая версия:
ThisisanexampleofcontentSpecialcharacterexamples20amp37registeredtrademarkreg

Как я пытаюсь заставить это выглядеть:
ThisIsAnExampleOfContentSpecialCharacterExamples20PercentAndRegisteredTrademark

Я пробовал комбинировать функции и несколько заставил его работать, но не полностью.

Поэтому я надеялся, что некоторые из вас, замечательные разработчики, могут знать, как это сделать.

1 ответ

Решение

Займусь от ответа здесь немного

Следующий фрагмент сделает так, чтобы при вводе This is an example of content. Special character examples: 20% & &amp; &#37; registered trademark &reg; в altimg атрибут, он появится в amain_fp_tx атрибут как: PLACE-_-AH-_-0_year_ThisIsAnExampleOfContentSpecialCharacterExamples20PercentAndRegisteredTrademark:

<snippet>
    <content><![CDATA[  
    <div class="div-block">
        <!-- Set A -->
        <div class="place_10 start">
            <a href="LinkGoesHere" main_fp_tx="PLACE-_-AH-_-${1:0}_${4:year}_${6/(&amp;)|(&[^; ]+;)|(&)|(\b\w)|(%)|(\W)/(?1And:)(?2:)(?3And:)(?4\u\4:)(?5Percent:)(?6:)/g}">
                <img src="http://images/sv/800/set${2:##}_${3:####}_${4:year}_img${5:#}?\$P_CONTENT\$" alt="${6:ImageAltText}" />
            </a>
        </div>
    </div>]]></content>
    <!-- Optional: Tab trigger to activate the snippet -->
    <tabTrigger>IMGT</tabTrigger>
    <!-- Optional: Scope the tab trigger will be active in -->
</snippet>

Как упомянуто в связанном ответе, это зависит от регулярных выражений и чередований.

/(&amp;)|(&[^; ]+;)|(&)|(\b\w)|(%)|(\W)/(?1And:)(?2:)(?3And:)(?4\u\4:)(?5Percent:)(?6:)/g
  1. (&amp;) сопоставьте амперсанд HTML-сущность с группой захвата 1. (?1And:) если группа захвата (1) была найдена, замените ее на And, Если это не совпало, ничего не делай.
  2. (&[^; ]+;) соответствовать HTML-сущностям. (?2:) если группа захвата (2) была сопоставлена, замените ее ничем. Если это не совпало, ничего не делай.
  3. (&) голый амперсанд. (?3And:) если группа захвата (3) была сопоставлена, замените ее на And, Если это не совпало, ничего не делай.
  4. (\b\w) первая буква слова. (?4\u\4:) если группа захвата (4) была сопоставлена, замените первую букву ее заглавным эквивалентом. Если это не совпало, ничего не делай.
  5. (%) голый процент. (?5Percent:) если группа захвата (5) была сопоставлена, замените ее на Percent, Если это не совпало, ничего не делай.
  6. (\W) несловесный (az, 0-9 и т. д.) символ, включая пробел. (?6:) если группа захвата (6) была найдена, замените ее ничем. Если это не совпало, ничего не делай.

  • /g глобальный модификатор - т.е. не просто останавливаться на первом совпадении. Я удалил i - модификатор без учета регистра, так как он не нужен в моем регулярном выражении.

Поскольку группы захвата сопоставляются и заменяются по порядку, он заменяет сущности HTML, прежде чем смотреть на голые амперсанды, и, наконец, удаляет несловесные символы.

Для получения дополнительной информации о синтаксисе замены см. http://www.boost.org/doc/libs/1_61_0/libs/regex/doc/html/boost_regex/format/boost_format_syntax.html

Другие вопросы по тегам