supercharts-bullet_train 1.1.0 β†’ 1.2.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: 462dbf009157408f444bbc319c8ad464cc917c82fec33d68c9fc1f4b5b72e1bd
4
- data.tar.gz: 1d9372fbaf7adb909dcc43e571066e7216f5fb3c1b2931b6e301cadd3ee7f297
3
+ metadata.gz: 9f028c4e4c0144a3cc864dc7dfbfe3b04fe80462c1e602325e4520746a1c7e85
4
+ data.tar.gz: e1871658b39073aed06174cca8dc9528939b89a6cd6560259d9bfddd80f993d8
5
5
  SHA512:
6
- metadata.gz: 18197a1a01eeade3ff7c85b205030d2ebc7e65ce422995cd61c1b1d0c6cf2debe06239a065b4906b97adfe97d5bc22d9e2755ddaa27da1f55f6c6e27a616a3d8
7
- data.tar.gz: 06d0c93ac6e01850504f45049d03bafcd57e15bd54e425f9ff5ac8d34c648e2d62a0d51ef52d77c377ab5a86136c81b30a862624f933bc053327dcd54a8e3c19
6
+ metadata.gz: c4eaf6186a0186806bfaa6f616305bf00f8140a9543fb355237b2d37c0954abf4fc9a10ad6d1f9cb3175bbd4a532813afe3a784ff3625a03945d5d8c4104f707
7
+ data.tar.gz: 53d1ef43b3227b868443a9bb5c845d23caaa6432d0b955959f8fe44d9a6260a5eb8d265f69ac7b82d8ceeb12c6d60a87dde9d72cade2bb803062a2832ca051df
@@ -24,13 +24,7 @@
24
24
  <div class="relative">
25
25
  <div data-supercharts--describable-target="overallDescription">
26
26
  <h2 class="text-xs uppercase dark:text-white/50">
27
- <% if @timespan == "1w" %>
28
- Tangible Things last 7 days
29
- <% elsif @timespan == "1m" %>
30
- Tangible Things last month
31
- <% elsif @timespan == "ytd" %>
32
- Tangible Things since start of year
33
- <% end %>
27
+ <%= t(['tangible_things.chart.description', @timespan].join('.')) %>
34
28
  </h2>
35
29
  <p class="font-semibold dark:text-white mt-2" style="font-size: 1.8rem;">
36
30
  <%= @total %>
@@ -40,13 +34,7 @@
40
34
  <template data-supercharts--describable-target="contextualDescriptionTemplate">
41
35
  <p class="font-semibold dark:text-white mb-1" style="font-size: 1.6rem;">%value%</p>
42
36
  <p class="text-xs uppercase dark:text-white/50">
43
- <% if @period == :day %>
44
- Tangible Things on <span class="whitespace-nowrap">%label%</span>
45
- <% elsif @period == :week %>
46
- Tangible Things in <span class="whitespace-nowrap">%label%</span>
47
- <% elsif @period == :month %>
48
- Tangible Things in <span class="whitespace-nowrap">%label%</span>
49
- <% end %>
37
+ <%= t(['tangible_things.chart.contextual_description', @timespan].join('.')).html_safe %>
50
38
  </p>
51
39
  </template>
52
40
  </div>
@@ -56,9 +44,9 @@
56
44
  >
57
45
  <div class="flex items-center justify-center">
58
46
  <div class="inline-flex space-x-1" role="group">
59
- <%= render "shared/supercharts/filter_button", path: polymorphic_path([:account, @absolutely_abstract_creative_concept, :tangible_things, :chart], timespan: "1w"), label: "1w", first: true %>
60
- <%= render "shared/supercharts/filter_button", path: polymorphic_path([:account, @absolutely_abstract_creative_concept, :tangible_things, :chart], timespan: "1m"), label: "1m" %>
61
- <%= render "shared/supercharts/filter_button", path: polymorphic_path([:account, @absolutely_abstract_creative_concept, :tangible_things, :chart], timespan: "ytd"), label: "ytd", last: true %>
47
+ <%= render "shared/supercharts/filter_button", label: t("tangible_things.chart.filters.1w.abbr"), alt: t("tangible_things.chart.filters.1w.label"), path: polymorphic_path([:account, @absolutely_abstract_creative_concept, :tangible_things, :chart], timespan: "1w"), first: true %>
48
+ <%= render "shared/supercharts/filter_button", label: t("tangible_things.chart.filters.1m.abbr"), alt: t("tangible_things.chart.filters.1m.label"), path: polymorphic_path([:account, @absolutely_abstract_creative_concept, :tangible_things, :chart], timespan: "1m") %>
49
+ <%= render "shared/supercharts/filter_button", label: t("tangible_things.chart.filters.ytd.abbr"), alt: t("tangible_things.chart.filters.ytd.label"), path: polymorphic_path([:account, @absolutely_abstract_creative_concept, :tangible_things, :chart], timespan: "ytd"), last: true %>
62
50
  </div>
63
51
  </div>
64
52
  <template data-supercharts--filters-target="data">
@@ -77,13 +65,7 @@
77
65
  data-action="update-chart->superchart#updateChart"
78
66
  >
79
67
  <canvas data-superchart-target="chartjsCanvas" style="height: var(--chart-height)">
80
- <% if @timespan == "1w" %>
81
- Chart of Tangible Things last 7 days
82
- <% elsif @timespan == "1m" %>
83
- Chart of Tangible Things last month
84
- <% elsif @timespan == "ytd" %>
85
- Chart of Tangible Things since start of year
86
- <% end %>
68
+ <%= t(['tangible_things.chart.alt_description', @timespan].join('.')) %>
87
69
  </canvas>
88
70
  <template data-superchart-target="csvData" data-supercharts--filterable-target="chartSourceData"></template>
89
71
  <template data-superchart-target="chartjsOptions"></template>
@@ -2,8 +2,15 @@
2
2
  first ||= false
3
3
  last ||= false
4
4
  label ||= "link"
5
+ alt ||= nil
5
6
  path ||= ""
6
7
  button_classes = "px-5 py-1.5 dark:text-white font-small text-xs leading-tight uppercase hover:bg-blue-800/50 hover:text-white focus:bg-blue-700 focus:outline-none focus:ring-0 active:bg-blue-800 transition duration-150 ease-in-out rounded-lg"
8
+ options = {
9
+ class: [button_classes, "bg-gray-400 dark:bg-blue-800 text-white hover:bg-blue-400 dark:hover:bg-blue-800/100": current_page?(path)]
10
+ }
11
+ unless alt.nil?
12
+ options[:title] = alt.upcase_first
13
+ end
7
14
  %>
8
15
 
9
- <%= link_to label, path, class: [button_classes, "bg-gray-400 dark:bg-blue-800 text-white hover:bg-blue-400 dark:hover:bg-blue-800/100": current_page?(path)] %>
16
+ <%= link_to label, path, options %>
@@ -3,9 +3,9 @@ module BulletTrain
3
3
  class Engine < ::Rails::Engine
4
4
  initializer "bullet_train.super_scaffolding.templates.register_template_path" do |app|
5
5
  # Register the base path of this package with the Super Scaffolding engine.
6
- BulletTrain::SuperScaffolding.template_paths << File.expand_path('../../../..', __FILE__)
6
+ BulletTrain::SuperScaffolding.template_paths << File.expand_path("../../../..", __FILE__)
7
7
  BulletTrain::SuperScaffolding.scaffolders.merge!({
8
- "supercharts:chart" => "BulletTrain::Supercharts::Scaffolders::ChartScaffolder",
8
+ "supercharts:chart" => "BulletTrain::Supercharts::Scaffolders::ChartScaffolder"
9
9
  })
10
10
  end
11
11
  end
@@ -19,14 +19,14 @@ module BulletTrain
19
19
  puts ""
20
20
  exit
21
21
  end
22
-
22
+
23
23
  target_model, parent_models = argv
24
24
  parent_models = parent_models.split(",")
25
25
  parent_models += ["Team"]
26
26
  parent_models = parent_models.map(&:classify).uniq
27
27
 
28
28
  transformer = Scaffolding::SuperchartsChartTransformer.new(target_model, parent_models)
29
-
29
+
30
30
  transformer.scaffold_supercharts
31
31
  end
32
32
  end
@@ -1,5 +1,5 @@
1
1
  module BulletTrain
2
2
  module Supercharts
3
- VERSION = "1.1.0"
3
+ VERSION = "1.2.0"
4
4
  end
5
5
  end
@@ -1,4 +1,4 @@
1
- require 'csv'
1
+ require "csv"
2
2
 
3
3
  class Account::Scaffolding::CompletelyConcrete::TangibleThings::TangibleThingsChartController < Account::ApplicationController
4
4
  include ActionView::Helpers::NumberHelper
@@ -7,18 +7,18 @@ class Account::Scaffolding::CompletelyConcrete::TangibleThings::TangibleThingsCh
7
7
  # GET /account/scaffolding/absolutely_abstract/creative_concepts/:absolutely_abstract_creative_concept_id/completely_concrete/tangible_things/chart
8
8
  def show
9
9
  @tangible_things = @absolutely_abstract_creative_concept.completely_concrete_tangible_things
10
-
10
+
11
11
  @timespan = params[:timespan]
12
12
  case @timespan
13
13
  when "ytd"
14
14
  range = Time.now.beginning_of_year..Time.now
15
15
  range_days = (range.max - range.min).seconds.in_days
16
- if range_days > 4.months.in_days
17
- @period = :month
16
+ @period = if range_days > 4.months.in_days
17
+ :month
18
18
  elsif range_days > 1.month.in_days
19
- @period = :week
19
+ :week
20
20
  else
21
- @period = :day
21
+ :day
22
22
  end
23
23
  series = @tangible_things.group_by_period(@period, :created_at, range: range, expand_range: true)
24
24
  when "1w"
@@ -30,26 +30,13 @@ class Account::Scaffolding::CompletelyConcrete::TangibleThings::TangibleThingsCh
30
30
  @period = :day
31
31
  series = @tangible_things.group_by_period(@period, :created_at, range: range)
32
32
  end
33
-
33
+
34
34
  counts = series.count
35
35
  @total = counts.values.reduce(:+)
36
-
37
- date_format_abbr = if @period == :day
38
- "%e"
39
- elsif @period == :week
40
- "Week of %b %e"
41
- elsif @period == :month
42
- "%b"
43
- end
44
-
45
- date_format_full = if @period == :day
46
- "%B %e"
47
- elsif @period == :week
48
- "week of %B %e"
49
- elsif @period == :month
50
- "%B, %Y"
51
- end
52
-
36
+
37
+ date_format_abbr = t(["tangible_things.chart.date_abbr", @period].join("."))
38
+ date_format_full = t(["tangible_things.chart.date_full", @period].join("."))
39
+
53
40
  @csv = CSV.generate(" ", headers: %w[date_abbr date_full count count_formatted], write_headers: true, encoding: "UTF-8") do |csv|
54
41
  counts.each do |date, count|
55
42
  csv.add_row [date.strftime(date_format_abbr), date.strftime(date_format_full), count, number_with_delimiter(count)]
@@ -1,16 +1,18 @@
1
1
  require "scaffolding/supercharts_transformer"
2
2
 
3
3
  class Scaffolding::SuperchartsChartTransformer < Scaffolding::SuperchartsTransformer
4
+ RUBY_NEW_CHARTS_HOOK = "# πŸ“ˆ super scaffolding will insert new charts above this line."
5
+
4
6
  def scaffold_supercharts
5
7
  super
6
-
8
+
7
9
  # copy files over and do the appropriate string replace.
8
10
  files = [
9
11
  "./lib/scaffolding/app/controllers/account/scaffolding/completely_concrete/tangible_things/tangible_things_chart_controller.rb",
10
12
  "./app/views/account/scaffolding/completely_concrete/tangible_things/tangible_things_chart",
11
- "./app/views/shared/supercharts",
13
+ "./app/views/shared/supercharts"
12
14
  ].compact
13
-
15
+
14
16
  files.each do |name|
15
17
  if File.directory?(resolve_template_path(name))
16
18
  scaffold_directory(name)
@@ -18,14 +20,64 @@ class Scaffolding::SuperchartsChartTransformer < Scaffolding::SuperchartsTransfo
18
20
  scaffold_file(name)
19
21
  end
20
22
  end
21
-
23
+
24
+ # locale
25
+ locale_file = "./config/locales/en/scaffolding/completely_concrete/tangible_things.en.yml"
26
+
27
+ # add locale file if missing
28
+ unless File.file?(transform_string(locale_file))
29
+ scaffold_file(locale_file)
30
+ add_locale_helper_export_fix
31
+ end
32
+
33
+ # add locale strings for chart
34
+ scaffold_add_line_to_file(locale_file, RUBY_NEW_CHARTS_HOOK, " account:", prepend: true, increase_indent: true, exact_match: true)
35
+ # ensure the right indentation
36
+ scaffold_replace_line_in_file(locale_file, " #{RUBY_NEW_CHARTS_HOOK}", " #{RUBY_NEW_CHARTS_HOOK}")
37
+
38
+ locale_yaml = <<~YAML
39
+ chart:
40
+ filters:
41
+ 1w:
42
+ abbr: 1w
43
+ label: "last week"
44
+ 1m:
45
+ abbr: 1m
46
+ label: "last month"
47
+ ytd:
48
+ abbr: ytd
49
+ label: "year to date"
50
+ description:
51
+ 1w: Tangible Things last 7 days
52
+ 1m: Tangible Things last month
53
+ ytd: Tangible Things since start of year
54
+ contextual_description:
55
+ 1w: Tangible Things on <span class="whitespace-nowrap">%label%</span>
56
+ 1m: Tangible Things in <span class="whitespace-nowrap">%label%</span>
57
+ ytd: Tangible Things in <span class="whitespace-nowrap">%label%</span>
58
+ alt_description:
59
+ 1w: Chart of Tangible Things last 7 days
60
+ 1m: Chart of Tangible Things last month
61
+ ytd: Chart of Tangible Things since start of year
62
+ date_abbr:
63
+ day: "%e"
64
+ week: "Week of %b %e"
65
+ month: "%b"
66
+ date_full:
67
+ day: "%B %e"
68
+ week: "week of %B %e"
69
+ month: "%B, %Y"
70
+ YAML
71
+
72
+ scaffold_add_line_to_file("./config/locales/en/scaffolding/completely_concrete/tangible_things.en.yml", locale_yaml, RUBY_NEW_CHARTS_HOOK, prepend: true)
73
+
22
74
  # add children to the show page of their parent.
23
75
  unless cli_options["skip-parent"] || parent == "None"
24
76
  lines_to_add = <<~RUBY
25
77
  <div class="mt-4 [--chart-height:150px] md:[--chart-height:200px]">
26
78
  <%= turbo_frame_tag :charts_tangible_things, src: polymorphic_path([:account, @creative_concept, :tangible_things, :chart], timespan: "1m") do %>
27
79
  <%= render "shared/supercharts/chart_skeleton" do %>
28
- Tangible Things&hellip;
80
+ <%= t('tangible_things.label') %>&hellip;
29
81
  <% end %>
30
82
  <% end %>
31
83
  </div>
@@ -37,53 +89,53 @@ class Scaffolding::SuperchartsChartTransformer < Scaffolding::SuperchartsTransfo
37
89
  prepend: true
38
90
  )
39
91
  end
40
-
92
+
41
93
  # add user permissions.
42
94
  add_ability_line_to_roles_yml
43
-
95
+
44
96
  # apply routes.
45
97
  # TODO this is a hack and should be in its own RouteFileManipulator class
46
98
  lines = File.read("config/routes.rb").lines.map(&:chomp)
47
99
  account_namespace_found = false
48
-
100
+
49
101
  lines.each_with_index do |line, index|
50
102
  if line.match?("namespace :account do")
51
103
  account_namespace_found = true
52
104
  elsif account_namespace_found && line.match?(transform_string("resources :tangible_things"))
53
105
  chart_resource_lines = transform_string("collection do\nresource :chart, only: :show, module: :tangible_things, as: :tangible_things_chart, controller: :tangible_things_chart\nend")
54
- if line.match? /do$/
55
- lines[index] = "#{line}\n#{chart_resource_lines}\n"
106
+ lines[index] = if line.match?(/do$/)
107
+ "#{line}\n#{chart_resource_lines}\n"
56
108
  else
57
- lines[index] = "#{line} do\n#{chart_resource_lines}\nend"
109
+ "#{line} do\n#{chart_resource_lines}\nend"
58
110
  end
59
111
  end
60
112
  end
61
-
113
+
62
114
  File.write("config/routes.rb", lines.join("\n"))
63
-
115
+
64
116
  puts `standardrb --fix ./config/routes.rb`
65
-
117
+
66
118
  restart_server unless ENV["CI"].present?
67
119
  end
68
-
120
+
69
121
  def parent_show_file
70
122
  @target_show_file ||= "./app/views/account/scaffolding/absolutely_abstract/creative_concepts/show.html.erb"
71
123
  end
72
-
124
+
73
125
  def transform_string(string)
74
126
  [
75
127
  "Scaffolding::CompletelyConcrete::TangibleThings::TangibleThingsChart",
76
- "lib/scaffolding/app",
128
+ "lib/scaffolding/app"
77
129
  ].each do |needle|
78
130
  # TODO There might be more to do here?
79
131
  # What method is this calling?
80
132
  string = string.gsub(needle, encode_double_replacement_fix(replacement_for(needle)))
81
133
  end
82
-
134
+
83
135
  string = super(string)
84
136
  decode_double_replacement_fix(string)
85
137
  end
86
-
138
+
87
139
  def replacement_for(string)
88
140
  case string
89
141
  when "Scaffolding::CompletelyConcrete::TangibleThings::TangibleThingsChart"
@@ -94,4 +146,4 @@ class Scaffolding::SuperchartsChartTransformer < Scaffolding::SuperchartsTransfo
94
146
  "πŸ›‘"
95
147
  end
96
148
  end
97
- end
149
+ end
@@ -1,85 +1,83 @@
1
1
  class Scaffolding::SuperchartsRoutesFileManipulator < Scaffolding::RoutesFileManipulator
2
-
3
2
  def apply(base_namespaces, prepend_namespace_to_child: nil)
4
3
  child_namespaces, child_resource, parent_namespaces, parent_resource = divergent_parts
5
-
4
+
6
5
  within = find_or_create_namespaces(base_namespaces)
7
-
6
+
8
7
  # e.g. Project and Projects::Deliverable
9
8
  if parent_namespaces.empty? && child_namespaces.one? && parent_resource == child_namespaces.first
10
-
9
+
11
10
  # resources :projects do
12
11
  # scope module: 'projects' do
13
12
  # resources :deliverables, only: collection_actions
14
13
  # end
15
14
  # end
16
-
15
+
17
16
  parent_within = find_or_convert_resource_block(parent_resource, within: within)
18
-
17
+
19
18
  # add the new resource within that namespace.
20
19
  line = "scope module: '#{parent_resource}' do"
21
20
  # TODO you haven't tested this yet.
22
21
  unless (scope_within = find(/#{line}/, parent_within))
23
22
  scope_within = insert([line, "end"], parent_within)
24
23
  end
25
-
24
+
26
25
  find_or_create_resource([child_resource], options: "only: collection_actions", within: scope_within)
27
-
26
+
28
27
  # namespace :projects do
29
28
  # resources :deliverables, except: collection_actions
30
29
  # end
31
-
30
+
32
31
  # We want to see if there are any namespaces one level above the parent itself,
33
32
  # because namespaces with the same name as the resource can exist on the same level.
34
33
  parent_block_start = find_block_parent(parent_within)
35
34
  namespace_line_within = find_or_create_namespaces(child_namespaces, parent_block_start)
36
-
35
+
37
36
  if prepend_namespace_to_child.present?
38
37
  namespace_line_within = find_or_create_namespaces([prepend_namespace_to_child], namespace_line_within)
39
38
  end
40
-
39
+
41
40
  find_or_create_resource([child_resource], options: "except: collection_actions", within: namespace_line_within)
42
41
  unless find_namespaces(child_namespaces, within)[child_namespaces.last]
43
42
  raise "tried to insert `namespace :#{child_namespaces.last}` but it seems we failed"
44
43
  end
45
-
44
+
46
45
  # e.g. Projects::Deliverable and Objective Under It, Abstract::Concept and Concrete::Thing
47
46
  elsif parent_namespaces.any?
48
-
47
+
49
48
  # namespace :projects do
50
49
  # resources :deliverables
51
50
  # end
52
51
  top_parent_namespace = find_namespaces(parent_namespaces, within)[parent_namespaces.first]
53
-
52
+
54
53
  find_or_create_resource(child_namespaces + [child_resource], within: top_parent_namespace)
55
-
54
+
56
55
  # resources :projects_deliverables, path: 'projects/deliverables' do
57
56
  # resources :objectives
58
57
  # end
59
58
  block_parent_within = find_block_parent(top_parent_namespace)
60
59
  parent_namespaces_and_resource = (parent_namespaces + [parent_resource]).join("_")
61
60
  parent_within = find_or_create_resource_block([parent_namespaces_and_resource], options: "path: '#{parent_namespaces_and_resource.tr("_", "/")}'", within: block_parent_within)
62
-
61
+
63
62
  if prepend_namespace_to_child.present?
64
63
  parent_within = find_or_create_namespaces([prepend_namespace_to_child], parent_within)
65
64
  end
66
-
65
+
67
66
  find_or_create_resource(child_namespaces + [child_resource], within: parent_within)
68
67
  else
69
-
68
+
70
69
  begin
71
70
  within = find_or_convert_resource_block(parent_resource, within: within)
72
71
  rescue
73
72
  within = find_or_convert_resource_block(parent_resource, options: "except: collection_actions", within: within)
74
73
  end
75
-
74
+
76
75
  if prepend_namespace_to_child.present?
77
76
  within = find_or_create_namespaces([prepend_namespace_to_child], within)
78
77
  end
79
-
78
+
80
79
  find_or_create_resource(child_namespaces + [child_resource], options: define_concerns, within: within)
81
-
80
+
82
81
  end
83
82
  end
84
-
85
- end
83
+ end
@@ -2,18 +2,16 @@ class Scaffolding::SuperchartsTransformer < Scaffolding::Transformer
2
2
  def initialize(child, parents, cli_options = {})
3
3
  super(child, parents, cli_options)
4
4
  end
5
-
5
+
6
6
  def scaffold_supercharts
7
- begin
8
- # Update the routes to add the namespace and base resource
9
- routes_manipulator = Scaffolding::RoutesFileManipulator.new("config/routes.rb", transform_string("Scaffolding::CompletelyConcrete::TangibleThings"), transform_string("Scaffolding::AbsolutelyAbstract::CreativeConcept"))
10
- routes_manipulator.apply(["account"])
11
- Scaffolding::FileManipulator.write("config/routes.rb", routes_manipulator.lines)
12
- rescue BulletTrain::SuperScaffolding::CannotFindParentResourceException => exception
13
- # TODO It would be great if we could automatically generate whatever the structure of the route needs to be and
14
- # tell them where to try and inject it. Obviously we can't calculate the line number, otherwise the robots would
15
- # have already inserted the routes, but at least we can try to do some of the complicated work for them.
16
- add_additional_step :red, "We were not able to generate the routes for your Action Model automatically because: \"#{exception.message}\" You'll need to add them manually, which admittedly can be complicated. See https://blog.bullettrain.co/nested-namespaced-rails-routing-examples/ for guidance. πŸ™‡πŸ»β€β™‚οΈ"
17
- end
7
+ # Update the routes to add the namespace and base resource
8
+ routes_manipulator = Scaffolding::RoutesFileManipulator.new("config/routes.rb", transform_string("Scaffolding::CompletelyConcrete::TangibleThings"), transform_string("Scaffolding::AbsolutelyAbstract::CreativeConcept"))
9
+ routes_manipulator.apply(["account"])
10
+ Scaffolding::FileManipulator.write("config/routes.rb", routes_manipulator.lines)
11
+ rescue BulletTrain::SuperScaffolding::CannotFindParentResourceException => exception
12
+ # TODO It would be great if we could automatically generate whatever the structure of the route needs to be and
13
+ # tell them where to try and inject it. Obviously we can't calculate the line number, otherwise the robots would
14
+ # have already inserted the routes, but at least we can try to do some of the complicated work for them.
15
+ add_additional_step :red, "We were not able to generate the routes for your Action Model automatically because: \"#{exception.message}\" You'll need to add them manually, which admittedly can be complicated. See https://blog.bullettrain.co/nested-namespaced-rails-routing-examples/ for guidance. πŸ™‡πŸ»β€β™‚οΈ"
18
16
  end
19
- end
17
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: supercharts-bullet_train
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pascal LalibertΓ©
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-09 00:00:00.000000000 Z
11
+ date: 2023-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails