hiro_format 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +59 -19
- data/lib/hiro_format/formatting.rb +37 -16
- data/lib/hiro_format/version.rb +1 -1
- data/sample_active_record.rb +56 -16
- data/sample_formatting.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4e37f34a492d81b11e2216f932308cff72e0000d
|
4
|
+
data.tar.gz: 5e69fb4900b13dad9a9f7283a1ce127f5e3f74f9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb0b687811881752479d2b3b70aaed7f1084a0b6ab761bd95dd9f3493fab473061f2b713f434b8bc7102f10fa1751450b5edc6b6d9ebcf95f8323a86ecedb407
|
7
|
+
data.tar.gz: 54744fe771614c99f3988ce0e82e88238b88eb806ce7cb2f435a0e89d3d6d11f4edf5ed14a6c78deb0b5b28ad9cc8573960fc7d4ce60adacc95509cfb9f8da7f
|
data/README.md
CHANGED
@@ -60,32 +60,72 @@ See formatting_sample.rb for more examples.
|
|
60
60
|
## Usage hint for Active Record / Sequel users
|
61
61
|
|
62
62
|
~~~ruby
|
63
|
-
#
|
64
|
-
require "
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
63
|
+
# For Gem users
|
64
|
+
require "hiro_format"
|
65
|
+
# For cloner
|
66
|
+
#require "./lib/hiro_format/formatting"
|
67
|
+
#require "./lib/hiro_format/coloring"
|
68
|
+
|
69
|
+
# Model class
|
70
|
+
class MyFriend # < Sequel::Model # < ActiveRecord::Base
|
71
|
+
RECORDS = [
|
72
|
+
{:id => 1, :name => "John", :bday => Date.parse('1989-01-02'), :assets => 1000000, :gender => 1},
|
73
|
+
{:id => 2, :name => "Kevin", :bday => Date.parse('1991-04-12'), :assets => -10000, :gender => 0},
|
74
|
+
{:id => 3, :name => "Wendy", :bday => Date.parse('1990-05-12'), :assets => 0, :gender => 2},
|
75
|
+
]
|
76
|
+
GENDERS = {
|
77
|
+
0 => 'Other',
|
78
|
+
1 => 'Male',
|
79
|
+
2 => 'Female',
|
80
|
+
}
|
81
|
+
FIELD_LIST = [
|
82
|
+
{:title => "ID", :key => :id, :callback => :edit_button},
|
83
|
+
{:title => "Name", :key => :name, :format => :none, :color => "blue_class"},
|
84
|
+
{:title => "Gender", :key => :gender, :lookup => GENDERS, },
|
85
|
+
{:title => "BirthDay", :key => :bday, :format => :obvious_date, },
|
86
|
+
{:title => "Assets", :key => :assets, :format => :euro, :pzm => ["green_class", "blue_class", "red_class"]},
|
87
|
+
]
|
88
|
+
attr_reader :data
|
89
|
+
def initialize(data)
|
90
|
+
@data = data
|
91
|
+
end
|
92
|
+
|
93
|
+
def edit_button
|
94
|
+
"<input type=\"button\" class=\"btn-sm\" value=\"Edit\" onClick=\"location.href='/controller/edit/#{@data[:id]}'\">"
|
95
|
+
end
|
96
|
+
|
97
|
+
def [](key)
|
98
|
+
@data[key]
|
99
|
+
end
|
100
|
+
|
101
|
+
def self.all
|
102
|
+
result = []
|
103
|
+
RECORDS.each do |record|
|
104
|
+
result << self.new(record)
|
105
|
+
end
|
106
|
+
result
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
# Controller
|
111
|
+
@records = MyFriend.all
|
112
|
+
@field_list = MyFriend::FIELD_LIST
|
113
|
+
|
114
|
+
# View can be independent from ModelClass
|
79
115
|
puts "<table>"
|
80
116
|
puts "<tr>"
|
81
|
-
|
117
|
+
@field_list.each do |field|
|
82
118
|
puts "<th>#{field[:title]}</th>"
|
83
119
|
end
|
84
120
|
puts "</tr>"
|
85
121
|
@records.each do |my_friend|
|
86
122
|
puts "<tr>"
|
87
|
-
|
88
|
-
if field[:
|
123
|
+
@field_list.each do |field|
|
124
|
+
if field[:callback]
|
125
|
+
puts "<td>" + my_friend.send(field[:callback]) + "</td>"
|
126
|
+
elsif field[:lookup]
|
127
|
+
puts "<td>" + field[:lookup][my_friend[field[:key]]] + "</td>"
|
128
|
+
elsif field[:pzm]
|
89
129
|
puts my_friend[field[:key]].formatting(field[:format]).pzm(field[:pzm]).to_td
|
90
130
|
else
|
91
131
|
puts my_friend[field[:key]].formatting(field[:format]).color(field[:color]).to_td
|
@@ -9,7 +9,18 @@
|
|
9
9
|
require 'date'
|
10
10
|
|
11
11
|
class Formatting
|
12
|
-
|
12
|
+
if RUBY_VERSION >= '2.4.0'
|
13
|
+
FORMATTER_LIST_SUB = {
|
14
|
+
:digit6 => {:format => "%06d", :applicable => [Integer, Float], :rest => "000000"},
|
15
|
+
:digit2 => {:format => "%02d", :applicable => [Integer, Float], :rest => "00"},
|
16
|
+
}.freeze
|
17
|
+
else
|
18
|
+
FORMATTER_LIST_SUB = {
|
19
|
+
:digit6 => {:format => "%06d", :applicable => [Fixnum, Integer, Float], :rest => "000000"},
|
20
|
+
:digit2 => {:format => "%02d", :applicable => [Fixnum, Integer, Float], :rest => "00"},
|
21
|
+
}.freeze
|
22
|
+
end
|
23
|
+
|
13
24
|
FORMATTER_LIST = {
|
14
25
|
:date => {:time_format => "%Y-%m-%d", :applicable => [Date, DateTime], :rest => "0000-00-00" },
|
15
26
|
:jp_date => {:time_format => "%Y-%m-%d", :applicable => [Date, DateTime], :rest => "0000-00-00" },
|
@@ -33,10 +44,6 @@ require 'date'
|
|
33
44
|
:euro_datetimesecond => {:time_format => "%d-%m-%Y %H:%M:%s", :applicable => [Date, DateTime, Time], :rest => "0000-00-00 00:00:00" },
|
34
45
|
:machine_datetime => {:time_format => "%Y%m%d%H%M", :applicable => [Date, DateTime], :rest => "000000000000" },
|
35
46
|
|
36
|
-
# Fixnum is deprecated in Ruby > 2.4.0 should be removed soon.
|
37
|
-
:digit6 => {:format => "%06d", :applicable => [Fixnum, Integer, Float], :rest => "000000"},
|
38
|
-
:digit2 => {:format => "%02d", :applicable => [Fixnum, Integer, Float], :rest => "00"},
|
39
|
-
|
40
47
|
:commify => {:function => "commify", :applicable => [Integer, Float, String, NilClass], :rest => ""},
|
41
48
|
:euro_commify => {:function => "euro_commify", :applicable => [Integer, Float, String, NilClass], :rest => ""},
|
42
49
|
:commify0 => {:function => "commify0", :applicable => [Integer, Float, String, NilClass], :rest => ""},
|
@@ -49,12 +56,21 @@ require 'date'
|
|
49
56
|
|
50
57
|
:hide => {:format => "", :applicable => [], :rest => ""},
|
51
58
|
}.freeze
|
59
|
+
YOUBI = %w[日 月 火 水 木 金 土]
|
60
|
+
|
61
|
+
# Not yet used
|
62
|
+
@@custom_formatter = {}
|
52
63
|
|
53
64
|
def initialize(data, formatting_option=nil)
|
54
65
|
@data = data
|
55
66
|
@formatting_option = formatting_option
|
56
67
|
end
|
57
68
|
|
69
|
+
def lookup(lookup_hash)
|
70
|
+
@lookup = lookup_hash
|
71
|
+
self
|
72
|
+
end
|
73
|
+
|
58
74
|
def color(color_scheme)
|
59
75
|
@color_scheme = color_scheme
|
60
76
|
self
|
@@ -77,17 +93,11 @@ require 'date'
|
|
77
93
|
self
|
78
94
|
end
|
79
95
|
|
80
|
-
def yesno
|
81
|
-
|
82
|
-
@color_scheme = yes
|
83
|
-
else
|
84
|
-
@color_scheme = no
|
85
|
-
end
|
86
|
-
self
|
96
|
+
def yesno(yes, no)
|
97
|
+
yesno?(data, yes, no)
|
87
98
|
end
|
88
99
|
|
89
|
-
|
90
|
-
def yesno(judge, yes, no)
|
100
|
+
def yesno?(judge, yes, no)
|
91
101
|
if judge
|
92
102
|
@color_scheme = yes
|
93
103
|
else
|
@@ -96,10 +106,17 @@ require 'date'
|
|
96
106
|
self
|
97
107
|
end
|
98
108
|
|
109
|
+
def get_recipe
|
110
|
+
FORMATTER_LIST[@formatting_option] || FORMATTER_LIST_SUB[@formatting_option]
|
111
|
+
#@@custom_formatter[@formatting_option] || FORMATTER_LIST[@formatting_option] || FORMATTER_LIST_SUB[@formatting_option]
|
112
|
+
end
|
113
|
+
|
99
114
|
def to_string
|
100
|
-
if @
|
115
|
+
if @lookup && (@lookup.is_a?(Hash) || @lookup.is_a?(Array))
|
116
|
+
result = @lookup[@data]
|
117
|
+
elsif @formatting_option.nil?
|
101
118
|
#result = @data.to_s
|
102
|
-
elsif recipe =
|
119
|
+
elsif recipe = get_recipe
|
103
120
|
# puts @data.class
|
104
121
|
if recipe[:applicable].include?(@data.class)
|
105
122
|
if recipe[:time_format]
|
@@ -217,6 +234,10 @@ require 'date'
|
|
217
234
|
"€" + Formatting.commify_value(data, '.', ',', 2)
|
218
235
|
end
|
219
236
|
|
237
|
+
# Not yet used
|
238
|
+
def self.add_custom_formatter(new_formatter)
|
239
|
+
@@custom_formatter << new_formatter
|
240
|
+
end
|
220
241
|
|
221
242
|
end
|
222
243
|
|
data/lib/hiro_format/version.rb
CHANGED
data/sample_active_record.rb
CHANGED
@@ -1,31 +1,71 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
#
|
3
|
-
#
|
3
|
+
# For Gem users
|
4
|
+
#require "hiro_format"
|
5
|
+
# For cloner
|
4
6
|
require "./lib/hiro_format/formatting"
|
5
7
|
require "./lib/hiro_format/coloring"
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
9
|
+
# Model class
|
10
|
+
class MyFriend # < Sequel::Model # < ActiveRecord::Base
|
11
|
+
RECORDS = [
|
12
|
+
{:id => 1, :name => "John", :bday => Date.parse('1989-01-02'), :assets => 1000000, :gender => 1},
|
13
|
+
{:id => 2, :name => "Kevin", :bday => Date.parse('1991-04-12'), :assets => -10000, :gender => 0},
|
14
|
+
{:id => 3, :name => "Wendy", :bday => Date.parse('1990-05-12'), :assets => 0, :gender => 2},
|
15
|
+
]
|
16
|
+
GENDERS = {
|
17
|
+
0 => 'Other',
|
18
|
+
1 => 'Male',
|
19
|
+
2 => 'Female',
|
20
|
+
}
|
21
|
+
FIELD_LIST = [
|
22
|
+
{:title => "ID", :key => :id, :callback => :edit_button},
|
23
|
+
{:title => "Name", :key => :name, :format => :none, :color => "blue_class"},
|
24
|
+
{:title => "Gender", :key => :gender, :lookup => GENDERS, },
|
25
|
+
{:title => "BirthDay", :key => :bday, :format => :obvious_date, },
|
26
|
+
{:title => "Assets", :key => :assets, :format => :euro, :pzm => ["green_class", "blue_class", "red_class"]},
|
27
|
+
]
|
28
|
+
attr_reader :data
|
29
|
+
def initialize(data)
|
30
|
+
@data = data
|
31
|
+
end
|
32
|
+
|
33
|
+
def edit_button
|
34
|
+
"<input type=\"button\" class=\"btn-sm\" value=\"Edit\" onClick=\"location.href='/controller/edit/#{@data[:id]}'\">"
|
35
|
+
end
|
36
|
+
|
37
|
+
def [](key)
|
38
|
+
@data[key]
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.all
|
42
|
+
result = []
|
43
|
+
RECORDS.each do |record|
|
44
|
+
result << self.new(record)
|
45
|
+
end
|
46
|
+
result
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# Controller
|
51
|
+
@records = MyFriend.all
|
52
|
+
@field_list = MyFriend::FIELD_LIST
|
53
|
+
|
54
|
+
# View can be independent from ModelClass
|
19
55
|
puts "<table>"
|
20
56
|
puts "<tr>"
|
21
|
-
|
57
|
+
@field_list.each do |field|
|
22
58
|
puts "<th>#{field[:title]}</th>"
|
23
59
|
end
|
24
60
|
puts "</tr>"
|
25
61
|
@records.each do |my_friend|
|
26
62
|
puts "<tr>"
|
27
|
-
|
28
|
-
if field[:
|
63
|
+
@field_list.each do |field|
|
64
|
+
if field[:callback]
|
65
|
+
puts "<td>" + my_friend.send(field[:callback]) + "</td>"
|
66
|
+
elsif field[:lookup]
|
67
|
+
puts my_friend[field[:key]].formatting.lookup(field[:lookup]).to_td
|
68
|
+
elsif field[:pzm]
|
29
69
|
puts my_friend[field[:key]].formatting(field[:format]).pzm(field[:pzm]).to_td
|
30
70
|
else
|
31
71
|
puts my_friend[field[:key]].formatting(field[:format]).color(field[:color]).to_td
|
data/sample_formatting.rb
CHANGED
@@ -41,7 +41,7 @@ puts Date.today.formatting(:machine_date).color(:cyan_bold).to_s
|
|
41
41
|
puts "#pzm (Plus, Zero, Minus) can show in different color depending on the value passed."
|
42
42
|
[-1, 0, 1].each do |n|
|
43
43
|
print "#{n.class}: "
|
44
|
-
puts n.formatting(:digit6).pzm(:reverse, :red_marker, :magenta_marker).to_s
|
44
|
+
puts n.formatting(:digit6).pzm([:reverse, :red_marker, :magenta_marker]).to_s
|
45
45
|
end
|
46
46
|
puts "Formatting helper for HTML, you set your color in CSS (Cyan Marker)".color(:cyan_marker).to_s
|
47
47
|
puts Formatting.new(Date.today, :us_date).color("magenta").to_span # <span class="magenta">12-24-2017</span>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hiro_format
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hiro Utsumi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|