ctioga2 0.6 → 0.6.1
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/Changelog +7 -0
- data/lib/ctioga2/commands/general-commands.rb +4 -1
- data/lib/ctioga2/commands/interpreter.rb +3 -2
- data/lib/ctioga2/graphics/elements/curve2d.rb +11 -1
- data/lib/ctioga2/plotmaker.rb +38 -40
- data/lib/ctioga2/utils.rb +32 -3
- metadata +2 -2
data/Changelog
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
ctioga2 (0.6.1)
|
2
|
+
|
3
|
+
* Fix crash when a curve has no points within the plot boundaries
|
4
|
+
* Work around encoding problems arising on windows
|
5
|
+
|
6
|
+
-- Vincent <vincent.fourmond@9online.fr> Mon 9 Sep 22:19:01 CEST 2013
|
7
|
+
|
1
8
|
ctioga2 (0.6)
|
2
9
|
|
3
10
|
* Fix various problems related to file names and directories
|
@@ -17,7 +17,7 @@ require 'ctioga2/commands/parsers/file'
|
|
17
17
|
|
18
18
|
module CTioga2
|
19
19
|
|
20
|
-
Version::register_svn_info('$Revision:
|
20
|
+
Version::register_svn_info('$Revision: 508 $', '$Date: 2013-09-09 22:13:14 +0200 (Mon, 09 Sep 2013) $')
|
21
21
|
|
22
22
|
module Commands
|
23
23
|
|
@@ -60,6 +60,9 @@ EOH
|
|
60
60
|
[ CmdArg.new('file')],
|
61
61
|
{'log' => CmdArg.new('boolean') }
|
62
62
|
) do |plotmaker, file, opts|
|
63
|
+
# Work around bug on windows !
|
64
|
+
file = Utils::transcode_until_found(file)
|
65
|
+
|
63
66
|
if opts['log']
|
64
67
|
tg = file.sub(/(\.ct2)?$/, '-log.txt')
|
65
68
|
Log::log_to(tg, "ctioga2 version '#{CTioga2::Version::version}' starting at #{Time.now} to process file: #{file}")
|
@@ -21,7 +21,7 @@ require 'ctioga2/commands/doc/doc'
|
|
21
21
|
|
22
22
|
module CTioga2
|
23
23
|
|
24
|
-
Version::register_svn_info('$Revision:
|
24
|
+
Version::register_svn_info('$Revision: 508 $', '$Date: 2013-09-09 22:13:14 +0200 (Mon, 09 Sep 2013) $')
|
25
25
|
|
26
26
|
# This module contains the real core of ctioga2: a set of classes
|
27
27
|
# that implement the concept of commands. Each command translates
|
@@ -210,9 +210,10 @@ module CTioga2
|
|
210
210
|
if ! @plotmaker_target.figure_name
|
211
211
|
@plotmaker_target.figure_name = file.gsub(/\.[^.]+$/,'')
|
212
212
|
end
|
213
|
+
|
213
214
|
dir = File::dirname(file)
|
214
215
|
base = File::basename(file)
|
215
|
-
|
216
|
+
|
216
217
|
Dir::chdir(dir) do
|
217
218
|
@file_parser.run_command_file(base, self)
|
218
219
|
end
|
@@ -19,7 +19,7 @@ require 'Dobjects/Function'
|
|
19
19
|
|
20
20
|
module CTioga2
|
21
21
|
|
22
|
-
Version::register_svn_info('$Revision:
|
22
|
+
Version::register_svn_info('$Revision: 505 $', '$Date: 2013-09-05 22:18:57 +0200 (Thu, 05 Sep 2013) $')
|
23
23
|
|
24
24
|
module Graphics
|
25
25
|
|
@@ -111,7 +111,17 @@ module CTioga2
|
|
111
111
|
t.append_point_to_path(x, y)
|
112
112
|
end
|
113
113
|
else
|
114
|
+
|
115
|
+
# Hmmmm. This may get the wrong thing if you happen to
|
116
|
+
# draw something completely outside.
|
114
117
|
f = func.bound_values(*bnds.extrema)
|
118
|
+
|
119
|
+
# If for some reason, there is no point left, we plot
|
120
|
+
# the original function.
|
121
|
+
if f.size < 2
|
122
|
+
f = func
|
123
|
+
end
|
124
|
+
|
115
125
|
t.move_to_point(f.x.first, f.y.first)
|
116
126
|
t.append_points_to_path(f.x[1..-1], f.y[1..-1])
|
117
127
|
end
|
data/lib/ctioga2/plotmaker.rb
CHANGED
@@ -106,6 +106,9 @@ CTioga2::Log::init_logger
|
|
106
106
|
|
107
107
|
require 'shellwords'
|
108
108
|
|
109
|
+
# Path name mangling
|
110
|
+
require 'pathname'
|
111
|
+
|
109
112
|
# Maybe, maybe, maybe... We need tioga ?
|
110
113
|
require 'Tioga/FigureMaker'
|
111
114
|
|
@@ -155,7 +158,7 @@ require 'ctioga2/postprocess'
|
|
155
158
|
# displays of rate constants vs potentials)
|
156
159
|
module CTioga2
|
157
160
|
|
158
|
-
Version::register_svn_info('$Revision:
|
161
|
+
Version::register_svn_info('$Revision: 508 $', '$Date: 2013-09-09 22:13:14 +0200 (Mon, 09 Sep 2013) $')
|
159
162
|
|
160
163
|
# This class is the core of ctioga. It parses the command-line arguments,
|
161
164
|
# reads all necessary files and plots graphs. Most of its functionality
|
@@ -342,55 +345,50 @@ module CTioga2
|
|
342
345
|
|
343
346
|
|
344
347
|
t = create_figure_maker
|
345
|
-
# If figname is clearly a path, we split it into directory/name
|
346
|
-
# and set the output directory to directory.
|
347
|
-
if File::basename(figname) != figname
|
348
|
-
dir = File::dirname(figname)
|
349
|
-
# If path is relative and output_directory is specified, we make
|
350
|
-
# the path relative to output_dir
|
351
|
-
if @output_directory && dir =~ /^[^\/~]/
|
352
|
-
dir = File::join(@output_directory, dir)
|
353
|
-
end
|
354
|
-
t.save_dir = dir
|
355
|
-
figname = File::basename(figname)
|
356
|
-
elsif @output_directory
|
357
|
-
t.save_dir = @output_directory
|
358
|
-
end
|
359
348
|
|
360
|
-
|
361
|
-
|
349
|
+
path = Pathname.new(figname)
|
350
|
+
if @output_directory
|
351
|
+
out = Pathname.new(@output_directory)
|
352
|
+
path = out + path
|
362
353
|
end
|
363
354
|
|
364
|
-
|
365
|
-
|
366
|
-
|
355
|
+
# We always cd into the target directory for creading the
|
356
|
+
Dir.chdir(path.dirname) do
|
357
|
+
fn = path.basename.to_s
|
367
358
|
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
359
|
+
efn = fn.gsub(/[.\s]/) do |x|
|
360
|
+
"__#{x.ord}__"
|
361
|
+
end
|
362
|
+
|
363
|
+
if efn != fn
|
364
|
+
debug { "Mangled name to '#{fn}'"}
|
365
|
+
end
|
366
|
+
|
367
|
+
t.def_figure(efn) do
|
368
|
+
@latex_font.set_global_font(t)
|
369
|
+
@root_object.draw_root_object(t)
|
370
|
+
end
|
371
|
+
t.make_preview_pdf(t.figure_index(efn))
|
372
|
+
|
373
|
+
# We look for latex errors
|
374
|
+
if t.respond_to? :pdflatex_errors
|
375
|
+
errs = t.pdflatex_errors
|
376
|
+
if errs.size > 0
|
377
|
+
error { "pdflatex returned with #{errs.size} error lines"}
|
378
|
+
for l in errs
|
379
|
+
warn { "pdflatex error: #{l.chomp}" }
|
380
|
+
end
|
381
381
|
end
|
382
382
|
end
|
383
|
-
end
|
384
383
|
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
File::rename("#{effective_fig_name}.pdf", "#{figname}.pdf")
|
384
|
+
# We first rename the PDF file if it was mangled.
|
385
|
+
if efn != fn
|
386
|
+
File::rename("#{efn}.pdf", "#{fn}.pdf")
|
389
387
|
end
|
388
|
+
|
390
389
|
end
|
391
390
|
|
392
|
-
file =
|
393
|
-
figname + ".pdf"
|
391
|
+
file = path.to_s + ".pdf"
|
394
392
|
|
395
393
|
# Feed it
|
396
394
|
@postprocess.process_file(file, last)
|
data/lib/ctioga2/utils.rb
CHANGED
@@ -35,7 +35,7 @@ module CTioga2
|
|
35
35
|
# arguments and have the Date and Revision svn:keyword:. Use this
|
36
36
|
# way:
|
37
37
|
#
|
38
|
-
# Version::register_svn_info('$Revision:
|
38
|
+
# Version::register_svn_info('$Revision: 508 $', '$Date: 2013-09-09 22:13:14 +0200 (Mon, 09 Sep 2013) $')
|
39
39
|
#
|
40
40
|
# To set the correct properties, the following command-line can be
|
41
41
|
# used:
|
@@ -75,7 +75,7 @@ module CTioga2
|
|
75
75
|
}
|
76
76
|
|
77
77
|
# The position of the URL, used for getting the version
|
78
|
-
SVN_URL = '$HeadURL: svn+ssh://rubyforge.org/var/svn/ctioga2/releases/ctioga2-0.6/lib/ctioga2/utils.rb $'
|
78
|
+
SVN_URL = '$HeadURL: svn+ssh://rubyforge.org/var/svn/ctioga2/releases/ctioga2-0.6.1/lib/ctioga2/utils.rb $'
|
79
79
|
|
80
80
|
# The version of ctioga2
|
81
81
|
CTIOGA_VERSION = if SVN_URL =~ /releases\/ctioga2-([^\/]+)/
|
@@ -84,7 +84,7 @@ module CTioga2
|
|
84
84
|
"SVN version"
|
85
85
|
end
|
86
86
|
|
87
|
-
register_svn_info('$Revision:
|
87
|
+
register_svn_info('$Revision: 508 $', '$Date: 2013-09-09 22:13:14 +0200 (Mon, 09 Sep 2013) $')
|
88
88
|
|
89
89
|
end
|
90
90
|
|
@@ -225,6 +225,35 @@ module CTioga2
|
|
225
225
|
|
226
226
|
return Math.log10(a.first).send(method)
|
227
227
|
end
|
228
|
+
|
229
|
+
|
230
|
+
# Transcodes the given string from all encodings into the target
|
231
|
+
# encoding until an encoding is found in which the named file
|
232
|
+
# exists.
|
233
|
+
#
|
234
|
+
# Works around encoding problems on windows.
|
235
|
+
def self.transcode_until_found(file)
|
236
|
+
if File.exists? file
|
237
|
+
return file
|
238
|
+
end
|
239
|
+
begin # We wrap in a begin/rescue block for
|
240
|
+
# Ruby 1.8
|
241
|
+
for e in Encoding::constants
|
242
|
+
e = Encoding.const_get(e)
|
243
|
+
if e.is_a? Encoding
|
244
|
+
begin
|
245
|
+
ts = file.encode(Encoding::default_external, e)
|
246
|
+
if File.exists? ts
|
247
|
+
return ts
|
248
|
+
end
|
249
|
+
rescue
|
250
|
+
end
|
251
|
+
end
|
252
|
+
end
|
253
|
+
rescue
|
254
|
+
end
|
255
|
+
return file # But that will fail later on.
|
256
|
+
end
|
228
257
|
end
|
229
258
|
|
230
259
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ctioga2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.6.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-09-
|
12
|
+
date: 2013-09-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: tioga
|