imposition 0.9.0 → 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/impostor +14 -6
- data/lib/imposition/clases.rb +12 -6
- data/lib/imposition/metodos.rb +35 -39
- metadata +3 -3
data/bin/impostor
CHANGED
@@ -94,15 +94,18 @@ end
|
|
94
94
|
########
|
95
95
|
#CONSOLA
|
96
96
|
#
|
97
|
-
entrada=ARGV.shift
|
97
|
+
$entrada=ARGV.shift
|
98
98
|
$salida=ARGV.shift
|
99
|
-
|
99
|
+
#
|
100
|
+
Metodos.refresh()
|
101
|
+
#
|
102
|
+
check=Metodos.checksRun($entrada,$salida)
|
100
103
|
if check.instance_of? Clases::Mensaje then
|
101
104
|
puts check.mensaje
|
102
105
|
exit
|
103
106
|
end
|
104
107
|
#
|
105
|
-
puts "
|
108
|
+
puts "::::::::::impostor 9.2:::::::::::"#blink blink
|
106
109
|
#
|
107
110
|
w_=input("w:")
|
108
111
|
h_=input("h:")
|
@@ -115,7 +118,7 @@ nPliegos_=input("nPliegos:")
|
|
115
118
|
cuadernillos = enBooklets()
|
116
119
|
#
|
117
120
|
def recursivo(w_,h_,wP_,hP_,nX,nY,nPaginas,nPliegos,cuadernillos, preguntas)
|
118
|
-
impostor=Metodos.funcionar(w_,h_,wP_,hP_,nX,nY,nPaginas,nPliegos,cuadernillos,preguntas)
|
121
|
+
impostor=Metodos.funcionar(w_,h_,wP_,hP_,nX,nY,nPaginas,nPliegos,cuadernillos,preguntas,$temp)
|
119
122
|
if impostor.preguntasOk then
|
120
123
|
if impostor.valido then
|
121
124
|
puts "::::::::::::mensajes:::::::::::::"#blink blink
|
@@ -159,12 +162,17 @@ def recursivo(w_,h_,wP_,hP_,nX,nY,nPaginas,nPliegos,cuadernillos, preguntas)
|
|
159
162
|
end
|
160
163
|
end
|
161
164
|
recursivo(w_,h_,wP_,hP_,nX_,nY_,nPaginas_,nPliegos_,cuadernillos, nil)
|
165
|
+
#lo devuelvo
|
166
|
+
if $salida == nil then
|
167
|
+
$salida=$entrada
|
168
|
+
end
|
169
|
+
FileUtils.mv(File.dirname($temp)+"/"+"cutStack.pdf", $salida)
|
162
170
|
#
|
163
171
|
puts "::::::::::::Game Over::::::::::::"#blink blink
|
164
172
|
ensure
|
165
173
|
#limpio todo, aunque se caiga
|
166
|
-
if $
|
167
|
-
`rm -r #{$
|
174
|
+
if File.dirname($temp)!=nil then
|
175
|
+
`rm -r #{File.dirname($temp)}`
|
168
176
|
end
|
169
177
|
end
|
170
178
|
#GAME OVER
|
data/lib/imposition/clases.rb
CHANGED
@@ -272,8 +272,12 @@ end
|
|
272
272
|
class Pregunta
|
273
273
|
attr_accessor :ok, :yn, :mensaje
|
274
274
|
attr_reader :ide
|
275
|
-
def initialize(
|
276
|
-
|
275
|
+
def initialize(arg)
|
276
|
+
if arg.instance_of? String then
|
277
|
+
@mensaje=arg
|
278
|
+
else
|
279
|
+
@ide=arg
|
280
|
+
end
|
277
281
|
end
|
278
282
|
def metodo()
|
279
283
|
end
|
@@ -313,14 +317,16 @@ end
|
|
313
317
|
#
|
314
318
|
class PreguntaEscalado < Pregunta
|
315
319
|
attr_accessor :tipo
|
316
|
-
def initialize(tipo)
|
317
|
-
@mensaje="en duro"
|
320
|
+
def initialize(tipo)
|
318
321
|
@tipo=tipo
|
319
|
-
if @tipo=="
|
322
|
+
if @tipo=="horizontalmente" then
|
320
323
|
@ide=1
|
321
|
-
|
324
|
+
@mensaje="no especifico ancho de pagina pero si ancho de pliego y numero de paginas por pliego "+tipo
|
325
|
+
elsif @tipo=="verticalmente" then
|
322
326
|
@ide=2
|
327
|
+
@mensaje="no especifico alto de pagina pero si alto de pliego y numero de paginas por pliego "+tipo
|
323
328
|
end
|
329
|
+
@mensaje+=" ¿escalar "+tipo+"?"
|
324
330
|
end
|
325
331
|
def metodo(yn)
|
326
332
|
@yn=yn
|
data/lib/imposition/metodos.rb
CHANGED
@@ -1,34 +1,28 @@
|
|
1
1
|
module Metodos
|
2
2
|
|
3
3
|
#WORK
|
4
|
-
def funcionar(w_,h_,wP_,hP_,nX,nY,nPaginas,nPliegos,cuadernillos,preguntas)
|
4
|
+
def funcionar(w_,h_,wP_,hP_,nX,nY,nPaginas,nPliegos,cuadernillos,preguntas,temp)
|
5
5
|
impostor=Clases::Imposicion.new(w_,h_,wP_,hP_,nX,nY,nPaginas,nPliegos,cuadernillos)
|
6
|
-
pdfinfo(impostor,
|
6
|
+
pdfinfo(impostor,temp)
|
7
7
|
retorno=validacion(impostor, preguntas)
|
8
8
|
if retorno.preguntasOk then
|
9
9
|
retorno.mensajes.push(Clases::MensajeVars.new(1,impostor.to_s))
|
10
10
|
if impostor.cuadernillos then
|
11
|
-
retorno.mensajes.push(imponerBooklet(impostor,
|
11
|
+
retorno.mensajes.push(imponerBooklet(impostor,temp))
|
12
12
|
end
|
13
|
-
retorno.mensajes.push(imponerStack(impostor,
|
14
|
-
#lo devuelvo
|
15
|
-
if $salida == nil then
|
16
|
-
$salida=$entrada
|
17
|
-
end
|
18
|
-
FileUtils.mv($dir+"/"+"cutStack.pdf", $salida)
|
13
|
+
retorno.mensajes.push(imponerStack(impostor,temp))
|
19
14
|
end
|
20
15
|
return retorno
|
21
16
|
end
|
22
17
|
|
23
18
|
def checksCompile()
|
24
|
-
#paquetes
|
19
|
+
#paquetes necesarios
|
25
20
|
$requerimientos.each do |k,v|
|
26
21
|
`which #{v}`
|
27
22
|
if !$?.success? then
|
28
23
|
return Clases::Mensaje.new(3,"#{v} no es ejecutable")
|
29
24
|
end
|
30
25
|
end
|
31
|
-
#archivos
|
32
26
|
#probamos que exista el directorio de trabajo
|
33
27
|
if File.exists?($work) then
|
34
28
|
#y que sea escribible
|
@@ -37,10 +31,6 @@ def checksCompile()
|
|
37
31
|
if !File.exists?($work) then
|
38
32
|
Dir.mkdir($work)
|
39
33
|
end
|
40
|
-
#creo mi directorio
|
41
|
-
$dir=$work+"/"+UUIDTools::UUID.random_create
|
42
|
-
Dir.mkdir($dir)
|
43
|
-
$codeDir = Dir.pwd
|
44
34
|
else
|
45
35
|
return Clases::Mensaje.new(3,"el directorio de trabajo "+$work+" no se puede escribir")
|
46
36
|
end
|
@@ -49,33 +39,30 @@ def checksCompile()
|
|
49
39
|
end
|
50
40
|
end
|
51
41
|
|
52
|
-
def checksRun()
|
42
|
+
def checksRun(entrada,salida)
|
53
43
|
#la entrada
|
54
|
-
if
|
55
|
-
if File.file?(
|
56
|
-
if File.owned?(
|
44
|
+
if entrada != nil then
|
45
|
+
if File.file?(entrada) then
|
46
|
+
if File.owned?(entrada) then
|
57
47
|
busca = /.*(.pdf)/
|
58
|
-
if busca.match(File.basename(
|
59
|
-
|
60
|
-
FileUtils.cp($entrada, $temp)
|
61
|
-
else
|
62
|
-
return Clases::Mensaje.new(3,"el archivo "+$entrada+" no es pdf")
|
48
|
+
if !busca.match(File.basename(entrada)) then
|
49
|
+
return Clases::Mensaje.new(3,"el archivo "+entrada+" no es pdf")
|
63
50
|
end
|
64
51
|
else
|
65
|
-
return Clases::Mensaje.new(3,"el archivo "
|
52
|
+
return Clases::Mensaje.new(3,"el archivo "+entrada+" no es mío")
|
66
53
|
end
|
67
54
|
else
|
68
|
-
return Clases::Mensaje.new(3
|
55
|
+
return Clases::Mensaje.new(3,entrada+" no es un archivo")
|
69
56
|
end
|
70
57
|
else
|
71
58
|
return Clases::Mensaje.new(3,"no ha especificado archivo a imponer")
|
72
59
|
end
|
73
60
|
#y la salida, de haberla
|
74
|
-
if
|
61
|
+
if salida!=nil then
|
75
62
|
#if File.exists?(salida) then #TODO crearla si es escribible
|
76
|
-
salidaDir=File.dirname(
|
63
|
+
salidaDir=File.dirname(salida)
|
77
64
|
if !File.writable?(salidaDir) or !File.writable_real?(salidaDir) then
|
78
|
-
return Clases::Mensaje.new(3,"el directorio de salida "
|
65
|
+
return Clases::Mensaje.new(3,"el directorio de salida "+salida+" no se puede escribir")
|
79
66
|
end
|
80
67
|
#else
|
81
68
|
# puts salida+ " no existe"
|
@@ -95,11 +82,20 @@ def input2alchemist(unidad)
|
|
95
82
|
end
|
96
83
|
end
|
97
84
|
|
85
|
+
#permite globales porque se encapsula logica de test y ejecutable
|
86
|
+
def refresh
|
87
|
+
dir=$work+"/"+UUIDTools::UUID.random_create
|
88
|
+
Dir.mkdir(dir)
|
89
|
+
$codeDir = Dir.pwd
|
90
|
+
$temp=dir+"/"+File.basename($entrada)#me lo llevo
|
91
|
+
FileUtils.cp($entrada, $temp)
|
92
|
+
end
|
93
|
+
|
98
94
|
#########
|
99
|
-
module_function :funcionar, :checksCompile, :checksRun, :input2alchemist
|
95
|
+
module_function :funcionar, :checksCompile, :checksRun, :input2alchemist, :refresh
|
100
96
|
|
101
97
|
def self.pdfinfo(impostor, temp)
|
102
|
-
Dir.chdir(
|
98
|
+
Dir.chdir(File.dirname(temp))
|
103
99
|
pdfinfo = `#{$requerimientos["pdfinfo"]} -box #{temp}`
|
104
100
|
impostor.nPaginasReal=paginasdelpdf(pdfinfo)
|
105
101
|
impostor.size=Metodos.pagesize(pdfinfo)
|
@@ -141,7 +137,7 @@ def self.pagesize(pdfinfo)
|
|
141
137
|
return retorno
|
142
138
|
end
|
143
139
|
|
144
|
-
def self.imponerStack(impostor,
|
140
|
+
def self.imponerStack(impostor,temp)
|
145
141
|
|
146
142
|
wPC=pdflatexUnit(impostor.wP, impostor.wP_["unidad"])
|
147
143
|
impostor.wP=wPC[0]
|
@@ -165,7 +161,7 @@ def self.imponerStack(impostor, temp)
|
|
165
161
|
end
|
166
162
|
cS=cS.join(",")
|
167
163
|
|
168
|
-
cutted
|
164
|
+
cutted=File.dirname(temp)+"/"+"cutStack.tex"
|
169
165
|
File.open(cutted, 'w') do |cutStack|
|
170
166
|
cutStack.puts "\\documentclass{report}"
|
171
167
|
cutStack.puts "\\usepackage{pdfpages}"
|
@@ -188,7 +184,7 @@ def self.imponerStack(impostor, temp)
|
|
188
184
|
end
|
189
185
|
|
190
186
|
#LaTeX
|
191
|
-
Dir.chdir(
|
187
|
+
Dir.chdir(File.dirname(temp))
|
192
188
|
tIni=Time.now
|
193
189
|
pdflatex=`#{$requerimientos["pdflatex"]} #{cutted}`
|
194
190
|
tFin=Time.now
|
@@ -201,7 +197,7 @@ end
|
|
201
197
|
|
202
198
|
#TODO 1 sola vez pdflatex?
|
203
199
|
|
204
|
-
def self.imponerBooklet(impostor,
|
200
|
+
def self.imponerBooklet(impostor,temp)
|
205
201
|
#unidades latex
|
206
202
|
wC=pdflatexUnit(impostor.w_["numero"], impostor.w_["unidad"])
|
207
203
|
impostor.w=wC[0]
|
@@ -211,7 +207,7 @@ def self.imponerBooklet(impostor, archivo)
|
|
211
207
|
impostor.h_["unidad"]=hC[1]
|
212
208
|
|
213
209
|
wDummy=impostor.w_["numero"].to_f#bug alchemist
|
214
|
-
pierpa
|
210
|
+
pierpa=File.dirname(temp)+"/"+"booKlet.tex"
|
215
211
|
File.open(pierpa, 'w') do |booklet|
|
216
212
|
booklet.puts "\\documentclass{report}"
|
217
213
|
booklet.puts "\\usepackage{pdfpages}"
|
@@ -229,18 +225,18 @@ def self.imponerBooklet(impostor, archivo)
|
|
229
225
|
booklet.puts "marginpar=0mm"
|
230
226
|
booklet.puts "}"
|
231
227
|
booklet.puts "\\begin{document}"
|
232
|
-
booklet.puts "\\includepdf[pages={#{impostor.bookletz.join(",")}},nup=2x1,noautoscale,width=#{wDummy/2}#{impostor.w_["unidad"]}, height=#{impostor.h_["numero"]}#{impostor.h_["unidad"]}]{#{
|
228
|
+
booklet.puts "\\includepdf[pages={#{impostor.bookletz.join(",")}},nup=2x1,noautoscale,width=#{wDummy/2}#{impostor.w_["unidad"]}, height=#{impostor.h_["numero"]}#{impostor.h_["unidad"]}]{#{temp}}"
|
233
229
|
booklet.puts "\\end{document}"
|
234
230
|
end
|
235
231
|
#LaTeX
|
236
|
-
Dir.chdir(
|
232
|
+
Dir.chdir(File.dirname(temp))
|
237
233
|
tIni=Time.now
|
238
234
|
pdflatex=`#{$requerimientos["pdflatex"]} #{pierpa}`
|
239
235
|
tFin=Time.now
|
240
236
|
t=tFin-tIni
|
241
237
|
Dir.chdir($codeDir)
|
242
238
|
#lo devuelvo
|
243
|
-
FileUtils.mv(
|
239
|
+
FileUtils.mv(File.dirname(temp)+"/"+"booKlet.pdf", temp)
|
244
240
|
#retorno
|
245
241
|
return Clases::MensajeTiempo.new(1,t)
|
246
242
|
end
|
metadata
CHANGED