data-converter 0.1.6 → 0.1.7
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 +7 -0
- data/README.md +35 -0
- data/data-converter.gemspec +15 -16
- data/lib/data-converter.rb +31 -27
- data/lib/version.rb +3 -0
- data/test/data_converter_spec.rb +43 -0
- metadata +71 -48
- data/README.rdoc +0 -24
- data/test/test.rb +0 -59
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1ab86a4fc881ba1446b4bb1391d6e0f3776a6e75
|
4
|
+
data.tar.gz: e14ecc460c9f2dde92f29ff1623e45c8ecf6ed5e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8bd5f20a1e14effd29ee387639c25108056164cb146adcace677a6035b5d75180025f803c8a23c3d5fa5fa78af117a4f65382d0038cf14fb450e907b9892f7bd
|
7
|
+
data.tar.gz: 6852ffd724bd2f8bdff35a51ebf5a556bcd2e6122fa65404ad34daa26f79403d9f487f44d745b510027fe5a6011047b07c70057e6c62bc02e13c06ec02a7866e
|
data/README.md
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# data-converter
|
2
|
+
|
3
|
+
DataConverter convert Array and Hash into HTML.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
add this line to your Gemfile.
|
8
|
+
|
9
|
+
`gem 'data-converter'`
|
10
|
+
|
11
|
+
or
|
12
|
+
|
13
|
+
`$ gem install data-converter`
|
14
|
+
|
15
|
+
## Usage
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
require 'data-converter'
|
19
|
+
|
20
|
+
DataConverter.parse([0,1,2,3]) #=> "<ul><li>0</li><li>1</li><li>2</li></ul>"
|
21
|
+
DataConverter.parse(:foo => "bar") #=> "<dl><dt>foo</dt><dd>bar</dd></dl>"
|
22
|
+
```
|
23
|
+
|
24
|
+
## Contributing to Botch
|
25
|
+
|
26
|
+
1. fork the project.
|
27
|
+
2. create your feature branch. (`git checkout -b my-feature`)
|
28
|
+
3. commit your changes. (`git commit -am 'commit message.'`)
|
29
|
+
4. push to the branch. (`git push origin my-feature`)
|
30
|
+
5. send pull request.
|
31
|
+
|
32
|
+
## License
|
33
|
+
|
34
|
+
MIT
|
35
|
+
|
data/data-converter.gemspec
CHANGED
@@ -1,17 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
)
|
1
|
+
require File.expand_path("../lib/version", __FILE__)
|
2
|
+
|
3
|
+
Gem::Specification.new "data-converter", DataConverter::VERSION do |s|
|
4
|
+
s.summary = "Convert hash and array into HTML Element."
|
5
|
+
s.description = "Convert hash and array into HTML Element."
|
6
|
+
s.authors = ["namusyaka"]
|
7
|
+
s.email = "namusyaka@gmail.com"
|
8
|
+
s.homepage = "https://github.com/namusyaka/data-converter"
|
9
|
+
s.files = `git ls-files`.split("\n") - %w(.gitignore)
|
10
|
+
s.test_files = s.files.select { |path| path =~ /^spec\/.*_spec\.rb/ }
|
11
|
+
s.license = "MIT"
|
12
|
+
|
13
|
+
s.add_development_dependency "rake"
|
14
|
+
s.add_development_dependency "rspec"
|
15
|
+
s.add_development_dependency "rspec-html-matchers"
|
17
16
|
end
|
data/lib/data-converter.rb
CHANGED
@@ -1,12 +1,15 @@
|
|
1
|
-
class String
|
2
|
-
def escapeHTML
|
3
|
-
self.gsub(/&/n, '&').gsub(/\"/n, '"').gsub(/>/n, '>').gsub(/</n, '<').gsub(/'/, ''')
|
4
|
-
end
|
5
|
-
end
|
6
|
-
|
7
1
|
class DataConverter
|
8
2
|
attr_reader :data
|
9
3
|
|
4
|
+
ESCAPE_VALUES = {
|
5
|
+
"&" => "&",
|
6
|
+
"<" => "<",
|
7
|
+
">" => ">",
|
8
|
+
'"' => """
|
9
|
+
}
|
10
|
+
|
11
|
+
ESCAPE_REGEXP = Regexp.union(*ESCAPE_VALUES.keys)
|
12
|
+
|
10
13
|
def initialize(data)
|
11
14
|
@data = data
|
12
15
|
end
|
@@ -21,20 +24,12 @@ class DataConverter
|
|
21
24
|
|
22
25
|
case data
|
23
26
|
when Array
|
24
|
-
|
25
|
-
<ul>
|
26
|
-
#{ convert_to_li(data).join("\n") }
|
27
|
-
</ul>
|
28
|
-
UL
|
27
|
+
tag(:ul, convert_to_li(data), :escaped => true)
|
29
28
|
when Hash
|
30
|
-
|
31
|
-
<dl>
|
32
|
-
#{ convert_to_dl_childs(data) }</dl>
|
33
|
-
DL
|
29
|
+
tag(:dl, convert_to_dl_childs(data), :escaped => true)
|
34
30
|
else
|
35
|
-
|
31
|
+
data
|
36
32
|
end
|
37
|
-
list
|
38
33
|
end
|
39
34
|
|
40
35
|
private
|
@@ -44,25 +39,34 @@ class DataConverter
|
|
44
39
|
end
|
45
40
|
|
46
41
|
def convert_to_li(data)
|
47
|
-
data.map
|
48
|
-
if check_data?(
|
49
|
-
|
42
|
+
data.map do |caption|
|
43
|
+
if check_data?(caption)
|
44
|
+
tag(:li, convert(caption), :escaped => true)
|
50
45
|
else
|
51
|
-
|
46
|
+
tag(:li, caption)
|
52
47
|
end
|
53
|
-
end
|
48
|
+
end.join("\n")
|
54
49
|
end
|
55
50
|
|
56
51
|
def convert_to_dl_childs(data)
|
57
|
-
childs =
|
52
|
+
childs = []
|
58
53
|
data.each_pair do | key, value |
|
59
|
-
childs
|
54
|
+
childs << tag(:dt, key)
|
60
55
|
if check_data?(value)
|
61
|
-
childs
|
56
|
+
childs << tag(:dd, convert(value), :escaped => true)
|
62
57
|
else
|
63
|
-
childs
|
58
|
+
childs << tag(:dd, value)
|
64
59
|
end
|
65
60
|
end
|
66
|
-
childs
|
61
|
+
childs.join("\n")
|
62
|
+
end
|
63
|
+
|
64
|
+
def tag(name, caption, options = {})
|
65
|
+
caption = caption.to_s
|
66
|
+
"<#{name}>#{options[:escaped] ? caption : escape_html(caption)}</#{name}>"
|
67
|
+
end
|
68
|
+
|
69
|
+
def escape_html(str)
|
70
|
+
str.to_s.gsub(ESCAPE_REGEXP) { |char| ESCAPE_VALUES[char] }
|
67
71
|
end
|
68
72
|
end
|
data/lib/version.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.expand_path("../../lib/data-converter", __FILE__)
|
2
|
+
require 'rubygems'
|
3
|
+
require 'rspec-html-matchers'
|
4
|
+
require 'rspec'
|
5
|
+
|
6
|
+
describe DataConverter do
|
7
|
+
before(:all) do
|
8
|
+
@array_data = [0, 1, 2, ["string", DataConverter, :symbol, 0.1]]
|
9
|
+
@hash_data = { :foo => ["bar", "baz"], :hoge => { :fuga => :symbol }, :const => DataConverter, :float => 0.1 }
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should support array." do
|
13
|
+
actual_html = DataConverter.parse(@array_data)
|
14
|
+
expect(actual_html).to have_tag('ul') do
|
15
|
+
with_tag 'li', :text => 0
|
16
|
+
with_tag 'li', :text => 1
|
17
|
+
with_tag 'li', :text => 2
|
18
|
+
with_tag 'li > ul'
|
19
|
+
with_tag 'li > ul li', :text => "string"
|
20
|
+
with_tag 'li > ul li', :text => "DataConverter"
|
21
|
+
with_tag 'li > ul li', :text => "symbol"
|
22
|
+
with_tag 'li > ul li', :text => "0.1"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should support hash." do
|
27
|
+
actual_html = DataConverter.parse(@hash_data)
|
28
|
+
expect(actual_html).to have_tag('dl') do
|
29
|
+
with_tag 'dt', :text => 'foo'
|
30
|
+
with_tag 'dt', :text => 'hoge'
|
31
|
+
with_tag 'dt', :text => 'const'
|
32
|
+
with_tag 'dt', :text => 'float'
|
33
|
+
with_tag 'dd > ul'
|
34
|
+
with_tag 'dd > ul > li', :text => 'bar'
|
35
|
+
with_tag 'dd > ul > li', :text => 'baz'
|
36
|
+
with_tag 'dd > dl'
|
37
|
+
with_tag 'dd > dl > dt', :text => 'fuga'
|
38
|
+
with_tag 'dd > dl > dd', :text => 'symbol'
|
39
|
+
with_tag 'dd', :text => "DataConverter"
|
40
|
+
with_tag 'dd', :text => '0.1'
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
metadata
CHANGED
@@ -1,68 +1,91 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: data-converter
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 6
|
10
|
-
version: 0.1.6
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.7
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- namusyaka
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
11
|
+
date: 2013-08-07 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec-html-matchers
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: Convert hash and array into HTML Element.
|
22
56
|
email: namusyaka@gmail.com
|
23
57
|
executables: []
|
24
|
-
|
25
58
|
extensions: []
|
26
|
-
|
27
59
|
extra_rdoc_files: []
|
28
|
-
|
29
|
-
|
60
|
+
files:
|
61
|
+
- README.md
|
30
62
|
- data-converter.gemspec
|
31
|
-
- README.rdoc
|
32
63
|
- lib/data-converter.rb
|
33
|
-
-
|
64
|
+
- lib/version.rb
|
65
|
+
- test/data_converter_spec.rb
|
34
66
|
homepage: https://github.com/namusyaka/data-converter
|
35
|
-
licenses:
|
36
|
-
|
67
|
+
licenses:
|
68
|
+
- MIT
|
69
|
+
metadata: {}
|
37
70
|
post_install_message:
|
38
71
|
rdoc_options: []
|
39
|
-
|
40
|
-
require_paths:
|
72
|
+
require_paths:
|
41
73
|
- lib
|
42
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
none: false
|
53
|
-
requirements:
|
54
|
-
- - ">="
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
hash: 3
|
57
|
-
segments:
|
58
|
-
- 0
|
59
|
-
version: "0"
|
74
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
60
84
|
requirements: []
|
61
|
-
|
62
85
|
rubyforge_project:
|
63
|
-
rubygems_version:
|
86
|
+
rubygems_version: 2.0.2
|
64
87
|
signing_key:
|
65
|
-
specification_version:
|
66
|
-
summary:
|
88
|
+
specification_version: 4
|
89
|
+
summary: Convert hash and array into HTML Element.
|
67
90
|
test_files: []
|
68
|
-
|
91
|
+
has_rdoc:
|
data/README.rdoc
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
=data-converter
|
2
|
-
|
3
|
-
|
4
|
-
==Install
|
5
|
-
gem install data-converter
|
6
|
-
|
7
|
-
==Description
|
8
|
-
Convert hash and array into HTML Element (Array => ul, Hash => dl).
|
9
|
-
It's under the development.
|
10
|
-
|
11
|
-
==Code
|
12
|
-
require 'rubygems'
|
13
|
-
require 'data-converter'
|
14
|
-
|
15
|
-
puts DataConverter.parse({
|
16
|
-
:a => "b",
|
17
|
-
:c => { :d => ["<>&\"'", 1, 2] }
|
18
|
-
})
|
19
|
-
|
20
|
-
==License
|
21
|
-
the MIT License
|
22
|
-
|
23
|
-
==Author
|
24
|
-
namusyaka
|
data/test/test.rb
DELETED
@@ -1,59 +0,0 @@
|
|
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
|