active_list 6.5.1 → 6.6.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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/lib/active_list.rb +11 -11
  3. data/lib/active_list/definition.rb +0 -2
  4. data/lib/active_list/definition/abstract_column.rb +4 -9
  5. data/lib/active_list/definition/action_column.rb +49 -57
  6. data/lib/active_list/definition/association_column.rb +26 -28
  7. data/lib/active_list/definition/attribute_column.rb +6 -11
  8. data/lib/active_list/definition/check_box_column.rb +0 -5
  9. data/lib/active_list/definition/data_column.rb +17 -24
  10. data/lib/active_list/definition/empty_column.rb +0 -4
  11. data/lib/active_list/definition/field_column.rb +0 -4
  12. data/lib/active_list/definition/status_column.rb +0 -4
  13. data/lib/active_list/definition/table.rb +31 -37
  14. data/lib/active_list/definition/text_field_column.rb +0 -4
  15. data/lib/active_list/exporters.rb +0 -4
  16. data/lib/active_list/exporters/abstract_exporter.rb +15 -19
  17. data/lib/active_list/exporters/csv_exporter.rb +5 -11
  18. data/lib/active_list/exporters/excel_csv_exporter.rb +7 -13
  19. data/lib/active_list/exporters/open_document_spreadsheet_exporter.rb +29 -35
  20. data/lib/active_list/generator.rb +27 -32
  21. data/lib/active_list/generator/finder.rb +35 -50
  22. data/lib/active_list/helpers.rb +6 -8
  23. data/lib/active_list/rails/engine.rb +3 -3
  24. data/lib/active_list/rails/integration.rb +2 -10
  25. data/lib/active_list/renderers.rb +0 -4
  26. data/lib/active_list/renderers/abstract_renderer.rb +2 -7
  27. data/lib/active_list/renderers/simple_renderer.rb +58 -71
  28. data/lib/active_list/version.rb +1 -3
  29. data/test/active_list_test.rb +4 -6
  30. data/test/code_generation_test.rb +0 -2
  31. data/test/dummy/Gemfile +1 -2
  32. data/test/dummy/app/controllers/contacts_controller.rb +10 -10
  33. data/test/dummy/app/controllers/people_controller.rb +10 -11
  34. data/test/dummy/config.ru +1 -1
  35. data/test/dummy/config/application.rb +2 -2
  36. data/test/dummy/config/boot.rb +1 -1
  37. data/test/dummy/config/environments/test.rb +6 -3
  38. data/test/dummy/config/initializers/session_store.rb +1 -1
  39. data/test/dummy/config/initializers/wrap_parameters.rb +1 -1
  40. data/test/dummy/db/seeds.rb +5 -5
  41. data/test/dummy/script/rails +2 -2
  42. data/test/people_controller_test.rb +11 -15
  43. data/test/table_test.rb +0 -1
  44. data/test/test_helper.rb +6 -7
  45. metadata +3 -4
@@ -2,22 +2,19 @@
2
2
  require 'zip'
3
3
 
4
4
  # Register ODS format unless is already set
5
- Mime::Type.register("application/vnd.oasis.opendocument.spreadsheet", :ods) unless defined? Mime::ODS
5
+ Mime::Type.register('application/vnd.oasis.opendocument.spreadsheet', :ods) unless defined? Mime::ODS
6
6
 
7
7
  module ActiveList
8
-
9
8
  module Exporters
10
-
11
9
  class OpenDocumentSpreadsheetExporter < AbstractExporter
12
-
13
10
  DATE_ELEMENTS = {
14
- "m" => "<number:month number:style=\"long\"/>",
15
- "d" => "<number:day number:style=\"long\"/>",
16
- "Y" => "<number:year/>"
11
+ 'm' => "<number:month number:style=\"long\"/>",
12
+ 'd' => "<number:day number:style=\"long\"/>",
13
+ 'Y' => '<number:year/>'
17
14
  }
18
15
 
19
16
  def file_extension
20
- "ods"
17
+ 'ods'
21
18
  end
22
19
 
23
20
  def mime_type
@@ -27,56 +24,53 @@ module ActiveList
27
24
  def send_data_code
28
25
  xml_escape = "to_s.gsub('&', '&amp;').gsub('\\'', '&apos;').gsub('<', '&lt;').gsub('>', '&gt;')"
29
26
  xml_escape << ".force_encoding('US-ASCII')" if xml_escape.respond_to?(:force_encoding)
30
- record = "r"
31
- code = generator.select_data_code(paginate: false)
27
+ record = 'r'
28
+ code = generator.select_data_code(paginate: false)
32
29
  code << "name = #{table.model.name}.model_name.human.gsub(/[^a-z0-9]/i, '_')\n"
33
- code << "file = ActiveList.temporary_directory.join(name + rand(999_999_999).to_s(36) + '.#{self.file_extension}')\n"
30
+ code << "file = ActiveList.temporary_directory.join(name + rand(999_999_999).to_s(36) + '.#{file_extension}')\n"
34
31
  code << "FileUtils.mkdir_p(file.dirname)\n"
35
32
  code << "Zip::OutputStream.open(file) do |zile|\n"
36
33
  # MimeType in first place
37
34
  code << " zile.put_next_entry('mimetype', nil, nil, Zip::Entry::STORED)\n"
38
- code << " zile << '#{self.mime_type}'\n"
35
+ code << " zile << '#{mime_type}'\n"
39
36
 
40
37
  # Manifest
41
38
  code << " zile.put_next_entry('META-INF/manifest.xml')\n"
42
- code << " zile << ('<?xml version=\"1.0\" encoding=\"UTF-8\"?><manifest:manifest xmlns:manifest=\"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0\"><manifest:file-entry manifest:media-type=\"#{self.mime_type}\" manifest:full-path=\"/\"/><manifest:file-entry manifest:media-type=\"text/xml\" manifest:full-path=\"content.xml\"/></manifest:manifest>')\n"
39
+ code << " zile << ('<?xml version=\"1.0\" encoding=\"UTF-8\"?><manifest:manifest xmlns:manifest=\"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0\"><manifest:file-entry manifest:media-type=\"#{mime_type}\" manifest:full-path=\"/\"/><manifest:file-entry manifest:media-type=\"text/xml\" manifest:full-path=\"content.xml\"/></manifest:manifest>')\n"
43
40
  code << " zile.put_next_entry('content.xml')\n"
44
41
 
45
42
  code << " zile << ('<?xml version=\"1.0\" encoding=\"UTF-8\"?><office:document-content xmlns:office=\"urn:oasis:names:tc:opendocument:xmlns:office:1.0\" xmlns:style=\"urn:oasis:names:tc:opendocument:xmlns:style:1.0\" xmlns:text=\"urn:oasis:names:tc:opendocument:xmlns:text:1.0\" xmlns:table=\"urn:oasis:names:tc:opendocument:xmlns:table:1.0\" xmlns:draw=\"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\" xmlns:fo=\"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:meta=\"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\" xmlns:number=\"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\" xmlns:presentation=\"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0\" xmlns:svg=\"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\" xmlns:chart=\"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\" xmlns:dr3d=\"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\" xmlns:math=\"http://www.w3.org/1998/Math/MathML\" xmlns:form=\"urn:oasis:names:tc:opendocument:xmlns:form:1.0\" xmlns:script=\"urn:oasis:names:tc:opendocument:xmlns:script:1.0\" xmlns:ooo=\"http://openoffice.org/2004/office\" xmlns:ooow=\"http://openoffice.org/2004/writer\" xmlns:oooc=\"http://openoffice.org/2004/calc\" xmlns:dom=\"http://www.w3.org/2001/xml-events\" xmlns:xforms=\"http://www.w3.org/2002/xforms\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:field=\"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:field:1.0\" office:version=\"1.1\"><office:scripts/>')\n"
46
43
  # Styles
47
- code << " zile << ('<office:automatic-styles>"+
48
- "<style:style style:name=\"co1\" style:family=\"table-column\"><style:table-column-properties fo:break-before=\"auto\" style:use-optimal-column-width=\"true\"/></style:style>"+
49
- "<style:style style:name=\"header\" style:family=\"table-cell\"><style:text-properties fo:font-weight=\"bold\" style:font-weight-asian=\"bold\" style:font-weight-complex=\"bold\"/></style:style>"+
50
- "<number:date-style style:name=\"K4D\" number:automatic-order=\"true\"><number:text>"+::I18n.translate("date.formats.default").gsub(/\%./){|x| "</number:text>"+DATE_ELEMENTS[x[1..1]]+"<number:text>"} +"</number:text></number:date-style><style:style style:name=\"ce1\" style:family=\"table-cell\" style:data-style-name=\"K4D\"/>"+
51
- "</office:automatic-styles>')\n"
44
+ code << " zile << ('<office:automatic-styles>"\
45
+ "<style:style style:name=\"co1\" style:family=\"table-column\"><style:table-column-properties fo:break-before=\"auto\" style:use-optimal-column-width=\"true\"/></style:style>"\
46
+ "<style:style style:name=\"header\" style:family=\"table-cell\"><style:text-properties fo:font-weight=\"bold\" style:font-weight-asian=\"bold\" style:font-weight-complex=\"bold\"/></style:style>"\
47
+ "<number:date-style style:name=\"K4D\" number:automatic-order=\"true\"><number:text>" + ::I18n.translate('date.formats.default').gsub(/\%./) { |x| '</number:text>' + DATE_ELEMENTS[x[1..1]] + '<number:text>' } + "</number:text></number:date-style><style:style style:name=\"ce1\" style:family=\"table-cell\" style:data-style-name=\"K4D\"/>"\
48
+ "</office:automatic-styles>')\n"
52
49
 
53
50
  # Tables
54
51
  code << " zile << ('<office:body><office:spreadsheet><table:table table:name=\"'+#{table.model.name}.model_name.human.#{xml_escape}+'\">')\n"
55
52
  code << " zile << ('<table:table-column table:number-columns-repeated=\"#{table.exportable_columns.size}\"/>')\n"
56
- code << " zile << ('<table:table-header-rows><table:table-row>"+columns_headers.collect{|h| "<table:table-cell table:style-name=\"header\" office:value-type=\"string\"><text:p>'+(#{h}).#{xml_escape}+'</text:p></table:table-cell>"}.join+"</table:table-row></table:table-header-rows>')\n"
53
+ code << " zile << ('<table:table-header-rows><table:table-row>" + columns_headers.collect { |h| "<table:table-cell table:style-name=\"header\" office:value-type=\"string\"><text:p>'+(#{h}).#{xml_escape}+'</text:p></table:table-cell>" }.join + "</table:table-row></table:table-header-rows>')\n"
57
54
  code << " for #{record} in #{generator.records_variable_name}\n"
58
- code << " zile << ('<table:table-row>"+table.exportable_columns.collect do |column|
59
- "<table:table-cell"+(if column.numeric? or column.datatype==:decimal
60
- " office:value-type=\"float\" office:value=\"'+(#{column.datum_code(record)}).#{xml_escape}+'\""
61
- elsif column.datatype==:boolean
62
- " office:value-type=\"boolean\" office:boolean-value=\"'+(#{column.datum_code(record)}).#{xml_escape}+'\""
63
- elsif column.datatype==:date
64
- " office:value-type=\"date\" table:style-name=\"ce1\" office:date-value=\"'+(#{column.datum_code(record)}).#{xml_escape}+'\""
65
- else
66
- " office:value-type=\"string\""
67
- end)+"><text:p>'+("+column.exporting_datum_code(record, true)+").#{xml_escape}+'</text:p></table:table-cell>"
68
- end.join+"</table:table-row>')\n"
55
+ code << " zile << ('<table:table-row>" + table.exportable_columns.collect do |column|
56
+ '<table:table-cell' + (if column.numeric? || column.datatype == :decimal
57
+ " office:value-type=\"float\" office:value=\"'+(#{column.datum_code(record)}).#{xml_escape}+'\""
58
+ elsif column.datatype == :boolean
59
+ " office:value-type=\"boolean\" office:boolean-value=\"'+(#{column.datum_code(record)}).#{xml_escape}+'\""
60
+ elsif column.datatype == :date
61
+ " office:value-type=\"date\" table:style-name=\"ce1\" office:date-value=\"'+(#{column.datum_code(record)}).#{xml_escape}+'\""
62
+ else
63
+ " office:value-type=\"string\""
64
+ end) + "><text:p>'+(" + column.exporting_datum_code(record, true) + ").#{xml_escape}+'</text:p></table:table-cell>"
65
+ end.join + "</table:table-row>')\n"
69
66
  code << " end\n"
70
67
  code << " zile << ('</table:table></office:spreadsheet></office:body></office:document-content>')\n"
71
68
  code << "end\n"
72
- code << "send_file(file, stream: false, type: #{self.mime_type.to_s.inspect}, disposition: 'inline', filename: name+'.#{self.file_extension}')\n"
69
+ code << "send_file(file, stream: false, type: #{mime_type.to_s.inspect}, disposition: 'inline', filename: name+'.#{file_extension}')\n"
73
70
  # code << "File.delete(file)\n" # Removes tmp files before they explode the disk
74
71
  # raise code
75
- return code
72
+ code
76
73
  end
77
-
78
74
  end
79
-
80
75
  end
81
-
82
76
  end
@@ -1,17 +1,14 @@
1
- # encoding: UTF-8
2
1
  module ActiveList
3
-
4
2
  class Generator
5
-
6
3
  attr_accessor :table, :controller, :controller_method_name, :view_method_name, :records_variable_name
7
4
 
8
- def initialize(*args, &block)
5
+ def initialize(*args, &_block)
9
6
  options = args.extract_options!
10
7
  @controller = options[:controller]
11
8
  name = args.shift || @controller.controller_name.to_sym
12
- model = (options[:model]||name).to_s.classify.constantize
9
+ model = (options[:model] || name).to_s.classify.constantize
13
10
  @collection = !!(model.name == @controller.controller_name.to_s.classify)
14
- @controller_method_name = "list#{'_'+name.to_s if name != @controller.controller_name.to_sym}"
11
+ @controller_method_name = "list#{'_' + name.to_s if name != @controller.controller_name.to_sym}"
15
12
  @view_method_name = "_#{@controller.controller_name}_list_#{name}_tag"
16
13
  @records_variable_name = "@#{name}"
17
14
  @table = ActiveList::Definition::Table.new(name, model, options)
@@ -20,7 +17,7 @@ module ActiveList
20
17
  else
21
18
  @table.load_default_columns
22
19
  end
23
- @parameters = {sort: :to_s, dir: :to_s}
20
+ @parameters = { sort: :to_s, dir: :to_s }
24
21
  @parameters.merge!(page: :to_i, per_page: :to_i) if @table.paginate?
25
22
  end
26
23
 
@@ -37,15 +34,15 @@ module ActiveList
37
34
  end
38
35
 
39
36
  def controller_method_code
40
- code = "# encoding: utf-8\n"
41
- code << "def #{self.controller_method_name}\n"
42
- code << self.session_initialization_code.dig
37
+ code = "# encoding: utf-8\n"
38
+ code << "def #{controller_method_name}\n"
39
+ code << session_initialization_code.dig
43
40
  code << " respond_to do |format|\n"
44
41
  code << " format.html do\n"
45
42
  code << " if request.xhr?\n"
46
- code << self.renderer.remote_update_code.dig(4)
43
+ code << renderer.remote_update_code.dig(4)
47
44
  code << " else\n"
48
- code << " render(inline: '<%=#{self.view_method_name}-%>')\n" # , layout: action_has_layout?
45
+ code << " render(inline: '<%=#{view_method_name}-%>')\n" # , layout: action_has_layout?
49
46
  code << " end\n"
50
47
  code << " end\n"
51
48
  for format, exporter in ActiveList::Exporters.hash
@@ -55,40 +52,40 @@ module ActiveList
55
52
  end
56
53
  code << " end\n"
57
54
  # Save preferences of user
58
- if defined? User and User.instance_methods.include? :pref
59
- code << " p = current_user.pref('list.#{self.view_method_name}', YAML::dump({}))\n"
55
+ if defined?(User) && User.instance_methods.include?(:preference)
56
+ code << " p = current_user.preference('list.#{view_method_name}', YAML::dump({}))\n"
60
57
  code << " p.set! YAML::dump(#{var_name(:params)}.stringify_keys)\n"
61
58
  end
62
59
  code << "end\n"
63
60
  # code.split("\n").each_with_index{|l, x| puts((x+1).to_s.rjust(4)+": "+l)}
64
61
  unless ::Rails.env.production?
65
- file = ::Rails.root.join("tmp", "code", "active_list", "controllers", self.controller.controller_path, self.controller_method_name + ".rb")
62
+ file = ::Rails.root.join('tmp', 'code', 'active_list', 'controllers', controller.controller_path, controller_method_name + '.rb')
66
63
  FileUtils.mkdir_p(file.dirname)
67
64
  File.write(file, code)
68
65
  end
69
- return code
66
+ code
70
67
  end
71
68
 
72
69
  def view_method_code
73
- code = "# encoding: utf-8\n"
74
- code << "def #{self.view_method_name}(options={}, &block)\n"
75
- code << self.session_initialization_code.dig
76
- code << self.renderer.build_table_code.dig
70
+ code = "# encoding: utf-8\n"
71
+ code << "def #{view_method_name}(options={}, &block)\n"
72
+ code << session_initialization_code.dig
73
+ code << renderer.build_table_code.dig
77
74
  code << "end\n"
78
75
  # code.split("\n").each_with_index{|l, x| puts((x+1).to_s.rjust(4)+": "+l)}
79
76
  unless ::Rails.env.production?
80
- file = ::Rails.root.join("tmp", "code", "active_list", "views", self.controller.controller_path, self.view_method_name + ".rb")
77
+ file = ::Rails.root.join('tmp', 'code', 'active_list', 'views', controller.controller_path, view_method_name + '.rb')
81
78
  FileUtils.mkdir_p(file.dirname)
82
79
  File.write(file, code)
83
80
  end
84
- return code
81
+ code
85
82
  end
86
83
 
87
84
  def session_initialization_code
88
- code = "options = {} unless options.is_a? Hash\n"
85
+ code = "options = {} unless options.is_a? Hash\n"
89
86
  code << "options.update(params)\n"
90
- if defined? User and User.instance_methods.include? :pref
91
- code << "#{var_name(:params)} = YAML::load(current_user.pref('list.#{self.view_method_name}', YAML::dump({})).value).symbolize_keys\n"
87
+ if defined?(User) && User.instance_methods.include?(:preference)
88
+ code << "#{var_name(:params)} = YAML::load(current_user.preference('list.#{view_method_name}', YAML::dump({})).value).symbolize_keys\n"
92
89
  code << "#{var_name(:params)} = {} unless #{var_name(:params)}.is_a?(Hash)\n"
93
90
  else
94
91
  code << "#{var_name(:params)} = {}\n"
@@ -97,11 +94,11 @@ module ActiveList
97
94
  code << "unless #{var_name(:params)}[:hidden_columns].is_a? Array\n"
98
95
  code << " #{var_name(:params)}[:hidden_columns] = #{@table.hidden_columns.map(&:name).map(&:to_sym).inspect}\n"
99
96
  code << "end\n"
100
- for parameter, convertor in @parameters.sort{|a,b| a[0].to_s <=> b[0].to_s}
97
+ for parameter, convertor in @parameters.sort { |a, b| a[0].to_s <=> b[0].to_s }
101
98
  # expr = "options.delete('#{@table.name}_#{parameter}') || options.delete('#{parameter}') || #{var_name(:params)}[:#{parameter}]"
102
99
  # expr += " || #{@table.options[parameter]}" unless @table.options[parameter].blank?
103
100
  # code << "#{var_name(:params)}[:#{parameter}] = (#{expr}).#{convertor}\n"
104
- expr = "#{var_name(:params)}[:#{parameter}]"
101
+ expr = "#{var_name(:params)}[:#{parameter}]"
105
102
  expr = "(#{expr} || #{@table.options[parameter]})" unless @table.options[parameter].blank?
106
103
  code << "#{var_name(:params)}[:#{parameter}] = #{expr}.#{convertor}\n"
107
104
  end
@@ -109,16 +106,14 @@ module ActiveList
109
106
 
110
107
  # Order
111
108
  code << "#{var_name(:order)} = #{@table.options[:order] ? @table.options[:order].inspect : 'nil'}\n"
112
- code << "if #{var_name(:col)} = {" + @table.sortable_columns.collect{|c| "'#{c.sort_id}' => '#{c.sort_expression}'"}.join(', ') + "}[#{var_name(:params)}[:sort]]\n"
109
+ code << "if #{var_name(:col)} = {" + @table.sortable_columns.collect { |c| "'#{c.sort_id}' => '#{c.sort_expression}'" }.join(', ') + "}[#{var_name(:params)}[:sort]]\n"
113
110
  code << " #{var_name(:params)}[:dir] = 'asc' unless #{var_name(:params)}[:dir] == 'asc' or #{var_name(:params)}[:dir] == 'desc'\n"
114
111
  code << " #{var_name(:order)} = #{var_name(:col)} + ' ' + #{var_name(:params)}[:dir]\n"
115
112
  code << "end\n"
116
113
 
117
- return code
114
+ code
118
115
  end
119
-
120
116
  end
121
-
122
117
  end
123
118
 
124
- require "active_list/generator/finder"
119
+ require 'active_list/generator/finder'
@@ -1,15 +1,13 @@
1
1
  module ActiveList
2
-
3
2
  # Manage data query
4
3
  class Generator
5
-
6
4
  # Generate select code for the table taking all parameters in account
7
5
  def select_data_code(options = {})
8
- paginate = (options.has_key?(:paginate) ? options[:paginate] : @table.paginate?)
6
+ paginate = (options.key?(:paginate) ? options[:paginate] : @table.paginate?)
9
7
  # Check order
10
8
  unless @table.options.keys.include?(:order)
11
9
  columns = @table.table_columns
12
- @table.options[:order] = (columns.any? ? columns.first.name.to_sym : {id: :desc})
10
+ @table.options[:order] = (columns.any? ? columns.first.name.to_sym : { id: :desc })
13
11
  end
14
12
 
15
13
  class_name = @table.model.name
@@ -17,17 +15,17 @@ module ActiveList
17
15
 
18
16
  # Find data
19
17
  query_code = "#{class_name}"
20
- query_code << self.scope_code if self.scope_code
21
- query_code << ".select(#{self.select_code})" if self.select_code
22
- query_code << ".where(#{self.conditions_code})" unless @table.options[:conditions].blank?
18
+ query_code << scope_code if scope_code
19
+ query_code << ".select(#{select_code})" if select_code
20
+ query_code << ".where(#{conditions_code})" unless @table.options[:conditions].blank?
23
21
  query_code << ".joins(#{@table.options[:joins].inspect})" unless @table.options[:joins].blank?
24
- unless self.includes_reflections.empty?
25
- expr = self.includes_reflections.inspect[1..-2]
22
+ unless includes_reflections.empty?
23
+ expr = includes_reflections.inspect[1..-2]
26
24
  query_code << ".includes(#{expr})"
27
25
  query_code << ".references(#{expr})"
28
26
  end
29
27
 
30
- code = ""
28
+ code = ''
31
29
  code << "#{var_name(:count)} = #{query_code}.count\n"
32
30
 
33
31
  query_code << ".reorder(#{var_name(:order)})"
@@ -48,16 +46,15 @@ module ActiveList
48
46
  code << "#{var_name(:offset)} = (#{var_name(:page)} - 1) * #{var_name(:limit)}\n"
49
47
  code << "#{var_name(:last)} = (#{var_name(:count)}.to_f / #{var_name(:limit)}).ceil.to_i\n"
50
48
  code << "#{var_name(:last)} = 1 if #{var_name(:last)} < 1\n"
51
-
52
49
 
53
- code << "return #{self.view_method_name}(options.merge(page: 1)) if 1 > #{var_name(:page)}\n"
54
- code << "return #{self.view_method_name}(options.merge(page: #{var_name(:last)})) if #{var_name(:page)} > #{var_name(:last)}\n"
50
+ code << "return #{view_method_name}(options.merge(page: 1)) if 1 > #{var_name(:page)}\n"
51
+ code << "return #{view_method_name}(options.merge(page: #{var_name(:last)})) if #{var_name(:page)} > #{var_name(:last)}\n"
55
52
  query_code << ".offset(#{var_name(:offset)})"
56
53
  query_code << ".limit(#{var_name(:limit)})"
57
54
  end
58
55
 
59
- code << "#{self.records_variable_name} = #{query_code} || {}\n"
60
- return code
56
+ code << "#{records_variable_name} = #{query_code} || {}\n"
57
+ code
61
58
  end
62
59
 
63
60
  protected
@@ -65,25 +62,21 @@ module ActiveList
65
62
  # Compute includes Hash
66
63
  def includes_reflections
67
64
  hash = []
68
- for column in @table.columns
69
- if column.respond_to?(:reflection)
70
- hash << column.reflection.name
71
- end
65
+ @table.columns.each do |column|
66
+ hash << column.reflection.name if column.respond_to?(:reflection)
72
67
  end
73
- return hash
68
+ hash
74
69
  end
75
70
 
76
-
77
71
  def scope_code
78
72
  return nil unless scopes = @table.options[:scope]
79
73
  scopes = [scopes].flatten
80
- code = ""
81
- for scope in scopes
74
+ code = ''
75
+ scopes.each do |scope|
82
76
  code << ".#{scope}"
83
77
  end
84
- return code
78
+ code
85
79
  end
86
-
87
80
 
88
81
  # Generate the code from a conditions option
89
82
  def conditions_code
@@ -92,44 +85,43 @@ module ActiveList
92
85
  case conditions
93
86
  when Array
94
87
  case conditions[0]
95
- when String # SQL
88
+ when String # SQL
96
89
  code << '[' + conditions.first.inspect
97
- code << conditions[1..-1].collect{|p| ", " + sanitize_condition(p)}.join if conditions.size > 1
90
+ code << conditions[1..-1].collect { |p| ', ' + sanitize_condition(p) }.join if conditions.size > 1
98
91
  code << ']'
99
92
  when Symbol # Method
100
- raise "What?"
101
- code << conditions.first.to_s + '('
102
- code << conditions[1..-1].collect{|p| sanitize_condition(p)}.join(', ') if conditions.size > 1
103
- code << ')'
93
+ fail 'What?'
94
+ # code << conditions.first.to_s + '('
95
+ # code << conditions[1..-1].collect { |p| sanitize_condition(p) }.join(', ') if conditions.size > 1
96
+ # code << ')'
104
97
  else
105
- raise ArgumentError.new("First element of an Array can only be String or Symbol.")
98
+ fail ArgumentError, 'First element of an Array can only be String or Symbol.'
106
99
  end
107
100
  when Hash # SQL
108
- code << '{' + conditions.collect{|key, value| key.to_s + ': ' + sanitize_condition(value)}.join(',') + '}'
101
+ code << '{' + conditions.collect { |key, value| key.to_s + ': ' + sanitize_condition(value) }.join(',') + '}'
109
102
  when Symbol # Method
110
- code << conditions.to_s + "(options)"
103
+ code << conditions.to_s + '(options)'
111
104
  when CodeString
112
- code << "(" + conditions.gsub(/\s*\n\s*/, ';') + ")"
105
+ code << '(' + conditions.gsub(/\s*\n\s*/, ';') + ')'
113
106
  when String
114
107
  code << conditions.inspect
115
108
  else
116
- raise ArgumentError.new("Unsupported type for conditions: #{conditions.inspect}")
109
+ fail ArgumentError, "Unsupported type for conditions: #{conditions.inspect}"
117
110
  end
118
- return code
111
+ code
119
112
  end
120
113
 
121
114
  def select_code
122
- return nil unless @table.options[:distinct] or @table.options[:select]
123
- code = ""
124
- code << "DISTINCT " if @table.options[:distinct]
115
+ return nil unless @table.options[:distinct] || @table.options[:select]
116
+ code = ''
117
+ code << 'DISTINCT ' if @table.options[:distinct]
125
118
  code << "#{@table.model.table_name}.*"
126
119
  if @table.options[:select]
127
- code << @table.options[:select].collect{|k, v| ", #{k[0].to_s+'.'+k[1].to_s} AS #{v}" }.join
120
+ code << @table.options[:select].collect { |k, v| ", #{k[0].to_s + '.' + k[1].to_s} AS #{v}" }.join
128
121
  end
129
- return ("'" + code + "'").c
122
+ ("'" + code + "'").c
130
123
  end
131
124
 
132
-
133
125
  def sanitize_condition(value)
134
126
  # if value.is_a? Array
135
127
  # # if value.size==1 and value[0].is_a? String
@@ -150,12 +142,5 @@ module ActiveList
150
142
  value.inspect
151
143
  end
152
144
  end
153
-
154
-
155
145
  end
156
-
157
-
158
146
  end
159
-
160
-
161
-
@@ -1,21 +1,20 @@
1
1
  module ActiveList
2
2
  module Helpers
3
-
4
3
  def recordify!(value, record_name)
5
4
  if value.is_a?(Symbol)
6
- return record_name + "." + value.to_s
5
+ return record_name + '.' + value.to_s
7
6
  elsif value.is_a?(CodeString)
8
- return "(" + value.gsub(/RECORD/, record_name) + ")"
7
+ return '(' + value.gsub(/RECORD/, record_name) + ')'
9
8
  else
10
- raise ArgumentError, "CodeString or Symbol must be given to be recordified)"
9
+ fail ArgumentError, 'CodeString or Symbol must be given to be recordified)'
11
10
  end
12
11
  end
13
12
 
14
13
  def recordify(value, record_name)
15
14
  if value.is_a?(Symbol)
16
- return record_name + "." + value.to_s
15
+ return record_name + '.' + value.to_s
17
16
  elsif value.is_a?(CodeString)
18
- return "(" + value.gsub(/RECORD/, record_name) + ")"
17
+ return '(' + value.gsub(/RECORD/, record_name) + ')'
19
18
  else
20
19
  return value.inspect
21
20
  end
@@ -23,11 +22,10 @@ module ActiveList
23
22
 
24
23
  def urlify(value, record_name)
25
24
  if value.is_a?(CodeString)
26
- return "(" + value.gsub(/RECORD/, record_name) + ")"
25
+ return '(' + value.gsub(/RECORD/, record_name) + ')'
27
26
  else
28
27
  return value.inspect
29
28
  end
30
29
  end
31
-
32
30
  end
33
31
  end