active_list 7.3.0 → 8.0.0

Sign up to get free protection for your applications and to get access to all the features.
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