Как написать скрипт пользователя xcode для окружения строки, внутри которой находится курсор, с помощью NSLocalizedString (<string>, nil) - PullRequest
2 голосов
/ 12 октября 2010

Я пытаюсь найти лучший способ автоматического добавления NSLocalizedString () вокруг строки в xcode.

В идеале я хотел бы, чтобы я мог расположить курсор в пределах @"foo", нажмитепривязка клавиш, и она будет превращена в NSLocalizedString(@"foo", nil).

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

Я что-то упустил или есть другой способ добиться того же результата?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 12 октября 2010

Вы можете использовать %%% {PBXSelectionStart} %%%

Из документации Apple:

Получение текста из активного окна
Эти переменные заменяются текстомв активном окне:

  • %%% {PBXSelectedText} %%% заменяется выделенным текстом в активном текстовом объекте.
  • %%% {PBXAllText} %%%заменяется на весь текст в активном текстовом объекте.

Получение информации о содержимом активного окна
Эти переменные заменяются информацией о тексте в активном окне:

  • %%% {PBXTextLength} %%% заменяется количеством символов в активном текстовом объекте.
  • %%% {PBXSelectionStart} %%% заменяется индексомпервый символ в выделении в активном текстовом объекте.
  • %%% {PBXSelectionEnd} %%% заменяется индексом первого символа после выделения в активном текстовом объекте.
  • %%% {PBXSelectionLength} %%% заменяется номером чаracters в текущем выделении в активном текстовом объекте.

Промедление принесло вам этот скрипт.
Он работает и делает то, что должен.Но это очень просто, и есть ошибки, и это, вероятно, не лучший способ сделать это.
Не используйте @ и "в строках, которые вы хотите заменить. На вашем месте я бы не сталиспользуйте его в любом случае. ^^
Ввод сценария Selection, вывод Replace Document Contents

#!/bin/sh
if [ %%%{PBXSelectionLength}%%% -gt 0 ]
  then
    echo "This does not work if you select text. Put your cursor inside a String." >&2
    exit
fi
Source=`cat "%%%{PBXFilePath}%%%"`
SelectionStart="%%%{PBXSelectionStart}%%%"
SelectionEnd="%%%{PBXSelectionEnd}%%%"
BOOL=1
StringStart=$SelectionStart
StringStop=$SelectionEnd
while [ $BOOL -eq 1 ]
 do
  tmpText=`echo "${Source:${StringStart}:1}"`
  if [ "$tmpText" = "@" ]
   then BOOL=0
   else StringStart=$(($StringStart - 1))
  fi
done
BOOL=1
while [ $BOOL -eq 1 ]
 do 
  tmpText=`echo "${Source:${StringStop}:1}"`
  if [ "$tmpText" = "\"" ]
   then BOOL=0
  fi   
  StringStop=$(($StringStop + 1))
done

StringToReplace=`echo ${Source:${StringStart}:$(($StringStop - $StringStart))}`
ReplacementString="NSLocalizedString($StringToReplace,nil)"
echo -n "${Source:0:${StringStart}}"
echo -n "$ReplacementString"
echo -n "${Source:${StringStop}}"
0 голосов
/ 02 марта 2011
#!/bin/sh
echo -n 'NSLocalizedString(%%%{PBXSelectedText}%%%, nil)'

Убедитесь, что для ввода скрипта выбрано «Выделение», а для вывода выбрано «Отменить выбор». Выберите строку и запустите скрипт.

Это не совсем то, что вам нужно, но я не могу воспользоваться этим методом,это будет здесь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...