dynarex 1.1.39 → 1.1.40

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/dynarex.rb +46 -2
  2. metadata +2 -2
@@ -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.39
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-11 00:00:00 Z
13
+ date: 2012-08-18 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rexle