active_list 7.3.0 → 8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 493c967944f09543ead6e2782c62bbf1379d7db9ce73aaf99a31a30ae7f7ef26
4
- data.tar.gz: 5b06ebaf0f046687c035febfd6399d86c700ab15540aa8629faf30793889dc29
3
+ metadata.gz: c66bafe99700808007531cb050516ebd74899f3bc6da116860100a065bc86db3
4
+ data.tar.gz: 76ac1ee41159a5946c0438eaef11501a1f74b97b43cd2bfcde7fa6fa818a7afb
5
5
  SHA512:
6
- metadata.gz: abac2cf9a73fbb3ebcc26466e481178f4fb3645b30dbfb00dd01a807e84f6132d59b0bb3d4cd016ad9998cbc0c709c75012132f69fd9b4c434f4cb13adb7da9e
7
- data.tar.gz: 8cf5cb483304b2da19a74b86ee1289a9d14612c640c6394f1bebed329498ddb4d2f7b9714d614db2df2813e45de7e5cebafd251cf38b988bcb0ff94ed709978f
6
+ metadata.gz: 8ac35c24fac904f07c4e9a6f407312516fb2b05faf36fb31cc0592c99b6008b226fe0361edc5b13be1630e83ac5fd4273f4121918b29342d9f894b51cc7ade0e
7
+ data.tar.gz: e6a686954279d6f4fd0b3780ede4e1b9d51a7601720c32dc26f7aa56be0fab31e97769c65b73cc0cd34bbf15ee0b40db227dcff9f26960a28b0124cb60eda286
@@ -22,11 +22,11 @@ module ActiveList
22
22
  currency = currency_for(record)
23
23
  datum = "(#{datum}.nil? ? '' : #{datum}.l(#{'currency: ' + currency.inspect if currency}))"
24
24
  elsif @name.to_s.match(/(^|\_)currency$/) && datatype == :string
25
- datum = "(Nomen::Currency[#{datum}] ? Nomen::Currency[#{datum}].human_name : '')"
25
+ datum = "(Onoma::Currency[#{datum}] ? Onoma::Currency[#{datum}].human_name : '')"
26
26
  elsif @name.to_s.match(/(^|\_)country$/) && datatype == :string
27
- datum = "(Nomen::Country[#{datum}] ? Nomen::Country[#{datum}].human_name : '')"
27
+ datum = "(Onoma::Country[#{datum}] ? Onoma::Country[#{datum}].human_name : '')"
28
28
  elsif @name.to_s.match(/(^|\_)language$/) && datatype == :string
29
- datum = "(Nomen::Language[#{datum}] ? Nomen::Language[#{datum}].human_name : '')"
29
+ datum = "(Onoma::Language[#{datum}] ? Onoma::Language[#{datum}].human_name : '')"
30
30
  elsif enumerize?
31
31
  datum = "(#{datum}.nil? ? '' : #{datum}.text)"
32
32
  end
@@ -12,39 +12,12 @@ module ActiveList
12
12
  'txt'
13
13
  end
14
14
 
15
- def file_name_code
16
- "file_name = #{table.model.name}.model_name.human\n".c
17
- end
18
-
19
15
  def mime_type
20
16
  Mime::TEXT
21
17
  end
22
18
 
23
- def generate_file_code(format)
24
- code = file_name_code
25
- if generator.export_class
26
- code << generator.exportable_query_code
27
- code << "#{generator.export_class}.perform_later(user: current_user,\n"
28
- code << " query: query,\n"
29
- code << " content: #{columns_to_hash},\n"
30
- code << " file_name: file_name,\n"
31
- code << " format: '#{format}',\n"
32
- code << " file_extension: '#{file_extension}')\n"
33
- code << "notify_success(:document_in_preparation)\n"
34
- code << "redirect_to(:back)\n"
35
- else
36
- code << generate_data_code
37
- code << send_data_code
38
- end
39
- code.c
40
- end
41
-
42
19
  def send_data_code
43
- raise NotImplementedError.new("#{self.class.name}#send_data_code must be implemented in sub-classes.")
44
- end
45
-
46
- def generate_data_code
47
- raise NotImplementedError.new("#{self.class.name}#generate_data_code must be implemented in sub-classes.")
20
+ raise NotImplementedError, "#{self.class.name}#format_data_code is not implemented."
48
21
  end
49
22
 
50
23
  def columns_headers(options = {})
@@ -73,12 +46,6 @@ module ActiveList
73
46
  end
74
47
  array
75
48
  end
76
-
77
- def columns_to_hash
78
- table.exportable_columns.map do |column|
79
- [column.header_code, column.exporting_datum_code('record').to_s]
80
- end.to_h
81
- end
82
49
  end
83
50
  end
84
51
  end
@@ -1,7 +1,6 @@
1
1
  module ActiveList
2
2
  module Exporters
3
3
  class CsvExporter < AbstractExporter
4
-
5
4
  def file_extension
6
5
  'csv'
7
6
  end
@@ -10,7 +9,7 @@ module ActiveList
10
9
  Mime[:csv]
11
10
  end
12
11
 
13
- def generate_data_code
12
+ def send_data_code
14
13
  record = 'r'
15
14
  code = generator.select_data_code(paginate: false)
16
15
  code << "data = ::CSV.generate do |csv|\n"
@@ -19,12 +18,9 @@ module ActiveList
19
18
  code << " csv << [#{columns_to_array(:body, record: record).join(', ')}]\n"
20
19
  code << " end\n"
21
20
  code << "end\n"
21
+ code << "send_data(data, type: #{mime_type.to_s.inspect}, disposition: 'inline', filename: #{table.model.name}.model_name.human.gsub(/[^a-z0-9]/i, '_') + '.#{file_extension}')\n"
22
22
  code.c
23
23
  end
24
-
25
- def send_data_code
26
- "send_data(data, type: #{mime_type.to_s.inspect}, disposition: 'inline', filename: file_name.parameterize + '.#{file_extension}')\n".c
27
- end
28
24
  end
29
25
  end
30
26
  end
@@ -4,7 +4,6 @@ Mime::Type.register('text/csv', :xcsv) unless defined? Mime::XCSV
4
4
  module ActiveList
5
5
  module Exporters
6
6
  class ExcelCsvExporter < CsvExporter
7
-
8
7
  def file_extension
9
8
  'csv'
10
9
  end
@@ -13,7 +12,7 @@ module ActiveList
13
12
  Mime[:xcsv]
14
13
  end
15
14
 
16
- def generate_data_code
15
+ def send_data_code
17
16
  record = 'r'
18
17
  code = generator.select_data_code(paginate: false)
19
18
  encoding = 'CP1252'
@@ -23,6 +22,7 @@ module ActiveList
23
22
  code << " csv << [#{columns_to_array(:body, record: record, encoding: encoding).join(', ')}]\n"
24
23
  code << " end\n"
25
24
  code << "end\n"
25
+ code << "send_data(data, type: #{mime_type.to_s.inspect}, disposition: 'inline', filename: #{table.model.name}.model_name.human.gsub(/[^a-z0-9]/i,'_')+'.#{file_extension}')\n"
26
26
  code.c
27
27
  end
28
28
  end
@@ -1,6 +1,6 @@
1
1
  # encoding: UTF-8
2
2
 
3
- require 'rodf'
3
+ require 'zip'
4
4
 
5
5
  # Register ODS format unless is already set
6
6
  Mime::Type.register('application/vnd.oasis.opendocument.spreadsheet', :ods) unless defined? Mime::ODS
@@ -8,6 +8,11 @@ Mime::Type.register('application/vnd.oasis.opendocument.spreadsheet', :ods) unle
8
8
  module ActiveList
9
9
  module Exporters
10
10
  class OpenDocumentSpreadsheetExporter < AbstractExporter
11
+ DATE_ELEMENTS = {
12
+ 'm' => '<number:month number:style="long"/>',
13
+ 'd' => '<number:day number:style="long"/>',
14
+ 'Y' => '<number:year/>'
15
+ }.freeze
11
16
 
12
17
  def file_extension
13
18
  'ods'
@@ -17,42 +22,55 @@ module ActiveList
17
22
  Mime[:ods]
18
23
  end
19
24
 
20
- def generate_data_code
25
+ def send_data_code
26
+ xml_escape = "to_s.gsub('&', '&amp;').gsub('\\'', '&apos;').gsub('<', '&lt;').gsub('>', '&gt;')"
27
+ xml_escape << ".force_encoding('US-ASCII')" if xml_escape.respond_to?(:force_encoding)
21
28
  record = 'r'
22
-
23
29
  code = generator.select_data_code(paginate: false)
24
- code << <<~RUBY
25
- records = #{generator.records_variable_name}
26
- data = RODF::Spreadsheet.new
27
-
28
- data.instance_eval do
29
- office_style :head, family: :cell do
30
- property :text, 'font-weight': :bold
31
- property :paragraph, 'text-align': :center
32
- end
33
-
34
- table #{table.model.name}.model_name.human do
35
- row do
36
- #{columns_to_array(:header)}.each do |header|
37
- cell header, style: :head
38
- end
39
- end
40
-
41
- for #{record} in records
42
- row do
43
- #{columns_to_array(:body, record: record)}.each do |value|
44
- cell value
45
- end
46
- end
47
- end
48
- end
49
- end
50
- RUBY
51
- code.c
52
- end
30
+ code << "name = #{table.model.name}.model_name.human.gsub(/[^a-z0-9]/i, '_')\n"
31
+ code << "file = ActiveList.temporary_directory.join(name + rand(999_999_999).to_s(36) + '.#{file_extension}')\n"
32
+ code << "FileUtils.mkdir_p(file.dirname)\n"
33
+ code << "Zip::OutputStream.open(file) do |zile|\n"
34
+ # MimeType in first place
35
+ code << " zile.put_next_entry('mimetype', nil, nil, Zip::Entry::STORED)\n"
36
+ code << " zile << '#{mime_type}'\n"
53
37
 
54
- def send_data_code
55
- "send_data(data.bytes, type: #{mime_type.to_s.inspect}, disposition: 'inline', filename: file_name.parameterize + '.#{file_extension}')\n".c
38
+ # Manifest
39
+ code << " zile.put_next_entry('META-INF/manifest.xml')\n"
40
+ 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"
41
+ code << " zile.put_next_entry('content.xml')\n"
42
+
43
+ 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"
44
+ # Styles
45
+ code << " zile << ('<office:automatic-styles>"\
46
+ '<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>'\
47
+ '<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>'\
48
+ '<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"/>'\
49
+ "</office:automatic-styles>')\n"
50
+
51
+ # Tables
52
+ code << " zile << ('<office:body><office:spreadsheet><table:table table:name=\"'+#{table.model.name}.model_name.human.#{xml_escape}+'\">')\n"
53
+ code << " zile << ('<table:table-column table:number-columns-repeated=\"#{table.exportable_columns.size}\"/>')\n"
54
+ 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"
55
+ code << " for #{record} in #{generator.records_variable_name}\n"
56
+ code << " zile << ('<table:table-row>" + table.exportable_columns.collect do |column|
57
+ '<table:table-cell' + (if column.numeric? || column.datatype == :decimal
58
+ " office:value-type=\"float\" office:value=\"'+(#{column.datum_code(record)}).#{xml_escape}+'\""
59
+ elsif column.datatype == :boolean
60
+ " office:value-type=\"boolean\" office:boolean-value=\"'+(#{column.datum_code(record)}).#{xml_escape}+'\""
61
+ elsif column.datatype == :date
62
+ " office:value-type=\"date\" table:style-name=\"ce1\" office:date-value=\"'+(#{column.datum_code(record)}).#{xml_escape}+'\""
63
+ else
64
+ ' office:value-type="string"'
65
+ end) + "><text:p>'+(" + column.exporting_datum_code(record, true) + ").#{xml_escape}+'</text:p></table:table-cell>"
66
+ end.join + "</table:table-row>')\n"
67
+ code << " end\n"
68
+ code << " zile << ('</table:table></office:spreadsheet></office:body></office:document-content>')\n"
69
+ code << "end\n"
70
+ code << "send_file(file, stream: false, type: #{mime_type.to_s.inspect}, disposition: 'inline', filename: name+'.#{file_extension}')\n"
71
+ # code << "File.delete(file)\n" # Removes tmp files before they explode the disk
72
+ # raise code
73
+ code
56
74
  end
57
75
  end
58
76
  end
@@ -1,6 +1,6 @@
1
1
  module ActiveList
2
2
  class Generator
3
- attr_accessor :table, :controller, :controller_method_name, :view_method_name, :records_variable_name, :export_class
3
+ attr_accessor :table, :controller, :controller_method_name, :view_method_name, :records_variable_name
4
4
 
5
5
  def initialize(*args, &_block)
6
6
  options = args.extract_options!
@@ -12,7 +12,6 @@ module ActiveList
12
12
  @view_method_name = "_#{@controller.controller_name}_list_#{name}_tag"
13
13
  @records_variable_name = "@#{name}"
14
14
  @table = ActiveList::Definition::Table.new(name, model, options)
15
- @export_class = options[:export_class]
16
15
  if block_given?
17
16
  yield @table
18
17
  else
@@ -48,7 +47,7 @@ module ActiveList
48
47
  code << " end\n"
49
48
  for format, exporter in ActiveList::Exporters.hash
50
49
  code << " format.#{format} do\n"
51
- code << exporter.new(self).generate_file_code(format).dig(3)
50
+ code << exporter.new(self).send_data_code.dig(3)
52
51
  code << " end\n"
53
52
  end
54
53
  code << " end\n"
@@ -64,64 +64,6 @@ module ActiveList
64
64
  code
65
65
  end
66
66
 
67
- def exportable_query_code(options = {})
68
- unless @table.options.keys.include?(:order)
69
- columns = @table.table_columns
70
- @table.options[:order] = (columns.any? ? columns.first.name.to_sym : { id: :desc })
71
- end
72
-
73
- class_name = "options[\"constant_name\"]&.constantize || #{@table.model.name}"
74
- class_name = "(controller_name != '#{class_name.tableize}' && !options[\"constant_name\"] ? controller_name.to_s.classify.constantize : #{class_name})" if collection?
75
-
76
- code = ''
77
-
78
- code << "query = #{class_name}.to_s\n"
79
- code << "query << #{scope_code.inspect}\n" if scope_code
80
-
81
- if select_code
82
- code << "select = #{select_code}\n"
83
- code << "query << \".select(\"\n"
84
- code << "query << select.inspect\n"
85
- code << "query << \")\"\n"
86
- end
87
-
88
- if from_code
89
- code << "from = #{from_code}\n"
90
- code << "query << \".from(\"\n"
91
- code << "query << from.inspect\n"
92
- code << "query << \")\"\n"
93
- end
94
-
95
- unless @table.options[:conditions].blank?
96
- code << "condition = #{conditions_code}\n"
97
- code << "query << \".where(\"\n"
98
- code << "query << condition.inspect\n"
99
- code << "query << \")\"\n"
100
- end
101
-
102
- code << "query << \".joins(#{@table.options[:joins].inspect})\"\n" unless @table.options[:joins].blank?
103
-
104
- unless includes_reflections.empty?
105
- expr = includes_reflections.inspect[1..-2]
106
- code << "query << \".includes(#{expr})\"\n"
107
- code << "query << \".references(#{expr})\"\n"
108
- end
109
-
110
- unless @table.options[:group].blank?
111
- code << "group = #{@table.options[:group].inspect}\n"
112
- code << "query << \".group(\"\n"
113
- code << "query << group.inspect\n"
114
- code << "query << \")\"\n"
115
- end
116
-
117
- code << "order = #{var_name(:order)}\n"
118
- code << "query << \".reorder(\"\n"
119
- code << "query << order.inspect\n"
120
- code << "query << \")\"\n"
121
-
122
- code.c
123
- end
124
-
125
67
  protected
126
68
 
127
69
  # Compute includes Hash
@@ -230,11 +230,11 @@ module ActiveList
230
230
  title_value_code = value_code
231
231
  value_code = "content_tag(:div, #{column.datum_code(record)}, style: 'background: #'+" + column.datum_code(record) + ')'
232
232
  elsif column.label_method.to_s.match(/(^|\_)currency$/) && column.datatype == :string
233
- value_code = "(Nomen::Currency[#{value_code}] ? Nomen::Currency[#{value_code}].human_name : #{value_code})"
233
+ value_code = "(Onoma::Currency[#{value_code}] ? Onoma::Currency[#{value_code}].human_name : #{value_code})"
234
234
  elsif column.label_method.to_s.match(/(^|\_)language$/) && column.datatype == :string
235
- value_code = "(Nomen::Language[#{value_code}] ? Nomen::Language[#{value_code}].human_name : #{value_code})"
235
+ value_code = "(Onoma::Language[#{value_code}] ? Onoma::Language[#{value_code}].human_name : #{value_code})"
236
236
  elsif column.label_method.to_s.match(/(^|\_)country$/) && column.datatype == :string
237
- value_code = "(Nomen::Country[#{value_code}] ? (image_tag('countries/' + #{value_code}.to_s + '.png') + ' ' + Nomen::Country[#{value_code}].human_name).html_safe : #{value_code})"
237
+ value_code = "(Onoma::Country[#{value_code}] ? (image_tag('countries/' + #{value_code}.to_s + '.png') + ' ' + Onoma::Country[#{value_code}].human_name).html_safe : #{value_code})"
238
238
  else # if column.datatype == :string
239
239
  value_code = "h(#{value_code}.to_s)"
240
240
  title_value_code = nil
@@ -350,8 +350,8 @@ module ActiveList
350
350
  unit = "''"
351
351
  precision = "''"
352
352
  if column.options[:currency]
353
- unit = "Nomen::Currency.find(#{column.currency_for(generator.records_variable_name + '.first').inspect} || 'EUR').symbol.to_s"
354
- precision = "Nomen::Currency.find(#{column.currency_for(generator.records_variable_name + '.first').inspect} || 'EUR').precision.to_s"
353
+ unit = "Onoma::Currency.find(#{column.currency_for(generator.records_variable_name + '.first').inspect} || 'EUR').symbol.to_s"
354
+ precision = "Onoma::Currency.find(#{column.currency_for(generator.records_variable_name + '.first').inspect} || 'EUR').precision.to_s"
355
355
  elsif column.computable?
356
356
  unit = "#{generator.records_variable_name}.first.#{column.value_method}.symbol"
357
357
  precision = "'2'"
@@ -1,3 +1,3 @@
1
1
  module ActiveList
2
- VERSION = '7.3.0'.freeze
2
+ VERSION = '8.0.0'.freeze
3
3
  end
data/test/dummy/Gemfile CHANGED
@@ -1,4 +1,5 @@
1
1
  source 'https://rubygems.org'
2
+ git_source(:gitlab) { |repo_name| "https://gitlab.com/#{repo_name}.git" }
2
3
 
3
4
  gem 'rails', '~> 5.0'
4
5
 
@@ -10,6 +11,8 @@ gem 'active_list', path: '../..'
10
11
 
11
12
  gem 'sprockets', '< 4'
12
13
 
14
+ gem 'onoma', gitlab: 'ekylibre/onoma'
15
+
13
16
  # Gems used only for assets and not required
14
17
  # in production environments by default.
15
18
  group :assets do
data/test/test_helper.rb CHANGED
@@ -41,7 +41,7 @@ end
41
41
 
42
42
  module ActionView
43
43
  class Base
44
- module Nomen
44
+ module Onoma
45
45
  class Currencies
46
46
  def self.[](_)
47
47
  klass = Struct.const_defined?(:Currency) ? Struct::Currency : Struct.new('Currency', :precision, :symbol)
metadata CHANGED
@@ -1,105 +1,105 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_list
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.3.0
4
+ version: 8.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brice Texier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-29 00:00:00.000000000 Z
11
+ date: 2020-09-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rails
14
+ name: arel
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3.2'
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '6'
19
+ version: 5.0.0
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - ">="
28
25
  - !ruby/object:Gem::Version
29
- version: '3.2'
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '6'
26
+ version: 5.0.0
33
27
  - !ruby/object:Gem::Dependency
34
- name: arel
28
+ name: code_string
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
31
  - - ">="
38
32
  - !ruby/object:Gem::Version
39
- version: 5.0.0
33
+ version: 0.0.1
40
34
  type: :runtime
41
35
  prerelease: false
42
36
  version_requirements: !ruby/object:Gem::Requirement
43
37
  requirements:
44
38
  - - ">="
45
39
  - !ruby/object:Gem::Version
46
- version: 5.0.0
40
+ version: 0.0.1
47
41
  - !ruby/object:Gem::Dependency
48
- name: code_string
42
+ name: i18n-complements
49
43
  requirement: !ruby/object:Gem::Requirement
50
44
  requirements:
51
45
  - - ">="
52
46
  - !ruby/object:Gem::Version
53
- version: 0.0.1
47
+ version: '0'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
51
  requirements:
58
52
  - - ">="
59
53
  - !ruby/object:Gem::Version
60
- version: 0.0.1
54
+ version: '0'
61
55
  - !ruby/object:Gem::Dependency
62
- name: rubyzip
56
+ name: onoma
63
57
  requirement: !ruby/object:Gem::Requirement
64
58
  requirements:
65
- - - ">="
59
+ - - "~>"
66
60
  - !ruby/object:Gem::Version
67
- version: '1.0'
61
+ version: '0.4'
68
62
  type: :runtime
69
63
  prerelease: false
70
64
  version_requirements: !ruby/object:Gem::Requirement
71
65
  requirements:
72
- - - ">="
66
+ - - "~>"
73
67
  - !ruby/object:Gem::Version
74
- version: '1.0'
68
+ version: '0.4'
75
69
  - !ruby/object:Gem::Dependency
76
- name: i18n-complements
70
+ name: rails
77
71
  requirement: !ruby/object:Gem::Requirement
78
72
  requirements:
79
73
  - - ">="
80
74
  - !ruby/object:Gem::Version
81
- version: '0'
75
+ version: '3.2'
76
+ - - "<"
77
+ - !ruby/object:Gem::Version
78
+ version: '6'
82
79
  type: :runtime
83
80
  prerelease: false
84
81
  version_requirements: !ruby/object:Gem::Requirement
85
82
  requirements:
86
83
  - - ">="
87
84
  - !ruby/object:Gem::Version
88
- version: '0'
85
+ version: '3.2'
86
+ - - "<"
87
+ - !ruby/object:Gem::Version
88
+ version: '6'
89
89
  - !ruby/object:Gem::Dependency
90
- name: rodf
90
+ name: rubyzip
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - ">="
94
94
  - !ruby/object:Gem::Version
95
- version: '0'
95
+ version: '1.0'
96
96
  type: :runtime
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - ">="
101
101
  - !ruby/object:Gem::Version
102
- version: '0'
102
+ version: '1.0'
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: sqlite3
105
105
  requirement: !ruby/object:Gem::Requirement