dynarex 1.6.0 → 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9add011144a343e154c246b3487f03572064e002
4
- data.tar.gz: 47a34797d586426cf694aefb857c9ded547744ec
3
+ metadata.gz: d56acd1bf4c6610a466ce814862ad922bddc9089
4
+ data.tar.gz: c7c244fdeb6d457ab69e660b615351dcb51e3178
5
5
  SHA512:
6
- metadata.gz: 2336188485516cc1f8419affdc99ecd914f51f0a8502565ce199d36c0975980ce1ad160d2ba22c71b99c7b6542dcb0633aa81d90f82dcb33e5252988c8d116c0
7
- data.tar.gz: d13573e3b641ee5a2c500f593581e458288f598c5dd24910aa3180de2bed4312d2b856f40c7b47bb85a32db9a5cbb7c11bd01a5645b6f3c48eeeccdb5f31b5a9
6
+ metadata.gz: 10570bb1492398195085b3b5e17e5245f9d36a3c1ac8db614a3b5dca51c8a39cf016d69b543cb758450dadcb3037f5c2223dfbab832d4b04544ed82f90d55587
7
+ data.tar.gz: 5061e3cef44d759108c09fac1434f15f9254aacef197aae2dbd25254dc9e6c08289d31bda29f9bc28c2ef17353e35f3201a9c0783ac1c2125fef0a74152a5532
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -458,96 +458,13 @@ EOF
458
458
  end
459
459
 
460
460
  def sort_by!(&element_blk)
461
- refresh_doc
462
- a = @doc.root.xpath('records/*').sort_by &element_blk
463
- @doc.root.delete('records')
464
-
465
- records = Rexle::Element.new 'records'
466
-
467
- a.each {|record| records.add record}
468
461
 
469
- @doc.root.add records
462
+ r = sort_records_by! &element_blk
463
+ @dirty_flag = true
464
+ r
470
465
 
471
- load_records if @dirty_flag
472
- self
473
466
  end
474
467
 
475
- def rebuild_doc(state=:internal)
476
-
477
- reserved_keywords = (
478
- Object.public_methods | \
479
- Kernel.public_methods | \
480
- public_methods + [:method_missing]
481
- )
482
-
483
- xml = RexleBuilder.new
484
-
485
- a = xml.send @root_name do
486
-
487
- xml.summary do
488
-
489
- @summary.each do |key,value|
490
-
491
- v = value.gsub('>','>')\
492
- .gsub('<','&lt;')\
493
- .gsub(/(&\s|&[a-zA-Z\.]+;?)/) {|x| x[-1] == ';' ? x \
494
- : x.sub('&','&amp;')}
495
-
496
- xml.send key, v
497
-
498
- end
499
- end
500
-
501
- records = @records.to_a
502
-
503
- if records then
504
-
505
- #jr160315records.reverse! if @order == 'descending' and state == :external
506
-
507
- xml.records do
508
-
509
- records.each do |k, item|
510
-
511
- attributes = {}
512
-
513
- item.keys.each do |key|
514
- attributes[key] = item[key] || '' unless key == :body
515
- end
516
-
517
- xml.send(@record_name, attributes) do
518
- item[:body].each do |name,value|
519
-
520
- if reserved_keywords.include? name then
521
- name = ('._' + name.to_s).to_sym
522
- end
523
-
524
- val = value.send(value.is_a?(String) ? :to_s : :to_yaml)
525
- xml.send(name, val.gsub('>','&gt;')\
526
- .gsub('<','&lt;')\
527
- .gsub(/(&\s|&[a-zA-Z\.]+;?)/) do |x|
528
- x[-1] == ';' ? x : x.sub('&','&amp;')
529
- end
530
- )
531
- end
532
- end
533
- end
534
-
535
- end
536
- else
537
- xml.records
538
- end # end of if @records
539
- end
540
-
541
- doc = Rexle.new(a)
542
-
543
- if @xslt then
544
- doc.instructions = [['xml-stylesheet',
545
- "title='XSL_formatting' type='text/xsl' href='#{@xslt}'"]]
546
- end
547
-
548
- return doc if state != :internal
549
- @doc = doc
550
- end
551
468
 
552
469
  def record(id)
553
470
  e = @doc.root.element("records/*[@id='#{id}']")
@@ -753,6 +670,83 @@ EOF
753
670
 
754
671
  end
755
672
 
673
+ def rebuild_doc(state=:internal)
674
+
675
+ reserved_keywords = (
676
+ Object.public_methods | \
677
+ Kernel.public_methods | \
678
+ public_methods + [:method_missing]
679
+ )
680
+
681
+ xml = RexleBuilder.new
682
+
683
+ a = xml.send @root_name do
684
+
685
+ xml.summary do
686
+
687
+ @summary.each do |key,value|
688
+
689
+ v = value.gsub('>','&gt;')\
690
+ .gsub('<','&lt;')\
691
+ .gsub(/(&\s|&[a-zA-Z\.]+;?)/) {|x| x[-1] == ';' ? x \
692
+ : x.sub('&','&amp;')}
693
+
694
+ xml.send key, v
695
+
696
+ end
697
+ end
698
+
699
+ records = @records.to_a
700
+
701
+ if records then
702
+
703
+ #jr160315records.reverse! if @order == 'descending' and state == :external
704
+
705
+ xml.records do
706
+
707
+ records.each do |k, item|
708
+
709
+ attributes = {}
710
+
711
+ item.keys.each do |key|
712
+ attributes[key] = item[key] || '' unless key == :body
713
+ end
714
+
715
+ xml.send(@record_name, attributes) do
716
+ item[:body].each do |name,value|
717
+
718
+ if reserved_keywords.include? name then
719
+ name = ('._' + name.to_s).to_sym
720
+ end
721
+
722
+ val = value.send(value.is_a?(String) ? :to_s : :to_yaml)
723
+ xml.send(name, val.gsub('>','&gt;')\
724
+ .gsub('<','&lt;')\
725
+ .gsub(/(&\s|&[a-zA-Z\.]+;?)/) do |x|
726
+ x[-1] == ';' ? x : x.sub('&','&amp;')
727
+ end
728
+ )
729
+ end
730
+ end
731
+ end
732
+
733
+ end
734
+ else
735
+ xml.records
736
+ end # end of if @records
737
+ end
738
+
739
+ doc = Rexle.new(a)
740
+
741
+ if @xslt then
742
+ doc.instructions = [['xml-stylesheet',
743
+ "title='XSL_formatting' type='text/xsl' href='#{@xslt}'"]]
744
+ end
745
+
746
+ return doc if state != :internal
747
+ @doc = doc
748
+ end
749
+
756
750
  def string_parse(buffer)
757
751
 
758
752
  if @spaces_delimited then
@@ -926,6 +920,22 @@ EOF
926
920
  rebuild_doc
927
921
  self
928
922
  end
923
+
924
+ def sort_records_by!(&element_blk)
925
+
926
+ refresh_doc
927
+ a = @doc.root.xpath('records/*').sort_by &element_blk
928
+ @doc.root.delete('records')
929
+
930
+ records = Rexle::Element.new 'records'
931
+
932
+ a.each {|record| records.add record}
933
+
934
+ @doc.root.add records
935
+
936
+ load_records if @dirty_flag
937
+ self
938
+ end
929
939
 
930
940
  def unescape(s)
931
941
  s.gsub('&lt;', '<').gsub('&gt;','>')
@@ -1071,7 +1081,11 @@ EOF
1071
1081
  def load_records
1072
1082
 
1073
1083
  @dirty_flag = false
1074
- self.sort_by! {|x| x.element(@default_key.to_s).text } if @summary.has_key? :order
1084
+
1085
+ if @summary[:order] then
1086
+ orderfield = @summary[:order][/(\w+)\s+(?:ascending|descending)/,1]
1087
+ self.sort_records_by! {|x| x.element(orderfield).text } if orderfield
1088
+ end
1075
1089
 
1076
1090
  @records = records_to_h
1077
1091
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynarex
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
metadata.gz.sig CHANGED
Binary file