refinerycms-convertor 0.0.3 → 0.0.4
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.
- data/VERSION +1 -1
- data/lib/convertor-file.rb +23 -3
- data/lib/convertor-tags.rb +3 -3
- data/lib/refinerycms-convertor.rb +4 -0
- data/refinerycms-convertor.gemspec +1 -1
- data/spec/convertor-file_spec.rb +38 -1
- data/spec/fixtures/themes/theme/original/index.html +58 -6
- data/spec/refinerycms-convertor_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
data/lib/convertor-file.rb
CHANGED
@@ -2,13 +2,14 @@ require 'convertor-tags'
|
|
2
2
|
|
3
3
|
class ConvertorFile
|
4
4
|
|
5
|
-
attr_reader :original_dir, :original_file, :current_dir, :current_file
|
5
|
+
attr_reader :original_dir, :original_file, :current_dir, :current_file, :contents
|
6
6
|
|
7
7
|
def initialize(path)
|
8
|
-
@file = File.new(path)
|
9
|
-
|
10
8
|
@original_dir = @current_dir = File.dirname(path)
|
11
9
|
@original_file = @current_file = path
|
10
|
+
|
11
|
+
@contents = File.new(path).read
|
12
|
+
@convertor_tag = ConvertorTag.new(@contents)
|
12
13
|
end
|
13
14
|
|
14
15
|
def copy(path)
|
@@ -19,4 +20,23 @@ class ConvertorFile
|
|
19
20
|
@current_file = path
|
20
21
|
end
|
21
22
|
|
23
|
+
def extract_to_partials(destination)
|
24
|
+
FileUtils.mkdir_p(destination)
|
25
|
+
|
26
|
+
@convertor_tag.tags.each do |tag|
|
27
|
+
File.open(destination + "_#{tag}.html.erb", "w") do |f|
|
28
|
+
f.write @convertor_tag.text_inside_tag(tag)
|
29
|
+
find_and_replace(@convertor_tag.text_with_tag(tag), "<%= render :partial => 'shared/#{tag}' %>")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def find_and_replace(find, replace)
|
35
|
+
@contents.gsub!(find, replace)
|
36
|
+
|
37
|
+
File.open(@current_file, "w") do |f|
|
38
|
+
f.write @contents
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
22
42
|
end
|
data/lib/convertor-tags.rb
CHANGED
@@ -5,15 +5,15 @@ class ConvertorTag
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def tags
|
8
|
-
@text.scan(/{@\s*(.*)\s*@}.*{@ \/\1 @}/m).flatten
|
8
|
+
@text.scan(/{@\s*(.*)\s*@}.*{@ \/\1 @}/m).flatten
|
9
9
|
end
|
10
10
|
|
11
11
|
def text_inside_tag(tag)
|
12
|
-
@text.match(/{@\s*#{tag}\s*@}
|
12
|
+
@text.match(/{@\s*#{tag}\s*@}(.*){@ \/#{tag} @}/m)[1] rescue nil
|
13
13
|
end
|
14
14
|
|
15
15
|
def text_with_tag(tag)
|
16
|
-
@text.match(/{@\s*#{tag}\s*@}
|
16
|
+
@text.match(/{@\s*#{tag}\s*@}(.*){@ \/#{tag} @}/m)[0] rescue nil
|
17
17
|
end
|
18
18
|
|
19
19
|
end
|
@@ -19,6 +19,10 @@ class RefinerycmsConvertor
|
|
19
19
|
['images', 'javascripts', 'stylesheets', 'views/layouts', 'views/pages', 'views/shared'].each do |dir|
|
20
20
|
FileUtils.mkdir_p(@theme_dir + dir)
|
21
21
|
end
|
22
|
+
|
23
|
+
@layout = ConvertorLayout.new(@index_html)
|
24
|
+
|
25
|
+
@layout.extract_to_partials(@theme_dir + "views/shared")
|
22
26
|
end
|
23
27
|
|
24
28
|
end
|
data/spec/convertor-file_spec.rb
CHANGED
@@ -34,12 +34,49 @@ describe ConvertorFile do
|
|
34
34
|
|
35
35
|
context "#extract_to_partials" do
|
36
36
|
|
37
|
-
|
37
|
+
before(:all) do
|
38
|
+
@extractor_html = ConvertorFile.new(Rails.root.join('themes', 'theme', 'original', 'index.html'))
|
39
|
+
@extractor_html.copy(Rails.root.join('themes', 'theme', 'temp', 'extractor.html'))
|
38
40
|
|
41
|
+
@convertor_tag = ConvertorTag.new(@extractor_html.contents)
|
42
|
+
|
43
|
+
@extractor_html.extract_to_partials(Rails.root.join('themes', 'theme', 'views', 'extractor'))
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should copy all tags to respective shared files" do
|
47
|
+
@convertor_tag.tags.each do |tag|
|
48
|
+
partial = Rails.root.join('themes', 'theme', 'views', 'extractor', "_#{tag}.html.erb")
|
49
|
+
|
50
|
+
File.should be_exist(partial)
|
51
|
+
File.new(partial).read.should == @convertor_tag.text_inside_tag(tag)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should remove tags from original file" do
|
56
|
+
@convertor_tag.tags.each do |tag|
|
57
|
+
@extractor_html.contents.include?(@convertor_tag.text_with_tag(tag)).should be_false
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should add render partial lines" do
|
62
|
+
@convertor_tag.tags.each do |tag|
|
63
|
+
@extractor_html.contents.include?("<%= render :partial => '#{tag}' %>").should be_true
|
64
|
+
end
|
39
65
|
end
|
40
66
|
|
41
67
|
it "should take the <head> to shared/_head.html.erb" do
|
42
68
|
pending
|
69
|
+
end
|
70
|
+
|
71
|
+
after(:all) do
|
72
|
+
# Deletes the directories created, comment out if debugging
|
73
|
+
Dir.glob(Rails.root.join('themes', 'theme') + '**/**').reverse.each do |f|
|
74
|
+
begin
|
75
|
+
File.delete(f) unless f =~ /original/
|
76
|
+
rescue
|
77
|
+
Dir.delete(f)
|
78
|
+
end if f.include?(Rails.root.join('themes', 'theme').to_s)
|
79
|
+
end# if false
|
43
80
|
end
|
44
81
|
|
45
82
|
end
|
@@ -1,6 +1,58 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html>
|
3
|
-
<
|
4
|
-
<
|
5
|
-
|
6
|
-
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
3
|
+
<head>
|
4
|
+
<title>Site Title | Page Title</title>
|
5
|
+
<meta name="description" content="This is a description of the site. There are many things on it." />
|
6
|
+
<meta name="keywords" content="keyword, keyword, keyword, that's all you ever talk about" />
|
7
|
+
<meta name="robots" content="nofollow,index" />
|
8
|
+
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
10
|
+
<link href="homepage_stylesheet.css" rel="stylesheet" type="text/css" />
|
11
|
+
<script type="text/javascript" src="jquery-1.4.2.min.js" ></script>
|
12
|
+
</head>
|
13
|
+
<body>
|
14
|
+
|
15
|
+
<div class="header">
|
16
|
+
{@ header @}
|
17
|
+
<div class="inner">
|
18
|
+
<div class="left-header">
|
19
|
+
{@ menu @}
|
20
|
+
<div id="container">
|
21
|
+
<ul id="menu">
|
22
|
+
<li><a href="#">Menu #1</a></li>
|
23
|
+
<li><a href="#">Menu #2</a>
|
24
|
+
<div>
|
25
|
+
<ul>
|
26
|
+
<li><a href="#">Submenu #1</a></li>
|
27
|
+
<li><a href="#">Submenu #2</a></li>
|
28
|
+
<li><a href="#">Submenu #3</a></li>
|
29
|
+
</ul>
|
30
|
+
</div>
|
31
|
+
</li>
|
32
|
+
</ul>
|
33
|
+
<img src="logo.png" alt="home innovation" />
|
34
|
+
</div>
|
35
|
+
{@ /menu @}
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
{@ /header @}
|
39
|
+
<div class="main">
|
40
|
+
{@ content_page @}
|
41
|
+
<div class="left">
|
42
|
+
|
43
|
+
</div>
|
44
|
+
{@ /content_page @}
|
45
|
+
|
46
|
+
</div>
|
47
|
+
{@ footer @}
|
48
|
+
<div class="footer">
|
49
|
+
<div align="left">
|
50
|
+
<p align="center"><a href="#">Home</a> | <a href="#">About</a> | <a href="#">Contact</a></p>
|
51
|
+
<p align="center">© Copyright 2010 RefineryCMS Convertor</p>
|
52
|
+
</div>
|
53
|
+
</div>
|
54
|
+
{@ /footer @}
|
55
|
+
</div>
|
56
|
+
</div>
|
57
|
+
</body>
|
58
|
+
</html>
|
data/spec/spec_helper.rb
CHANGED