dynarex 1.1.39 → 1.1.40
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/dynarex.rb +46 -2
- metadata +2 -2
data/lib/dynarex.rb
CHANGED
@@ -66,6 +66,17 @@ class Dynarex
|
|
66
66
|
"<object #%s>" % [self.object_id]
|
67
67
|
end
|
68
68
|
|
69
|
+
def order=(value)
|
70
|
+
|
71
|
+
self.summary.merge!({order: value})
|
72
|
+
if @order == 'ascending' and value == 'descending' then
|
73
|
+
sort_records
|
74
|
+
elsif @order == 'descending' and value == 'ascending'
|
75
|
+
sort_records
|
76
|
+
end
|
77
|
+
@order = value
|
78
|
+
end
|
79
|
+
|
69
80
|
def schema=(s)
|
70
81
|
open s
|
71
82
|
end
|
@@ -543,7 +554,8 @@ EOF
|
|
543
554
|
@doc = Rexle.new(buffer) unless @doc
|
544
555
|
@schema = @doc.root.text('summary/schema')
|
545
556
|
@root_name = @doc.root.name
|
546
|
-
@summary = summary_to_h
|
557
|
+
@summary = summary_to_h
|
558
|
+
@order = @summary[:order] if @summary.has_key? :order
|
547
559
|
|
548
560
|
@default_key = @doc.root.element('summary/default_key/text()')
|
549
561
|
@format_mask = @doc.root.element('summary/format_mask/text()')
|
@@ -615,6 +627,38 @@ EOF
|
|
615
627
|
|
616
628
|
end
|
617
629
|
|
630
|
+
def sort_records
|
631
|
+
xsl =<<XSL
|
632
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
633
|
+
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
634
|
+
|
635
|
+
<xsl:template match="*">
|
636
|
+
<xsl:element name="{name()}"><xsl:text>
|
637
|
+
</xsl:text>
|
638
|
+
<xsl:copy-of select="summary"/><xsl:text>
|
639
|
+
</xsl:text>
|
640
|
+
<xsl:apply-templates select="records"/>
|
641
|
+
</xsl:element>
|
642
|
+
</xsl:template>
|
643
|
+
<xsl:template match="records">
|
644
|
+
<records><xsl:text>
|
645
|
+
</xsl:text>
|
646
|
+
<xsl:for-each select="child::*">
|
647
|
+
<xsl:sort order="descending"/>
|
648
|
+
<xsl:text> </xsl:text><xsl:copy-of select="."/><xsl:text>
|
649
|
+
</xsl:text>
|
650
|
+
</xsl:for-each>
|
651
|
+
</records><xsl:text>
|
652
|
+
</xsl:text>
|
653
|
+
</xsl:template>
|
654
|
+
|
655
|
+
</xsl:stylesheet>
|
656
|
+
XSL
|
657
|
+
|
658
|
+
@doc = Rexle.new(Rexslt.new(xsl, self.to_xml).to_s)
|
659
|
+
@dirty_flag = true
|
660
|
+
end
|
661
|
+
|
618
662
|
def summary_to_h
|
619
663
|
|
620
664
|
@doc.root.xpath('summary/*').inject({}) do |r,node|
|
@@ -622,4 +666,4 @@ EOF
|
|
622
666
|
end
|
623
667
|
end
|
624
668
|
|
625
|
-
end
|
669
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: dynarex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 1.1.
|
5
|
+
version: 1.1.40
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- James Robertson
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2012-08-
|
13
|
+
date: 2012-08-18 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rexle
|