Удалить расширение в InDesign CC2015

Статус
Закрыто для дальнейших ответов.

alexadesigns

Топикстартер
10 лет на форуме
Сообщения
144
Реакции
16
Всем добрый день!

Прошу помощи у знающих!
Есть у меня скриптик, который выводит файлы из индиза с именами по маске.
В более ранних версиях он нормально удалял расширение файла (indd),
но с переходом на СС 2015 в имени опять расширение вернулось.
Блок, удаляющий расширение выглядит так:

Код:
String.prototype.trimExtension = function()
{
    var myResult = this.lastIndexOf('.');
    if (myResult < 0) return this;
    return this.substr(0, myResult);
}

Я так понимаю, что-то поменяли в синтаксисе сс15?

Может кто помочь прояснить тему?

Спасибо!
 
Последнее редактирование модератором:
тут все в порядке, надо смотреть к какой строке .trimExtension() применяется
 
тут все в порядке, надо смотреть к какой строке .trimExtension() применяется
Поиском глянул – используется только в одном месте:
Код:
var documentName = String(doc.name).trimExtension();

Но всё-таки, в CS4 работает, а в СС2015 нет :(
 
Последнее редактирование модератором:
@alexadesigns, добрый день!

А такой вызов что у Вас выводит в СС-2015?
Код:
var documentName = new String ( app.activeDocument.name ).trimExtension ();
alert ( typeof documentName );
alert ( documentName );
alert ( app.activeDocument.name );
а если попробовать использовать обычную функцию (без добавления метода в прототип):
Код:
alert(trimExtension(app.activeDocument.name)); // проверка


function trimExtension(fileName){
  return fileName.slice ( 0, fileName.lastIndexOf ( '.' ) );
}
переменная doc определена до вызова String ( doc.name ).trimExtension () и чему равна?
 
Последнее редактирование:
функция не очень безопасная, кстати - если в имени нет точки, то будет slice(0,-1), что обрежет последний символ
 
  • Спасибо
Реакции: dumbm1
@alexadesigns, добрый день!

А такой вызов что у Вас выводит в СС-2015?
Код:
var documentName = new String ( app.activeDocument.name ).trimExtension ();
alert ( typeof documentName );
alert ( documentName );
alert ( app.activeDocument.name );
а если попробовать использовать обычную функцию (без добавления метода в прототип):
Код:
alert(trimExtension(app.activeDocument.name)); // проверка


function trimExtension(fileName){
  return fileName.slice ( 0, fileName.lastIndexOf ( '.' ) );
}
переменная doc определена до вызова String ( doc.name ).trimExtension () и чему равна?

Даже и не знаю, что ответить :(
Я в скриптинге не понимаю :(
Приложил скрипт, может с полным содержимым будет видно, что-как.
 

Вложения

Скажем, у меня файл test_trimExtension.indd

На выходе должно получаться имя test_trimExtension.indd_001.jpg или test_trimExtension_001.jpg?

В CS6 и CC-2014 первый вариант - test_trimExtension.indd_001.jpg
 
Скажем, у меня файл test_trimExtension.indd
На выходе должно получаться имя test_trimExtension.indd_001.jpg или test_trimExtension_001.jpg?
В CS6 и CC-2014 первый вариант - test_trimExtension.indd_001.jpg

Так и выходят.
А должно быть test_trimExtension.pdf
или
test_trimExtension.jpg
в зависимости, что выберешь.

В старых версиях плагина (CS4 например) делает без indd,
а в CC2015 вдруг стало с indd выводить.
Приложил старую версию плагина, но там эта функция вроде не менялась.
 

Вложения

попробуйте, теперь вроде бы экпортирует без расширения...
В функции ExportPage после
Код:
var documentName = document.name;
добавил
Код:
documentName = documentName.trimExtention();
 

Вложения

Ура!!!
Всё работает!!!
Огромное Вам спасибо, dumbm1 !
 
Код:
String.prototype.trimExtention = function () {
    return this.replace(/\.[^\.]+$/gim, '');
}

Вот как-то так безопаснее будет.
 
  • Спасибо
Реакции: Skvoznyak и dumbm1
Статус
Закрыто для дальнейших ответов.