print_r 1.0.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8f45e1fd95e1954161a1885401fb6a1b768352ed
4
+ data.tar.gz: f855a5b7127dd03b42d33d6dc1d455fe14a29393
5
+ SHA512:
6
+ metadata.gz: 4d1459fb03af1865b54231ab2767f5a34d4a0cd83d0689efe5af1e92ef6bb20e3b3c4e53b9986b57580192b78cf0b38664e86b2fc47449c99ad95479da2ead28
7
+ data.tar.gz: 43346e7625479f9fa409fd51ecdf7edc216197b282194797d25e81a19a063f2ec68acd2b5e95d625b2a76f384929739b30714621618ae8b7fe633cadc4ab736a
data/Gemspec ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in print_r.gemspec
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/ruby
2
+ # encoding=utf-8
3
+
4
+ module PrintR
5
+ class Generator
6
+ attr_reader :object
7
+
8
+ def initialize(object)
9
+ @object = object
10
+ end
11
+
12
+ def generate
13
+ _to_str(object, 0)
14
+ end
15
+
16
+ def _to_str(obj, indent)
17
+ sp1 = " " * indent
18
+ sp2 = " " * (indent+1)
19
+ str = nil
20
+ type = "Array"
21
+
22
+ if obj.kind_of?(Hash)
23
+ type = "Array"
24
+ elsif obj.kind_of?(Array)
25
+ type = "Array"
26
+ obj2 = {}
27
+ obj.each_with_index do |value,i|
28
+ obj2[i] = value
29
+ end
30
+ obj = obj2
31
+ elsif obj.kind_of?(String)
32
+ elsif obj.respond_to?(:instance_variables)
33
+ type = "#{obj.class.name} Object"
34
+ obj = obj.instance_variables.inject({}) {|h,key|
35
+ key_str = key.to_s.sub("@", "")
36
+ h[key_str] = obj.instance_variable_get(key)
37
+ h
38
+ }
39
+ end
40
+
41
+ if obj.kind_of?(Hash)
42
+ str = "#{type}\n"
43
+ str += sp1 + "(\n"
44
+ obj.each_pair do |key,value|
45
+ str += sprintf("%s[%s] => %s\n", sp2, key, _to_str(value, indent+2))
46
+ end
47
+ str += sp1 + ")\n"
48
+ else
49
+ str = obj.to_s
50
+ end
51
+
52
+ str
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/ruby
2
+ # encoding=utf-8
3
+
4
+ module PrintR
5
+ class Parser
6
+ attr_reader :text
7
+
8
+ def initialize(text)
9
+ @text = text
10
+ end
11
+
12
+ def parse
13
+ _to_object(text, 0)
14
+ end
15
+
16
+ def _to_object(str, indent)
17
+ str = str.strip
18
+ sp = " " * indent
19
+ md = str.match(/^(?:Array|.*? Object)\n#{sp}\(\n(.+)#{sp}\)$/m)
20
+ if md
21
+ obj = _to_key_values(md[1].split(/(\r\n|\r|\n)/), indent+1)
22
+
23
+ obj.each do |key, value|
24
+ obj[key] = _to_object(value, indent+2)
25
+ end
26
+ else
27
+ obj = str
28
+ end
29
+ obj
30
+ end
31
+
32
+ def _to_key_values(lines, indent)
33
+ sp = " " * indent
34
+ h = {}
35
+ tmp_key = nil
36
+ tmp_val = ""
37
+ lines.each do |line|
38
+ md = line.match(/^#{sp}\[([^\]]+)\] => (.*)/)
39
+ if md
40
+ if tmp_key
41
+ h[tmp_key] = tmp_val
42
+ tmp_key = nil
43
+ tmp_val = ""
44
+ end
45
+
46
+ tmp_key = md[1]
47
+ tmp_val = md[2]
48
+ else
49
+ tmp_val += line
50
+ end
51
+ end
52
+
53
+ if tmp_key
54
+ h[tmp_key] = tmp_val
55
+ tmp_key = nil
56
+ tmp_val = ""
57
+ end
58
+
59
+ h
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,3 @@
1
+ module PrintR
2
+ VERSION = "1.0.0"
3
+ end
data/lib/print_r.rb ADDED
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/ruby
2
+ # encoding=utf-8
3
+
4
+ require 'print_r/parser'
5
+ require 'print_r/generator'
6
+ require 'print_r/version'
7
+
8
+ module PrintR
9
+ class << self
10
+ def parse(text)
11
+ Parser.new(text).parse
12
+ end
13
+
14
+ def generate(object)
15
+ Generator.new(object).generate
16
+ end
17
+ end
18
+ end
data/print_r.gemspec ADDED
@@ -0,0 +1,18 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require './lib/print_r/version'
4
+
5
+ Gem::Specification.new do |gem|
6
+ gem.authors = ["Yoshida Tetsuya"]
7
+ gem.email = ["yoshida.eth0@gmail.com"]
8
+ gem.description = %q{This is a print_r() implementation.}
9
+ gem.summary = %q{This is a print_r() implementation.}
10
+ gem.homepage = %q{https://github.com/yoshida-eth0/ruby-print_r}
11
+
12
+ gem.files = `git ls-files`.split($\).delete_if{|x| x.match(/^example/)}
13
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
14
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
15
+ gem.name = "print_r"
16
+ gem.require_paths = ["lib"]
17
+ gem.version = PrintR::VERSION
18
+ end
metadata ADDED
@@ -0,0 +1,50 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: print_r
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Yoshida Tetsuya
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-04-15 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: This is a print_r() implementation.
14
+ email:
15
+ - yoshida.eth0@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - Gemspec
21
+ - Rakefile
22
+ - lib/print_r.rb
23
+ - lib/print_r/generator.rb
24
+ - lib/print_r/parser.rb
25
+ - lib/print_r/version.rb
26
+ - print_r.gemspec
27
+ homepage: https://github.com/yoshida-eth0/ruby-print_r
28
+ licenses: []
29
+ metadata: {}
30
+ post_install_message:
31
+ rdoc_options: []
32
+ require_paths:
33
+ - lib
34
+ required_ruby_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ required_rubygems_version: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ requirements: []
45
+ rubyforge_project:
46
+ rubygems_version: 2.0.3
47
+ signing_key:
48
+ specification_version: 4
49
+ summary: This is a print_r() implementation.
50
+ test_files: []