cm_tag 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +4 -0
- data/Gemfile.lock +14 -0
- data/Rakefile +9 -0
- data/cm_tag.gemspec +24 -0
- data/lib/cm_tag.rb +19 -0
- data/lib/cm_tag/campaign_process.rb +50 -0
- data/lib/cm_tag/campaign_tag.rb +107 -0
- data/lib/cm_tag/process.rb +100 -0
- data/lib/cm_tag/version.rb +3 -0
- data/lib/helpers/data_helper.rb +170 -0
- data/regular_expressions +72 -0
- data/sample.html +8 -0
- data/test/fixtures/description.html +20 -0
- data/test/fixtures/href.html +20 -0
- data/test/fixtures/html_template.html +51 -0
- data/test/fixtures/html_with_tag.html +18 -0
- data/test/fixtures/image.html +20 -0
- data/test/fixtures/real_html.html +18 -0
- data/test/fixtures/replaced_html_template.html +51 -0
- data/test/fixtures/sample1.html +35 -0
- data/test/fixtures/title.html +20 -0
- data/test/test_html_replace.rb +75 -0
- data/test/test_tag.rb +128 -0
- metadata +78 -0
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
data/Rakefile
ADDED
data/cm_tag.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "cm_tag/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "cm_tag"
|
7
|
+
s.version = CampaignMonitor::VERSION
|
8
|
+
s.authors = ["Pragash"]
|
9
|
+
s.email = ["pragashonlink@gmail.com"]
|
10
|
+
s.homepage = "http://pragashblog.blogspot.com"
|
11
|
+
s.summary = %q{Campaign monitor tags in rails}
|
12
|
+
s.description = %q{This gem can be used to implement campaign monitor tags in a rails application}
|
13
|
+
|
14
|
+
s.rubyforge_project = "campaign_monitor"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
# specify any dependencies here; for example:
|
22
|
+
# s.add_development_dependency "rspec"
|
23
|
+
# s.add_runtime_dependency "rest-client"
|
24
|
+
end
|
data/lib/cm_tag.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require "cm_tag/version"
|
2
|
+
require "cm_tag/campaign_tag"
|
3
|
+
require "cm_tag/campaign_process"
|
4
|
+
|
5
|
+
module CMTag
|
6
|
+
class << self
|
7
|
+
def find_tags(html)
|
8
|
+
cp = ProcessTag::CampaignProcess.new
|
9
|
+
cp.process(html)
|
10
|
+
|
11
|
+
return cp.get_tags
|
12
|
+
end
|
13
|
+
|
14
|
+
def update_tags(html, params = {}, replace_tags = false)
|
15
|
+
cp = ProcessTag::CampaignProcess.new
|
16
|
+
cp.update_tags(html, params, replace_tags)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'cm_tag/process.rb'
|
2
|
+
|
3
|
+
module ProcessTag
|
4
|
+
|
5
|
+
class CampaignProcess
|
6
|
+
include Process
|
7
|
+
|
8
|
+
def process(html)
|
9
|
+
raise ArgumentError, "Argument [html] cannot be empty" if html.rstrip == ""
|
10
|
+
|
11
|
+
self.find_all(html)
|
12
|
+
end
|
13
|
+
|
14
|
+
def update_tags(html, params = {}, replace_tags = false)
|
15
|
+
raise ArgumentError, "Argument [params] cannot be empty" unless params.length > 0
|
16
|
+
raise ArgumentError, "Argument [html] cannot be empty" if html.rstrip == ""
|
17
|
+
|
18
|
+
#load the html tags
|
19
|
+
self.find_all(html)
|
20
|
+
|
21
|
+
html = self.update_campaign_tags(html, params, (@description_tags.nil? && []) || @description_tags)
|
22
|
+
html = self.update_campaign_tags(html, params, (@title_tags.nil? && []) || @title_tags)
|
23
|
+
html = self.update_campaign_tags(html, params, (@imgsrc_tags.nil? && []) || @imgsrc_tags)
|
24
|
+
html = self.update_campaign_tags(html, params, (@linkhref_tags.nil? && []) || @linkhref_tags)
|
25
|
+
|
26
|
+
puts "replace tags #{replace_tags}"
|
27
|
+
|
28
|
+
if replace_tags
|
29
|
+
html = self.transform_campaign_to_html_tags(html, params, (@description_tags.nil? && []) || @description_tags)
|
30
|
+
html = self.transform_campaign_to_html_tags(html, params, (@title_tags.nil? && []) || @title_tags)
|
31
|
+
html = self.transform_campaign_to_html_tags(html, params, (@imgsrc_tags.nil? && []) || @imgsrc_tags)
|
32
|
+
html = self.transform_campaign_to_html_tags(html, params, (@linkhref_tags.nil? && []) || @linkhref_tags)
|
33
|
+
end
|
34
|
+
|
35
|
+
html
|
36
|
+
end
|
37
|
+
|
38
|
+
def get_tags
|
39
|
+
tags = {}
|
40
|
+
tags[:description] = (@description_tags.nil? && []) || @description_tags
|
41
|
+
tags[:title] = (@title_tags.nil? && []) || @title_tags
|
42
|
+
tags[:image] = (@imgsrc_tags.nil? && []) || @imgsrc_tags
|
43
|
+
tags[:href] = (@linkhref_tags.nil? && []) || @linkhref_tags
|
44
|
+
|
45
|
+
tags
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
module ProcessTag
|
2
|
+
|
3
|
+
class CampaignTag
|
4
|
+
attr_accessor :id, :type, :label, :value, :arr_html
|
5
|
+
|
6
|
+
def regex_for_current_data
|
7
|
+
values = get_values
|
8
|
+
|
9
|
+
tag = "<%"
|
10
|
+
tag << type
|
11
|
+
tag << "(.*?)"
|
12
|
+
tag << "name"
|
13
|
+
tag << "(.*?)"
|
14
|
+
tag << "="
|
15
|
+
tag << "(.*?)"
|
16
|
+
tag << "['\"\]"
|
17
|
+
tag << values[0]
|
18
|
+
tag << "['\"\]"
|
19
|
+
tag << "(.*?)"
|
20
|
+
tag << "value"
|
21
|
+
tag << "(.*?)"
|
22
|
+
tag << "="
|
23
|
+
tag << "(.*?)"
|
24
|
+
tag << "%>"
|
25
|
+
|
26
|
+
regex = Regexp.new(tag)
|
27
|
+
|
28
|
+
regex
|
29
|
+
end
|
30
|
+
|
31
|
+
def regex_to_replace_campaign_tags(value)
|
32
|
+
values = get_values
|
33
|
+
|
34
|
+
tag = "<%"
|
35
|
+
tag << "(.*?)"
|
36
|
+
tag << type
|
37
|
+
tag << "(.*?)"
|
38
|
+
tag << "name"
|
39
|
+
tag << "(.*?)"
|
40
|
+
tag << "="
|
41
|
+
tag << "(.*?)"
|
42
|
+
tag << values[0]
|
43
|
+
tag << "(.*?)"
|
44
|
+
tag << "value"
|
45
|
+
tag << "(.*?)"
|
46
|
+
tag << "="
|
47
|
+
tag << "(.*?)"
|
48
|
+
tag << "['\"\]"
|
49
|
+
tag << value
|
50
|
+
tag << "['\"\]"
|
51
|
+
tag << "(.*?)"
|
52
|
+
tag << "%>"
|
53
|
+
|
54
|
+
regex = Regexp.new(tag)
|
55
|
+
|
56
|
+
regex
|
57
|
+
end
|
58
|
+
|
59
|
+
def generate_html_content(value)
|
60
|
+
replace_value = ""
|
61
|
+
html_tag = ""
|
62
|
+
|
63
|
+
case type
|
64
|
+
when "description"
|
65
|
+
html_tag = "p"
|
66
|
+
when "title"
|
67
|
+
html_tag = "span"
|
68
|
+
end
|
69
|
+
|
70
|
+
case html_tag
|
71
|
+
when "p", "span"
|
72
|
+
replace_value = "<#{html_tag}>#{value}</#{html_tag}>"
|
73
|
+
else
|
74
|
+
replace_value = value
|
75
|
+
end
|
76
|
+
|
77
|
+
replace_value
|
78
|
+
end
|
79
|
+
|
80
|
+
def generate_element_with_new_value(value)
|
81
|
+
values = get_values
|
82
|
+
|
83
|
+
"<%#{type} name=\"#{values[0]}\ value=\"#{value}\"%>"
|
84
|
+
end
|
85
|
+
|
86
|
+
def get_values
|
87
|
+
v = []
|
88
|
+
|
89
|
+
arr_html.each do |d|
|
90
|
+
unless d.rstrip == ""
|
91
|
+
v << d
|
92
|
+
|
93
|
+
break if v.length == 2
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
if v.length == 0
|
98
|
+
v << ""
|
99
|
+
v << ""
|
100
|
+
end
|
101
|
+
|
102
|
+
v
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
module Process
|
2
|
+
#regular expression for html fields
|
3
|
+
DESC_EXP = "<%description(.*?)name(.*?)=(.*?)['\"\](.*?)['\"\](.*?)value(.*?)=(.*?)['\"\](.*?)['\"\](.*?)%>"
|
4
|
+
TTL_EXP = "<%title(.*?)name(.*?)=(.*?)['\"\](.*?)['\"\](.*?)value(.*?)=(.*?)['\"\](.*?)['\"\](.*?)%>"
|
5
|
+
IMAGE_EXP = "<%imgsrc(.*?)name(.*?)=(.*?)['\"\](.*?)['\"\](.*?)value(.*?)=(.*?)['\"\](.*?)['\"\](.*?)%>"
|
6
|
+
HREF_EXP = "<%linkhref(.*?)name(.*?)=(.*?)['\"\](.*?)['\"\](.*?)value(.*?)=(.*?)['\"\](.*?)['\"\](.*?)%>"
|
7
|
+
|
8
|
+
#regular expression for date fields
|
9
|
+
CD_EXP = "<%currentday%>"
|
10
|
+
CDN_EXP = "<%currentdayname%>"
|
11
|
+
CM_EXP = "<%currentmonth%>"
|
12
|
+
CMN_EXP = "<%currentmonthname%>"
|
13
|
+
CY_EXP = "<%currentyear%>"
|
14
|
+
|
15
|
+
def find_all(html)
|
16
|
+
find_html_tags(html)
|
17
|
+
end
|
18
|
+
|
19
|
+
#update the current campaign tags with new values
|
20
|
+
def update_campaign_tags(html, params, values)
|
21
|
+
i = 0
|
22
|
+
|
23
|
+
values.each do |value|
|
24
|
+
field_id = "#{value.type}_tag_#{i}"
|
25
|
+
input_value = (params[field_id.to_s].nil? && '') || params[field_id.to_s]
|
26
|
+
rx = value.regex_for_current_data #generate and extract the correct element to be replaced
|
27
|
+
|
28
|
+
html = html.gsub(rx, value.generate_element_with_new_value(input_value)) #replace the new value in the html data
|
29
|
+
|
30
|
+
i += 1
|
31
|
+
end
|
32
|
+
|
33
|
+
html
|
34
|
+
end
|
35
|
+
|
36
|
+
def transform_campaign_to_html_tags(html, params, values)
|
37
|
+
i = 0
|
38
|
+
|
39
|
+
values.each do |value|
|
40
|
+
field_id = "#{value.type}_tag_#{i}"
|
41
|
+
input_value = (params[field_id.to_s].nil? && '') || params[field_id.to_s]
|
42
|
+
rx = value.regex_to_replace_campaign_tags(input_value)
|
43
|
+
new_value = value.generate_html_content(input_value)
|
44
|
+
|
45
|
+
html = html.gsub(rx, new_value) #replace the new value in the html data
|
46
|
+
|
47
|
+
i += 1
|
48
|
+
end
|
49
|
+
|
50
|
+
html
|
51
|
+
end
|
52
|
+
|
53
|
+
#[[" ", "", "", "name", " ", "", "", "default", ""]]
|
54
|
+
def find_html_tags(html)
|
55
|
+
[DESC_EXP, TTL_EXP, IMAGE_EXP, HREF_EXP].each do |exp|
|
56
|
+
name = ""
|
57
|
+
i = 0
|
58
|
+
|
59
|
+
if exp == DESC_EXP
|
60
|
+
name = "description"
|
61
|
+
elsif exp == TTL_EXP
|
62
|
+
name = "title"
|
63
|
+
elsif exp == IMAGE_EXP
|
64
|
+
name = "imgsrc"
|
65
|
+
elsif exp == HREF_EXP
|
66
|
+
name = "linkhref"
|
67
|
+
end
|
68
|
+
|
69
|
+
eval("@#{name}_tags = []")
|
70
|
+
matches = self.scan_exp(html, exp)
|
71
|
+
next if matches.length == 0
|
72
|
+
|
73
|
+
matches.each do |m|
|
74
|
+
tag = ProcessTag::CampaignTag.new
|
75
|
+
tag.type = name
|
76
|
+
tag.arr_html = m #the array
|
77
|
+
|
78
|
+
#get name, value attributes from the tag
|
79
|
+
values = tag.get_values
|
80
|
+
|
81
|
+
tag.label = values[0] #name attribute
|
82
|
+
tag.value = values[1] #value attribute
|
83
|
+
tag.id = "#{name}_tag_#{i}"
|
84
|
+
|
85
|
+
eval("@#{name}_tags << tag")
|
86
|
+
i += 1
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
|
93
|
+
def scan_exp(html, exp)
|
94
|
+
regex = Regexp.new(exp)
|
95
|
+
matches = html.scan(regex)
|
96
|
+
|
97
|
+
matches
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
@@ -0,0 +1,170 @@
|
|
1
|
+
require 'cm_tag/campaign_tag'
|
2
|
+
|
3
|
+
module DataHelper
|
4
|
+
def generate_description_tags
|
5
|
+
desc = []
|
6
|
+
|
7
|
+
tag = ProcessTag::CampaignTag.new
|
8
|
+
tag.id = "description_tag_0"
|
9
|
+
tag.type = "description"
|
10
|
+
tag.label = "description 1"
|
11
|
+
tag.value = "This is description 1"
|
12
|
+
desc << tag
|
13
|
+
|
14
|
+
tag = ProcessTag::CampaignTag.new
|
15
|
+
tag.id = "description_tag_1"
|
16
|
+
tag.type = "description"
|
17
|
+
tag.label = "description 2"
|
18
|
+
tag.value = "This is description 2"
|
19
|
+
desc << tag
|
20
|
+
|
21
|
+
tag = ProcessTag::CampaignTag.new
|
22
|
+
tag.id = "description_tag_2"
|
23
|
+
tag.type = "description"
|
24
|
+
tag.label = "description 3"
|
25
|
+
tag.value = "This is description 3"
|
26
|
+
desc << tag
|
27
|
+
|
28
|
+
tag = ProcessTag::CampaignTag.new
|
29
|
+
tag.id = "description_tag_3"
|
30
|
+
tag.type = "description"
|
31
|
+
tag.label = "description 4"
|
32
|
+
tag.value = "This is description 4"
|
33
|
+
desc << tag
|
34
|
+
|
35
|
+
desc
|
36
|
+
end
|
37
|
+
|
38
|
+
def generate_title_tags
|
39
|
+
ttls = []
|
40
|
+
|
41
|
+
tag = ProcessTag::CampaignTag.new
|
42
|
+
tag.id = "title_tag_0"
|
43
|
+
tag.type = "title"
|
44
|
+
tag.label = "title 1"
|
45
|
+
tag.value = "This is title 1"
|
46
|
+
ttls << tag
|
47
|
+
|
48
|
+
tag = ProcessTag::CampaignTag.new
|
49
|
+
tag.id = "title_tag_1"
|
50
|
+
tag.type = "title"
|
51
|
+
tag.label = "title 2"
|
52
|
+
tag.value = "This is title 2"
|
53
|
+
ttls << tag
|
54
|
+
|
55
|
+
tag = ProcessTag::CampaignTag.new
|
56
|
+
tag.id = "title_tag_2"
|
57
|
+
tag.type = "title"
|
58
|
+
tag.label = "title 3"
|
59
|
+
tag.value = "This is title 3"
|
60
|
+
ttls << tag
|
61
|
+
|
62
|
+
tag = ProcessTag::CampaignTag.new
|
63
|
+
tag.id = "title_tag_3"
|
64
|
+
tag.type = "title"
|
65
|
+
tag.label = "title 4"
|
66
|
+
tag.value = "This is title 4"
|
67
|
+
ttls << tag
|
68
|
+
|
69
|
+
ttls
|
70
|
+
end
|
71
|
+
|
72
|
+
def generate_image_tags
|
73
|
+
images = []
|
74
|
+
|
75
|
+
tag = ProcessTag::CampaignTag.new
|
76
|
+
tag.id = "imgsrc_tag_0"
|
77
|
+
tag.type = "imgsrc"
|
78
|
+
tag.label = "Image source 1"
|
79
|
+
tag.value = "This is image 1"
|
80
|
+
images << tag
|
81
|
+
|
82
|
+
tag = ProcessTag::CampaignTag.new
|
83
|
+
tag.id = "imgsrc_tag_1"
|
84
|
+
tag.type = "imgsrc"
|
85
|
+
tag.label = "Image source 2"
|
86
|
+
tag.value = "This is image 2"
|
87
|
+
images << tag
|
88
|
+
|
89
|
+
tag = ProcessTag::CampaignTag.new
|
90
|
+
tag.id = "imgsrc_tag_2"
|
91
|
+
tag.type = "imgsrc"
|
92
|
+
tag.label = "Image source 3"
|
93
|
+
tag.value = "This is image 3"
|
94
|
+
images << tag
|
95
|
+
|
96
|
+
tag = ProcessTag::CampaignTag.new
|
97
|
+
tag.id = "imgsrc_tag_3"
|
98
|
+
tag.type = "imgsrc"
|
99
|
+
tag.label = "Image source 4"
|
100
|
+
tag.value = "This is image 4"
|
101
|
+
images << tag
|
102
|
+
|
103
|
+
images
|
104
|
+
end
|
105
|
+
|
106
|
+
def generate_href_tags
|
107
|
+
href = []
|
108
|
+
|
109
|
+
tag = ProcessTag::CampaignTag.new
|
110
|
+
tag.id = "linkhref_tag_0"
|
111
|
+
tag.type = "linkhref"
|
112
|
+
tag.label = "Href link 1"
|
113
|
+
tag.value = "This is href link 1"
|
114
|
+
href << tag
|
115
|
+
|
116
|
+
tag = ProcessTag::CampaignTag.new
|
117
|
+
tag.id = "linkhref_tag_1"
|
118
|
+
tag.type = "linkhref"
|
119
|
+
tag.label = "Href link 2"
|
120
|
+
tag.value = "This is href link 2"
|
121
|
+
href << tag
|
122
|
+
|
123
|
+
tag = ProcessTag::CampaignTag.new
|
124
|
+
tag.id = "linkhref_tag_2"
|
125
|
+
tag.type = "linkhref"
|
126
|
+
tag.label = "Href link 3"
|
127
|
+
tag.value = "This is href link 3"
|
128
|
+
href << tag
|
129
|
+
|
130
|
+
tag = ProcessTag::CampaignTag.new
|
131
|
+
tag.id = "linkhref_tag_3"
|
132
|
+
tag.type = "linkhref"
|
133
|
+
tag.label = "Href link 4"
|
134
|
+
tag.value = "This is href link 4"
|
135
|
+
href << tag
|
136
|
+
|
137
|
+
href
|
138
|
+
end
|
139
|
+
|
140
|
+
def check(tag)
|
141
|
+
f = File.open("/home/pragash/my_project/cm_tag/test/fixtures/#{tag}.html", "r")
|
142
|
+
html = ''
|
143
|
+
while(h = f.gets)
|
144
|
+
html << h
|
145
|
+
end
|
146
|
+
|
147
|
+
tags = CMTag.find_tags(html)
|
148
|
+
desc_hash = tags[tag.to_sym]
|
149
|
+
desc = eval("generate_#{tag}_tags")
|
150
|
+
equal = check_data(desc_hash, desc)
|
151
|
+
|
152
|
+
equal
|
153
|
+
end
|
154
|
+
|
155
|
+
def check_data(results, control_results)
|
156
|
+
i = 0
|
157
|
+
equal = false
|
158
|
+
|
159
|
+
results.each do |item|
|
160
|
+
equal = (control_results[i].id == item.id && control_results[i].type == item.type && control_results[i].label == item.label && control_results[i].value == item.value)
|
161
|
+
|
162
|
+
break unless equal
|
163
|
+
|
164
|
+
i += 1
|
165
|
+
end
|
166
|
+
|
167
|
+
equal
|
168
|
+
end
|
169
|
+
|
170
|
+
end
|
data/regular_expressions
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
#image tag = src="<campaign_image path='(.*?)'\/>"
|
2
|
+
#title = <campaign_title value=('|")(.*?)('|")\/>
|
3
|
+
#sample code
|
4
|
+
#>> exp = "\<campaign_title value=('|\")(.*?)('|\")\/>"
|
5
|
+
#=> "<campaign_title value=('|\")(.*?)('|\")/>"
|
6
|
+
#>> title = "<campaign_title value='test tile'/>"
|
7
|
+
#=> "<campaign_title value='test tile'/>"
|
8
|
+
#>> regex = Regexp.new(exp)
|
9
|
+
#=> /<campaign_title value=('|")(.*?)('|")\/>/
|
10
|
+
#>> title.match(regex)
|
11
|
+
#=> #<MatchData "<campaign_title value='test tile'/>" 1:"'" 2:"test tile" 3:"'">
|
12
|
+
#>> match = title.match(regex)
|
13
|
+
#=> #<MatchData "<campaign_title value='test tile'/>" 1:"'" 2:"test tile" 3:"'">
|
14
|
+
#>> arr = match.to_a
|
15
|
+
#=> ["<campaign_title value='test tile'/>", "'", "test tile", "'"]
|
16
|
+
#>> arr[2]
|
17
|
+
#=> "test tile"
|
18
|
+
#description = <campaign_description value=('|")(.*?)('|")\/>
|
19
|
+
#href = <campaign_href url=('|")(.*?)('|")\/>
|
20
|
+
#current day = <currentday\/>
|
21
|
+
#current day name = <currentdayname\/>
|
22
|
+
#current month = <currentmonth\/>
|
23
|
+
#current month name = <currentmonthname\/>
|
24
|
+
#current year = <currentyear\/>
|
25
|
+
#<html><head><title></title></head><body><%title name="ttl_text" value="default title"%><%description name="ttl_text" #value="default description"%><%currentday%><%currentdayname%><%currentmonth%><%currentmonthname%><%currentyear%></body></html>
|
26
|
+
#title
|
27
|
+
#<%title(.*?)name=['"](.*?)['"](.*?)value=['"](.*?)['"]%>
|
28
|
+
#description
|
29
|
+
#<%description(.*?)name=['"](.*?)['"](.*?)value=['"](.*?)['"]%>
|
30
|
+
|
31
|
+
#read file
|
32
|
+
|
33
|
+
puts "Reading file............."
|
34
|
+
|
35
|
+
html = ''
|
36
|
+
|
37
|
+
file = File.open('/home/pragash/Desktop/sample.html', 'r')
|
38
|
+
while(f = file.gets)
|
39
|
+
html << f
|
40
|
+
end
|
41
|
+
|
42
|
+
#description data
|
43
|
+
puts "Extract description data"
|
44
|
+
|
45
|
+
exp = "<%description(.*?)name(.*?)=(.*?)['\"\](.*?)['\"\](.*?)value(.*?)=(.*?)['\"\](.*?)['\"\](.*?)%>"
|
46
|
+
regex = Regexp.new(exp)
|
47
|
+
matches = html.scan(regex)
|
48
|
+
puts matches.inspect
|
49
|
+
|
50
|
+
#title data
|
51
|
+
puts "Extract title data"
|
52
|
+
|
53
|
+
exp = "<%title(.*?)name(.*?)=(.*?)['\"\](.*?)['\"\](.*?)value(.*?)=(.*?)['\"\](.*?)['\"\](.*?)%>"
|
54
|
+
regex = Regexp.new(exp)
|
55
|
+
matches = html.scan(regex)
|
56
|
+
puts matches.inspect
|
57
|
+
|
58
|
+
#image source
|
59
|
+
puts "Extract image source"
|
60
|
+
|
61
|
+
exp = "<%imgsrc(.*?)name(.*?)=(.*?)['\"\](.*?)['\"\](.*?)value(.*?)=(.*?)['\"\](.*?)['\"\](.*?)%>"
|
62
|
+
regex = Regexp.new(exp)
|
63
|
+
matches = html.scan(regex)
|
64
|
+
puts matches.inspect
|
65
|
+
|
66
|
+
#href
|
67
|
+
puts "Extract href"
|
68
|
+
|
69
|
+
exp = "<%linkhref(.*?)name(.*?)=(.*?)['\"\](.*?)['\"\](.*?)value(.*?)=(.*?)['\"\](.*?)['\"\](.*?)%>"
|
70
|
+
regex = Regexp.new(exp)
|
71
|
+
matches = html.scan(regex)
|
72
|
+
puts matches.inspect
|
data/sample.html
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
<html><head><title></title></head><body><%title name="ttl_text_1" value="default title 1"%><%description name="desc_text_1" value="default description_1"%><%description name="desc_text_2" value="default description_2"%><%currentday%><%currentdayname%><%currentmonth%><%currentmonthname%><%currentyear%></body></html><%description name="desc_text_3" value="default description_3"%>
|
2
|
+
<%title name="ttl_text_2" value="default title 2"%>
|
3
|
+
<%title name="ttl_text_3" value="default title 3"%><%title name="ttl_text_4" value="default title 4"%><%title name="ttl_text_5" value="default title 5"%><%imgsrc name="Google image" value="http://www.google.com"%>
|
4
|
+
<%imgsrc name="Yahoo image" value="http://www.yahoo.com"%><%linkhref name = "Google link" value="http://www.google.com"%><%linkhref name = "Yahoo link"value = "http://www.yahoo.com"%>
|
5
|
+
|
6
|
+
[" ", "", "", "desc_text_1", " ", "", "", "default description_1", ""]
|
7
|
+
|
8
|
+
<%description name="desc_text_1" value=(.*?)%>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>
|
4
|
+
</title>
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
<p>
|
8
|
+
Spawner is a generator of sample/test data for databases. It can be configured to output delimited text or SQL insert statements. It can also insert directly into a MySQL 5.x database. Includes many field types, most of which are configurable.
|
9
|
+
</p>
|
10
|
+
|
11
|
+
<%description name="description 1" value="This is description 1" %>
|
12
|
+
<%description name="description 2" value="This is description 2" %>
|
13
|
+
<%description name="description 3" value="This is description 3" %>
|
14
|
+
<%description name="description 4" value="This is description 4" %>
|
15
|
+
|
16
|
+
<p>
|
17
|
+
Spawner is a generator of sample/test data for databases. It can be configured to output delimited text or SQL insert statements. It can also insert directly into a MySQL 5.x database. Includes many field types, most of which are configurable.
|
18
|
+
</p>
|
19
|
+
</body>
|
20
|
+
</html>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>
|
4
|
+
</title>
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
<p>
|
8
|
+
Spawner is a generator of sample/test data for databases. It can be configured to output delimited text or SQL insert statements. It can also insert directly into a MySQL 5.x database. Includes many field types, most of which are configurable.
|
9
|
+
</p>
|
10
|
+
|
11
|
+
<%linkhref name="Href link 1" value="This is href link 1" %>
|
12
|
+
<%linkhref name="Href link 2" value="This is href link 2" %>
|
13
|
+
<%linkhref name="Href link 3" value="This is href link 3" %>
|
14
|
+
<%linkhref name="Href link 4" value="This is href link 4" %>
|
15
|
+
|
16
|
+
<p>
|
17
|
+
Spawner is a generator of sample/test data for databases. It can be configured to output delimited text or SQL insert statements. It can also insert directly into a MySQL 5.x database. Includes many field types, most of which are configurable.
|
18
|
+
</p>
|
19
|
+
</body>
|
20
|
+
</html>
|
@@ -0,0 +1,51 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Sample template</title>
|
5
|
+
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
6
|
+
</head>
|
7
|
+
<body bgcolor="#ffffff" topmargin="0" marginwidth="0" marginheight="0" leftmargin="0">
|
8
|
+
<table cellspacing="0" bgcolor="#ffffff" border="0" cellpadding="0" width="100%">
|
9
|
+
<tr>
|
10
|
+
<td>
|
11
|
+
<%description name="Description 1" value="Description 1" %>
|
12
|
+
</td>
|
13
|
+
</tr>
|
14
|
+
<tr>
|
15
|
+
<td>
|
16
|
+
<%description name="Description 2" value="Description 2" %>
|
17
|
+
</td>
|
18
|
+
</tr>
|
19
|
+
<tr>
|
20
|
+
<td>
|
21
|
+
<%title name="Title 1" value="Title 1" %>
|
22
|
+
</td>
|
23
|
+
</tr>
|
24
|
+
<tr>
|
25
|
+
<td>
|
26
|
+
<%title name="Title 2" value="Title 2" %>
|
27
|
+
</td>
|
28
|
+
</tr>
|
29
|
+
<tr>
|
30
|
+
<td>
|
31
|
+
<img src="<%imgsrc name="Image 1" value="Image 1" %>" alt="This is image 1" />
|
32
|
+
</td>
|
33
|
+
</tr>
|
34
|
+
<tr>
|
35
|
+
<td>
|
36
|
+
<img src="<%imgsrc name="Image 2" value="Image 2" %>" alt="This is image 2" />
|
37
|
+
</td>
|
38
|
+
</tr>
|
39
|
+
<tr>
|
40
|
+
<td>
|
41
|
+
<a href="<%linkhref name="Link 1" value="Link 1" %>">Link 1</a>
|
42
|
+
</td>
|
43
|
+
</tr>
|
44
|
+
<tr>
|
45
|
+
<td>
|
46
|
+
<a href="<%linkhref name="Link 2" value="Link 2" %>">Link 2</a>
|
47
|
+
</td>
|
48
|
+
</tr>
|
49
|
+
</table>
|
50
|
+
</body>
|
51
|
+
</html>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>
|
4
|
+
</title>
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
<p>
|
8
|
+
Spawner is a generator of sample/test data for databases. It can be configured to output delimited text or SQL insert statements. It can also insert directly into a MySQL 5.x database. Includes many field types, most of which are configurable.
|
9
|
+
</p>
|
10
|
+
<%description name="description 1" value="This is description 1" %>
|
11
|
+
<%title name="title 1" value="This is title 1" %>
|
12
|
+
<a href="<%linkhref name="Href link 1" value="This is href link 1" %>">Link to URL</a>
|
13
|
+
<img src="<%imgsrc name="Image source 1" value="This is image 1" %>"/>
|
14
|
+
<p>
|
15
|
+
Spawner is a generator of sample/test data for databases. It can be configured to output delimited text or SQL insert statements. It can also insert directly into a MySQL 5.x database. Includes many field types, most of which are configurable.
|
16
|
+
</p>
|
17
|
+
</body>
|
18
|
+
</html>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>
|
4
|
+
</title>
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
<p>
|
8
|
+
Spawner is a generator of sample/test data for databases. It can be configured to output delimited text or SQL insert statements. It can also insert directly into a MySQL 5.x database. Includes many field types, most of which are configurable.
|
9
|
+
</p>
|
10
|
+
|
11
|
+
<img src="<%imgsrc name="Image source 1" value="This is image 1" %>" alt="This is image 1" />
|
12
|
+
<img src="<%imgsrc name="Image source 2" value="This is image 2" %>" alt="This is image 2" />
|
13
|
+
<img src="<%imgsrc name="Image source 3" value="This is image 3" %>" alt="This is image 3" />
|
14
|
+
<img src="<%imgsrc name="Image source 4" value="This is image 4" %>" alt="This is image 4" />
|
15
|
+
|
16
|
+
<p>
|
17
|
+
Spawner is a generator of sample/test data for databases. It can be configured to output delimited text or SQL insert statements. It can also insert directly into a MySQL 5.x database. Includes many field types, most of which are configurable.
|
18
|
+
</p>
|
19
|
+
</body>
|
20
|
+
</html>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>
|
4
|
+
</title>
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
<p>
|
8
|
+
Spawner is a generator of sample/test data for databases. It can be configured to output delimited text or SQL insert statements. It can also insert directly into a MySQL 5.x database. Includes many field types, most of which are configurable.
|
9
|
+
</p>
|
10
|
+
<p>This is a new description</p>
|
11
|
+
<span>This is a new title</span>
|
12
|
+
<a href="http://google.com">Link to URL</a>
|
13
|
+
<img src="http://www.google.com/images/nav_logo86.png"/>
|
14
|
+
<p>
|
15
|
+
Spawner is a generator of sample/test data for databases. It can be configured to output delimited text or SQL insert statements. It can also insert directly into a MySQL 5.x database. Includes many field types, most of which are configurable.
|
16
|
+
</p>
|
17
|
+
</body>
|
18
|
+
</html>
|
@@ -0,0 +1,51 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Sample template</title>
|
5
|
+
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
6
|
+
</head>
|
7
|
+
<body bgcolor="#ffffff" topmargin="0" marginwidth="0" marginheight="0" leftmargin="0">
|
8
|
+
<table cellspacing="0" bgcolor="#ffffff" border="0" cellpadding="0" width="100%">
|
9
|
+
<tr>
|
10
|
+
<td>
|
11
|
+
<p>This is a new description 1</p>
|
12
|
+
</td>
|
13
|
+
</tr>
|
14
|
+
<tr>
|
15
|
+
<td>
|
16
|
+
<p>This is a new description 2</p>
|
17
|
+
</td>
|
18
|
+
</tr>
|
19
|
+
<tr>
|
20
|
+
<td>
|
21
|
+
<span>This is a new title 1</span>
|
22
|
+
</td>
|
23
|
+
</tr>
|
24
|
+
<tr>
|
25
|
+
<td>
|
26
|
+
<span>This is a new title 2</span>
|
27
|
+
</td>
|
28
|
+
</tr>
|
29
|
+
<tr>
|
30
|
+
<td>
|
31
|
+
<img src="This is a new image 1" alt="This is image 1" />
|
32
|
+
</td>
|
33
|
+
</tr>
|
34
|
+
<tr>
|
35
|
+
<td>
|
36
|
+
<img src="This is a new image 2" alt="This is image 2" />
|
37
|
+
</td>
|
38
|
+
</tr>
|
39
|
+
<tr>
|
40
|
+
<td>
|
41
|
+
<a href="This is a new link 1">Link 1</a>
|
42
|
+
</td>
|
43
|
+
</tr>
|
44
|
+
<tr>
|
45
|
+
<td>
|
46
|
+
<a href="This is a new link 2">Link 2</a>
|
47
|
+
</td>
|
48
|
+
</tr>
|
49
|
+
</table>
|
50
|
+
</body>
|
51
|
+
</html>
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>
|
4
|
+
</title>
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
<p>
|
8
|
+
Spawner is a generator of sample/test data for databases. It can be configured to output delimited text or SQL insert statements. It can also insert directly into a MySQL 5.x database. Includes many field types, most of which are configurable.
|
9
|
+
</p>
|
10
|
+
|
11
|
+
<%description name="description 1" value="This is description 1" %>
|
12
|
+
<%description name="description 2" value="This is description 2" %>
|
13
|
+
<%description name="description 3" value="This is description 3" %>
|
14
|
+
<%description name="description 4" value="This is description 4" %>
|
15
|
+
|
16
|
+
<%title name="title 1" value="This is title 1" %>
|
17
|
+
<%title name="title 2" value="This is title 2" %>
|
18
|
+
<%title name="title 3" value="This is title 3" %>
|
19
|
+
<%title name="title 4" value="This is title 4" %>
|
20
|
+
|
21
|
+
<%imgsrc name="imgsrc 1" value="This is image source 1" %>
|
22
|
+
<%imgsrc name="imgsrc 2" value="This is image source 2" %>
|
23
|
+
<%imgsrc name="imgsrc 3" value="This is image source 3" %>
|
24
|
+
<%imgsrc name="imgsrc 4" value="This is image source 4" %>
|
25
|
+
|
26
|
+
<%linkhref name="linkhref 1" value="This is link 1" %>
|
27
|
+
<%linkhref name="linkhref 2" value="This is link 2" %>
|
28
|
+
<%linkhref name="linkhref 3" value="This is link 3" %>
|
29
|
+
<%linkhref name="linkhref 4" value="This is link 4" %>
|
30
|
+
|
31
|
+
<p>
|
32
|
+
Spawner is a generator of sample/test data for databases. It can be configured to output delimited text or SQL insert statements. It can also insert directly into a MySQL 5.x database. Includes many field types, most of which are configurable.
|
33
|
+
</p>
|
34
|
+
</body>
|
35
|
+
</html>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>
|
4
|
+
</title>
|
5
|
+
</head>
|
6
|
+
<body>
|
7
|
+
<p>
|
8
|
+
Spawner is a generator of sample/test data for databases. It can be configured to output delimited text or SQL insert statements. It can also insert directly into a MySQL 5.x database. Includes many field types, most of which are configurable.
|
9
|
+
</p>
|
10
|
+
|
11
|
+
<%title name="title 1" value="This is title 1" %>
|
12
|
+
<%title name="title 2" value="This is title 2" %>
|
13
|
+
<%title name="title 3" value="This is title 3" %>
|
14
|
+
<%title name="title 4" value="This is title 4" %>
|
15
|
+
|
16
|
+
<p>
|
17
|
+
Spawner is a generator of sample/test data for databases. It can be configured to output delimited text or SQL insert statements. It can also insert directly into a MySQL 5.x database. Includes many field types, most of which are configurable.
|
18
|
+
</p>
|
19
|
+
</body>
|
20
|
+
</html>
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'cm_tag'
|
3
|
+
require 'cm_tag/campaign_tag'
|
4
|
+
require 'cm_tag/campaign_process'
|
5
|
+
require 'helpers/data_helper'
|
6
|
+
|
7
|
+
class TestHtmlReplace < Test::Unit::TestCase
|
8
|
+
include DataHelper
|
9
|
+
|
10
|
+
def test_replace_campaign_tags
|
11
|
+
f = File.open("#{File.dirname(__FILE__)}/fixtures/html_with_tag.html", "r")
|
12
|
+
|
13
|
+
html = ''
|
14
|
+
while(h = f.gets)
|
15
|
+
html << h
|
16
|
+
end
|
17
|
+
|
18
|
+
f = File.open("#{File.dirname(__FILE__)}/fixtures/real_html.html", "r")
|
19
|
+
replaced_html = ''
|
20
|
+
while(h = f.gets)
|
21
|
+
replaced_html << h
|
22
|
+
end
|
23
|
+
|
24
|
+
cp = ProcessTag::CampaignProcess.new
|
25
|
+
|
26
|
+
params = {}
|
27
|
+
params["imgsrc_tag_0"] = "http://www.google.com/images/nav_logo86.png"
|
28
|
+
params["linkhref_tag_0"] = "http://google.com"
|
29
|
+
params["title_tag_0"] = "This is a new title"
|
30
|
+
params["description_tag_0"] = "This is a new description"
|
31
|
+
|
32
|
+
new_html = cp.update_tags(html, params, true)
|
33
|
+
|
34
|
+
assert_equal replaced_html, new_html
|
35
|
+
|
36
|
+
f.close
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_real_html
|
40
|
+
html = ''
|
41
|
+
file = File.open("#{File.dirname(__FILE__)}/fixtures/html_template.html")
|
42
|
+
|
43
|
+
while(f = file.gets)
|
44
|
+
html << f
|
45
|
+
end
|
46
|
+
file.close
|
47
|
+
|
48
|
+
replaced_html = ''
|
49
|
+
file = File.open("#{File.dirname(__FILE__)}/fixtures/replaced_html_template.html")
|
50
|
+
|
51
|
+
while(f = file.gets)
|
52
|
+
replaced_html << f
|
53
|
+
end
|
54
|
+
file.close
|
55
|
+
|
56
|
+
params = {}
|
57
|
+
params["description_tag_0"] = "This is a new description 1"
|
58
|
+
params["description_tag_1"] = "This is a new description 2"
|
59
|
+
|
60
|
+
params["title_tag_0"] = "This is a new title 1"
|
61
|
+
params["title_tag_1"] = "This is a new title 2"
|
62
|
+
|
63
|
+
params["imgsrc_tag_0"] = "This is a new image 1"
|
64
|
+
params["imgsrc_tag_1"] = "This is a new image 2"
|
65
|
+
|
66
|
+
params["linkhref_tag_0"] = "This is a new link 1"
|
67
|
+
params["linkhref_tag_1"] = "This is a new link 2"
|
68
|
+
|
69
|
+
cp = ProcessTag::CampaignProcess.new
|
70
|
+
new_html = cp.update_tags(html, params, true)
|
71
|
+
|
72
|
+
assert_equal new_html, replaced_html
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
data/test/test_tag.rb
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'cm_tag'
|
3
|
+
require 'cm_tag/campaign_tag'
|
4
|
+
require 'cm_tag/campaign_process'
|
5
|
+
require 'helpers/data_helper'
|
6
|
+
|
7
|
+
class TestTag < Test::Unit::TestCase
|
8
|
+
include DataHelper
|
9
|
+
|
10
|
+
def test_find_tags
|
11
|
+
f = File.open("#{File.dirname(__FILE__)}/fixtures/sample1.html", "r")
|
12
|
+
|
13
|
+
html = ''
|
14
|
+
while(h = f.gets)
|
15
|
+
html << h
|
16
|
+
end
|
17
|
+
|
18
|
+
tags = CMTag.find_tags(html)
|
19
|
+
|
20
|
+
assert_equal tags.length, 4
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_detail_tags
|
24
|
+
f = File.open("#{File.dirname(__FILE__)}/fixtures/sample1.html", "r")
|
25
|
+
|
26
|
+
html = ''
|
27
|
+
while(h = f.gets)
|
28
|
+
html << h
|
29
|
+
end
|
30
|
+
|
31
|
+
count = 0
|
32
|
+
tags = CMTag.find_tags(html)
|
33
|
+
tags.collect{|k,v| count += v.length }
|
34
|
+
|
35
|
+
assert_equal count, 16
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_tags
|
39
|
+
["description", "title", "image", "href"].each do |tag|
|
40
|
+
equal = check(tag)
|
41
|
+
assert_equal equal, true
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_description_replace_values
|
46
|
+
f = File.open("#{File.dirname(__FILE__)}/fixtures/description.html", "r")
|
47
|
+
|
48
|
+
html = ''
|
49
|
+
while(h = f.gets)
|
50
|
+
html << h
|
51
|
+
end
|
52
|
+
|
53
|
+
cp = ProcessTag::CampaignProcess.new
|
54
|
+
|
55
|
+
params = {}
|
56
|
+
params["description_tag_0"] = "Description has been changed to sample 1"
|
57
|
+
params["description_tag_1"] = "Description has been changed to sample 2"
|
58
|
+
params["description_tag_2"] = "Description has been changed to sample 3"
|
59
|
+
params["description_tag_3"] = "Description has been changed to sample 4"
|
60
|
+
|
61
|
+
new_html = cp.update_tags(html, params)
|
62
|
+
|
63
|
+
assert_not_equal html, new_html
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_title_replace_values
|
67
|
+
f = File.open("#{File.dirname(__FILE__)}/fixtures/title.html", "r")
|
68
|
+
|
69
|
+
html = ''
|
70
|
+
while(h = f.gets)
|
71
|
+
html << h
|
72
|
+
end
|
73
|
+
|
74
|
+
cp = ProcessTag::CampaignProcess.new
|
75
|
+
|
76
|
+
params = {}
|
77
|
+
params["title_tag_0"] = "Title has been changed to sample 1"
|
78
|
+
params["title_tag_1"] = "Title has been changed to sample 2"
|
79
|
+
params["title_tag_2"] = "Title has been changed to sample 3"
|
80
|
+
params["title_tag_3"] = "Title has been changed to sample 4"
|
81
|
+
|
82
|
+
new_html = cp.update_tags(html, params)
|
83
|
+
|
84
|
+
assert_not_equal html, new_html
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_image_src_replace_values
|
88
|
+
f = File.open("#{File.dirname(__FILE__)}/fixtures/image.html", "r")
|
89
|
+
|
90
|
+
html = ''
|
91
|
+
while(h = f.gets)
|
92
|
+
html << h
|
93
|
+
end
|
94
|
+
|
95
|
+
cp = ProcessTag::CampaignProcess.new
|
96
|
+
|
97
|
+
params = {}
|
98
|
+
params["imgsrc_tag_0"] = "Image has been changed to sample 1"
|
99
|
+
params["imgsrc_tag_1"] = "Image has been changed to sample 2"
|
100
|
+
params["imgsrc_tag_2"] = "Image has been changed to sample 3"
|
101
|
+
params["imgsrc_tag_3"] = "Image has been changed to sample 4"
|
102
|
+
|
103
|
+
new_html = cp.update_tags(html, params)
|
104
|
+
|
105
|
+
assert_not_equal html, new_html
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_link_href_replace_values
|
109
|
+
f = File.open("#{File.dirname(__FILE__)}/fixtures/href.html", "r")
|
110
|
+
|
111
|
+
html = ''
|
112
|
+
while(h = f.gets)
|
113
|
+
html << h
|
114
|
+
end
|
115
|
+
|
116
|
+
cp = ProcessTag::CampaignProcess.new
|
117
|
+
|
118
|
+
params = {}
|
119
|
+
params["linkhref_tag_0"] = "This is href link 1 has been changed"
|
120
|
+
params["linkhref_tag_1"] = "This is href link 2 has been changed"
|
121
|
+
params["linkhref_tag_2"] = "This is href link 3 has been changed"
|
122
|
+
params["linkhref_tag_3"] = "This is href link 4 has been changed"
|
123
|
+
|
124
|
+
new_html = cp.update_tags(html, params)
|
125
|
+
|
126
|
+
assert_not_equal html, new_html
|
127
|
+
end
|
128
|
+
end
|
metadata
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cm_tag
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Pragash
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2011-10-19 00:00:00 +05:30
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: This gem can be used to implement campaign monitor tags in a rails application
|
17
|
+
email:
|
18
|
+
- pragashonlink@gmail.com
|
19
|
+
executables: []
|
20
|
+
|
21
|
+
extensions: []
|
22
|
+
|
23
|
+
extra_rdoc_files: []
|
24
|
+
|
25
|
+
files:
|
26
|
+
- Gemfile
|
27
|
+
- Gemfile.lock
|
28
|
+
- Rakefile
|
29
|
+
- cm_tag.gemspec
|
30
|
+
- lib/cm_tag.rb
|
31
|
+
- lib/cm_tag/campaign_process.rb
|
32
|
+
- lib/cm_tag/campaign_tag.rb
|
33
|
+
- lib/cm_tag/process.rb
|
34
|
+
- lib/cm_tag/version.rb
|
35
|
+
- lib/helpers/data_helper.rb
|
36
|
+
- regular_expressions
|
37
|
+
- sample.html
|
38
|
+
- test/fixtures/description.html
|
39
|
+
- test/fixtures/href.html
|
40
|
+
- test/fixtures/html_template.html
|
41
|
+
- test/fixtures/html_with_tag.html
|
42
|
+
- test/fixtures/image.html
|
43
|
+
- test/fixtures/real_html.html
|
44
|
+
- test/fixtures/replaced_html_template.html
|
45
|
+
- test/fixtures/sample1.html
|
46
|
+
- test/fixtures/title.html
|
47
|
+
- test/test_html_replace.rb
|
48
|
+
- test/test_tag.rb
|
49
|
+
has_rdoc: true
|
50
|
+
homepage: http://pragashblog.blogspot.com
|
51
|
+
licenses: []
|
52
|
+
|
53
|
+
post_install_message:
|
54
|
+
rdoc_options: []
|
55
|
+
|
56
|
+
require_paths:
|
57
|
+
- lib
|
58
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: "0"
|
63
|
+
version:
|
64
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: "0"
|
69
|
+
version:
|
70
|
+
requirements: []
|
71
|
+
|
72
|
+
rubyforge_project: campaign_monitor
|
73
|
+
rubygems_version: 1.3.5
|
74
|
+
signing_key:
|
75
|
+
specification_version: 3
|
76
|
+
summary: Campaign monitor tags in rails
|
77
|
+
test_files: []
|
78
|
+
|