king_views 1.1.1 → 1.1.2

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 ADDED
@@ -0,0 +1,20 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+ ## Netbeans
16
+ nbproject/*
17
+
18
+ ## PROJECT::GENERAL
19
+ rdoc
20
+ pkg
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.1
1
+ 1.1.2
@@ -45,7 +45,7 @@ module KingFormat
45
45
  # 4. I18n actually resided in rails
46
46
  # Whatever you use be aware to always pass all formatting options since rails
47
47
  # merges unavailable keys with i18n defaults
48
- def strfval (object, fld, val=nil, opts={})
48
+ def strfval( object, fld, val=nil, opts={} )
49
49
  # If no value given, call fld on object to get the current value
50
50
  #return the content(a pointer) or an empty string OR nil of field is not available
51
51
  val ||= object.respond_to?(fld) ? ( object.send(fld) || '') : nil
@@ -54,7 +54,7 @@ module KingFormat
54
54
  nil
55
55
  elsif val.is_a?(Symbol) # enum value from acts_as_enum
56
56
  translated_enum_value(object, fld, val)
57
- elsif val.is_a?(DateTime) || val.is_a?(Time) #|| val.is_a?(Date)
57
+ elsif val.is_a?(DateTime) || val.is_a?(Time)
58
58
  I18n.localize(val)
59
59
  elsif val.is_a?(TrueClass) || val.is_a?(FalseClass)
60
60
  val ? t(:'sk.yes') : t(:'sk.no')
@@ -62,13 +62,13 @@ module KingFormat
62
62
  (val && !val.blank?) ? number_to_percentage_auto_precision(val) : ''
63
63
  elsif (object.class.is_money_field?(fld) rescue nil) || opts[:currency]
64
64
  # field is defined as money field OR currency options are passed in
65
- method_name = "#{fld}_format_opts".to_sym
65
+ format_method = "#{fld}_format_opts".to_sym
66
66
  # check if the object has a custom money format method => price_total_format_opts
67
- fopts = object.send(method_name) if object && object.respond_to?(method_name)
68
- strfmoney(val, fopts || opts[:currency])
67
+ fopts = object && object.respond_to?(format_method) ? object.send(format_method) : opts[:currency]
68
+ strfmoney(val, fopts)
69
69
  elsif ( val.is_a?(Date) || (object.class.is_date_field?(fld) rescue nil) || opts[:date] )
70
70
  # field is defined as date field OR date options are passed in
71
- return val if val.blank? # blank value can occur when a is_date_field is empty
71
+ return val if val.blank? # blank value can occur when a is_date_field is empty
72
72
  # get date from opts or default or fallback into i18n
73
73
  format = opts[:date] || default_date_format
74
74
  format.blank? ? ::I18n.localize(val) : val.strftime(format)
@@ -89,9 +89,10 @@ module KingFormat
89
89
  # from options hash or @default_currency_format or i18n as fallback
90
90
  # === Params
91
91
  # val<Number>:: the number to format
92
- # opts<Hash{Symbol=>String}>:: Rails compatible currency formatting options
93
- def strfmoney(val, opts={})
94
- settings = opts || default_currency_format
92
+ # opts<Hash{Symbol=>String}>:: Rails compatible currency formatting options,
93
+ # when nil searches default format, last exit is rails i18n
94
+ def strfmoney(val, opts=nil)
95
+ settings = opts || default_currency_format || {}
95
96
  number_to_currency(val, settings.merge({:locale => I18n.locale}))
96
97
  end
97
98
 
@@ -100,23 +101,60 @@ module KingFormat
100
101
  ::ActiveSupport::Deprecation.warn('"formatted_value" has been deprecated, use the "strfval" instead. Func will be removed within next releases', caller)
101
102
  strfval(object, fld, val, opts)
102
103
  end
104
+ # Formatting as Percentage, but use precision only if needed.
105
+ # Examples:
106
+ # number_to_percentage_auto_precision(19)
107
+ # => 19%
108
+ # number_to_percentage_auto_precision(7.5)
109
+ # => 7,5%
110
+ def number_to_percentage_auto_precision(number)
111
+ return nil unless number
112
+ # for now use seperator
113
+ pres = (number.to_i == number.to_f) ? 0 : 1
114
+ sep = I18n.t(:'number.format.precision.separator')
115
+ number_to_percentage(number,{:precision => pres, :separator=>sep } )
116
+ end
103
117
 
104
- # Returns the default date formatting.
118
+ # Translate the value of an enum field, as defined by act_as_enum
119
+ # Example:
120
+ # client.sending_method = :fax
121
+ # translated_enum_value(client, :sending_method)
122
+ # => "activerecord.attributes.client.enum.sending_method.fax"
123
+ def translated_enum_value(object_or_class, fieldname, value = nil)
124
+ if object_or_class.is_a?(Class)
125
+ klass = object_or_class
126
+ else
127
+ klass = object_or_class.class
128
+ # If no value given, get the current value
129
+ value ||= object_or_class.send(fieldname)
130
+ end
131
+ # Don't translate blank value
132
+ return nil if value.blank?
133
+ #return the translation
134
+ klass.human_attribute_name("enum.#{fieldname.to_s}.#{value.to_s}")
135
+ end
136
+
137
+ # Returns the default date formatting, as string '%d.%m.%Y'
105
138
  # The returned string is passed to strftime(format)
106
- # Override this function somehere in you controllers or set the instance var
139
+ # Override this function or set the thread var somehere in your including
140
+ # class
141
+ # => scope when used in view is ActionView::Base
107
142
  # === Returns
108
143
  # <String>:: strftime compatible string
109
144
  def default_date_format
110
- @default_date_format || {}
145
+ Thread.current[:default_date_format]
111
146
  end
112
147
 
113
- # Returns the default currency formatting
148
+ # Returns the default currency formatting, in I18n style
114
149
  # The returned hash is used in rails number_to_currency helper.
115
- # Override this function somehere in you controllers or set the instance var
150
+ # Override this function or set the thread var somehere in your including
151
+ # class
152
+ # => scope when used in view is ActionView::Base
153
+ #
116
154
  # === Returns
117
155
  # <Hash>:: number_to_currency compatible options hash
118
156
  def default_currency_format
119
- @default_currency_format || {}
157
+ Thread.current[:default_currency_format]
120
158
  end
121
159
 
122
160
  # Formats a number to the visible decimal places. If there are more decimal
@@ -146,6 +184,5 @@ module KingFormat
146
184
  "%01.#{precision}f" % rounded_number
147
185
  end
148
186
 
149
- end # FormattingHelper
150
-
187
+ end # FormattingHelper
151
188
  end # KingFormat
@@ -83,22 +83,22 @@ module KingList
83
83
  # Header linking for all, default
84
84
  # - table_for(@users) do |t, user|
85
85
  # - t.column :name # with sorting
86
- # - t.column :email # with sorting
86
+ # - t.column :email
87
87
  #
88
88
  # Header linking for all, but exclude individual columns from sorting:
89
89
  # - table_for(@users)do |t, user|
90
90
  # - t.column :name, :sorting => false # without sorting
91
- # - t.column :last_name # with sorting
91
+ # - t.column :last_name
92
92
  #
93
93
  # NO header linking for all columns:
94
94
  # - table_for(@users, :sorting => false) do |t, user|
95
- # - t.column :name # without sorting
96
- # - t.column :email # without sorting
95
+ # - t.column :name
96
+ # - t.column :email
97
97
  #
98
98
  # No header linking for all, but allow sorting for individual columns:
99
99
  # - table_for(@users, :sorting => false) do |t, user|
100
100
  # - t.column :name, :sorting => true # with sorting
101
- # - t.column :last_name # without sorting
101
+ # - t.column :last_name
102
102
  #
103
103
  def table_for(collection, options={}, html_options={}, &block)
104
104
  return if collection.nil? || collection.empty?
data/king_views.gemspec CHANGED
@@ -5,18 +5,19 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{king_views}
8
- s.version = "1.1.1"
8
+ s.version = "1.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Georg Leciejewski"]
12
- s.date = %q{2010-10-07}
12
+ s.date = %q{2010-11-01}
13
13
  s.description = %q{Clean up your Forms using king_form for dl or labeled forms. Use king_list for an easy markup of tables in your lists and dl-enabled listings in your detail views. }
14
14
  s.email = %q{gl@salesking.eu}
15
15
  s.extra_rdoc_files = [
16
16
  "README.rdoc"
17
17
  ]
18
18
  s.files = [
19
- "CHANGELOG.rdoc",
19
+ ".gitignore",
20
+ "CHANGELOG.rdoc",
20
21
  "MIT-LICENSE",
21
22
  "README.rdoc",
22
23
  "Rakefile",
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: king_views
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 1
9
- - 1
10
- version: 1.1.1
9
+ - 2
10
+ version: 1.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Georg Leciejewski
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-07 00:00:00 +02:00
18
+ date: 2010-11-01 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -28,6 +28,7 @@ extensions: []
28
28
  extra_rdoc_files:
29
29
  - README.rdoc
30
30
  files:
31
+ - .gitignore
31
32
  - CHANGELOG.rdoc
32
33
  - MIT-LICENSE
33
34
  - README.rdoc