- Run against code base to make the most labor intensive work
- Totally redo navigation from scratch
- maybe add -xs stuff, like col-xs- or btn-xs, thats missing from BS4
Last active
April 16, 2021 09:01
-
-
Save zealot128/097af11140f396fd5dafc5fe3c7f24a9 to your computer and use it in GitHub Desktop.
Bootstrap 3 -> 4 simplistic migration script (Rails based paths and file types)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
RULES = { | |
'.panel-heading' => '.card-header', | |
'.panel.panel-default' => '.card', | |
'.panel-title' => '.card-title', | |
'.panel-body' => '.card-body', | |
'.panel-footer' => '.card-footer', | |
'.panel-primary' => '.card.bg-primary.text-white', | |
'.panel-success' => '.card.bg-success.text-white', | |
'.panel-info' => '.card.text-white.bg-info', | |
'.panel-warning' => '.card.bg-warning', | |
'.panel-danger' => '.card.bg-danger.text-white', | |
'.pull-right' => '.float-right', | |
'.pull-left' => '.float-left', | |
'.hidden-xs' => '.d-none', | |
'.hidden-sm' => '.d-sm-none', | |
'.hidden-md' => '.d-md-none', | |
'.hidden-lg' => '.d-lg-none', | |
'.visible-xs' => '.d-block.d-sm-none', | |
'.visible-sm' => '.d-none.d-sm-block.d-md-none', | |
'.visible-md' => '.d-none.d-md-block.d-lg-none', | |
'.visible-lg' => '.d-none.d-lg-block.d-xl-none', | |
'.badge' => '.badge.badge-pill', | |
'.label' => '.badge', | |
'.col-xs-' => 'col-', | |
'.table-condensed' => '.table-sm', | |
'.well' => '.card.card-body', | |
'.thumbnail' => '.card.card-body', | |
'.btn-default' => '.btn-secondary', | |
'.img-responsive' => '.img-fluid', | |
'.img-circle' => '.rounded-circle', | |
'.img-rounded' => '.rounded', | |
}.freeze | |
paths = [ | |
'app/views/**/*.slim', | |
'app/views/**/*.haml', | |
'app/views/**/*.erb', | |
'app/assets/**/*.scss', | |
'app/assets/**/*.js', | |
'app/assets/**/*.sass', | |
'app/assets/**/*.coffee', | |
] | |
uses_dot_syntax = /slim|haml|css|sass/ | |
Dir[*paths].each do |view_file| | |
input = File.read(view_file) | |
work = input.dup | |
RULES.each do |from, to| | |
if view_file[uses_dot_syntax] | |
unless view_file[to] | |
work.gsub!(from, to) | |
end | |
else | |
work.gsub!(from.sub('.', ''), to.gsub('.', ' ').strip) | |
end | |
end | |
if work != input | |
puts "migrated #{view_file}" | |
File.write(view_file, work) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment