imposition 0.9.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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