38 lines
1.1 KiB
Ruby
38 lines
1.1 KiB
Ruby
|
module Blueprint
|
||
|
class Namespace
|
||
|
|
||
|
# Read html to string, remove namespace if any,
|
||
|
# set the new namespace, and update the test file.
|
||
|
def initialize(path, namespace)
|
||
|
html = File.path_to_string(path)
|
||
|
remove_current_namespace(html)
|
||
|
add_namespace(html, namespace)
|
||
|
File.string_to_file(html, path)
|
||
|
end
|
||
|
|
||
|
# adds namespace to BP classes in a html file
|
||
|
def add_namespace(html, namespace)
|
||
|
html.gsub!(/(class=")([a-zA-Z0-9\-_ ]*)(")/) do |m|
|
||
|
classes = m.to_s.split('"')[1].split(' ')
|
||
|
classes.map! { |c| c = namespace + c }
|
||
|
'class="' + classes.join(' ') + '"'
|
||
|
end
|
||
|
html
|
||
|
end
|
||
|
|
||
|
# removes a namespace from a string of html
|
||
|
def remove_current_namespace(html)
|
||
|
current = current_namespace(html)
|
||
|
html.gsub!(current, '')
|
||
|
html
|
||
|
end
|
||
|
|
||
|
# returns current namespace in test files
|
||
|
# based on container class
|
||
|
def current_namespace(html)
|
||
|
html =~ /class="([\S]+)container/
|
||
|
current_namespace = $1 if $1
|
||
|
current_namespace || ''
|
||
|
end
|
||
|
end
|
||
|
end
|