data-converter 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.
data/README.rdoc ADDED
@@ -0,0 +1,23 @@
1
+ =data-converter
2
+
3
+ ==Install
4
+ gem install data-converter
5
+
6
+ ==Description
7
+ Hash and Array convert to HTML Element (Array => ul, Hash => dl).
8
+ It's under the development.
9
+
10
+ ==Code
11
+ require 'rubygems'
12
+ require 'data-converter'
13
+
14
+ puts DataConverter.parse({
15
+ :a => "b",
16
+ :c => { :d => [0, 1, 2] }
17
+ })
18
+
19
+ ==License
20
+ the MIT License
21
+
22
+ ==Author
23
+ namusyaka
@@ -0,0 +1,17 @@
1
+ Gem::Specification.new do | spec |
2
+ spec.name = "data-converter"
3
+ spec.version = "0.1"
4
+ spec.summary = "Ruby Data convert to HTML. It is under the devlopment."
5
+ spec.description = "Hash and Array convert to HTML Element (Array => ul, Hash => dl)."
6
+ spec.homepage = "https://github.com/namusyaka/data-converter"
7
+ spec.author = "namusyaka"
8
+ spec.email = "namusyaka@gmail.com"
9
+ spec.files = %w(
10
+ data-converter.gemspec
11
+ README.rdoc
12
+ lib
13
+ test
14
+ lib/data-converter.rb
15
+ test/test.rb
16
+ )
17
+ end
@@ -0,0 +1,64 @@
1
+ class DataConverter
2
+ attr_reader :data
3
+
4
+ ARRAY = "Array"
5
+ HASH = "Hash"
6
+
7
+ def initialize(data)
8
+ @data = data
9
+ end
10
+
11
+ def self.parse(data)
12
+ constructor = self.new(data)
13
+ constructor.convert(constructor.data)
14
+ end
15
+
16
+ def convert(data = @data)
17
+ case data.class.to_s
18
+ when ARRAY
19
+ list = <<-UL
20
+ <ul>
21
+ #{ convert_to_li(data).join("\n") }
22
+ </ul>
23
+ UL
24
+ when HASH
25
+ list = <<-DL
26
+ <dl>
27
+ #{ convert_to_dl_childs(data).join("\n") }
28
+ </dl>
29
+ DL
30
+ else
31
+ return data
32
+ end
33
+ list
34
+ end
35
+
36
+ private
37
+
38
+ def check_data?(data)
39
+ data.is_a?(Array) or data.is_a?(Hash)
40
+ end
41
+
42
+ def convert_to_li(data)
43
+ data.map! do | e |
44
+ if check_data?(e)
45
+ "<li>#{ convert(e) }</li>"
46
+ else
47
+ "<li>#{ e }</li>"
48
+ end
49
+ end
50
+ end
51
+
52
+ def convert_to_dl_childs(data)
53
+ childs = []
54
+ data.each_pair do | key, value |
55
+ childs << "<dt>#{ key }</dt>"
56
+ if check_data?(value)
57
+ childs << "<dd>#{ convert(value) }</dd>"
58
+ else
59
+ childs << "<dd>#{ value }</dd>"
60
+ end
61
+ end
62
+ childs
63
+ end
64
+ end
data/test/test.rb ADDED
@@ -0,0 +1,59 @@
1
+ require 'test/unit'
2
+ require File.expand_path('../../lib/data-converter', __FILE__)
3
+
4
+ class Test_DataConverter < Test::Unit::TestCase
5
+ HASH_RESULT = <<-EOS
6
+ <dl>
7
+ <dt>a</dt>
8
+ <dd><dl>
9
+ <dt>b</dt>
10
+ <dd><dl>
11
+ <dt>c</dt>
12
+ <dd><ul>
13
+ <li>0</li>
14
+ <li>1</li>
15
+ <li>2</li>
16
+ <li>3</li>
17
+ </ul>
18
+ </dd>
19
+ </dl>
20
+ </dd>
21
+ </dl>
22
+ </dd>
23
+ </dl>
24
+ EOS
25
+
26
+ ARRAY_RESULT = <<-EOS
27
+ <ul>
28
+ <li><dl>
29
+ <dt>f</dt>
30
+ <dd><ul>
31
+ <li>4</li>
32
+ <li>5</li>
33
+ <li>6</li>
34
+ <li>7</li>
35
+ </ul>
36
+ </dd>
37
+ </dl>
38
+ </li>
39
+ </ul>
40
+ EOS
41
+
42
+ def setup
43
+ @hash_data = { :a => { :b => { :c => [0, 1, 2, 3] } } }
44
+ @array_data = [{ :f => [4, 5, 6, 7] }]
45
+ @class = DataConverter
46
+ end
47
+
48
+ def test_array_parse
49
+ assert_equal(ARRAY_RESULT, @class.parse(@array_data))
50
+ end
51
+
52
+ def test_hash_parse
53
+ assert_equal(HASH_RESULT, @class.parse(@hash_data))
54
+ end
55
+
56
+ def test_other_approach
57
+ assert_equal(HASH_RESULT, DataConverter.new(@hash_data).convert)
58
+ end
59
+ end
metadata ADDED
@@ -0,0 +1,69 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: data-converter
3
+ version: !ruby/object:Gem::Version
4
+ hash: 9
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ version: "0.1"
10
+ platform: ruby
11
+ authors:
12
+ - namusyaka
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-11-12 00:00:00 +09:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: Hash and Array convert to HTML Element (Array => ul, Hash => dl).
22
+ email: namusyaka@gmail.com
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files: []
28
+
29
+ files:
30
+ - data-converter.gemspec
31
+ - README.rdoc
32
+ - lib/data-converter.rb
33
+ - test/test.rb
34
+ has_rdoc: true
35
+ homepage: https://github.com/namusyaka/data-converter
36
+ licenses: []
37
+
38
+ post_install_message:
39
+ rdoc_options: []
40
+
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ hash: 3
49
+ segments:
50
+ - 0
51
+ version: "0"
52
+ required_rubygems_version: !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ requirements: []
62
+
63
+ rubyforge_project:
64
+ rubygems_version: 1.5.0
65
+ signing_key:
66
+ specification_version: 3
67
+ summary: Ruby Data convert to HTML. It is under the devlopment.
68
+ test_files: []
69
+