-
1. Re: Finding the end of line
[Ariel] Apr 23, 2012 12:36 PM (in response to Sami Artur)Well, if you've got some text (paragraphs, story, whatever):
myText.lines.characters[-1]
will get you the last character on the line.
If you want to change what it is,
myText.lines.characters[-1].contents = "Z"
etc.
Ariel
-
2. Re: Finding the end of line
Sami Artur Apr 23, 2012 2:02 PM (in response to [Ariel])Thank you Ariel, but I am receiving this message:
Object does not support the property or method 'characters'
Sami
-
3. Re: Finding the end of line
[Ariel] Apr 24, 2012 5:35 AM (in response to Sami Artur)It depends on how you're getting hold of the block of text.
Let's say you select a paragraph in InDesign.
So then you can say:
myPara = app.selection[0];
then the lines in this paragraph are:
myLines = myPara.lines;
so now you can do a loop:
for (var i =0; i<myLines.length; i++){
now let's say you've set you app.findTextPreferences and app.changeTextPreferences to whatever you want, you can search the line as follows:
myFinds = myLines[i].findText();
and the last find on the line will be:
myFinds[-1]
so you can change that to whatever you want:
myFinds[-1].contents = "Z";
}
If you want to substitute justification alternatives with regular letters it's obviously a little more complicated (you've got to find the unicode values, etc.) but this is the basic idea.
One thing you've got to be careful about is that if you make a replacement, the lines shouldn't change. If the line breaks change, myLines will no longer be valid and you can get some weird results.
HTH,
Ariel
-
4. Re: Finding the end of line
Sami Artur Apr 24, 2012 7:07 AM (in response to [Ariel])Thank's again Ariel,
I am a beginner in Java Script and I don't know what I am doing wrong.
Please take a look:
main();
function main(){
mySetup();
mySnippet();
myTeardown();
}
function mySetup(){
}
function mySnippet(){
if (app.documents.length != 0){
if (app.selection.length == 1){
switch (app.selection[0].constructor.name){
case "InsertionPoint":
case "Character":
case "Word":
case "TextStyleRange":
case "Line":
case "Paragraph":
case "TextColumn":
case "Text":
case "Story":
myProcessText(app.selection[0]);
break;
case "TextFrame":
myProcessText(app.selection[0].texts.item(0));
break;
default:
alert("The selected object is not a text object. Select some text and try again.");
break;
}
}
else{
alert("Please select some text and try again.");
}
}
}
function myTeardown(){
}
function myProcessText(myTextObject){
}
var myDocument = app.documents.item(0);
var myPage = myDocument.pages.item(0);
var myTextFrame = myPage.textFrames.item(0);
var myTextObject = myTextFrame.parentStory.characters.item(0);
var myStory = myDocument.stories.item(0);
var myStringArray = myTextFrame.lines.everyItem().contents;
myPara = app.selection[0];
myLines = myPara.lines;
for (var i =0; i<myLines.length; i++){
myFinds = myLines[i].findText(ת);
myFinds[-1].contents = "z";
}
Sami
-
5. Re: Finding the end of line
Jump_Over Apr 24, 2012 2:58 PM (in response to Sami Artur)Hi,
Assuming your text is inside one or more text frames which are connected. Select one of them and run this:
-------------
myLines = app.selection[0].parentStory.lines;
for (k=0; k<myLines.length; k++){
if(myLines[k].characters[-1] == "\r") // if there is an end of paragraph
myLines[k].characters[-2].contents = "z"; // change a second last character to "z"
else myLines[k].characters[-1].contents = "z"; // otherwise change a last character to "z"
}
------------
This is just for show the way.
Hope you step into
-
6. Re: Finding the end of line
Sami Artur Apr 24, 2012 6:43 PM (in response to Jump_Over)Thank you very much Jump_Over!
It works!
Now I am doing the final adjustments.
Sami
-
7. Re: Finding the end of line
Peter Stnsz Oct 17, 2013 2:06 PM (in response to Jump_Over)Hi there!
I am trying to figure out how to modify the script that can look for last one or two last words (widows/orphans) in the line that starts after the period. Would script be able to add No Break GREP or character style?
Peter
-
8. Re: Finding the end of line
Jump_Over Oct 17, 2013 3:57 PM (in response to Peter Stnsz)Hi,
It could work with nested Grep which is applying "noBreak" charStyle.
expression for the last word: \x{20}\b\w+\b.$
expression for two last words: (\x{20}\b\w+\b){2}.$
Jarek
-
9. Re: Finding the end of line
Peter Stnsz Oct 23, 2013 12:29 AM (in response to Jump_Over)Hi Jarek,
Thank you for the answer. Your GREP works, however not the way I wanted. Works quite similar to the solution that I am using at the moment: nested NoBreak style with GREP .{8}$ (so It won't leave any short words at the end of the paragraph).
The solution I am looking for is to find a script that will push these words to the next line (within the paragraph, not only at the end of the paragraph), here is what I mean - I would like to move this 'orphan' word to the next line:
I presume I will be not able to make that with GREP itself?
Peter
-
10. Re: Finding the end of line
Jump_Over Oct 24, 2013 2:47 AM (in response to Peter Stnsz)Hi,
so maybe try:
\b.{2}\b\s
Jarek
-
11. Re: Finding the end of line
Peter Stnsz Nov 20, 2013 3:57 AM (in response to Jump_Over)Hello Jarek,
This will actually work. Thanks!




