diff --git a/Changes b/Changes index 3a80957..93dc7ea 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,11 @@ +feedgnuplot (1.23) + + * --extracmds no longer accepts comma-separated lists + This was needed because a command can have a comma + * --curvestyle no longer adds on top of --curvestyleall + + -- Dima Kogan Sat, 29 Sep 2012 16:29:38 -0700 + feedgnuplot (1.22) * removed --size option diff --git a/bin/feedgnuplot b/bin/feedgnuplot index 84ba483..4ddf1c7 100755 --- a/bin/feedgnuplot +++ b/bin/feedgnuplot @@ -95,8 +95,9 @@ sub interpretCommandline # Previously I was using 'legend=s%' and 'curvestyle=s%' for curve addressing. This had cleaner # syntax, but disregarded the order of the given options. This resulted in arbitrarily ordered - # curves. - # needed for these to be parsed into a ref to a list + # curves. I thus make parse these into lists, and then also make hashes, for later use + + # needed for these to be parsed into an array-ref $options{legend} = []; $options{curvestyle} = []; $options{histogram} = []; @@ -118,12 +119,27 @@ sub interpretCommandline $options->{curvestyleall} = '' unless defined $options->{curvestyleall}; # expand options that are given as comma-separated lists - for my $listkey (qw(extracmds histogram y2)) + for my $listkey (qw(histogram y2)) { @{$options{$listkey}} = map split('\s*,\s*', $_), @{$options{$listkey}} if defined $options{$listkey}; } + # --legend and --curvestyle options are conceptually hashes, but are parsed as + # arrays in order to preserve the ordering. I parse both of these into hashes + # because those are useful to have later. After this I can access individual + # legends with $options{legend_hash}{curveid} + for my $listkey (qw(legend curvestyle)) + { + $options{"${listkey}_hash"} = {}; + + my $n = scalar @{$options{$listkey}}/2; + foreach my $idx (0..$n-1) + { + $options{"${listkey}_hash"}{$options{$listkey}[$idx*2]} = $options{$listkey}[$idx*2 + 1]; + } + } + # parse stream option. Allowed only numbers >= 0 or 'trigger' if(defined $options->{stream}) { @@ -376,7 +392,10 @@ sub mainThread # For the specified values, set the legend entries to 'title "blah blah"' if(@{$options{legend}}) { - # @{$options{legend}} is a list where consecutive pairs are (curveID, legend) + # @{$options{legend}} is a list where consecutive pairs are (curveID, + # legend). I use $options{legend} here instead of $options{legend_hash} + # because I create a new curve when I see a new one, and the hash is + # unordered, thus messing up the ordering my $n = scalar @{$options{legend}}/2; foreach my $idx (0..$n-1) { @@ -388,7 +407,10 @@ sub mainThread # add the extra curve options if(@{$options{curvestyle}}) { - # @{$options{curvestyle}} is a list where consecutive pairs are (curveID, style) + # @{$options{curvestyle}} is a list where consecutive pairs are (curveID, + # style). I use $options{curvestyle} here instead of + # $options{curvestyle_hash} because I create a new curve when I see a new + # one, and the hash is unordered, thus messing up the ordering my $n = scalar @{$options{curvestyle}}/2; foreach my $idx (0..$n-1) { @@ -598,10 +620,14 @@ sub updateCurveOptions { $title = $id; } my $titleoption = defined $title ? "title \"$title\"" : "notitle"; - my $extraoption = defined $options{curvestyleall} ? $options{curvestyleall} : ''; + + my $curvestyleall = ''; + $curvestyleall = $options{curvestyleall} + if defined $options{curvestyleall} && !defined $options{curvestyle_hash}{$id}; + my $histoptions = $curveoptions->{histoptions} || ''; - $curveoptions->{options} = "$histoptions $titleoption $curveoptions->{extraoptions} $extraoption"; + $curveoptions->{options} = "$histoptions $titleoption $curveoptions->{extraoptions} $curvestyleall"; } sub getCurve diff --git a/bin/feedgnuplot.pod b/bin/feedgnuplot.pod index fe18551..1db9962 100644 --- a/bin/feedgnuplot.pod +++ b/bin/feedgnuplot.pod @@ -46,7 +46,8 @@ passed in with C<--extracmds>. For example, to turn off the grid, pass in C<--extracmds 'unset grid'>. As many of these options as needed can be passed in. To add arbitrary curve styles, use C<--curvestyle curveID extrastyle>. Pass these more than once to affect more than one curve. To apply an extra style to -I the curves, pass in C<--curvestyleall extrastyle>. +I the curves that lack an explicit C<--curvestyle>, pass in +C<--curvestyleall extrastyle>. =head2 Data formats @@ -319,15 +320,16 @@ As an example, if line 3 of the input is "0 9 1 20" 'cumulative', but rescaled to end up at 1.0. --curvestyle curveID style - Additional styles per curve. With --dataid, curveID is the - ID. Otherwise, it's the index of the curve, starting at 0. Use - this option multiple times for multiple curves + Additional styles per curve. With --dataid, curveID is + the ID. Otherwise, it's the index of the curve, starting + at 0. Use this option multiple times for multiple curves. + --curvestylall does NOT apply to curves that have a + --curvestyle - --curvestyleall xxx Additional styles for ALL curves. + --curvestyleall xxx Additional styles for all curves that have no --curvestyle --extracmds xxx Additional commands. These could contain extra global styles - for instance. Can be passed multiple times, or passed a comma- - separated list + for instance. Can be passed multiple times. --square Plot data with aspect ratio 1. For 3D plots, this controls the aspect ratio for all 3 axes diff --git a/package_definitions/debian/changelog b/package_definitions/debian/changelog index 1786771..fb681f3 100644 --- a/package_definitions/debian/changelog +++ b/package_definitions/debian/changelog @@ -1,10 +1,3 @@ -feedgnuplot (1.23) unstable; urgency=low - - * debian packaging cleanup - * package now uploaded to Debian (Closes: #686413) - - -- Dima Kogan Mon, 10 Sep 2012 20:47:40 -0700 - feedgnuplot (1.22) unstable; urgency=low * removed --size option