dynarex 1.1.39 → 1.1.40

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.
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