hashutils 0.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.
Files changed (48) hide show
  1. data/README +93 -0
  2. data/Rakefile +51 -0
  3. data/doc/classes/Array.html +131 -0
  4. data/doc/classes/Hash.html +137 -0
  5. data/doc/classes/HashUtils.html +131 -0
  6. data/doc/classes/HashUtils.src/M000018.html +20 -0
  7. data/doc/classes/HashUtilsNamedAttributes.html +131 -0
  8. data/doc/classes/HashUtilsNamedAttributes.src/M000019.html +29 -0
  9. data/doc/classes/HashUtilsXML.html +164 -0
  10. data/doc/classes/HashUtilsXML.src/M000015.html +56 -0
  11. data/doc/classes/HashUtilsXML.src/M000016.html +44 -0
  12. data/doc/classes/HashUtilsXML.src/M000017.html +29 -0
  13. data/doc/classes/TC_HashUtilsFromXML.html +170 -0
  14. data/doc/classes/TC_HashUtilsFromXML.src/M000012.html +25 -0
  15. data/doc/classes/TC_HashUtilsFromXML.src/M000013.html +37 -0
  16. data/doc/classes/TC_HashUtilsFromXML.src/M000014.html +18 -0
  17. data/doc/classes/TC_HashUtilsHashAsAttributes.html +170 -0
  18. data/doc/classes/TC_HashUtilsHashAsAttributes.src/M000008.html +18 -0
  19. data/doc/classes/TC_HashUtilsHashAsAttributes.src/M000009.html +19 -0
  20. data/doc/classes/TC_HashUtilsHashAsAttributes.src/M000010.html +20 -0
  21. data/doc/classes/TC_HashUtilsToXML.html +237 -0
  22. data/doc/classes/TC_HashUtilsToXML.src/M000001.html +34 -0
  23. data/doc/classes/TC_HashUtilsToXML.src/M000002.html +22 -0
  24. data/doc/classes/TC_HashUtilsToXML.src/M000003.html +24 -0
  25. data/doc/classes/TC_HashUtilsToXML.src/M000004.html +30 -0
  26. data/doc/classes/TC_HashUtilsToXML.src/M000005.html +22 -0
  27. data/doc/classes/TC_HashUtilsToXML.src/M000006.html +26 -0
  28. data/doc/classes/TC_HashUtilsToXML.src/M000007.html +31 -0
  29. data/doc/classes/TS_HashUtils.html +137 -0
  30. data/doc/classes/TS_HashUtils.src/M000011.html +22 -0
  31. data/doc/created.rid +1 -0
  32. data/doc/files/lib/hashutils_rb.html +108 -0
  33. data/doc/files/rakefile_rb.html +101 -0
  34. data/doc/files/test/tc_hash_utils_from_xml_rb.html +109 -0
  35. data/doc/files/test/tc_hash_utils_hash_as_attributes_rb.html +109 -0
  36. data/doc/files/test/tc_hash_utils_to_xml_rb.html +110 -0
  37. data/doc/files/test/ts_hash_utils_rb.html +112 -0
  38. data/doc/fr_class_index.html +35 -0
  39. data/doc/fr_file_index.html +32 -0
  40. data/doc/fr_method_index.html +45 -0
  41. data/doc/index.html +24 -0
  42. data/doc/rdoc-style.css +208 -0
  43. data/lib/hashutils.rb +178 -0
  44. data/test/tc_hash_utils_from_xml.rb +47 -0
  45. data/test/tc_hash_utils_hash_as_attributes.rb +24 -0
  46. data/test/tc_hash_utils_to_xml.rb +103 -0
  47. data/test/ts_hash_utils.rb +18 -0
  48. metadata +101 -0
@@ -0,0 +1,24 @@
1
+ require "test/unit"
2
+ require "lib/hashutils.rb"
3
+
4
+ class TC_HashUtilsHashAsAttributes < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @hash = {:a => 1, :b => "5"}
8
+ end
9
+
10
+ #def teardown
11
+ #end
12
+
13
+ def test_should_read_as_attribute
14
+ assert_equal(1, @hash.a)
15
+ assert_equal("5", @hash.b)
16
+ end
17
+
18
+ def test_should_create_new_attributes
19
+ ret = @hash.c = 1.423
20
+ assert_equal(1.423, @hash.c)
21
+ assert_equal(1.423, ret)
22
+ end
23
+
24
+ end
@@ -0,0 +1,103 @@
1
+ require "test/unit"
2
+ require "lib/hashutils.rb"
3
+ require "rexml/document"
4
+
5
+ class TC_HashUtilsToXML < Test::Unit::TestCase
6
+ include REXML
7
+
8
+ def setup
9
+ @hash = { :name_elem => "Document name", #element
10
+ :attr1 => "Attribute 1", #attr
11
+ :attr2 => "Attribute 2", #attr
12
+ :numeric_array => [1, 2, 3, 4], #element - array named as "numeric_item"
13
+ :float_array => [0.4, 0.5], #element - array named as "float_item"
14
+ :non_named_array => ["asd", "qwe"], #element - array not named
15
+ :inner_hash => { :name_elem => "Inner hash name", #element
16
+ :attr_id => "Inner hash attribute", #attribute
17
+ :inner_hash_array => [{:a => 1, :b => 2},{:a => 4, :b => 6}]}} # non-named array of hashes
18
+
19
+ @hash.xml_attributes = [:attr1, :attr2]
20
+ @hash[:numeric_array].xml_name = :numeric_item
21
+ @hash[:float_array].xml_name = :float_item
22
+ @hash[:inner_hash].xml_attributes = [:attr_id]
23
+
24
+ @doc = Document.new(@hash.to_xml :name => :doc)
25
+ @doc_pretty = Document.new(@hash.to_xml :name => :doc)
26
+ end
27
+
28
+ #def teardown
29
+ #end
30
+
31
+ def test_should_have_basic_elements
32
+ assert_equal("Document name", @doc.elements["doc/name_elem"].text)
33
+ assert_equal("Inner hash name", @doc.elements["doc/inner_hash/name_elem"].text)
34
+
35
+ assert_equal("Document name", @doc_pretty.elements["doc/name_elem"].text)
36
+ assert_equal("Inner hash name", @doc_pretty.elements["doc/inner_hash/name_elem"].text)
37
+ end
38
+
39
+ def test_should_have_attributes
40
+ assert_equal("Attribute 1", @doc.root.attributes["attr1"])
41
+ assert_equal("Attribute 2", @doc.root.attributes["attr2"])
42
+ assert_equal("Inner hash attribute", @doc.elements["doc/inner_hash"].attributes["attr_id"])
43
+
44
+ assert_equal("Attribute 1", @doc_pretty.root.attributes["attr1"])
45
+ assert_equal("Attribute 2", @doc_pretty.root.attributes["attr2"])
46
+ assert_equal("Inner hash attribute", @doc_pretty.elements["doc/inner_hash"].attributes["attr_id"])
47
+ end
48
+
49
+ def test_should_have_named_arrays
50
+ assert_equal("1", @doc.elements["doc/numeric_array/numeric_item[1]"].text)
51
+ assert_equal("2", @doc.elements["doc/numeric_array/numeric_item[2]"].text)
52
+ assert_equal("3", @doc.elements["doc/numeric_array/numeric_item[3]"].text)
53
+ assert_equal("4", @doc.elements["doc/numeric_array/numeric_item[4]"].text)
54
+ assert_equal("0.4", @doc.elements["doc/float_array/float_item[1]"].text)
55
+ assert_equal("0.5", @doc.elements["doc/float_array/float_item[2]"].text)
56
+
57
+ assert_equal("1", @doc_pretty.elements["doc/numeric_array/numeric_item[1]"].text)
58
+ assert_equal("2", @doc_pretty.elements["doc/numeric_array/numeric_item[2]"].text)
59
+ assert_equal("3", @doc_pretty.elements["doc/numeric_array/numeric_item[3]"].text)
60
+ assert_equal("4", @doc_pretty.elements["doc/numeric_array/numeric_item[4]"].text)
61
+ assert_equal("0.4", @doc_pretty.elements["doc/float_array/float_item[1]"].text)
62
+ assert_equal("0.5", @doc_pretty.elements["doc/float_array/float_item[2]"].text)
63
+ end
64
+
65
+ def test_should_have_unamed_arrays
66
+ assert_equal("asd", @doc.elements["doc/non_named_array/item[1]"].text)
67
+ assert_equal("qwe", @doc.elements["doc/non_named_array/item[2]"].text)
68
+
69
+ assert_equal("asd", @doc_pretty.elements["doc/non_named_array/item[1]"].text)
70
+ assert_equal("qwe", @doc_pretty.elements["doc/non_named_array/item[2]"].text)
71
+ end
72
+
73
+ def test_should_have_complex_inner_structures
74
+ assert_equal("1", @doc.elements["doc/inner_hash/inner_hash_array/item[1]/a"].text)
75
+ assert_equal("2", @doc.elements["doc/inner_hash/inner_hash_array/item[1]/b"].text)
76
+ assert_equal("4", @doc.elements["doc/inner_hash/inner_hash_array/item[2]/a"].text)
77
+ assert_equal("6", @doc.elements["doc/inner_hash/inner_hash_array/item[2]/b"].text)
78
+
79
+ assert_equal("1", @doc_pretty.elements["doc/inner_hash/inner_hash_array/item[1]/a"].text)
80
+ assert_equal("2", @doc_pretty.elements["doc/inner_hash/inner_hash_array/item[1]/b"].text)
81
+ assert_equal("4", @doc_pretty.elements["doc/inner_hash/inner_hash_array/item[2]/a"].text)
82
+ assert_equal("6", @doc_pretty.elements["doc/inner_hash/inner_hash_array/item[2]/b"].text)
83
+ end
84
+
85
+
86
+ def test_should_look_pretty
87
+ pretty = @hash.to_xml :pretty => true, :name => :doc
88
+ lines = pretty.split("\n")
89
+ assert_equal(30, lines.size)
90
+ tab_stop = 0
91
+ lines.each do |line|
92
+ array = line.chars.to_a
93
+ if array[tab_stop] != "<"
94
+ tab_stop -= 2 if line =~ /\<\/(.+)\>/
95
+ end
96
+ assert_equal("<", array[tab_stop], "#{line} should start with '<'")
97
+ assert_equal(">", array.last, "#{line} should start with '>'")
98
+ tab_stop += 2 if line =~ /\<(.+)(\>|[:blank])/
99
+ tab_stop -= 2 if line =~ /\<\/(.+)\>/
100
+ end
101
+ end
102
+
103
+ end
@@ -0,0 +1,18 @@
1
+ require 'test/unit/testsuite'
2
+ require 'test/unit/ui/console/testrunner'
3
+
4
+ require 'test/tc_hash_utils_from_xml'
5
+ require 'test/tc_hash_utils_to_xml'
6
+ require 'test/tc_hash_utils_hash_as_attributes'
7
+
8
+ class TS_HashUtils
9
+ def self.suite
10
+ suite = Test::Unit::TestSuite.new
11
+ suite << TC_HashUtilsToXML.suite
12
+ suite << TC_HashUtilsHashAsAttributes.suite
13
+ suite << TC_HashUtilsFromXML.suite
14
+ return suite
15
+ end
16
+ end
17
+ Test::Unit::UI::Console::TestRunner.run(TS_HashUtils)
18
+
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hashutils
3
+ version: !ruby/object:Gem::Version
4
+ version: "0.1"
5
+ platform: ruby
6
+ authors:
7
+ - Tiago Luchini
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-11-22 00:00:00 +08:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: " Hashutils is a collection of utilities for dealing with hashes.\n Most remarkable features are to_xml, from_xml and accepting methods as key accessors\n"
17
+ email: info@tiagoluchini.eu
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - lib/hashutils.rb
26
+ - README
27
+ - Rakefile
28
+ - test/ts_hash_utils.rb
29
+ - test/tc_hash_utils_hash_as_attributes.rb
30
+ - test/tc_hash_utils_to_xml.rb
31
+ - test/tc_hash_utils_from_xml.rb
32
+ - doc/created.rid
33
+ - doc/fr_class_index.html
34
+ - doc/rdoc-style.css
35
+ - doc/fr_method_index.html
36
+ - doc/classes/HashUtilsXML.src/M000017.html
37
+ - doc/classes/HashUtilsXML.src/M000016.html
38
+ - doc/classes/HashUtilsXML.src/M000015.html
39
+ - doc/classes/TC_HashUtilsHashAsAttributes.src/M000009.html
40
+ - doc/classes/TC_HashUtilsHashAsAttributes.src/M000008.html
41
+ - doc/classes/TC_HashUtilsHashAsAttributes.src/M000010.html
42
+ - doc/classes/TS_HashUtils.src/M000011.html
43
+ - doc/classes/TC_HashUtilsHashAsAttributes.html
44
+ - doc/classes/HashUtils.html
45
+ - doc/classes/HashUtilsNamedAttributes.src/M000019.html
46
+ - doc/classes/TC_HashUtilsToXML.html
47
+ - doc/classes/TC_HashUtilsFromXML.src/M000012.html
48
+ - doc/classes/TC_HashUtilsFromXML.src/M000014.html
49
+ - doc/classes/TC_HashUtilsFromXML.src/M000013.html
50
+ - doc/classes/Hash.html
51
+ - doc/classes/HashUtilsXML.html
52
+ - doc/classes/HashUtils.src/M000018.html
53
+ - doc/classes/TC_HashUtilsToXML.src/M000002.html
54
+ - doc/classes/TC_HashUtilsToXML.src/M000006.html
55
+ - doc/classes/TC_HashUtilsToXML.src/M000001.html
56
+ - doc/classes/TC_HashUtilsToXML.src/M000003.html
57
+ - doc/classes/TC_HashUtilsToXML.src/M000005.html
58
+ - doc/classes/TC_HashUtilsToXML.src/M000004.html
59
+ - doc/classes/TC_HashUtilsToXML.src/M000007.html
60
+ - doc/classes/HashUtilsNamedAttributes.html
61
+ - doc/classes/Array.html
62
+ - doc/classes/TS_HashUtils.html
63
+ - doc/classes/TC_HashUtilsFromXML.html
64
+ - doc/files/test/tc_hash_utils_from_xml_rb.html
65
+ - doc/files/test/tc_hash_utils_hash_as_attributes_rb.html
66
+ - doc/files/test/ts_hash_utils_rb.html
67
+ - doc/files/test/tc_hash_utils_to_xml_rb.html
68
+ - doc/files/rakefile_rb.html
69
+ - doc/files/lib/hashutils_rb.html
70
+ - doc/index.html
71
+ - doc/fr_file_index.html
72
+ has_rdoc: true
73
+ homepage: http://hashutils.rubyforge.org
74
+ licenses: []
75
+
76
+ post_install_message:
77
+ rdoc_options: []
78
+
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: "0"
86
+ version:
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: "0"
92
+ version:
93
+ requirements:
94
+ - none
95
+ rubyforge_project: hashutils
96
+ rubygems_version: 1.3.5
97
+ signing_key:
98
+ specification_version: 3
99
+ summary: Generic hash utilities (and some array ones along the way).
100
+ test_files: []
101
+