simple_show 0.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/.gitignore +4 -0
- data/.rvmrc +1 -0
- data/Gemfile +11 -0
- data/README.rdoc +95 -0
- data/Rakefile +10 -0
- data/app/helpers/simple_show/application_helper.rb +16 -0
- data/lib/generators/simple_show/USAGE +3 -0
- data/lib/generators/simple_show/install_generator.rb +13 -0
- data/lib/generators/simple_show/templates/config/initializers/simple_show.rb +17 -0
- data/lib/simple_show/base.rb +36 -0
- data/lib/simple_show/railtie.rb +9 -0
- data/lib/simple_show/version.rb +3 -0
- data/lib/simple_show.rb +52 -0
- data/simple_show.gemspec +21 -0
- data/test/test_helper.rb +60 -0
- data/test/test_simple_show.rb +26 -0
- data/test/test_simple_show_for.rb +40 -0
- data/test/test_simple_show_label.rb +14 -0
- data/test/test_simple_show_value.rb +16 -0
- metadata +90 -0
data/.gitignore
ADDED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm gemset use simple_show
|
data/Gemfile
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
== simple_show
|
2
|
+
|
3
|
+
* http://github.com/phallstrom/simple_show
|
4
|
+
|
5
|
+
== Description:
|
6
|
+
|
7
|
+
SimpleShow is to #show as SimpleForm is to #new/#edit.
|
8
|
+
|
9
|
+
== Requirements:
|
10
|
+
|
11
|
+
* Rails 3
|
12
|
+
|
13
|
+
== Install:
|
14
|
+
|
15
|
+
Add it to your Gemfile:
|
16
|
+
|
17
|
+
gem "simple_show"
|
18
|
+
|
19
|
+
Update your bundle:
|
20
|
+
|
21
|
+
bundle update simple_show
|
22
|
+
|
23
|
+
Run the generator:
|
24
|
+
|
25
|
+
rails generate simple_show:install
|
26
|
+
|
27
|
+
== Example Usage:
|
28
|
+
|
29
|
+
Assume we have a Person object with name, phone, email, born_on, etc.
|
30
|
+
In our show action we can then do this:
|
31
|
+
|
32
|
+
<%= simple_show_for @johndoe do |f| %>
|
33
|
+
<%= f.show :name %>
|
34
|
+
<%= f.show :phone, :label => 'Telephone' %>
|
35
|
+
<%= f.show(:email) {|o| o.email.downcase} %>
|
36
|
+
<%= f.show :born_on, :value => '**censored**' %>
|
37
|
+
<% end %>
|
38
|
+
|
39
|
+
Which would generate (using the defaults) output like this:
|
40
|
+
|
41
|
+
<div class="simple_show person" id="person_123">
|
42
|
+
<div class="show">
|
43
|
+
<label>Name:</label>
|
44
|
+
<span class="value">John Doe</span>
|
45
|
+
</div>
|
46
|
+
<div class="show">
|
47
|
+
<label>Telephone:</label>
|
48
|
+
<span class="value">867-5309</span>
|
49
|
+
</div>
|
50
|
+
<div class="show">
|
51
|
+
<label>Email:</label>
|
52
|
+
<span class="value">johndoe@example.com</span>
|
53
|
+
</div>
|
54
|
+
<div class="show">
|
55
|
+
<label>Born on:</label>
|
56
|
+
<span class="value">**censored**</span>
|
57
|
+
</div>
|
58
|
+
<br clear="all">
|
59
|
+
</div>
|
60
|
+
|
61
|
+
== Options:
|
62
|
+
|
63
|
+
There are a number of options that control the resulting HTML.
|
64
|
+
See lib/simple_show.rb for what they are. For example,
|
65
|
+
if you don't want that BR tag then set SimpleShow.clear_on_close to false.
|
66
|
+
|
67
|
+
== TODO:
|
68
|
+
|
69
|
+
- Add support for associations.
|
70
|
+
- Add options for formatting dates, numerics, decimals, and booleans.
|
71
|
+
|
72
|
+
== License:
|
73
|
+
|
74
|
+
(The MIT License)
|
75
|
+
|
76
|
+
Copyright (c) 2011 Philip Hallstrom <philip@pjkh.com>
|
77
|
+
|
78
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
79
|
+
a copy of this software and associated documentation files (the
|
80
|
+
'Software'), to deal in the Software without restriction, including
|
81
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
82
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
83
|
+
permit persons to whom the Software is furnished to do so, subject to
|
84
|
+
the following conditions:
|
85
|
+
|
86
|
+
The above copyright notice and this permission notice shall be
|
87
|
+
included in all copies or substantial portions of the Software.
|
88
|
+
|
89
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
90
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
91
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
92
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
93
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
94
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
95
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
module SimpleShow
|
2
|
+
module ApplicationHelper
|
3
|
+
def simple_show_for(record, options = {}, &block)
|
4
|
+
raise ArgumentError, "Missing block" unless block_given?
|
5
|
+
|
6
|
+
options[:html] ||= {}
|
7
|
+
options[:html][:id] ||= dom_id(record)
|
8
|
+
options[:html][:class] = "#{SimpleShow.show_class} #{dom_class(record)} #{options[:html][:class]}".strip
|
9
|
+
|
10
|
+
output = capture(SimpleShow::Base.new(self, record, options), &block)
|
11
|
+
output.concat tag(:br, :clear => 'all') if SimpleShow.clear_on_close
|
12
|
+
|
13
|
+
content_tag(:div, output, :id => options[:html][:id], :class => options[:html][:class])
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module SimpleShow
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
desc "Copy SimpleShow configuration"
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
|
7
|
+
def copy_config
|
8
|
+
directory 'config'
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# Use this setup block to configure all options available in SimpleShow.
|
2
|
+
SimpleShow.setup do |config|
|
3
|
+
|
4
|
+
#config.show_class = :simple_show
|
5
|
+
#config.wrapper_tag = :div
|
6
|
+
#config.wrapper_class = :show
|
7
|
+
#config.label_tag = :label
|
8
|
+
#config.label_class = nil
|
9
|
+
#config.label_prefix = nil
|
10
|
+
#config.label_suffix = ':'
|
11
|
+
#config.value_tag = :span
|
12
|
+
#config.value_class = :value
|
13
|
+
#config.value_prefix = nil
|
14
|
+
#config.value_suffix = nil
|
15
|
+
#config.clear_on_close = true
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module SimpleShow
|
2
|
+
class Base
|
3
|
+
def initialize(binding, record, options = {})
|
4
|
+
@binding = binding
|
5
|
+
@record = record
|
6
|
+
@options = options
|
7
|
+
end
|
8
|
+
|
9
|
+
def show(attr, options = {}, &block)
|
10
|
+
output = label(attr, options, &block)
|
11
|
+
output += value(attr, options, &block)
|
12
|
+
if SimpleShow.wrapper_tag.nil?
|
13
|
+
@binding.output_buffer += output
|
14
|
+
else
|
15
|
+
@binding.output_buffer += @binding.content_tag(SimpleShow.wrapper_tag, output, :class => SimpleShow.wrapper_class)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def label(attr, options = {}, &block)
|
20
|
+
@binding.content_tag(SimpleShow.label_tag, :class => SimpleShow.label_class) do
|
21
|
+
[SimpleShow.label_prefix, options[:label] || @record.class.human_attribute_name(attr), SimpleShow.label_suffix].compact.join
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def value(attr, options = {}, &block)
|
26
|
+
if block_given?
|
27
|
+
value = yield(@record)
|
28
|
+
else
|
29
|
+
value = options[:value] || @record.send(attr)
|
30
|
+
end
|
31
|
+
@binding.content_tag(SimpleShow.value_tag, :class => SimpleShow.value_class) do
|
32
|
+
[SimpleShow.value_prefix, value, SimpleShow.value_suffix].compact.join
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/simple_show.rb
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'action_view'
|
2
|
+
require 'simple_show/base'
|
3
|
+
|
4
|
+
if defined?(::Rails::Railtie)
|
5
|
+
require 'simple_show/railtie'
|
6
|
+
end
|
7
|
+
|
8
|
+
module SimpleShow
|
9
|
+
|
10
|
+
mattr_accessor :show_class
|
11
|
+
@@show_class = :simple_show
|
12
|
+
|
13
|
+
mattr_accessor :wrapper_tag
|
14
|
+
@@wrapper_tag = :div
|
15
|
+
|
16
|
+
mattr_accessor :wrapper_class
|
17
|
+
@@wrapper_class = :show
|
18
|
+
|
19
|
+
mattr_accessor :label_tag
|
20
|
+
@@label_tag = :label
|
21
|
+
|
22
|
+
mattr_accessor :label_class
|
23
|
+
@@label_class = nil
|
24
|
+
|
25
|
+
mattr_accessor :label_prefix
|
26
|
+
@@label_prefix = nil
|
27
|
+
|
28
|
+
mattr_accessor :label_suffix
|
29
|
+
@@label_suffix = ':'
|
30
|
+
|
31
|
+
mattr_accessor :value_tag
|
32
|
+
@@value_tag = :span
|
33
|
+
|
34
|
+
mattr_accessor :value_class
|
35
|
+
@@value_class = :value
|
36
|
+
|
37
|
+
mattr_accessor :value_prefix
|
38
|
+
@@value_prefix = nil
|
39
|
+
|
40
|
+
mattr_accessor :value_suffix
|
41
|
+
@@value_suffix = nil
|
42
|
+
|
43
|
+
mattr_accessor :clear_on_close
|
44
|
+
@@clear_on_close = true
|
45
|
+
|
46
|
+
# Default way to setup SimpleShow. Run rails generate simple_show:install
|
47
|
+
# to create a fresh initializer with all configuration values.
|
48
|
+
def self.setup
|
49
|
+
yield self
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
data/simple_show.gemspec
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "simple_show/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "simple_show"
|
7
|
+
s.version = SimpleShow::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Philip Hallstrom"]
|
10
|
+
s.email = ["philip@pjkh.com"]
|
11
|
+
s.homepage = ""
|
12
|
+
s.summary = %q{SimpleShow is #new what SimpleForm is to #edit}
|
13
|
+
s.description = %q{SimpleShow is #new what SimpleForm is to #edit}
|
14
|
+
|
15
|
+
s.rubyforge_project = "simple_show"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
require 'nokogiri'
|
4
|
+
|
5
|
+
require 'test/unit'
|
6
|
+
require 'pp'
|
7
|
+
|
8
|
+
require 'active_record'
|
9
|
+
require 'active_model'
|
10
|
+
require 'action_controller'
|
11
|
+
require 'action_view'
|
12
|
+
require 'action_view/base'
|
13
|
+
require 'action_view/template'
|
14
|
+
|
15
|
+
require 'simple_show'
|
16
|
+
require 'app/helpers/simple_show/application_helper'
|
17
|
+
|
18
|
+
################################################################################
|
19
|
+
|
20
|
+
ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
|
21
|
+
ActiveRecord::Migration.verbose = false
|
22
|
+
|
23
|
+
ActiveRecord::Schema.define(:version => 1) do
|
24
|
+
create_table :golfers do |t|
|
25
|
+
t.column :name, :string
|
26
|
+
t.column :phone, :string
|
27
|
+
t.column :email, :string
|
28
|
+
t.column :born_on, :date
|
29
|
+
t.column :is_left_handed, :boolean
|
30
|
+
t.column :handicap, :decimal, :scale => 3, :precision => 1
|
31
|
+
t.timestamps
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
################################################################################
|
36
|
+
|
37
|
+
class Golfer < ActiveRecord::Base
|
38
|
+
end
|
39
|
+
|
40
|
+
################################################################################
|
41
|
+
|
42
|
+
class SimpleShowTestCase < ActiveSupport::TestCase
|
43
|
+
include SimpleShow::ApplicationHelper
|
44
|
+
include ActionController::RecordIdentifier
|
45
|
+
include ActionView::Helpers::CaptureHelper
|
46
|
+
include ActionView::Helpers::TagHelper
|
47
|
+
attr_accessor :output_buffer
|
48
|
+
|
49
|
+
def setup
|
50
|
+
@philip = Golfer.create!(
|
51
|
+
:name => 'Philip Hallstrom',
|
52
|
+
:phone => '3604801209',
|
53
|
+
:email => 'philip@pjkh.com',
|
54
|
+
:born_on => Date.civil(1974, 5, 24),
|
55
|
+
:is_left_handed => true,
|
56
|
+
:handicap => 6.5
|
57
|
+
)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class SimpleShowTest < SimpleShowTestCase
|
4
|
+
|
5
|
+
test 'setup block yields self' do
|
6
|
+
SimpleShow.setup do |config|
|
7
|
+
assert_equal SimpleShow, config
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
test 'default configuration' do
|
12
|
+
assert_equal :simple_show , SimpleShow.show_class
|
13
|
+
assert_equal :div , SimpleShow.wrapper_tag
|
14
|
+
assert_equal :show , SimpleShow.wrapper_class
|
15
|
+
assert_equal :label , SimpleShow.label_tag
|
16
|
+
assert_equal nil , SimpleShow.label_class
|
17
|
+
assert_equal nil , SimpleShow.label_prefix
|
18
|
+
assert_equal ':' , SimpleShow.label_suffix
|
19
|
+
assert_equal :span , SimpleShow.value_tag
|
20
|
+
assert_equal :value , SimpleShow.value_class
|
21
|
+
assert_equal nil , SimpleShow.value_prefix
|
22
|
+
assert_equal nil , SimpleShow.value_suffix
|
23
|
+
assert_equal true , SimpleShow.clear_on_close
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class SimpleShowForTest < SimpleShowTestCase
|
4
|
+
|
5
|
+
test 'simple_show_for raises error without a block' do
|
6
|
+
assert_raise ArgumentError do
|
7
|
+
simple_show_for
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
test 'html wrapper includes the correct id and class' do
|
12
|
+
doc = Nokogiri::HTML.fragment(simple_show_for @philip do |f|
|
13
|
+
''
|
14
|
+
end)
|
15
|
+
assert_equal %w[simple_show golfer], doc.at('div').attr('class').split(/\s+/)
|
16
|
+
assert_equal "golfer_#{@philip.id}", doc.at('div').attr('id')
|
17
|
+
end
|
18
|
+
|
19
|
+
test 'last tag is a BR that clears all when enabled' do
|
20
|
+
clear_on_close = SimpleShow::clear_on_close
|
21
|
+
SimpleShow::clear_on_close = true
|
22
|
+
doc = Nokogiri::HTML.fragment(simple_show_for @philip do |f|
|
23
|
+
''
|
24
|
+
end)
|
25
|
+
SimpleShow::clear_on_close = clear_on_close
|
26
|
+
assert_equal 'br', doc.at('div').elements.last.name
|
27
|
+
assert_equal 'all', doc.at('div').elements.last.attr('clear')
|
28
|
+
end
|
29
|
+
|
30
|
+
test 'last tag is not a BR when disabled' do
|
31
|
+
clear_on_close = SimpleShow::clear_on_close
|
32
|
+
SimpleShow::clear_on_close = false
|
33
|
+
doc = Nokogiri::HTML.fragment(simple_show_for @philip do |f|
|
34
|
+
''
|
35
|
+
end)
|
36
|
+
assert_not_equal 'br', doc.at('div').elements.last.try(:name)
|
37
|
+
SimpleShow::clear_on_close = clear_on_close
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class SimpleShowLabelTest < SimpleShowTestCase
|
4
|
+
|
5
|
+
test 'labels and label overrides' do
|
6
|
+
doc = Nokogiri::HTML.fragment(simple_show_for @philip do |f|
|
7
|
+
f.show :name
|
8
|
+
f.show :phone, :label => 'Cell Phone'
|
9
|
+
end)
|
10
|
+
assert_equal 'Name:', doc.css('label').first.text
|
11
|
+
assert_equal 'Cell Phone:', doc.css('label').last.text
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class SimpleShowValueTest < SimpleShowTestCase
|
4
|
+
|
5
|
+
test 'values and value overrides' do
|
6
|
+
doc = Nokogiri::HTML.fragment(simple_show_for @philip do |f|
|
7
|
+
f.show :name
|
8
|
+
f.show(:email) {|o| o.email.upcase }
|
9
|
+
f.show :phone, :value => '867-5309'
|
10
|
+
end)
|
11
|
+
assert_equal 'Philip Hallstrom', doc.css('span.value')[0].text
|
12
|
+
assert_equal 'PHILIP@PJKH.COM', doc.css('span.value')[1].text
|
13
|
+
assert_equal '867-5309', doc.css('span.value')[2].text
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
metadata
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: simple_show
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Philip Hallstrom
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-08-01 00:00:00 -07:00
|
19
|
+
default_executable:
|
20
|
+
dependencies: []
|
21
|
+
|
22
|
+
description: "SimpleShow is #new what SimpleForm is to #edit"
|
23
|
+
email:
|
24
|
+
- philip@pjkh.com
|
25
|
+
executables: []
|
26
|
+
|
27
|
+
extensions: []
|
28
|
+
|
29
|
+
extra_rdoc_files: []
|
30
|
+
|
31
|
+
files:
|
32
|
+
- .gitignore
|
33
|
+
- .rvmrc
|
34
|
+
- Gemfile
|
35
|
+
- README.rdoc
|
36
|
+
- Rakefile
|
37
|
+
- app/helpers/simple_show/application_helper.rb
|
38
|
+
- lib/generators/simple_show/USAGE
|
39
|
+
- lib/generators/simple_show/install_generator.rb
|
40
|
+
- lib/generators/simple_show/templates/config/initializers/simple_show.rb
|
41
|
+
- lib/simple_show.rb
|
42
|
+
- lib/simple_show/base.rb
|
43
|
+
- lib/simple_show/railtie.rb
|
44
|
+
- lib/simple_show/version.rb
|
45
|
+
- simple_show.gemspec
|
46
|
+
- test/test_helper.rb
|
47
|
+
- test/test_simple_show.rb
|
48
|
+
- test/test_simple_show_for.rb
|
49
|
+
- test/test_simple_show_label.rb
|
50
|
+
- test/test_simple_show_value.rb
|
51
|
+
has_rdoc: true
|
52
|
+
homepage: ""
|
53
|
+
licenses: []
|
54
|
+
|
55
|
+
post_install_message:
|
56
|
+
rdoc_options: []
|
57
|
+
|
58
|
+
require_paths:
|
59
|
+
- lib
|
60
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
hash: 3
|
66
|
+
segments:
|
67
|
+
- 0
|
68
|
+
version: "0"
|
69
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
|
+
none: false
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
hash: 3
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
version: "0"
|
78
|
+
requirements: []
|
79
|
+
|
80
|
+
rubyforge_project: simple_show
|
81
|
+
rubygems_version: 1.4.2
|
82
|
+
signing_key:
|
83
|
+
specification_version: 3
|
84
|
+
summary: "SimpleShow is #new what SimpleForm is to #edit"
|
85
|
+
test_files:
|
86
|
+
- test/test_helper.rb
|
87
|
+
- test/test_simple_show.rb
|
88
|
+
- test/test_simple_show_for.rb
|
89
|
+
- test/test_simple_show_label.rb
|
90
|
+
- test/test_simple_show_value.rb
|