1515var NAME = 'CSVRubyProcessor' ;
1616
1717function loadconfig ( name , def ) {
18- var scriptFile = new File ( $ . fileName ) ;
18+ var scriptFile = function ( ) {
19+ try {
20+ return app . activeScript ;
21+ } catch ( err ) {
22+ return File ( err . fileName ) ;
23+ }
24+ } ( ) ;
25+
1926 var configFile = new File ( scriptFile . parent + '/RUBY_PROCESSOR.conf' ) ;
2027
2128 if ( configFile . exists ) {
@@ -213,11 +220,15 @@ function applyRuby(chars, ruby, group, option) {
213220}
214221
215222var RubySetting = function ( ) {
216- function RubySetting ( parent , def ) {
223+ function RubySetting ( parent , def , skipmode ) {
217224 if ( def === void 0 ) {
218225 def = { } ;
219226 }
220227
228+ if ( skipmode === void 0 ) {
229+ skipmode = false ;
230+ }
231+
221232 this . parent = parent ;
222233 this . alignList = new NameValueList ( this . parent , {
223234 '肩付き' : RubyAlignments . RUBY_LEFT ,
@@ -252,6 +263,15 @@ var RubySetting = function () {
252263 this . parentSpacingList . group . preferredSize . width = 210 ;
253264 this . xOffset = convertInt ( def . xOffset ) ;
254265 this . yOffset = convertInt ( def . yOffset ) ;
266+
267+ if ( skipmode ) {
268+ this . inputSkipmode = this . parent . add ( 'checkbox' , undefined , '重複スキップ' ) ;
269+ this . inputSkipmode . value = def . skipmode ;
270+ } else {
271+ this . inputSkipmode = {
272+ value : false
273+ } ;
274+ }
255275 }
256276
257277 var _proto = RubySetting . prototype ;
@@ -267,6 +287,10 @@ var RubySetting = function () {
267287 } ;
268288 } ;
269289
290+ _proto . isSkip = function isSkip ( ) {
291+ return this . inputSkipmode . value ;
292+ } ;
293+
270294 return RubySetting ;
271295} ( ) ;
272296
@@ -327,13 +351,14 @@ var DEFAULT = loadconfig(NAME, {
327351 overhang : 1 ,
328352 parentspacing : 2 ,
329353 xOffset : 0 ,
330- yOffset : 0
354+ yOffset : 0 ,
355+ skipmode : false
331356} ) ;
332357app . doScript ( main , ScriptLanguage . JAVASCRIPT , [ ] , UndoModes . FAST_ENTIRE_SCRIPT ) ;
333358
334359function main ( ) {
335360 var dialog = new Window ( 'dialog' , 'ルビ設定' ) ;
336- var rubySettings = new RubySetting ( dialog , DEFAULT ) ;
361+ var rubySettings = new RubySetting ( dialog , DEFAULT , true ) ;
337362 new ActionButtons ( dialog , {
338363 width : 96 ,
339364 height : 24
@@ -345,6 +370,7 @@ function main() {
345370 }
346371
347372 var rubyOption = rubySettings . getValues ( ) ;
373+ var skipmode = rubySettings . isSkip ( ) ;
348374 var fileObj = File . openDialog ( '' , function ( ) {
349375 if ( / ^ w i n d o w s / i. test ( $ . os ) ) {
350376 return '*.csv' ;
@@ -451,13 +477,26 @@ function main() {
451477 }
452478
453479 if ( ! target ) break ;
480+ var rubyFlag = false ;
481+
482+ if ( skipmode ) {
483+ for ( var k = 0 ; k < target . characters . length ; k ++ ) {
484+ rubyFlag = target . characters [ k ] . rubyFlag ;
485+
486+ if ( rubyFlag instanceof Array ) {
487+ rubyFlag = rubyFlag [ 0 ] ;
488+ }
489+
490+ if ( rubyFlag ) break ;
491+ }
492+ }
454493
455- if ( ! target . rubyFlag [ 0 ] ) {
494+ if ( ! rubyFlag ) {
456495 if ( data . ruby . length > 1 ) {
457- for ( var k = 0 ; k < data . ruby . length ; k ++ ) {
458- if ( ! data . ruby [ k ] ) continue ;
459- if ( k === target . length ) break ;
460- applyRuby ( target . characters [ k ] , data . ruby [ k ] , false , rubyOption ) ;
496+ for ( var _k = 0 ; _k < data . ruby . length ; _k ++ ) {
497+ if ( ! data . ruby [ _k ] ) continue ;
498+ if ( _k === target . length ) break ;
499+ applyRuby ( target . characters [ _k ] , data . ruby [ _k ] , false , rubyOption ) ;
461500 }
462501 } else {
463502 applyRuby ( target , data . ruby [ 0 ] , target . length > 1 , rubyOption ) ;
0 commit comments